调整全局颜色,新增转让市场

This commit is contained in:
唐明明
2021-11-03 16:56:06 +08:00
parent 6cb32203bf
commit 2a6cd3a959
51 changed files with 3961 additions and 3593 deletions

102
apis/interfaces/market.js Normal file
View File

@@ -0,0 +1,102 @@
/**
* Web唐明明
* 匆匆数载恍如梦,岁月迢迢华发增。
* 碌碌无为枉半生,一朝惊醒万事空。
* moduleName: 转让市场
*/
import { request } from '../index'
// 转让市场
const markets = data => {
return request({
url: 'markets',
data
})
}
// 转让市场记录
const marketsLogs = data => {
return request({
url: 'markets/orders',
data
})
}
// 转让详情
const marketsInfo = id => {
return request({
url: 'markets/' + id
})
}
// 提交支付订单
const marketsBuy = (id, data) => {
return request({
url: 'markets/' + id + '/create',
method: 'POST',
data
})
}
// 转让市场支付
const marketsPay = (id, platform) => {
return request({
url: 'markets/pay/' + id + '/' + platform
})
}
// 转让权证信息
const marketsCreateInfo = symbol => {
return request({
url: 'markets/user/markets/create',
data: { symbol }
})
}
// 提交权证转让
const marketsCreate = data => {
return request({
url: 'markets/user/markets/create',
method: 'POST',
data
})
}
// 转让管理
const marketsMag = data => {
return request({
url: 'markets/user/markets',
data
})
}
// 取消转让
const marketsCancel = id => {
return request({
url: 'markets/' + id + '/cancel',
method: 'POST'
})
}
// 我的成交理事
const marketsOrdersLogs = (data, name) => {
return request({
url: 'markets/orders/' + name,
data
})
}
export {
markets,
marketsLogs,
marketsInfo,
marketsBuy,
marketsPay,
marketsCreateInfo,
marketsCreate,
marketsMag,
marketsCancel,
marketsOrdersLogs
}

View File

@@ -130,7 +130,7 @@
.is_allow_values { .is_allow_values {
color: #fff; color: #fff;
background-image: linear-gradient(to left, $main-color, $mian-color-light); background-image: linear-gradient(to left, $mian-color, $mian-color-light);
padding: 2rpx 14rpx; padding: 2rpx 14rpx;
font-size: 20rpx; font-size: 20rpx;
text-align: center; text-align: center;

View File

@@ -166,7 +166,7 @@
width: 100%; width: 100%;
.copy { .copy {
color: $main-color; color: $mian-color;
font-size: $title-size*0.8; font-size: $title-size*0.8;
font-weight: 400; font-weight: 400;
padding: 0 30rpx; padding: 0 30rpx;

View File

@@ -163,7 +163,7 @@
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
.copy{ .copy{
color: $main-color; color: $mian-color;
font-size: $title-size*0.8; font-size: $title-size*0.8;
font-weight: 400; font-weight: 400;
padding: 0 30rpx; padding: 0 30rpx;

View File

@@ -169,7 +169,7 @@
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
.copy{ .copy{
color: $main-color; color: $mian-color;
font-size: $title-size*0.8; font-size: $title-size*0.8;
font-weight: 400; font-weight: 400;
padding: 0 30rpx; padding: 0 30rpx;

View File

@@ -29,8 +29,18 @@
"name": "equity", "name": "equity",
"style": { "style": {
"navigationBarTitleText": "通证商城", "navigationBarTitleText": "通证商城",
"navigationStyle": "custom", "navigationBarTextStyle": "white",
"navigationBarTextStyle": "white" "app-plus":{
"titleNView": {
"backgroundImage": "linear-gradient(to right, #7c52fc, #976dff)",
"buttons": [{
"text": "\ue603",
"fontSrc":"/static/iconfont.ttf",
"background": "rgba(0,0,0,0)",
"fontSize":"20"
}]
}
}
} }
}, { }, {
"path": "pages/equity/search", "path": "pages/equity/search",
@@ -297,7 +307,7 @@
"buttons": [{ "buttons": [{
"text": "分享", "text": "分享",
"fontSize": "14", "fontSize": "14",
"color": "#555555" "color": "#fff"
}] }]
} }
} }
@@ -597,6 +607,66 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
}, },
"name": "clearOpen" "name": "clearOpen"
}, {
"path": "pages/market/index",
"name": "Market",
"style": {
"navigationBarTitleText": "转让市场",
"titleNView": {
"backgroundColor": "#FFFFFF",
"buttons": [{
"text": "成交历史",
"fontSize": "14",
"width": "80",
"color": "#555555"
}]
}
}
},{
"path": "pages/market/logs",
"name": "marketLogs",
"style": {
"navigationBarTitleText": "成交历史",
"navigationBarBackgroundColor":"#FFFFFF"
}
},{
"path" : "pages/market/details",
"name" : "marketDetails",
"style" : {
"navigationBarTitleText": "转让详情"
}
},{
"path" : "pages/market/goods",
"name" : "marketGoods",
"style": {
"navigationBarTitleText": "锚定商品",
"titleNView": {
"backgroundColor": "#FFFFFF",
"type": "transparent"
}
}
},{
"path" : "pages/market/transfer",
"name" : "marketTransfer",
"style": {
"navigationBarTitleText": "转让权证",
"backgroundColor": "#FFFFFF"
}
},{
"path" : "pages/market/management",
"name" : "marketManag",
"style": {
"navigationBarTitleText": "权证转让管理",
"titleNView": {
"backgroundColor": "#FFFFFF",
"buttons": [{
"text": "转让记录",
"fontSize": "14",
"width": "80",
"color": "#774ffd"
}]
}
}
} }
], ],
"globalStyle": { "globalStyle": {
@@ -626,6 +696,11 @@
"iconPath": "static/tabBar/tabBar_icon_03.png", "iconPath": "static/tabBar/tabBar_icon_03.png",
"selectedIconPath": "static/tabBar/tabBar_show_03.png", "selectedIconPath": "static/tabBar/tabBar_show_03.png",
"pagePath": "pages/equity/index" "pagePath": "pages/equity/index"
},{
"text": "转让市场",
"iconPath": "static/tabBar/tabBar_icon_04.png",
"selectedIconPath": "static/tabBar/tabBar_show_04.png",
"pagePath": "pages/market/index"
}, { }, {
"text": "节点中心", "text": "节点中心",
"iconPath": "static/tabBar/tabBar_icon_02.png", "iconPath": "static/tabBar/tabBar_icon_02.png",

View File

@@ -1,103 +1,9 @@
<template> <template>
<view> <view>
<!-- 状态栏 -->
<nv :config="nvConfig" @nvTabTap="onNvTab" @nvBtnTap="onRightBtn" />
<block v-if="tabIndex === 1">
<!-- 推荐商家 -->
<view class="block-title">
<view class="title">
推荐商家
</view>
</view>
<scroll-view scroll-x class="recommended">
<block v-for="(item, index) in recommendBus" :key="index">
<view class="item-box">
<image class="item-cover" :src="item.cover" mode="aspectFill" />
<view class="item-vip">
<view class="item-vip-text">{{item.level.name}}</view>
<view class="item-vip-tips">企业</view>
</view>
<view class="item-title nowrap">{{item.name || '-'}}</view>
<view class="item-trade nowrap">行业{{item.industry.title}}</view>
<view class="item-bar">
<view class="item-bar-color">
<view class="item-bar-strip" :style="{width: item.process + '%'}">
<text class="item-bar-per">{{item.process}}%</text>
</view>
</view>
<image class="item-bar-strip-img" src="../../static/icons/equity_arrow_up.png"
mode="aspectFill"></image>
</view>
<view class="item-url">
<view class="item-credit">
<image class="item-credit-img" src="../../static/icons/equity_arrow_icon.png"
mode="aspectFill"></image>信用值 {{item.integrity}}
</view>
<view class="item-btn" @click="onOpenWechat(item)">进店<image
src="../../static/icons/equity_arrow_right.png" mode="aspectFill"></image>
</view>
</view>
</view>
</block>
</scroll-view>
<!-- 热易商家 -->
<view class="block-title">
<view class="title">
热易商家
</view>
</view>
<swiper class="hot-swiper">
<swiper-item v-for="(item, index) in hotBus" :key="index">
<view class="hot-box" @click="onOpenWechat(item)">
<image class="cover" :src="item.cover" mode="aspectFill" />
<view class="hot-vip">{{item.level.name}}</view>
<view class="hot-content">
<view class="hot-title nowrap">{{item.name || '-'}}</view>
<view class="hot-credit">信誉值 {{item.integrity}}</view>
<view class="hot-trade nowrap">所属行业{{item.industry.title}}</view>
<view class="hot-warrant">
<view class="hot-warrant-text nowrap">
权证数量{{item.goodsCount}}
</view>
<view class="hot-bar">
<view class="hot-bar-color">
<view class="hot-bar-strip" :style="{width: item.process + '%'}"></view>
</view>
<view class="hot-bar-per">{{item.process}}</view>
</view>
</view>
<!-- <view class="credibility">
<uni-rate
:readonly="true"
color="#ddd"
active-color="#e93340"
:value="item.star"
:size="14"
/>
</view>
<view class="trading nowrap">累计交易次</view> -->
</view>
<view class="hot-tool">
<view class="hot-deal">
交易量<text class="hot-deal-number">{{item.saleCount || 0}}</text>
</view>
</view>
</view>
</swiper-item>
</swiper>
<v-tabs v-model="industryIndex" :tabs="industryBus" color="#555555" activeColor="#e93340" fontSize="30rpx"
height="80rpx" lineHeight="6rpx" lineColor="#e93340" bgColor="#f5f5f5" @change="onBusIndustry"></v-tabs>
<!-- 商家 -->
<industry-list :list="busList" @on-industry="onOpenWechat" />
<!-- 分页 -->
<uni-load-more v-if="busList.length > 0" :status="pageStatus" :iconSize="16"></uni-load-more>
</block>
<!-- 易货商城 -->
<block v-if="tabIndex === 0">
<view class="header-back"> <view class="header-back">
<!-- 轮播图 --> <!-- 轮播图 -->
<view class="banner"> <view class="banner">
<swiper class="banner-swiper" indicator-color="#e93340" indicator-active-color="#f8f8f8" <swiper class="banner-swiper" indicator-color="#8b64fd" indicator-active-color="#f8f8f8"
indicator-dots autoplay> indicator-dots autoplay>
<swiper-item v-for="(item, index) in banners" :key="index"> <swiper-item v-for="(item, index) in banners" :key="index">
<image class="cover" :src="item.cover" mode="aspectFill" @click="swiperClick(item.url)" /> <image class="cover" :src="item.cover" mode="aspectFill" @click="swiperClick(item.url)" />
@@ -183,26 +89,15 @@
<goods-list :list="goods" priceType="CNY" @on-goods="onGoods" /> <goods-list :list="goods" priceType="CNY" @on-goods="onGoods" />
<!-- 分页 --> <!-- 分页 -->
<uni-load-more :status="pageStatus" :iconSize="16"></uni-load-more> <uni-load-more :status="pageStatus" :iconSize="16"></uni-load-more>
</block>
</view> </view>
</template> </template>
<script> <script>
import { import { mall, list, managesCoupons } from '@/apis/interfaces/goods'
companies,
companiesList
} from '@/apis/interfaces/company'
import {
mall,
list,
managesCoupons
} from '@/apis/interfaces/goods'
import goodsList from '@/components/goods-list/goods-list' import goodsList from '@/components/goods-list/goods-list'
import industryList from '@/components/industry-list/industry-list' import industryList from '@/components/industry-list/industry-list'
import userAuth from '@/public/userAuth' import userAuth from '@/public/userAuth'
import { import { config } from '@/apis/index.js'
config
} from '@/apis/index.js'
export default { export default {
comments: { comments: {
goodsList, goodsList,
@@ -210,24 +105,6 @@
}, },
data() { data() {
return { return {
tabIndex: 0,
nvConfig: {
tabArr: [{
title: '通证商城 - 买你想买',
active: true
},
// {
// title: '企业广场'
// }
],
color: '#FFF',
hideback: true,
bgColor: 'rgb(151, 109, 255)',
btn: [{
icon: '/static/icons/search-icon.png',
style: 'paddingRight: 20rpx;'
}]
},
// 易货部分 // 易货部分
banners: [], banners: [],
classify: [], classify: [],
@@ -235,13 +112,6 @@
position: {}, position: {},
goods: [], goods: [],
goodsPage: 1, goodsPage: 1,
// 广场部分
industryIndex: 0,
recommendBus: [],
hotBus: [],
industryBus: [],
busList: [],
busPage: 1,
// 分页 // 分页
pageStatus: '', pageStatus: '',
imgUrl: config.apiUrls imgUrl: config.apiUrls
@@ -250,33 +120,12 @@
created() { created() {
this.getMall() this.getMall()
}, },
methods: { onNavigationBarButtonTap() {
// tab this.$Router.push({
onNvTab(e) { name: 'Search'
let tabIndex = e.index
for (let i in this.nvConfig.tabArr) {
if (i == tabIndex) this.nvConfig.tabArr[i].active = true
else this.nvConfig.tabArr[i].active = false
}
this.tabIndex = tabIndex
if (tabIndex == 1 && this.recommendBus.length <= 0) this.getCompanies()
},
// 搜索
onRightBtn(e) {
switch (e.index) {
case 0:
// this.$Router.push({
// name: 'Search',
// query: {
// type: this.tabIndex
// }
// })
uni.navigateTo({
url: '/pages/equity/search?type=' + this.tabIndex + ''
}) })
break
}
}, },
methods: {
// 点击轮播图 // 点击轮播图
swiperClick(url) { swiperClick(url) {
if (url === 'goBaoDanList') { if (url === 'goBaoDanList') {
@@ -285,73 +134,6 @@
}) })
} }
}, },
// 领取,更多优惠券
onCoupons(type, id, index) {
let token = this.$store.getters.getToken
if (token == '') {
let userLogin = new userAuth()
userLogin.Login()
return
}
if (type === 'more') {
this.$Router.push({
name: 'CouponsList'
})
return
}
if (type === 'get') {
managesCoupons(id).then(res => {
this.$set(this.coupons, index, res)
uni.showToast({
title: '领取成功',
type: 'primary',
duration: 3000
})
}).catch(err => {
uni.showToast({
icon: 'none',
title: err.message
})
})
}
},
// 企业广场
getCompanies() {
companies().then(res => {
this.recommendBus = res.positions
this.hotBus = res.hot
this.industryBus = [{
title: '全部',
industry_id: ''
}, ...res.industries]
this.getCompaniesList()
}).catch(err => {
uni.showToast({
title: err.message,
icon: 'none'
})
})
},
// 企业广场行业
onBusIndustry(index) {
this.industryIndex = index
this.busPage = 1
this.getCompaniesList()
},
// 企业列表
getCompaniesList() {
companiesList({
industry_id: this.industryBus[this.industryIndex].industry_id,
page: this.busPage
}).then(res => {
if (res.page.current === 1) {
this.busList = []
}
this.busList = this.busList.concat(res.data)
this.busPage = res.page.current
this.pageStatus = res.page.has_more ? 'more' : 'noMore'
})
},
// 易货首页 // 易货首页
getMall() { getMall() {
mall().then(res => { mall().then(res => {
@@ -395,55 +177,17 @@
}, },
// 易货分类 // 易货分类
onClassify(id) { onClassify(id) {
// this.$Router.push({
// name: 'goodsList'
// })
uni.navigateTo({ uni.navigateTo({
url: `/pages/goods/lists?type=id&id=${id}` url: `/pages/goods/lists?type=id&id=${id}`
}) })
}, },
// 打开微信小程序
onOpenWechat(e) {
plus.share.getServices(res => {
let sweixin = null;
for (let val of res) {
if (val.id === 'weixin') {
sweixin = val
}
}
/** 以此为例子 显示跳转引导页
* 'index_4'
* index 跳小程序企业首页
* 4 企业id
**/
if (sweixin != null) {
sweixin.launchMiniProgram({
id: e.original_id,
path: 'pages/login/guide?scene=index_' + e.company_id,
})
} else {
uni.showToast({
title: '当前环境不支持打开微信小程序',
icon: 'none'
})
}
})
}
}, },
// 下拉加载 // 下拉加载
onReachBottom() { onReachBottom() {
if (this.pageStatus == 'more') { if (this.pageStatus == 'more') {
this.pageStatus = 'loading' this.pageStatus = 'loading'
switch (this.tabIndex) {
case 0:
this.goodsPage += 1 this.goodsPage += 1
this.getGoods() this.getGoods()
break;
case 1:
this.busPage += 1
this.getCompaniesList()
break;
}
} }
} }
} }
@@ -505,7 +249,7 @@
color: $text-gray; color: $text-gray;
.is_allow_values { .is_allow_values {
color: #fff; color: #fff;
background-image: linear-gradient(to left,$main-color,$mian-color-light); background-image: linear-gradient(to left,$mian-color,$mian-color-light);
padding: 2rpx 14rpx; padding: 2rpx 14rpx;
font-size: 20rpx; font-size: 20rpx;
text-align: center; text-align: center;
@@ -557,7 +301,7 @@
line-height: 50rpx; line-height: 50rpx;
.is_allow_values { .is_allow_values {
color: #fff; color: #fff;
background-image: linear-gradient(to left,$main-color,$mian-color-light); background-image: linear-gradient(to left,$mian-color,$mian-color-light);
padding: 2rpx 14rpx; padding: 2rpx 14rpx;
font-size: 20rpx; font-size: 20rpx;
text-align: center; text-align: center;

View File

@@ -7,37 +7,20 @@
</view> </view>
<view class="tabs"> <view class="tabs">
<view class="tabs-item" @click="onTabs"> <view class="tabs-item" @click="onTabs">
{{searchType == 0 ? '价格' : '信用值'}} 价格
<image class="icon" mode="widthFix" <image class="icon" mode="widthFix" :src="require(marketType == 'asc' ? '@/static/icons/market_icon_low.png': '@/static/icons/market_icon_high.png')" />
:src="require(marketType == 'asc' ? '@/static/icons/market_icon_low.png': '@/static/icons/market_icon_high.png')" />
</view> </view>
<view class="tabs-item" v-if="searchType == 0" @click="pageUrl">全部分类 <image class="tabs-item-arrow" <view class="tabs-item" @click="pageUrl">全部分类 <image class="tabs-item-arrow"
src="@/static/icons/search_row.png" mode=""></image> src="@/static/icons/search_row.png" mode=""></image>
</view> </view>
<view class="tabs-item" v-if="searchType == 1" @click="companyOpne">{{companyName}}
<image class="tabs-item-arrow" src="@/static/icons/search_row.png" mode=""></image>
</view>
</view> </view>
</view> </view>
<view class="lists"> <view class="lists">
<!-- 优选商品 --> <!-- 优选商品 -->
<goods-list :list="searchArr" priceType="CNY" v-if="searchType == 0" @on-goods="onGoods" /> <goods-list :list="searchArr" priceType="CNY" @on-goods="onGoods" />
<!-- 商家 -->
<industry-list :list="searchArr" v-if="searchType == 1" @on-industry="onOpenWechat" />
</view> </view>
<!-- 分页 --> <!-- 分页 -->
<uni-load-more :status="pageStatus" :iconSize="16" v-if="searchArr.length > 0" /> <uni-load-more :status="pageStatus" :iconSize="16" v-if="searchArr.length > 0" />
<!-- 企业分类弹出 -->
<view class="companyBack" :class="companyShow ? 'active' : ''"></view>
<view class="companyPopup" :class="companyShow ? 'active' : ''">
<view class="nowrap companyPopup-label" :class="{'show': item.industry_id == companyId}"
v-for="(item, index) in categoryArr" :key="index" @click="companyList(item.industry_id, index)">
{{item.title}}
</view>
</view>
</view> </view>
</template> </template>
@@ -52,36 +35,18 @@
return { return {
nameVal: '', nameVal: '',
searchArr: [], searchArr: [],
searchType: '0', // 分类 0位商品 1为企业
marketType: 'asc', // 排序 marketType: 'asc', // 排序
categoryArr: [], // 分类数组--企业
companyId: '', // 分类数组--企业id
companyName: '选择行业',
companyShow: false,
// 分页 // 分页
pageStatus: '', pageStatus: '',
page: 1 goodsPage: 1
} }
}, },
onLoad() { onLoad() {
this.searchType = this.$Route.query.type randgoodsUrl('mall/randgoods', {
// 商品分类默认关键字 type=0为商品列表; type=1为企业列表
let wechaUrl = '' // 定义接口来源名称
if (this.searchType == '0') wechaUrl = 'mall/randgoods' //商品关键字
if (this.searchType == '1') wechaUrl = 'companies/rand' //商品关键字
randgoodsUrl(wechaUrl, {
type: 1 type: 1
}).then(res => { }).then(res => {
this.nameVal = res.name this.nameVal = res.name
}) })
// 企业分类数据
if (this.searchType == '1') {
companyCategory().then(res => {
this.categoryArr = res
})
}
}, },
methods: { methods: {
// 商品详情 // 商品详情
@@ -93,47 +58,15 @@
} }
}) })
}, },
// 打开微信小程序
onOpenWechat(e) {
plus.share.getServices(res => {
let sweixin = null;
for (let val of res) {
if (val.id === 'weixin') {
sweixin = val
}
}
/** 以此为例子 显示跳转引导页
* 'index_4'
* index 跳小程序企业首页
* 4 企业id
**/
if (sweixin != null) {
sweixin.launchMiniProgram({
id: e.original_id,
path: 'pages/login/guide?scene=index_' + e.company_id,
})
} else {
uni.showToast({
title: '当前环境不支持打开微信小程序',
icon: 'none'
})
}
})
},
// 列表数据 // 列表数据
getList() { getList() {
// type=0为商品列表; type=1为企业列表 searchUrl('mall/goods', {
let wechaUrl = '' // 定义接口来源名称
if (this.searchType == '0') wechaUrl = 'mall/goods' // 商品列表
if (this.searchType == '1') wechaUrl = 'companies/lists' //企业列表
searchUrl(wechaUrl, {
page: this.goodsPage, page: this.goodsPage,
order_by: this.marketType, order_by: this.marketType,
industry_id: this.companyId, industry_id: this.companyId,
name: this.nameVal name: this.nameVal
}).then(res => { }).then(res => {
if (res.page.current === 1) { if (this.goodsPage === 1) {
this.searchArr = [] this.searchArr = []
} }
this.searchArr = this.searchArr.concat(res.data) this.searchArr = this.searchArr.concat(res.data)
@@ -164,20 +97,6 @@
this.$Router.push({ this.$Router.push({
name: 'goodsClassify' name: 'goodsClassify'
}) })
},
// 查看企业行业
companyOpne() {
this.companyShow = !this.companyShow
},
// 筛选企业列表
companyList(id, index) {
this.companyId = id
this.companyName = this.categoryArr[index].title
this.companyShow = false
// 获取全局列表
this.getList();
} }
}, },
@@ -225,7 +144,7 @@
.search-btn { .search-btn {
line-height: 60rpx; line-height: 60rpx;
color: #e93340; color: $mian-color;
} }
} }
@@ -238,7 +157,6 @@
box-sizing: border-box; box-sizing: border-box;
line-height: 80rpx; line-height: 80rpx;
text-align: center; text-align: center;
.tabs-item { .tabs-item {
font-size: $title-size-m; font-size: $title-size-m;
color: $text-gray; color: $text-gray;

View File

@@ -62,7 +62,7 @@
&.show{ &.show{
position: relative; position: relative;
background: white; background: white;
color: $text-price; color: $mian-color;
font-weight: bold; font-weight: bold;
&::before{ &::before{
position: absolute; position: absolute;

View File

@@ -152,7 +152,7 @@
.authenticationTop { .authenticationTop {
width: 100%; width: 100%;
padding: 20rpx 50rpx; padding: 20rpx 50rpx;
background-color: $main-color; background-color: $mian-color;
font-size: 26rpx; font-size: 26rpx;
color: #fff; color: #fff;
border-radius: 60rpx; border-radius: 60rpx;

View File

@@ -39,7 +39,7 @@
<view class="pay-select">请选择支付方式</view> <view class="pay-select">请选择支付方式</view>
<view class="pay-select-item" @click="selectPay('2')"> <view class="pay-select-item" @click="selectPay('2')">
<view class="pay-left"> <view class="pay-left">
<u-icon class="wx-icon" name="weixin-fill" color="#fff" size="40"></u-icon> <u-icon class="pay-icon wx-icon" name="weixin-fill" color="#fff" size="40"></u-icon>
<view class="pay-wx-title"> <view class="pay-wx-title">
微信支付 微信支付
<span>推荐微信用户使用</span> <span>推荐微信用户使用</span>
@@ -50,7 +50,7 @@
</view> </view>
<view class="pay-select-item" @click="selectPay('3')"> <view class="pay-select-item" @click="selectPay('3')">
<view class="pay-left"> <view class="pay-left">
<u-icon class="wx-icon" name="zhifubao" color="#fff" size="40"></u-icon> <u-icon class="pay-icon al-icon" name="zhifubao" color="#fff" size="40"></u-icon>
<view class="pay-wx-title"> <view class="pay-wx-title">
支付宝支付 支付宝支付
<span>推荐支付宝用户使用</span> <span>推荐支付宝用户使用</span>
@@ -59,18 +59,6 @@
<u-icon v-if="selectTypeId!== '3'" name="checkmark-circle" color="#f7f7f7" size="50"></u-icon> <u-icon v-if="selectTypeId!== '3'" name="checkmark-circle" color="#f7f7f7" size="50"></u-icon>
<u-icon v-else name="checkmark-circle-fill" color="#8b64fd" size="50"></u-icon> <u-icon v-else name="checkmark-circle-fill" color="#8b64fd" size="50"></u-icon>
</view> </view>
<!-- <view class="pay-select-item" @click="selectPay('1')">
<view class="pay-left">
<u-icon class="wx-icon" name="integral-fill" color="#fff" size="40"></u-icon>
<view class="pay-wx-title">
E币交易
<span>可用Eb总额{{account.getEBBalance}}</span>
</view>
</view>
<u-icon v-if="selectTypeId!== '1'" name="checkmark-circle" color="#f7f7f7" size="50" />
<u-icon v-else name="checkmark-circle-fill" color="#8b64fd" size="50" />
</view> -->
</view> </view>
<!-- 订单 --> <!-- 订单 -->
<view class="actions"> <view class="actions">
@@ -206,9 +194,6 @@
if (this.selectTypeId === '2') { if (this.selectTypeId === '2') {
if (typeof res === 'string') { if (typeof res === 'string') {
let payInfo = JSON.parse(res) let payInfo = JSON.parse(res)
console.log(res)
uni.requestPayment({ uni.requestPayment({
provider: "wxpay", provider: "wxpay",
orderInfo: payInfo, orderInfo: payInfo,
@@ -227,7 +212,6 @@
}, 3000); }, 3000);
}, },
fail: (err) => { fail: (err) => {
console.log(err)
uni.showToast({ uni.showToast({
title: '支付失败' + err.errMsg, title: '支付失败' + err.errMsg,
duration: 3000, duration: 3000,
@@ -279,7 +263,7 @@
}, },
fail: (err) => { fail: (err) => {
uni.showToast({ uni.showToast({
title: '支付失败', title: '支付失败' + err,
duration: 3000, duration: 3000,
mask: true, mask: true,
icon: 'none' icon: 'none'
@@ -402,11 +386,15 @@
} }
} }
} }
.pay-icon{
.wx-icon {
background-color: #8b64fd;
border-radius: 10rpx; border-radius: 10rpx;
padding: 10rpx; padding: 10rpx;
&.wx-icon {
background: #04BE02;
}
&.al-icon {
background: #1678ff;
}
} }
} }

View File

@@ -2,7 +2,7 @@
<view class="content" v-if="!loding"> <view class="content" v-if="!loding">
<!-- 轮播主图 --> <!-- 轮播主图 -->
<view class="goods-covers"> <view class="goods-covers">
<swiper class="swiper" indicator-dots indicator-active-color="#c82626"> <swiper class="swiper" indicator-dots indicator-active-color="#8b64fd">
<block v-if="goodsObj.pictures.length > 0"> <block v-if="goodsObj.pictures.length > 0">
<swiper-item v-for="(item, index) in goodsObj.pictures" :key="index"> <swiper-item v-for="(item, index) in goodsObj.pictures" :key="index">
<image class="swiper-item" :src="item" mode="aspectFill" /> <image class="swiper-item" :src="item" mode="aspectFill" />
@@ -42,7 +42,7 @@
<view class="store-cont"> <view class="store-cont">
<view class="store-title">{{goodsObj.shop.name}}</view> <view class="store-title">{{goodsObj.shop.name}}</view>
<view class="rate"> <view class="rate">
<uni-rate :readonly="true" color="#ddd" active-color="#c82626" :value="goodsObj.company.star" <uni-rate :readonly="true" color="#ddd" active-color="#ee4c47" :value="goodsObj.company.star"
:size="14" /> :size="14" />
</view> </view>
<view class="openbtn" @click="onOpenWechat">进店<image class="openbtn-img" <view class="openbtn" @click="onOpenWechat">进店<image class="openbtn-img"
@@ -84,8 +84,7 @@
<label class="title">服务</label> <label class="title">服务</label>
<view class="goods-serve" @click="serveOpne"> <view class="goods-serve" @click="serveOpne">
<image class="goods-serve-img" src="../../static/icons/goods_buy.png" mode="aspectFill"></image> <image class="goods-serve-img" src="../../static/icons/goods_buy.png" mode="aspectFill"></image>
<view class="nowrap goods-serve-name"><text <view class="nowrap goods-serve-name"><textv-for="(item, index) in goodsObj.services">{{item.name}}</text></view>
v-for="(item, index) in goodsObj.services">{{item.name}}</text></view>
<image class="goods-serve-img" src="../../static/icons/goods_spot.png" mode="aspectFill"> <image class="goods-serve-img" src="../../static/icons/goods_spot.png" mode="aspectFill">
</image> </image>
</view> </view>
@@ -704,7 +703,6 @@
width: 100%; width: 100%;
z-index: 99; z-index: 99;
box-sizing: border-box; box-sizing: border-box;
.btn[size='default'] { .btn[size='default'] {
width: 100%; width: 100%;
height: 90rpx; height: 90rpx;
@@ -712,7 +710,7 @@
padding: 0; padding: 0;
border-radius: 0; border-radius: 0;
box-sizing: border-box; box-sizing: border-box;
background: $text-price; background: $mian-color;
color: white; color: white;
font-weight: bold; font-weight: bold;
font-size: $title-size; font-size: $title-size;

View File

@@ -64,18 +64,17 @@
line-height: 90rpx; line-height: 90rpx;
color: $text-gray; color: $text-gray;
@extend .nowrap; @extend .nowrap;
&.show { &.show {
position: relative; position: relative;
background: white; background: white;
color: $text-price; color: $mian-color;
font-weight: bold; font-weight: bold;
&::before { &::before {
position: absolute; position: absolute;
height: 40rpx; height: 40rpx;
width: 5rpx; width: 5rpx;
background: $text-price; background: $mian-color;
content: " "; content: " ";
left: 0; left: 0;
top: 20rpx; top: 20rpx;

View File

@@ -122,7 +122,6 @@
.tabs-item { .tabs-item {
font-size: $title-size-m; font-size: $title-size-m;
color: $text-gray; color: $text-gray;
.icon { .icon {
width: 32rpx; width: 32rpx;
height: 32rpx; height: 32rpx;
@@ -130,9 +129,8 @@
margin-left: $margin / 3; margin-left: $margin / 3;
margin-bottom: 4rpx; margin-bottom: 4rpx;
} }
&.show { &.show {
color: $text-price; color: $mian-color;
} }
} }
} }

View File

@@ -259,8 +259,8 @@
height: 60rpx; height: 60rpx;
line-height: 60rpx; line-height: 60rpx;
&.show{ &.show{
color: $text-price; color: $mian-color;
border-bottom: solid 4rpx $text-price; border-bottom: solid 4rpx $mian-color;
} }
} }
} }
@@ -297,7 +297,7 @@
font-weight: bold; font-weight: bold;
} }
.btn { .btn {
background-color: $text-price; background-color: $mian-color;
height: 90rpx; height: 90rpx;
line-height: 90rpx; line-height: 90rpx;
text-align: center; text-align: center;

View File

@@ -85,14 +85,14 @@
width: 100%; width: 100%;
.check { .check {
border: $main-color solid 1rpx; border: $mian-color solid 1rpx;
color: $main-color; color: $mian-color;
padding: 14rpx 50rpx; padding: 14rpx 50rpx;
border-radius: 4rpx; border-radius: 4rpx;
} }
.back { .back {
background-color: $main-color; background-color: $mian-color;
color: #fff; color: #fff;
padding: 14rpx 50rpx; padding: 14rpx 50rpx;
border-radius: 4rpx; border-radius: 4rpx;

View File

@@ -92,7 +92,7 @@
.authenticationTop { .authenticationTop {
width: 100%; width: 100%;
padding: 20rpx 50rpx; padding: 20rpx 50rpx;
background-color: $main-color; background-color: $mian-color;
font-size: 26rpx; font-size: 26rpx;
color: #fff; color: #fff;
border-radius: 60rpx; border-radius: 60rpx;

353
pages/market/details.vue Normal file
View File

@@ -0,0 +1,353 @@
<template>
<view v-if="!loding">
<!-- 产品信息 -->
<view class="goods">
<image class="cover" :src="info.goods.cover" mode="aspectFill"></image>
<view class="content">
<view class="title nowrap">数字权证</view>
<view class="text nowrap">锚定商品{{info.goods.goods_name}}</view>
<view class="text nowrap">提供企业{{info.company.name}}</view>
<view class="text nav-goods nowrap" @click="onGoods">查看锚定商品信息<uni-icons type="arrowright" size="12" color="#8b64fd"></uni-icons></view>
</view>
<view class="info">
<view class="info-item">
<label>转让用户</label>
{{info.user.username}}
</view>
<view class="info-item">
<label>转让单价</label>
{{info.price}}
</view>
<view class="info-item">
<label>出售数量</label>
{{info.stock}}
</view>
<view class="info-item">
<label>剩余转让数量</label>
{{info.surplus}}
</view>
<view class="info-item">
<label>区块HASH</label>
{{info.hash}}
</view>
<view class="info-item">
<label>转让时间</label>
{{info.created_at}}
</view>
</view>
</view>
<button class="buy-btn" type="default" @click="openLay">我要购买</button>
<!-- 购买弹窗 -->
<uni-popup ref="buyLay" :safe-area="true" background-color="#ffffff">
<view class="popup">
<view class="title">我要购买</view>
<view class="des">
剩余转让数量
<text>{{info.surplus}}</text>
</view>
<view class="des">
数量
<uni-number-box v-model='stock' :min="1" :max="info.surplus" @change="countPrice"></uni-number-box>
</view>
<view class="des">
订单总价
<text class="price">{{price}}</text>
</view>
<view class="btn" @click="buy">提交订单</view>
</view>
</uni-popup>
<!-- 支付方式 -->
<uni-popup ref="payLay" :safe-area="true" background-color="#ffffff">
<view class="popup">
<view class="title">支付方式</view>
<radio-group class="pay-group" @change="payType">
<view class="item">
<label>
<radio class="pay-radio" value="eb" checked color="#8b64fd" />
<view class="pay-title">易货额支付</view>
<view class="pay-sub-title">可用{{account.eb}}冻结{{account.frozenEb}}</view>
</label>
</view>
<view class="item">
<label>
<radio class="pay-radio" value="wechat" color="#8b64fd" />
<view class="pay-title">微信支付</view>
</label>
</view>
</radio-group>
<view class="btn" @click="orderPay">立即支付</view>
</view>
</uni-popup>
</view>
</template>
<script>
import { marketsInfo, marketsBuy, marketsPay } from '@/apis/interfaces/market'
import userAuth from '@/public/userAuth'
export default {
data() {
return {
payValue: 'eb',
orderNo : '',
price : '0.00',
stock : 1,
loding : true,
info : {},
account : {
eb : '0.00',
frozenEb: '0.00'
}
};
},
onShow() {
marketsInfo(this.$Route.query.marketId).then(res =>{
this.info = res
this.price = res.price
this.loding = false
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods:{
// 查看锚定产品
onGoods(){
this.$Router.push({name: 'marketGoods', params: { id: this.info.goods.goods_id }})
},
// 选择购买方式
payType(e){
this.payValue = e.detail.value
},
// 购买弹窗
openLay(){
let token = this.$store.getters.getToken
if(token == ''){
let userLogin = new userAuth()
userLogin.Login()
return
}
this.$refs.buyLay.open('bottom')
},
// 计算价格
countPrice(e){
this.price = (e * this.info.price).toFixed(2)
},
// 提交购买单
buy(){
marketsBuy(this.info.market_id, {
qty: this.stock
}).then(res => {
this.account = res.account
this.orderNo = res.market_order_no
this.$refs.buyLay.close()
this.$refs.payLay.open('bottom')
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 支付
orderPay(){
let data = {}
marketsPay(this.orderNo, this.payValue).then(res => {
switch (this.payValue){
case 'eb':
this.$refs.payLay.close()
this.$Router.push({
name : 'payResults',
params : {
index: 1,
price: this.price,
type : 'eb',
total: '可在我的资产下我的权证中查看购买的数字权证'
}
})
break
case 'wechat':
this.wxPay(JSON.parse(res))
break
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 微信支付
wxPay(payConfig){
uni.requestPayment({
provider : 'wxpay',
orderInfo : payConfig,
success : payRes => {
console.log(payRes)
},
fail : payErr => {
uni.showToast({
title: payErr.errMsg,
icon : 'none'
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
// 支付方式
.pay-group{
margin: 0 ($margin * 2);
.item{
position: relative;
border-bottom: solid 1rpx $border-color;
padding: $padding 0;
&:last-child{
border-bottom: none;
}
.pay-radio{
position: absolute;
right: 0;
top: 50%;
margin-top: -25rpx;
}
.pay-sub-title{
font-size: $title-size-sm;
color: $text-gray;
line-height: 40rpx;
}
.pay-title{
font-weight: bold;
line-height: 50rpx;
color: $text-color;
font-size: $title-size-lg;
text-align: left;
}
}
}
// 我要购买按钮
.buy-btn{
margin: 0 $margin;
background: $mian-color;
color: white;
height: 90rpx;
line-height: 90rpx;
padding: 0;
border-radius: $radius/2;
font-size: $title-size;
font-weight: bold;
&::after{
border: none;
}
}
// 产品信息
.goods{
min-height: 168rpx;
position: relative;
background: white;
border-radius: $radius/2;
margin: $margin;
padding: $padding;
.cover{
position: absolute;
left: $padding;
top: $padding;
width: 168rpx;
height: 168rpx;
}
.content{
padding-left: calc(168rpx + #{$padding});
.title{
position: relative;
font-size: $title-size-lg;
color: $text-color;
font-weight: bold;
line-height: 52rpx;
padding-right: 60rpx;
text{
position: absolute;
right: 0;
top: 0;
width: 60rpx;
text-align: right;
font-weight: normal;
}
}
.text{
font-size: $title-size-sm;
color: $text-gray;
height: 40rpx;
line-height: 40rpx;
&.nav-goods{
color: $mian-color;
}
}
}
.info{
margin-top: $margin;
border-top: solid 1rpx $border-color;
padding-top: $padding;
.info-item{
padding-left: 200rpx;
height: 60rpx;
line-height: 60rpx;
position: relative;
text-align: right;
font-size: $title-size-m;
@extend .nowrap;
label{
position: absolute;
left: 0;
top: 0;
width: 200rpx;
text-align: left;
color: $text-gray;
}
}
}
}
// 购买产品
.popup {
width: 100%;
background-color: #fff;
padding-bottom: $padding;
.title {
font-size: 36rpx;
text-align: center;
padding: 50rpx 30rpx 30rpx 30rpx;
font-weight: bold;
}
.btn {
background-color: $mian-color;
height: 90rpx;
line-height: 90rpx;
text-align: center;
color: #fff;
font-weight: bold;
font-size: $title-size;
margin: $padding * 2;
border-radius: $radius/2;
}
.des {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: $padding $padding * 2;
color: $text-gray;
font-size: $title-size-lg;
text{
color: $text-color;
}
.price{
color: $text-price;
font-weight: bold;
}
}
}
</style>

116
pages/market/goods.vue Normal file
View File

@@ -0,0 +1,116 @@
<template>
<view>
<view class="goods-cover">
<swiper class="swiper" circular indicator-dots indicator-active-color="#8b64fd">
<swiper-item v-for="(item, index) in cover" :key="index">
<view class="swiper-item">
<image class="swiper-cover" :src="item" mode="aspectFill" />
</view>
</swiper-item>
</swiper>
</view>
<view class="info">
<view class="info-item">
<label>锚定商品</label>
{{info.name}}
</view>
<view class="info-item">
<label>商品规格</label>
{{info.skusUnit}}
</view>
<view class="info-item">
<label>提供企业</label>
{{info.companyName}}
</view>
<view class="info-item">
<label>企业诚信</label>
{{info.integrity}}
</view>
<view class="info-item">
<label>权证销量</label>
{{info.sales}}
</view>
<view class="info-item">
<label>发布时间</label>
{{info.createdAt}}
</view>
</view>
</view>
</template>
<script>
import { goods } from '@/apis/interfaces/goods'
export default {
data() {
return {
cover: [],
info : {}
};
},
created() {
goods(this.$Route.query.id).then(res => {
console.log(res)
this.cover = res.pictures
this.info = {
name : res.name,
companyName : res.company.name,
createdAt : res.created_at,
sales : res.sales,
integrity : res.company.integrity,
skusUnit : res.skus[0].unit
}
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
</script>
<style lang="scss">
// 数权
.goods-cover{
width: 100%;
padding-top: 100%;
position: relative;
background: #f5f5f5;
.swiper{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
.swiper-item{
height: 100%;
width: 100%;
}
.swiper-cover{
@extend .swiper-item;
}
}
}
// 锚定商品详情
.info{
background: white;
padding: $padding;
.info-item{
padding-left: 200rpx;
height: 70rpx;
line-height: 70rpx;
position: relative;
text-align: right;
font-size: $title-size-m;
@extend .nowrap;
label{
position: absolute;
left: 0;
top: 0;
width: 200rpx;
text-align: left;
color: $text-gray;
}
}
}
</style>

153
pages/market/index.vue Normal file
View File

@@ -0,0 +1,153 @@
<template>
<view>
<view class="tabs">
<view class="tabs-item" :class="{'show': tabIndex == 0}" @click="onTabs" data-index="0">最新</view>
<view class="tabs-item" :class="{'show': tabIndex == 1}" @click="onTabs" data-index="1">
价格
<image
class="icon"
mode="widthFix" :src="require(marketType == 'asc' ? '@/static/icons/market_icon_low.png': '@/static/icons/market_icon_high.png')"
/>
</view>
</view>
<view class="lists">
<view class="item" v-for="(item, index) in marketArray" :key="index" @click="onDetails(item)">
<image class="cover" :src="item.goods.cover" mode="aspectFill"></image>
<view class="content">
<view class="title nowrap">数字权证<text>{{item.surplus}}/{{item.stock}}</text></view>
<view class="text nowrap">锚定商品{{item.goods.goods_name}}</view>
<view class="text nowrap">提供企业{{item.company.name}}</view>
<view class="text nowrap">转让用户{{item.user.nickname}}</view>
</view>
<view class="price">{{item.price}}/</view>
</view>
</view>
</view>
</template>
<script>
import { markets } from '@/apis/interfaces/market'
export default {
data() {
return {
tabIndex : 0,
marketType : 'asc',
marketArray : [],
page : {}
};
},
onShow() {
this.getMarkets()
},
methods:{
// 筛选产品
onTabs(e){
let index = e.target.dataset.index
if(index == 0 && index == this.tabIndex) return
if(index == 1 && index == this.tabIndex) this.marketType = this.marketType == 'asc' ? 'desc': 'asc'
this.tabIndex = index
this.getMarkets()
},
// 获取转让市场
getMarkets(){
markets({
sort: this.tabIndex == 1 ? this.marketType : ''
}).then(res => {
this.marketArray = res.data
this.page = res.page
})
},
// 转让商品详情
onDetails(e){
this.$Router.push({name: 'marketDetails', params: {marketId: e.market_id}})
console.log(e)
}
},
onNavigationBarButtonTap(){
this.$Router.push({name: "marketLogs"})
}
}
</script>
<style lang="scss" scoped>
.tabs{
position: fixed;
top: 0;
left: 0;
z-index: 9;
width: 100%;
display: flex;
justify-content: space-around;
background: white;
height: 70rpx;
line-height: 70rpx;
text-align: center;
.tabs-item{
font-size: $title-size-m;
color: $text-gray;
.icon{
width: 32rpx;
height: 32rpx;
vertical-align: middle;
margin-left: $margin / 3;
margin-bottom: 4rpx;
}
&.show{
color: $mian-color;
}
}
}
// 列表
.lists{
padding: 70rpx $padding $padding;
.item{
min-height: 168rpx;
position: relative;
background: white;
border-radius: $radius/2;
margin-top: $margin;
padding: $padding;
.cover{
position: absolute;
left: $padding;
top: $padding;
width: 168rpx;
height: 168rpx;
}
.content{
padding-left: calc(168rpx + #{$padding});
.title{
position: relative;
font-size: $title-size-lg;
color: $text-color;
font-weight: bold;
line-height: 52rpx;
padding-right: 60rpx;
text{
position: absolute;
right: 0;
top: 0;
width: 60rpx;
text-align: right;
font-weight: normal;
}
}
.text{
font-size: $title-size-sm;
color: $text-gray;
height: 40rpx;
line-height: 40rpx;
}
}
.price{
margin-top: $margin - 10;
padding-top: $padding - 10;
font-size: $title-size-m;
text-align: right;
border-top: solid 1rpx $border-color;
font-weight: bold;
color: $text-price;
}
}
}
</style>

166
pages/market/logs.vue Normal file
View File

@@ -0,0 +1,166 @@
<template>
<view>
<view class="tabs" v-if="$Route.query.type === 'my'">
<view class="item" :class="{ 'show' : tab == 'sell'}" @click="onTasb('sell')">我转让的</view>
<view class="item" :class="{ 'show' : tab == 'buys' }" @click="onTasb('buys')">我买到的</view>
</view>
<block v-if="logs.length > 0">
<view :class="{'paddingTop': $Route.query.type === 'my'}">
<view class="logs" v-for="(item, index) in logs" :key="index">
<view class="logs-item">
<label>交易权证</label>
{{item.goods.goods_name}}
</view>
<view class="logs-item">
<label>交易单价</label>
{{item.price}}
</view>
<view class="logs-item">
<label>交易数量</label>
{{item.qty}}
</view>
<view class="logs-item">
<label>转让用户</label>
{{item.sellUser.nickname}}
</view>
<view class="logs-item">
<label>购买用户</label>
{{item.buyUser.nickname}}
</view>
<view class="logs-item">
<label>交易时间</label>
{{item.created_at}}
</view>
</view>
</view>
</block>
<block v-else>
<view class="list-null">
<image class="icon" src="@/static/icons/listnull-icon.png" mode="widthFix" />
<view class="sub-title">暂无数据</view>
</view>
</block>
</view>
</template>
<script>
import { marketsLogs, marketsOrdersLogs } from '@/apis/interfaces/market'
export default {
data() {
return {
logs: [],
page: {},
tab : 'sell'
};
},
created(){
this.getList()
},
methods:{
onTasb(e){
this.tab = e
this.getList()
},
// 获取列表
getList(){
if(this.$Route.query.type === 'my'){
marketsOrdersLogs({}, this.tab).then(res =>{
console.log(res)
this.logs = res.data
this.page = res.page
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
return
}
marketsLogs().then(res => {
this.logs = res.data
this.page = res.page
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
}
</script>
<style lang="scss" scoped>
.tabs{
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 99;
background-color: white;
height: 90rpx;
line-height: 90rpx;
display: flex;
justify-content: space-around;
.item{
border-bottom: solid 2rpx white;
box-sizing: border-box;
&.show{
border-color: $mian-color;
color: $mian-color;
}
}
}
.paddingTop{
padding-top: 90rpx;
}
.logs{
background: white;
margin-top: $margin;
padding: ($padding - 10) $padding;
.logs-item{
padding-left: 200rpx;
height: 50rpx;
line-height: 50rpx;
position: relative;
text-align: right;
font-size: $title-size-m;
@extend .nowrap;
label{
position: absolute;
left: 0;
top: 0;
width: 200rpx;
text-align: left;
color: $text-gray;
}
}
}
// 空提示
.list-null{
width: 100vw;
height: 100vh;
box-sizing: border-box;
text-align: center;
background: white;
padding-bottom: 20vh;
@extend .vertical;
.sub-title{
color: $text-gray;
font-size: $title-size-m;
}
.icon{
width: 288rpx;
}
}
.employees-null{
text-align: center;
line-height: 10vh;
padding-bottom: $padding;
font-size: $title-size-m;
color: $text-gray;
}
</style>

169
pages/market/management.vue Normal file
View File

@@ -0,0 +1,169 @@
<template>
<view class="NumberWeight">
<!-- 有订单列表 -->
<view v-if="lists.length > 0">
<block v-for="(item, index) in lists" :key="index">
<view class="order-item">
<view class="order-info">
<image class="order-cover" :src="item.goods.cover" mode="aspectFill"></image>
<view class="title">数字权证<text>{{item.surplus}}/{{item.stock}}</text></view>
<view class="text">锚定商品{{item.goods.goods_name}}</view>
<view class="text">交易哈希{{item.hash}}</view>
<view class="text">发布时间{{item.created_at}}</view>
</view>
<view class="order-tool">
<view class="price">{{item.price}}/</view>
<view class="order-btn" v-if="item.status.value === 1" @click="removeGoods(item.market_id, index)">取消转让</view>
<view class="order-status" v-if="item.status.value === 2">{{item.status.text}}</view>
</view>
</view>
</block>
</view>
<!-- 没有订单列表 -->
<no-list v-if="lists.length === 0" name="no-order" txt="暂无数据~" />
<u-toast ref="uToast" />
</view>
</template>
<script>
import { marketsMag, marketsCancel } from '@/apis/interfaces/market';
export default {
data() {
return {
lists: [],
page: 1,
total: 0
};
},
onLoad() {
this.getList();
},
onReachBottom() {
if (this.total > this.lists.length) {
this.page = this.page + 1;
this.getList();
} else {
this.$refs.uToast.show({
title: '吼吼吼~我是有底的~',
type: 'error',
icon: false,
duration: 3000
});
}
},
methods: {
getList() {
let data = {
perPage: 10,
page: this.page
};
marketsMag(data)
.then(res => {
console.log(res.markets.data);
this.lists = this.lists.concat(res.markets.data);
this.total = res.markets.page.total;
})
.catch(err => {
this.$refs.uToast.show({
title: err.message,
type: 'error',
icon: false,
duration: 3000
});
});
},
// 取消转让
removeGoods(id, index) {
marketsCancel(id).then(res => {
uni.showToast({
icon : 'none',
title: res
})
let statusObj = this.lists[index]
statusObj.status = {
value: 2,
text : '已取消',
}
this.$set(this.lists, index, statusObj)
}).catch(err => {
uni.showToast({
icon : 'none',
title: err.message
})
})
}
},
onNavigationBarButtonTap(){
this.$Router.push({name: "marketLogs", params: {type: 'my'}})
}
};
</script>
<style lang="scss" scoped>
.NumberWeight {
box-sizing: border-box;
// 订单列表
.order-item {
background-color: white;
margin: $margin;
border-radius: $radius;
padding: $padding;
.order-info{
position: relative;
padding-left: 188rpx;
min-height: 168rpx;
.order-cover{
position: absolute;
top: 0;
left: 0;
height: 168rpx;
width: 168rpx;
}
.title{
font-weight: bold;
font-size: $title-size-lg;
color: $text-color;
line-height: 48rpx;
height: 48rpx;
display: flex;
justify-content: space-between;
text{
font-size: 80%;
font-weight: normal;
}
}
.text{
line-height: 40rpx;
height: 40rpx;
font-size: $title-size-sm;
color: $text-gray;
@extend .nowrap;
}
}
.order-tool{
margin-top: $margin - 10;
padding-top: $padding - 10;
border-top: solid 1rpx $border-color;
display: flex;
justify-content: space-between;
.price{
color: $text-price;
font-weight: bold;
font-size: $title-size-m;
line-height: 50rpx;
}
.order-btn{
background: $mian-color;
color: white;
padding: 0 $padding;
line-height: 50rpx;
border-radius: 25rpx;
font-size: $title-size-m;
}
.order-status{
color: $text-gray-m;
}
}
}
}
</style>

249
pages/market/transfer.vue Normal file
View File

@@ -0,0 +1,249 @@
<template>
<view v-if="!loding">
<!-- 产品信息 -->
<view class="goods">
<image class="cover" :src="info.goods.cover" mode="aspectFill"></image>
<view class="content">
<view class="title nowrap">数字权证</view>
<view class="text nowrap">锚定商品{{info.goods.goods_name}}</view>
<view class="text nowrap">提供企业{{info.goods.company.name}}</view>
<view class="text nav-goods nowrap" @click="onGoods">查看锚定商品信息<uni-icons type="arrowright" size="12" color="#e93340"></uni-icons></view>
</view>
<view class="info">
<view class="info-item">
<label>权证销售单价</label>
{{info.goods.price}}
</view>
<view class="info-item">
<label>拥有数量</label>
{{info.account.balance}}
</view>
<view class="info-item">
<label>转让价格</label>
<input class="info-input" type="digit" v-model="pirce" placeholder="输入转让价格" maxlength="5" @blur="calculatePirce" />
</view>
<view class="info-item info-flex">
<label>转让数量</label>
<uni-number-box class="info-number" v-model='stock' :min="1" :max="info.account.balance" @change="countPrice"></uni-number-box>
</view>
<view class="info-item">
<label>预估转让收益</label>
<view class="price">{{forecast}}</view>
</view>
</view>
</view>
<button class="buy-btn" type="default" @click="onCreate">确认转让</button>
<u-toast ref="uToast" />
</view>
</template>
<script>
import { marketsCreateInfo, marketsCreate } from '@/apis/interfaces/market'
export default {
data() {
return {
loding : true,
pirce : '',
stock : 1,
info : {},
forecast: '0.00'
};
},
onShow() {
marketsCreateInfo(this.$Route.query.symbol).then(res =>{
this.info = res
this.loding = false
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods:{
// 查看锚定产品
onGoods(){
this.$Router.push({name: 'marketGoods', params: { id: this.info.goods.goods_id }})
},
// 转让数量
countPrice(e){
this.stock = e
this.calculatePirce()
},
// 计算预估收益
calculatePirce(){
this.forecast = (this.pirce * this.stock).toFixed(2)
},
// 提交转让市场
onCreate(){
if(this.pirce === ''){
this.$refs.uToast.show({
title: '请校验转让价格',
type: 'error',icon:false,
duration: 3000
})
}else{
marketsCreate({
symbol : this.$Route.query.symbol,
qty : this.stock,
price : this.pirce || 0
}).then(res => {
uni.setStorageSync('refresh', true)
uni.showModal({
title : '提示',
content : res,
showCancel : false,
success : () => {
this.$Router.back()
}
})
}).catch(err => {
console.log(err)
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
}
}
</script>
<style lang="scss" scoped>
// 转让权证
.buy-btn{
margin: 0 $margin;
background: $text-price;
color: white;
height: 90rpx;
line-height: 90rpx;
padding: 0;
border-radius: $radius/2;
font-size: $title-size;
font-weight: bold;
&::after{
border: none;
}
}
// 产品信息
.goods{
min-height: 168rpx;
position: relative;
background: white;
border-radius: $radius/2;
margin: $margin;
padding: $padding;
.cover{
position: absolute;
left: $padding;
top: $padding;
width: 168rpx;
height: 168rpx;
}
.content{
padding-left: calc(168rpx + #{$padding});
.title{
position: relative;
font-size: $title-size-lg;
color: $text-color;
font-weight: bold;
line-height: 52rpx;
padding-right: 60rpx;
text{
position: absolute;
right: 0;
top: 0;
width: 60rpx;
text-align: right;
font-weight: normal;
}
}
.text{
font-size: $title-size-sm;
color: $text-gray;
height: 40rpx;
line-height: 40rpx;
&.nav-goods{
color: $text-price;
}
}
}
.info{
margin-top: $margin;
border-top: solid 1rpx $border-color;
padding-top: $padding;
.info-item{
padding-left: 200rpx;
height: 90rpx;
line-height: 90rpx;
position: relative;
text-align: right;
font-size: $title-size-lg;
&.info-flex{
display: flex;
justify-content: flex-end;
align-items: center;
}
@extend .nowrap;
label{
position: absolute;
left: 0;
top: 0;
width: 200rpx;
text-align: left;
color: $text-gray;
}
.info-input{
height: 80rpx;
line-height: 80rpx;
font-size: $title-size-lg;
}
.price{
color: $text-price;
font-weight: bold;
}
}
}
}
// 购买产品
.popup {
width: 100%;
background-color: #fff;
padding-bottom: $padding;
.title {
font-size: 36rpx;
text-align: center;
padding: 50rpx 30rpx 30rpx 30rpx;
font-weight: bold;
}
.btn {
background-color: $text-price;
height: 90rpx;
line-height: 90rpx;
text-align: center;
color: #fff;
font-weight: bold;
font-size: $title-size;
margin: $padding * 2;
border-radius: $radius/2;
}
.des {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: $padding $padding * 2;
color: $text-gray;
font-size: $title-size-lg;
text{
color: $text-color;
}
.price{
color: $mian-color;
font-weight: bold;
}
}
}
</style>

View File

@@ -209,32 +209,6 @@
</view> </view>
</view> </view>
</view> </view>
<!-- 我的权证 -->
<!-- <view class="user-group">
<view class="title">
<view class="title-text">我的权证</view>
</view>
<view class="group-flex group-flex-4">
<view class="item" @click="$Router.push({name:'NumberWeight'})">
<view class="item-num">{{count.warrnats}}</view>
<view class="item-title">权证持有</view>
</view>
<view class="item" @click="$Router.push({name: 'marketManag'})">
<view class="item-num">{{count.warrnat_transfer}}</view>
<view class="item-title">权证转让</view>
</view>
<view class="item" @click="$Router.push({name:'ServicesOrder'})">
<view class="item-num">{{count.shipment_fuwu_count}}</view>
<view class="item-title">已使用</view>
</view>
<view class="item" @click="$Router.push({name:'MallShipments'})">
<view class="item-num">{{count.shipment_goods_count}}</view>
<view class="item-title">已提货</view>
</view>
</view>
</view> -->
<!-- 我的权证 --> <!-- 我的权证 -->
<view class="userPartner"> <view class="userPartner">
<view class="partner-title"> <view class="partner-title">
@@ -242,17 +216,21 @@
</view> </view>
<view class="tool-list"> <view class="tool-list">
<view class="tool-label" @click="$Router.push({name:'NumberWeight'})"> <view class="tool-label" @click="$Router.push({name:'NumberWeight'})">
<image class="tool-label-img" src="/static/user/userServe-00.png" mode=""></image> <image class="tool-label-img" src="/static/user/authorityCard-00.png" mode=""></image>
<view class="tool-label-name">权证持有</view> <view class="tool-label-name">权证持有</view>
</view> </view>
<view class="tool-label" @click="$Router.push({name:'ServicesOrder'})"> <view class="tool-label" @click="$Router.push({name:'ServicesOrder'})">
<image class="tool-label-img" src="/static/user/userServe-02.png" mode=""></image> <image class="tool-label-img" src="/static/user/authorityCard-01.png" mode=""></image>
<view class="tool-label-name">已使用</view> <view class="tool-label-name">已使用</view>
</view> </view>
<view class="tool-label" @click="$Router.push({name:'MallShipments'})"> <view class="tool-label" @click="$Router.push({name:'MallShipments'})">
<image class="tool-label-img" src="/static/user/userServe-03.png" mode=""></image> <image class="tool-label-img" src="/static/user/authorityCard-03.png" mode=""></image>
<view class="tool-label-name">已提货</view> <view class="tool-label-name">已提货</view>
</view> </view>
<view class="tool-label" @click="$Router.push({name: 'marketManag'})">
<image class="tool-label-img" src="/static/user/authorityCard-02.png" mode=""></image>
<view class="tool-label-name">权证转让</view>
</view>
</view> </view>
</view> </view>

View File

@@ -96,7 +96,7 @@
.copy { .copy {
display: inline-block; display: inline-block;
padding: $padding *0.4 $padding; padding: $padding *0.4 $padding;
background-color: $main-color; background-color: $mian-color;
margin-left: 30rpx; margin-left: 30rpx;
color: #fff; color: #fff;
font-size: $title-size *0.8; font-size: $title-size *0.8;
@@ -129,7 +129,7 @@
} }
&:first-child { &:first-child {
color: $main-color !important; color: $mian-color !important;
} }
.dian { .dian {
@@ -143,12 +143,12 @@
} }
.dian-active { .dian-active {
background-color: $main-color; background-color: $mian-color;
width: 30rpx; width: 30rpx;
height: 30rpx; height: 30rpx;
left: -16rpx; left: -16rpx;
border: solid 10rpx rgba($color: $main-color, $alpha: 0.3); border: solid 10rpx rgba($color: $mian-color, $alpha: 0.3);
box-shadow: 0 0 20rpx 4rpx rgba($color: $main-color, $alpha: 0.5); box-shadow: 0 0 20rpx 4rpx rgba($color: $mian-color, $alpha: 0.5);
} }
.content { .content {
@@ -166,7 +166,7 @@
} }
.content-active { .content-active {
color: $main-color; color: $mian-color;
} }
} }
} }

View File

@@ -256,8 +256,8 @@
} }
.nav-item-selected { .nav-item-selected {
border-bottom: solid 4rpx $main-color; border-bottom: solid 4rpx $mian-color;
color: $main-color; color: $mian-color;
} }
} }
@@ -288,7 +288,7 @@
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
margin-top: 20rpx; margin-top: 20rpx;
// background-color: $main-color; // background-color: $mian-color;
color: #999; color: #999;
border: solid 1rpx #cacaca; border: solid 1rpx #cacaca;
} }
@@ -302,7 +302,7 @@
} }
.logistics { .logistics {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -318,7 +318,7 @@
} }
.evaluate { .evaluate {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;

View File

@@ -206,7 +206,7 @@
.order-status { .order-status {
width: 100%; width: 100%;
height: 300rpx; height: 300rpx;
background-image: linear-gradient(to bottom, $main-color, $main-color-light); background-image: linear-gradient(to bottom, $mian-color, $mian-color-light);
color: #Fff; color: #Fff;
font-size: 36rpx; font-size: 36rpx;
padding: 30rpx 50rpx; padding: 30rpx 50rpx;
@@ -238,7 +238,7 @@
.acceptInfo { .acceptInfo {
margin: 0 30rpx; margin: 0 30rpx;
background-color: #fff; background-color: #fff;
box-shadow: 0 0 14rpx 4rpx rgba($color: $main-color, $alpha: 0.2); box-shadow: 0 0 14rpx 4rpx rgba($color: $mian-color, $alpha: 0.2);
border-radius: 20rpx; border-radius: 20rpx;
padding: 30rpx; padding: 30rpx;
position: relative; position: relative;
@@ -413,7 +413,7 @@
justify-content: flex-end; justify-content: flex-end;
box-sizing: border-box; box-sizing: border-box;
font-size: 26rpx; font-size: 26rpx;
color: $main-color; color: $mian-color;
flex: 1; flex: 1;
text-align: right; text-align: right;
margin-top: 20rpx; margin-top: 20rpx;
@@ -421,7 +421,7 @@
} }
.total-btn { .total-btn {
border: solid 1rpx $main-color; border: solid 1rpx $mian-color;
padding: 6rpx 20rpx; padding: 6rpx 20rpx;
border-radius: 10rpx; border-radius: 10rpx;
} }
@@ -446,7 +446,7 @@
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
margin-top: 20rpx; margin-top: 20rpx;
// background-color: $main-color; // background-color: $mian-color;
color: #999; color: #999;
border: solid 1rpx #cacaca; border: solid 1rpx #cacaca;
} }
@@ -460,7 +460,7 @@
} }
.logistics { .logistics {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -476,7 +476,7 @@
} }
.evaluate { .evaluate {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -495,7 +495,7 @@
width: 100%; width: 100%;
.copy { .copy {
color: $main-color; color: $mian-color;
font-size: $title-size*0.8; font-size: $title-size*0.8;
font-weight: 400; font-weight: 400;
padding: 0 30rpx; padding: 0 30rpx;
@@ -631,8 +631,8 @@
} }
.list-top-right { .list-top-right {
border: solid 1rpx $main-color; border: solid 1rpx $mian-color;
color: $main-color; color: $mian-color;
display: inline-block; display: inline-block;
padding: 8rpx 16rpx; padding: 8rpx 16rpx;
font-size: $title-size *0.8; font-size: $title-size *0.8;
@@ -660,7 +660,7 @@
} }
&:first-child { &:first-child {
color: $main-color !important; color: $mian-color !important;
} }
.dian { .dian {
@@ -674,12 +674,12 @@
} }
.dian-active { .dian-active {
background-color: $main-color; background-color: $mian-color;
width: 30rpx; width: 30rpx;
height: 30rpx; height: 30rpx;
left: -16rpx; left: -16rpx;
border: solid 10rpx rgba($color: $main-color, $alpha: 0.3); border: solid 10rpx rgba($color: $mian-color, $alpha: 0.3);
box-shadow: 0 0 20rpx 4rpx rgba($color: $main-color, $alpha: 0.5); box-shadow: 0 0 20rpx 4rpx rgba($color: $mian-color, $alpha: 0.5);
} }
.content { .content {
@@ -697,7 +697,7 @@
} }
.content-active { .content-active {
color: $main-color; color: $mian-color;
} }
.pictures{ .pictures{

View File

@@ -392,8 +392,8 @@
} }
.nav-item-selected { .nav-item-selected {
border-bottom: solid 4rpx $main-color; border-bottom: solid 4rpx $mian-color;
color: $main-color; color: $mian-color;
} }
} }
@@ -418,7 +418,7 @@
} }
.nav-item-selected { .nav-item-selected {
color: $main-color; color: $mian-color;
} }
} }
@@ -449,7 +449,7 @@
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
margin-top: 20rpx; margin-top: 20rpx;
// background-color: $main-color; // background-color: $mian-color;
color: #999; color: #999;
border: solid 1rpx #cacaca; border: solid 1rpx #cacaca;
} }
@@ -463,7 +463,7 @@
} }
.logistics { .logistics {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -479,7 +479,7 @@
} }
.evaluate { .evaluate {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;

View File

@@ -267,7 +267,7 @@
.order-status { .order-status {
width: 100%; width: 100%;
height: 300rpx; height: 300rpx;
background-image: linear-gradient(to bottom, $main-color, $main-color-light); background-image: linear-gradient(to bottom, $mian-color, $mian-color-light);
color: #Fff; color: #Fff;
font-size: 36rpx; font-size: 36rpx;
padding: 30rpx 50rpx; padding: 30rpx 50rpx;
@@ -299,7 +299,7 @@
.acceptInfo { .acceptInfo {
margin: 0 30rpx; margin: 0 30rpx;
background-color: #fff; background-color: #fff;
box-shadow: 0 0 14rpx 4rpx rgba($color: $main-color, $alpha: 0.2); box-shadow: 0 0 14rpx 4rpx rgba($color: $mian-color, $alpha: 0.2);
border-radius: 20rpx; border-radius: 20rpx;
padding: 30rpx; padding: 30rpx;
position: relative; position: relative;
@@ -469,7 +469,7 @@
justify-content: flex-end; justify-content: flex-end;
box-sizing: border-box; box-sizing: border-box;
font-size: 26rpx; font-size: 26rpx;
color: $main-color; color: $mian-color;
flex: 1; flex: 1;
text-align: right; text-align: right;
margin-top: 20rpx; margin-top: 20rpx;
@@ -477,7 +477,7 @@
} }
.total-btn { .total-btn {
border: solid 1rpx $main-color; border: solid 1rpx $mian-color;
padding: 6rpx 20rpx; padding: 6rpx 20rpx;
border-radius: 10rpx; border-radius: 10rpx;
} }
@@ -502,7 +502,7 @@
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
margin-top: 20rpx; margin-top: 20rpx;
// background-color: $main-color; // background-color: $mian-color;
color: #999; color: #999;
border: solid 1rpx #cacaca; border: solid 1rpx #cacaca;
} }
@@ -516,7 +516,7 @@
} }
.logistics { .logistics {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -532,7 +532,7 @@
} }
.evaluate { .evaluate {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -551,7 +551,7 @@
width: 100%; width: 100%;
.copy { .copy {
color: $main-color; color: $mian-color;
font-size: $title-size*0.8; font-size: $title-size*0.8;
font-weight: 400; font-weight: 400;
padding: 0 30rpx; padding: 0 30rpx;
@@ -686,8 +686,8 @@
} }
.list-top-right { .list-top-right {
border: solid 1rpx $main-color; border: solid 1rpx $mian-color;
color: $main-color; color: $mian-color;
display: inline-block; display: inline-block;
padding: 8rpx 16rpx; padding: 8rpx 16rpx;
font-size: $title-size *0.8; font-size: $title-size *0.8;

View File

@@ -241,7 +241,7 @@
margin-top: 20rpx; margin-top: 20rpx;
width: 600rpx; width: 600rpx;
font-size: 32rpx; font-size: 32rpx;
background-color: $main-color; background-color: $mian-color;
text-align: center; text-align: center;
} }
} }

View File

@@ -6,6 +6,7 @@
<view class="order-list" v-for="(item,index) in lists" :key="index"> <view class="order-list" v-for="(item,index) in lists" :key="index">
<NumberWeightTemplate :item="item" /> <NumberWeightTemplate :item="item" />
<view class="actions"> <view class="actions">
<view @click="navMarkets(item.symbol)" class="nowPay">权证转让</view>
<view @click="nowTake(item.symbol)" class="nowPay">去提货</view> <view @click="nowTake(item.symbol)" class="nowPay">去提货</view>
</view> </view>
</view> </view>
@@ -129,8 +130,8 @@
} }
.nav-item-selected { .nav-item-selected {
border-bottom: solid 4rpx $main-color; border-bottom: solid 4rpx $mian-color;
color: $main-color; color: $mian-color;
} }
} }
@@ -161,7 +162,7 @@
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
margin-top: 20rpx; margin-top: 20rpx;
background-color: $main-color; background-color: $mian-color;
} }
.cancelOrder { .cancelOrder {
@@ -173,7 +174,7 @@
} }
.logistics { .logistics {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -189,7 +190,7 @@
} }
.evaluate { .evaluate {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;

View File

@@ -306,7 +306,7 @@
.order-status { .order-status {
width: 100%; width: 100%;
height: 300rpx; height: 300rpx;
background-image: linear-gradient(to bottom, $main-color, $main-color-light); background-image: linear-gradient(to bottom, $mian-color, $mian-color-light);
color: #Fff; color: #Fff;
font-size: 36rpx; font-size: 36rpx;
padding: 30rpx 50rpx; padding: 30rpx 50rpx;
@@ -338,7 +338,7 @@
.acceptInfo { .acceptInfo {
margin: 0 30rpx; margin: 0 30rpx;
background-color: #fff; background-color: #fff;
box-shadow: 0 0 14rpx 4rpx rgba($color: $main-color, $alpha: 0.2); box-shadow: 0 0 14rpx 4rpx rgba($color: $mian-color, $alpha: 0.2);
border-radius: 20rpx; border-radius: 20rpx;
padding: 30rpx; padding: 30rpx;
position: relative; position: relative;
@@ -498,7 +498,7 @@
justify-content: flex-end; justify-content: flex-end;
box-sizing: border-box; box-sizing: border-box;
font-size: 26rpx; font-size: 26rpx;
color: $main-color; color: $mian-color;
flex: 1; flex: 1;
text-align: right; text-align: right;
margin-top: 20rpx; margin-top: 20rpx;
@@ -506,7 +506,7 @@
} }
.total-btn { .total-btn {
border: solid 1rpx $main-color; border: solid 1rpx $mian-color;
padding: 6rpx 20rpx; padding: 6rpx 20rpx;
border-radius: 10rpx; border-radius: 10rpx;
} }
@@ -532,7 +532,7 @@
margin-top: 20rpx; margin-top: 20rpx;
width: 600rpx; width: 600rpx;
font-size: 32rpx; font-size: 32rpx;
background-color: $main-color; background-color: $mian-color;
text-align: center; text-align: center;
} }
@@ -545,7 +545,7 @@
} }
.logistics { .logistics {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -561,7 +561,7 @@
} }
.evaluate { .evaluate {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -579,7 +579,7 @@
width: 100%; width: 100%;
.copy { .copy {
color: $main-color; color: $mian-color;
font-size: $title-size*0.8; font-size: $title-size*0.8;
font-weight: 400; font-weight: 400;
padding: 0 30rpx; padding: 0 30rpx;
@@ -684,8 +684,8 @@
} }
.list-top-right { .list-top-right {
border: solid 1rpx $main-color; border: solid 1rpx $mian-color;
color: $main-color; color: $mian-color;
display: inline-block; display: inline-block;
padding: 8rpx 16rpx; padding: 8rpx 16rpx;
font-size: $title-size *0.8; font-size: $title-size *0.8;

View File

@@ -162,8 +162,8 @@
} }
.nav-item-selected { .nav-item-selected {
border-bottom: solid 4rpx $main-color; border-bottom: solid 4rpx $mian-color;
color: $main-color; color: $mian-color;
} }
} }
@@ -193,7 +193,7 @@
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
margin-top: 20rpx; margin-top: 20rpx;
// background-color: $main-color; // background-color: $mian-color;
color: #999; color: #999;
border:solid 1rpx #cacaca; border:solid 1rpx #cacaca;
} }
@@ -207,7 +207,7 @@
} }
.logistics { .logistics {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -223,7 +223,7 @@
} }
.evaluate { .evaluate {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;

View File

@@ -160,7 +160,7 @@
.order-status { .order-status {
width: 100%; width: 100%;
height: 300rpx; height: 300rpx;
background-image: linear-gradient(to bottom, $main-color, $main-color-light); background-image: linear-gradient(to bottom, $mian-color, $mian-color-light);
color: #Fff; color: #Fff;
font-size: 36rpx; font-size: 36rpx;
padding: 30rpx 50rpx; padding: 30rpx 50rpx;
@@ -192,7 +192,7 @@
.acceptInfo { .acceptInfo {
margin: 0 30rpx; margin: 0 30rpx;
background-color: #fff; background-color: #fff;
box-shadow: 0 0 14rpx 4rpx rgba($color: $main-color, $alpha: 0.2); box-shadow: 0 0 14rpx 4rpx rgba($color: $mian-color, $alpha: 0.2);
border-radius: 20rpx; border-radius: 20rpx;
padding: 30rpx; padding: 30rpx;
position: relative; position: relative;
@@ -362,7 +362,7 @@
justify-content: flex-end; justify-content: flex-end;
box-sizing: border-box; box-sizing: border-box;
font-size: 26rpx; font-size: 26rpx;
color: $main-color; color: $mian-color;
flex: 1; flex: 1;
text-align: right; text-align: right;
margin-top: 20rpx; margin-top: 20rpx;
@@ -370,7 +370,7 @@
} }
.total-btn { .total-btn {
border: solid 1rpx $main-color; border: solid 1rpx $mian-color;
padding: 6rpx 20rpx; padding: 6rpx 20rpx;
border-radius: 10rpx; border-radius: 10rpx;
} }
@@ -395,7 +395,7 @@
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
margin-top: 20rpx; margin-top: 20rpx;
// background-color: $main-color; // background-color: $mian-color;
color: #999; color: #999;
border: solid 1rpx #cacaca; border: solid 1rpx #cacaca;
} }
@@ -409,7 +409,7 @@
} }
.logistics { .logistics {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -425,7 +425,7 @@
} }
.evaluate { .evaluate {
background-color: $main-color; background-color: $mian-color;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
border-radius: 40rpx; border-radius: 40rpx;
margin-left: 20rpx; margin-left: 20rpx;
@@ -444,7 +444,7 @@
width: 100%; width: 100%;
.copy { .copy {
color: $main-color; color: $mian-color;
font-size: $title-size*0.8; font-size: $title-size*0.8;
font-weight: 400; font-weight: 400;
padding: 0 30rpx; padding: 0 30rpx;
@@ -579,8 +579,8 @@
} }
.list-top-right { .list-top-right {
border: solid 1rpx $main-color; border: solid 1rpx $mian-color;
color: $main-color; color: $mian-color;
display: inline-block; display: inline-block;
padding: 8rpx 16rpx; padding: 8rpx 16rpx;
font-size: $title-size *0.8; font-size: $title-size *0.8;

View File

@@ -9,12 +9,10 @@
$text-color: #333; $text-color: #333;
$text-gray: #555; $text-gray: #555;
$text-gray-m: #999; $text-gray-m: #999;
$text-price: #8b64fd; $text-price: #ee4c47;
$mian-color: #8b64fd; $mian-color: #8b64fd;
$main-color: #8b64fd;
$mian-color-deep: #824f9a; $mian-color-deep: #824f9a;
$mian-color-light:#8b64fd; $mian-color-light:#8b64fd;
$main-color-light:#8b64fd;
// 矿机 // 矿机
$block-color: #2b2449; $block-color: #2b2449;

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long