更新代码

This commit is contained in:
zhangmanman
2021-09-23 10:19:38 +08:00
45 changed files with 57402 additions and 4013 deletions

View File

@@ -3,7 +3,7 @@
* moduleName: 地址 * moduleName: 地址
*/ */
import request from '../request.js' import { request } from '../index'
// 地址列表 // 地址列表
const addresses = () => { const addresses = () => {

View File

@@ -3,7 +3,7 @@
* moduleName: 优惠券相关 * moduleName: 优惠券相关
*/ */
import request from '../request.js' import { request } from '../index'
// 我的优惠券 // 我的优惠券
const myCoupon = (data) => { const myCoupon = (data) => {

View File

@@ -18,7 +18,8 @@ const mall = data => {
// 商品列表 // 商品列表
const list = data => { const list = data => {
return request({ return request({
url: "mall/goods" url: "mall/goods",
data
}) })
} }

View File

@@ -47,12 +47,56 @@ const marketsPay = (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 { export {
markets, markets,
marketsLogs, marketsLogs,
marketsInfo, marketsInfo,
marketsBuy, marketsBuy,
marketsPay marketsPay,
marketsCreateInfo,
marketsCreate,
marketsMag,
marketsCancel,
marketsOrdersLogs
} }

View File

@@ -3,7 +3,7 @@
* moduleName:个人中心相关操作 * moduleName:个人中心相关操作
*/ */
import request from '../request.js' import { request } from '../index'
// 关注店铺 // 关注店铺
const shopSubscribe = (id) => { const shopSubscribe = (id) => {

View File

@@ -3,7 +3,7 @@
* moduleName: 我的数权 * moduleName: 我的数权
*/ */
import request from '../request.js' import { request } from '../index'
// 我的数权 // 我的数权
const mallWarrants = (data) => { const mallWarrants = (data) => {

View File

@@ -3,10 +3,10 @@
* moduleName:核销相关操作 * moduleName:核销相关操作
*/ */
import request from '../request.js' import { request } from '../index'
// 扫码前置条件 // 扫码前置条件 get 核销前置 post 表示核销
const scanInfo = (apiUrl,data,method) => { const scanInfo = (apiUrl,data,method) => {
return request({ return request({
url: apiUrl, url: apiUrl,
@@ -15,8 +15,17 @@ const scanInfo = (apiUrl,data,method) => {
}) })
} }
// 核销记录
const scanList = (apiUrl,data) => {
return request({
url: apiUrl,
method:'GET',
data:data
})
}
export { export {
scanInfo scanInfo,
scanList
} }

View File

@@ -15,7 +15,7 @@ const index = () => {
}) })
} }
// 成交客户 // 成交客户 *********已废弃
const customer = data => { const customer = data => {
return request({ return request({
url: 'mall/statistics', url: 'mall/statistics',
@@ -23,6 +23,14 @@ const customer = data => {
}) })
} }
// 成交客户
const orderUsers = data => {
return request({
url: 'manages/order_users',
data
})
}
// 访客记录 // 访客记录
const visitors = data => { const visitors = data => {
return request({ return request({
@@ -144,6 +152,7 @@ const deliverLogistic = (shipment__no) => {
export { export {
index, index,
customer, customer,
orderUsers,
visitors, visitors,
basicsConfig, basicsConfig,
basicsInfo, basicsInfo,

View File

@@ -1,6 +1,6 @@
<template> <template>
<view class="OrderTemplate" > <view class="OrderTemplate" >
<view class="top" > <view class="top" v-if="isTop">
<view class="company"> <view class="company">
<view class="company-logo"> <view class="company-logo">
<image :src="item.shop.cover" mode="aspectFill" /> <image :src="item.shop.cover" mode="aspectFill" />
@@ -33,7 +33,11 @@
}; };
}, },
props:{ props:{
item:Object item : Object,
isTop : {
type: Boolean,
default: true
}
}, },
onShow() { onShow() {
console.log(this.item,'onshow,numtempa') console.log(this.item,'onshow,numtempa')
@@ -113,13 +117,11 @@
justify-content: flex-start; justify-content: flex-start;
box-sizing: border-box; box-sizing: border-box;
margin-top: 36rpx; margin-top: 36rpx;
.goods-img { .goods-img {
width: 120rpx; width: 120rpx;
height: 120rpx; height: 120rpx;
border-radius: 10rpx; border-radius: 10rpx;
} }
.goods { .goods {
flex: 1; flex: 1;
margin-left: 20rpx; margin-left: 20rpx;

View File

@@ -528,15 +528,15 @@
"style": { "style": {
"navigationBarTitleText": "扫码验证", "navigationBarTitleText": "扫码验证",
"navigationBarTextStyle": "white", "navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#039bfe" "navigationBarBackgroundColor": "#076cff"
} }
}, { }, {
"path": "pages/verification/details", "path": "pages/verification/history",
"name": "VerificationDetails", "name": "VerificationHistory",
"style": { "style": {
"navigationBarTitleText": "核销券详情", "navigationBarTitleText": "核销记录",
"navigationBarTextStyle": "white", "navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#f40c50" "navigationBarBackgroundColor": "#076cff"
} }
}, { }, {
"path": "pages/shop/lists", "path": "pages/shop/lists",
@@ -583,6 +583,35 @@
"type": "transparent" "type": "transparent"
} }
} }
},{
"path" : "pages/pay/results",
"name" : "payResults",
"style": {
"navigationBarTitleText": "支付结果",
"backgroundColor": "#FFFFFF"
}
},{
"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": "#e93340"
}]
}
}
} }
], ],
"tabBar": { "tabBar": {

View File

@@ -4,9 +4,7 @@
<view style="position: relative;z-index: 3;"> <view style="position: relative;z-index: 3;">
<!-- 搜索... --> <!-- 搜索... -->
<view class="mine-top-contant"> <view class="mine-top-contant">
<u-navbar :is-back="false" :background="background" title="企业优惠券中心" title-color="#fff" <u-navbar :is-back="true" :background="background" title="企业优惠券中心" title-color="#fff" :border-bottom='false'></u-navbar>
:border-bottom='false'>
</u-navbar>
<!--banner--> <!--banner-->
<swiper class="swiper" :indicator-dots="true" :autoplay="false" indicator-active-color='#fff' <swiper class="swiper" :indicator-dots="true" :autoplay="false" indicator-active-color='#fff'
indicator-color='rgba(0,0,0,.1)'> indicator-color='rgba(0,0,0,.1)'>

View File

@@ -142,7 +142,7 @@
<view class="title"> <view class="title">
限时抢购<text>海量商家优惠券</text> 限时抢购<text>海量商家优惠券</text>
</view> </view>
<navigator class="more" url="/pages/coupons/couponList">查看更多</navigator> <navigator class="more" open-type="navigate" url="/pages/coupons/couponList">查看更多</navigator>
</view> </view>
<view class="coupons" v-if="coupons.length > 0"> <view class="coupons" v-if="coupons.length > 0">
<view class="coupons-item" v-for="(item, index) in coupons" :key="index"> <view class="coupons-item" v-for="(item, index) in coupons" :key="index">
@@ -168,6 +168,8 @@
</view> </view>
<!-- 优选商品 --> <!-- 优选商品 -->
<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>
</block> </block>
</view> </view>
</template> </template>
@@ -205,14 +207,16 @@
coupons : [], coupons : [],
position : {}, position : {},
goods : [], goods : [],
pages : {},
// 广场部分 // 广场部分
industryIndex: 0, industryIndex: 0,
recommendBus : [], recommendBus : [],
hotBus : [], hotBus : [],
industryBus : [], industryBus : [],
busList : [], busList : [],
busPages : {} busPages : {},
// 分页
pageStatus : '',
page : 1
}; };
}, },
created() { created() {
@@ -267,8 +271,7 @@
}, },
// 易货首页 // 易货首页
getMall(){ getMall(){
mall().then(res => { mall().then(res => {
console.log(res.coupons)
this.classify = res.categories.slice(0, 9) this.classify = res.categories.slice(0, 9)
this.banners = res.banners this.banners = res.banners
this.coupons = res.coupons this.coupons = res.coupons
@@ -283,9 +286,15 @@
}, },
// 商品列表 // 商品列表
getGoods(){ getGoods(){
list().then(res => { list({
this.goods = res.data page: this.goodsPage
this.pages = res.page }).then(res => {
if(res.page.current === 1){
this.goods = []
}
this.goods = this.goods.concat(res.data)
this.goodsPage = res.page.current
this.pageStatus = res.page.has_more ? 'more': 'noMore'
}) })
}, },
// 商品详情 // 商品详情
@@ -324,6 +333,16 @@
} }
}) })
} }
},
// 下拉加载
onReachBottom() {
if(this.pageStatus == 'more'){
this.pageStatus = 'loading'
if(this.tabIndex === 0) {
this.goodsPage += 1
this.getGoods()
}
}
} }
} }
</script> </script>

View File

@@ -19,7 +19,6 @@
<view class="companyInfo">易品新境区块链有限公司</view> <view class="companyInfo">易品新境区块链有限公司</view>
</view> </view>
</view> </view>
<!-- 弹窗提示喽 --> <!-- 弹窗提示喽 -->
<u-toast ref="uToast" /> <u-toast ref="uToast" />
</view> </view>

View File

@@ -152,7 +152,7 @@
<image @click="serveClose" class="close" src="../../static/icons/goods_close.png" mode=""></image> <image @click="serveClose" class="close" src="../../static/icons/goods_close.png" mode=""></image>
</view> </view>
<view class="serve-cont"> <view class="serve-cont">
<view class="serve-label" v-for="(item, index) in goodsObj.services"> <view class="serve-label" v-for="(item, index) in goodsObj.services" :key="index">
<view class="serve-label-name"> <view class="serve-label-name">
{{item.name}} {{item.name}}
</view> </view>
@@ -184,9 +184,7 @@
}; };
}, },
created() { created() {
goods(this.$Route.query.id || 16).then(res=>{ goods(this.$Route.query.id).then(res=>{
console.log('啦啦啦')
console.log(res.coupons)
this.loding = false this.loding = false
this.goodsObj = res this.goodsObj = res
this.identity = res.identity.id || '' this.identity = res.identity.id || ''
@@ -241,19 +239,25 @@
}, },
// 领取优惠券 // 领取优惠券
drawCoupons(id, index){ drawCoupons(id){
let token = this.$store.getters.getToken
if(token == ''){
let userLogin = new userAuth()
userLogin.Login()
return
}
managesCoupons(id).then(res=>{ managesCoupons(id).then(res=>{
uni.showToast({ uni.showToast({
title: '领取成功', title: '领取成功',
type: 'primary', type: 'primary',
duration: 3000 duration: 3000
}) })
}).catch(err =>{ }).catch(err => {
uni.showToast({ uni.showToast({
title: err.message, icon : 'none',
icon : 'none' title: err.message
}) })
}) })
}, },
// 选择优惠券-显示 // 选择优惠券-显示

View File

@@ -6,7 +6,7 @@
价格 价格
<image <image
class="icon" class="icon"
mode="widthFix" :src="require(marketType == 'low' ? '@/static/icons/market_icon_low.png': '@/static/icons/market_icon_high.png')" mode="widthFix" :src="require(marketType == 'asc' ? '@/static/icons/market_icon_low.png': '@/static/icons/market_icon_high.png')"
/> />
</view> </view>
</view> </view>
@@ -23,26 +23,33 @@
data() { data() {
return { return {
tabIndex : 0, tabIndex : 0,
marketType : 'low', marketType : 'asc',
goods : [] goods : []
}; };
}, },
created() { created() {
list().then(res=>{ this.getList()
this.goods = res.data
this.pages = res.page
})
}, },
methods:{ methods:{
onTabs(e){ onTabs(e){
let index = e.target.dataset.index let index = e.target.dataset.index
if(index == 0 && index == this.tabIndex) return if(index == 0 && index == this.tabIndex) return
if(index == 1 && index == this.tabIndex) this.marketType = this.marketType == 'low' ? 'high': 'low' if(index == 1 && index == this.tabIndex) this.marketType = this.marketType == 'asc' ? 'desc': 'asc'
this.tabIndex = index this.tabIndex = index
this.getList()
}, },
onGoods(e){ onGoods(e){
this.$Router.push({name: 'goodsDetails', params: {id: e.goods_id}}) this.$Router.push({name: 'goodsDetails', params: {id: e.goods_id}})
},
getList(){
list({
order_by: this.tabIndex == 1 ? this.marketType: ''
}).then(res=>{
this.goods = res.data
this.pages = res.page
})
} }
} }
} }

View File

@@ -83,6 +83,7 @@
<script> <script>
import { marketsInfo, marketsBuy, marketsPay } from '@/apis/interfaces/market' import { marketsInfo, marketsBuy, marketsPay } from '@/apis/interfaces/market'
import userAuth from '@/public/userAuth'
export default { export default {
data() { data() {
return { return {
@@ -98,8 +99,8 @@
} }
}; };
}, },
created() { onShow() {
marketsInfo(this.$Route.query.marketId || 5).then(res =>{ marketsInfo(this.$Route.query.marketId).then(res =>{
this.info = res this.info = res
this.price = res.price this.price = res.price
this.loding = false this.loding = false
@@ -121,6 +122,12 @@
}, },
// 购买弹窗 // 购买弹窗
openLay(){ openLay(){
let token = this.$store.getters.getToken
if(token == ''){
let userLogin = new userAuth()
userLogin.Login()
return
}
this.$refs.buyLay.open('bottom') this.$refs.buyLay.open('bottom')
}, },
// 计算价格 // 计算价格
@@ -149,8 +156,16 @@
marketsPay(this.orderNo, this.payValue).then(res => { marketsPay(this.orderNo, this.payValue).then(res => {
switch (this.payValue){ switch (this.payValue){
case 'eb': case 'eb':
console.log(res) this.$refs.payLay.close()
console.log('支付结果') this.$Router.push({
name : 'payResults',
params : {
index: 1,
price: this.price,
type : 'eb',
total: '可在我的资产下我的权证中查看购买的数字权证'
}
})
break break
case 'wechat': case 'wechat':
this.wxPay(JSON.parse(res)) this.wxPay(JSON.parse(res))

View File

@@ -11,7 +11,7 @@
</view> </view>
</view> </view>
<view class="lists"> <view class="lists">
<view class="item" v-for="(item, index) in marketArray" :key="index"> <view class="item" v-for="(item, index) in marketArray" :key="index" @click="onDetails(item)">
<image class="cover" :src="item.goods.cover" mode="aspectFill"></image> <image class="cover" :src="item.goods.cover" mode="aspectFill"></image>
<view class="content"> <view class="content">
<view class="title nowrap">数字权证<text>{{item.surplus}}/{{item.stock}}</text></view> <view class="title nowrap">数字权证<text>{{item.surplus}}/{{item.stock}}</text></view>
@@ -36,7 +36,7 @@
page : {} page : {}
}; };
}, },
created() { onShow() {
this.getMarkets() this.getMarkets()
}, },
methods:{ methods:{
@@ -53,10 +53,14 @@
markets({ markets({
sort: this.tabIndex == 1 ? this.marketType : '' sort: this.tabIndex == 1 ? this.marketType : ''
}).then(res => { }).then(res => {
console.log(res.data)
this.marketArray = res.data this.marketArray = res.data
this.page = res.page this.page = res.page
}) })
},
// 转让商品详情
onDetails(e){
this.$Router.push({name: 'marketDetails', params: {marketId: e.market_id}})
console.log(e)
} }
}, },
onNavigationBarButtonTap(){ onNavigationBarButtonTap(){

View File

@@ -1,61 +1,121 @@
<template> <template>
<view> <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"> <block v-if="logs.length > 0">
<view class="logs" v-for="(item, index) in logs" :key="index"> <view :class="{'paddingTop': $Route.query.type === 'my'}">
<view class="logs-item"> <view class="logs" v-for="(item, index) in logs" :key="index">
<label>交易权证</label> <view class="logs-item">
{{item.goods.goods_name}} <label>交易权证</label>
</view> {{item.goods.goods_name}}
<view class="logs-item"> </view>
<label>交易单价</label> <view class="logs-item">
{{item.price}} <label>交易单价</label>
</view> {{item.price}}
<view class="logs-item"> </view>
<label>交易数量</label> <view class="logs-item">
{{item.qty}} <label>交易数量</label>
</view> {{item.qty}}
<view class="logs-item"> </view>
<label>转让用户</label> <view class="logs-item">
{{item.sellUser.nickname}} <label>转让用户</label>
</view> {{item.sellUser.nickname}}
<view class="logs-item"> </view>
<label>购买用户</label> <view class="logs-item">
{{item.buyUser.nickname}} <label>购买用户</label>
</view> {{item.buyUser.nickname}}
<view class="logs-item"> </view>
<label>交易时间</label> <view class="logs-item">
{{item.created_at}} <label>交易时间</label>
{{item.created_at}}
</view>
</view> </view>
</view> </view>
</block> </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> </view>
</template> </template>
<script> <script>
import { marketsLogs } from '@/apis/interfaces/market' import { marketsLogs, marketsOrdersLogs } from '@/apis/interfaces/market'
export default { export default {
data() { data() {
return { return {
logs: [], logs: [],
page: {} page: {},
tab : 'sell'
}; };
}, },
created(){ created(){
marketsLogs().then(res => { this.getList()
console.log(res.data) },
this.logs = res.data methods:{
this.page = res.page onTasb(e){
}).catch(err => { this.tab = e
uni.showToast({ this.getList()
title: err.message, },
icon : 'none' // 获取列表
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> </script>
<style lang="scss" scoped> <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: $text-price;
color: $text-price;
}
}
}
.paddingTop{
padding-top: 90rpx;
}
.logs{ .logs{
background: white; background: white;
margin-top: $margin; margin-top: $margin;
@@ -78,4 +138,29 @@
} }
} }
} }
// 空提示
.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> </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: $text-price;
color: white;
padding: 0 $padding;
line-height: 50rpx;
border-radius: 25rpx;
font-size: $title-size-m;
}
.order-status{
color: $text-gray-m;
}
}
}
}
</style>

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

@@ -0,0 +1,239 @@
<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>
1000.00
</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>
</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(){
marketsCreate({
symbol : this.$Route.query.symbol,
qty : this.stock,
price : this.pirce || 0
}).then(res => {
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: $main-color;
font-weight: bold;
}
}
}
</style>

View File

@@ -20,12 +20,12 @@
<label>订单金额</label> <label>订单金额</label>
<view class="price nowrap">{{amount}}</view> <view class="price nowrap">{{amount}}</view>
</view> </view>
<block v-if="coupons.length > 0"> <block v-if="coupons.length > 1">
<view class="item"> <view class="item">
<label>使用优惠券</label> <label>使用优惠券</label>
<picker> <picker mode="selector" :range="coupons" range-key="title" :value="couponIndex" @change="couponsChange">
<view class="picker-text nowrap"> <view class="picker-text nowrap">
优惠券 {{couponIndex == 0 ? '选择优惠券' : coupons[couponIndex].title}}
<uni-icons type="arrowright" color="#ddd"></uni-icons> <uni-icons type="arrowright" color="#ddd"></uni-icons>
</view> </view>
</picker> </picker>
@@ -35,6 +35,10 @@
<view class="price nowrap">-{{couponPrice}}</view> <view class="price nowrap">-{{couponPrice}}</view>
</view> </view>
</block> </block>
<view class="item">
<label>实际支付金额</label>
<view class="price nowrap">{{total}}</view>
</view>
</view> </view>
<!-- 支付方式 --> <!-- 支付方式 -->
<radio-group class="pay-group" @change="payType"> <radio-group class="pay-group" @change="payType">
@@ -71,6 +75,8 @@
amount : 0, amount : 0,
total : 0, total : 0,
coupons : [], coupons : [],
couponIndex : 0,
couponId : '',
account : {}, account : {},
payValue : 'eb', payValue : 'eb',
} }
@@ -78,16 +84,15 @@
created(){ created(){
buy({ buy({
goods_sku_id: this.$Route.query.skuId, goods_sku_id: this.$Route.query.skuId,
qty : this.$Route.query.qty, qty : this.qty,
type : 1 type : 1
}, 'GET').then(res=>{ }, 'GET').then(res=>{
this.loding = true this.loding = true
this.qty = this.$Route.query.qty,
this.payValue = this.$Route.query.type === 1 ? 'wx' : 'eb' this.payValue = this.$Route.query.type === 1 ? 'wx' : 'eb'
this.detail = res.detail this.detail = res.detail
this.couponPrice = res.coupon_price this.couponPrice = res.coupon_price.toFixed(2)
this.amount = res.amount this.amount = res.amount.toFixed(2)
this.total = res.total this.total = res.total.toFixed(2)
this.coupons = res.coupons this.coupons = res.coupons
this.account = res.account this.account = res.account
}).catch(err =>{ }).catch(err =>{
@@ -98,6 +103,35 @@
}) })
}, },
methods: { methods: {
// 获取可用优惠券
getCoupons(){
buy({
goods_sku_id : this.$Route.query.skuId,
qty : this.qty,
type : 1,
coupon_grant_id : this.couponId
}, 'GET').then(res=>{
this.couponPrice = res.coupon_price.toFixed(2)
this.amount = res.amount.toFixed(2)
this.total = res.total.toFixed(2)
this.coupons = [{
title : '不使用',
coupon_grant_id : ''
}, ...res.coupons]
}).catch(err =>{
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 选择优惠券
couponsChange(e){
this.couponIndex = e.detail.value
this.couponId = this.coupons[e.detail.value].coupon_grant_id
this.getCoupons()
},
// 选择支付类型
payType(e){ payType(e){
this.payValue = e.detail.value this.payValue = e.detail.value
}, },
@@ -105,17 +139,20 @@
//数量变化 //数量变化
numberChange(e){ numberChange(e){
this.qty = e this.qty = e
this.amount = this.detail[0].items[0].price * e this.getCoupons()
}, },
// 提交订单 // 提交订单
buyOrder(){ buyOrder(){
buy({ buy({
goods_sku_id: this.$Route.query.skuId || 23, goods_sku_id : this.$Route.query.skuId,
qty : this.qty, qty : this.qty,
type : this.payValue == 'eb' ? 1 : 2, coupon_grant_id : this.couponId,
remark : 'app订单' type : 1,
remark : 'app订单易货产品',
channel : 'app'
}, 'POST').then(res=>{ }, 'POST').then(res=>{
console.log(res)
switch (this.payValue){ switch (this.payValue){
case 'eb': case 'eb':
this.ebPay(res.order_no) this.ebPay(res.order_no)
@@ -147,14 +184,20 @@
// 易币支付 // 易币支付
ebPay(orderNo){ ebPay(orderNo){
eb(orderNo).then(res => { eb(orderNo).then(res => {
uni.showModal({ this.$Router.replace({
title: '提示', name : 'payResults',
content: '支付成功,后续优化支付成功后直接转跳我的权证' params : {
index: 1,
price: this.total,
type : 'eb',
total: '可在我的资产下我的权证中查看购买的数字权证'
}
}) })
}).catch(err => { }).catch(err => {
uni.showToast({ uni.showModal({
title: err.message, title : '支付提示',
icon : 'none' content : err.message,
showCancel : false,
}) })
}) })
} }

76
pages/pay/results.vue Normal file
View File

@@ -0,0 +1,76 @@
<template>
<view class="total vertical">
<uni-icons type="checkbox-filled" size="60" color="#e93340"></uni-icons>
<view class="title">支付成功</view>
<view class="price">支付金额<text>{{type}}{{price}}</text></view>
<view class="text">{{total}}</view>
<button class="btn" type="default" @click="onBack">确定</button>
</view>
</template>
<script>
export default {
data() {
return {
index: 1, // 返回层级
price: 0, // 支付金额
type : '¥', // 支付币种
total: '' // 支付提示语
};
},
created() {
this.index = this.$Route.query.index
this.price = this.$Route.query.price
this.type = this.$Route.query.type === 'eb' ? 'EB': '¥'
this.total = this.$Route.query.total
},
methods:{
onBack(){
this.$Router.back(this.index)
}
}
}
</script>
<style lang="scss" scoped>
.total{
text-align: center;
height: 100vh;
width: 100vw;
padding-left: 10vw;
padding-right: 10vw;
padding-bottom: 20vh;
box-sizing: border-box;
.title{
font-weight: bold;
font-size: $title-size + 10;
padding: 20rpx 0
}
.price{
font-size: $title-size-lg;
color: $text-gray;
text{
color: $text-price;
padding-left: 10rpx;
}
}
.text{
font-size: $title-size-lg;
color: $text-gray;
padding-top: $padding;
}
.btn{
height: 90rpx;
line-height: 90rpx;
border-radius: 0;
background: $text-price;
font-size: $title-size;
color: white;
font-weight: bold;
margin-top: 10vh;
&::after{
border: none;
}
}
}
</style>

View File

@@ -4,7 +4,7 @@
<view style="position: relative;z-index: 3;"> <view style="position: relative;z-index: 3;">
<!-- 搜索... --> <!-- 搜索... -->
<view class="mine-top-contant"> <view class="mine-top-contant">
<u-navbar :is-back="false" :background="background" title="企业优惠券中心" title-color="#fff" <u-navbar :background="background" title="企业优惠券中心" title-color="#fff"
:border-bottom='false'> :border-bottom='false'>
</u-navbar> </u-navbar>
<!--banner--> <!--banner-->

View File

@@ -63,7 +63,7 @@
<view class="item-num">{{count.warrnats}}</view> <view class="item-num">{{count.warrnats}}</view>
<view class="item-title">权证持有</view> <view class="item-title">权证持有</view>
</view> </view>
<view class="item" @click="showToast"> <view class="item" @click="$Router.push({name: 'marketManag'})">
<view class="item-num">{{count.warrnat_transfer}}</view> <view class="item-num">{{count.warrnat_transfer}}</view>
<view class="item-title">权证转让</view> <view class="item-title">权证转让</view>
</view> </view>

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>
@@ -64,6 +65,7 @@
page:this.page page:this.page
} }
mallWarrants(data).then(res=>{ mallWarrants(data).then(res=>{
console.log(res)
this.lists = this.lists.concat(res.data) this.lists = this.lists.concat(res.data)
this.total = res.total this.total = res.total
}).catch(err=>{ }).catch(err=>{
@@ -79,6 +81,10 @@
uni.navigateTo({ uni.navigateTo({
url:'./numberWeightInfo?symbol='+symbol url:'./numberWeightInfo?symbol='+symbol
}) })
},
// 转让权证
navMarkets(symbol){
this.$Router.push({name: 'marketTransfer', params:{symbol}})
} }
} }
} }

View File

@@ -8,14 +8,19 @@
</view> </view>
<!-- 统计信息 --> <!-- 统计信息 -->
<view class="statistics"> <view class="statistics">
<picker mode="date" :fields="tabsIndex" :value="dateValue" :end="endDate" @change="pickerDate"> <view class="statistics-flex">
<view class="statistics-date"> <picker mode="date" :fields="tabsIndex" :value="dateValue" :end="endDate" @change="pickerDate">
{{dateValue}}<uni-icons class="arrowdown" type="arrowdown" color="#555"></uni-icons> <view class="statistics-date">
{{dateValue}}<uni-icons class="arrowdown" type="arrowdown" color="#555"></uni-icons>
</view>
</picker>
<view class="statistics-lay" :class="{ 'show' : sort != '' || payType != '' || channel != ''}" @click="onScreening">
筛选 <uni-icons class="arrowdown" type="settings" color="gray"></uni-icons>
</view> </view>
</picker> </view>
<view class="statistics-text"> <view class="statistics-text">
<text>成交客户 {{visitor.day}} </text> <text>成交产品数 {{visitor.goods_count}} </text>
<text>累计访客量 {{visitor.all}} </text> <text>成交产品金额 {{visitor.total}} </text>
</view> </view>
</view> </view>
<!-- 数据列表 --> <!-- 数据列表 -->
@@ -24,12 +29,18 @@
<view class="item" v-for="(item, index) in orders" :key="index"> <view class="item" v-for="(item, index) in orders" :key="index">
<image class="cover" :src="item.user.avatar" mode="aspectFill"></image> <image class="cover" :src="item.user.avatar" mode="aspectFill"></image>
<view class="title nowrap"> <view class="title nowrap">
{{item.user.username}} {{item.user.nickname}}
<view class="type">{{item.state}}</view> <view class="type">{{item.amount}}</view>
</view>
<view class="sub-title nowrap">订单号码: {{item.order_no}}</view>
<view class="sub-title nowrap">订单时间: {{item.created_at}}</view>
<view class="sub-tabs">
<text>{{item.driver}}</text>
<text>{{item.channel}}</text>
</view> </view>
<view class="sub-title nowrap">订单号: {{item.order_no}}</view>
<view class="sub-title nowrap">{{item.created_at}}</view>
</view> </view>
<!-- 分页 -->
<uni-load-more :status="pageStatus" :iconSize="16"></uni-load-more>
</block> </block>
<block v-else> <block v-else>
<view class="list-null"> <view class="list-null">
@@ -38,24 +49,57 @@
</view> </view>
</block> </block>
</view> </view>
<!-- 列表筛选 -->
<uni-popup ref="settingsPopup" background-color="#FFFFFF" @maskClick="onReset">
<view class="popup-content">
<view class="title">排序方式</view>
<view class="popup-choose-flex">
<view class="item" :class="{'show' : sort == 'money_asc'}" @click="sort = 'money_asc'">金额从低到高</view>
<view class="item" :class="{'show' : sort == 'money_desc'}" @click="sort = 'money_desc'">金额从高到低</view>
<view class="item" :class="{'show' : sort == 'sold_asc'}" @click="sort = 'sold_asc'">销量从低到高</view>
<view class="item" :class="{'show' : sort == 'sold_desc'}" @click="sort = 'sold_desc'">销量从高到低</view>
</view>
<view class="title">支付方式</view>
<view class="popup-choose-flex">
<view class="item" :class="{'show' : payType == 'eb'}" @click="payType = 'eb'">易币交易</view>
<view class="item" :class="{'show' : payType == 'money'}" @click="payType = 'money'">现金交易</view>
</view>
<view class="title">成交渠道</view>
<view class="popup-choose-flex">
<view class="item" :class="{'show' : channel == 'app'}" @click="channel = 'app'">APP</view>
<view class="item" :class="{'show' : channel == 'mini'}" @click="channel = 'mini'">自媒体</view>
</view>
<view class="popup-btns">
<view class="item" @click="onReset">重置</view>
<view class="item" @click="onSettings">确定</view>
</view>
</view>
<view class="ios-bottom"></view>
</uni-popup>
<!-- :status="more" -->
</view> </view>
</template> </template>
<script> <script>
import getDate from '@/public/date' import getDate from '@/public/date'
import { customer } from '@/apis/interfaces/store' import { orderUsers } from '@/apis/interfaces/store'
export default { export default {
data() { data() {
return { return {
tabsIndex: 'day', tabsIndex : 'day',
dateValue: '', dateValue : '',
endDate : '', endDate : '',
visitor : { visitor : {
day: 0, day: 0,
all: 0 all: 0
}, },
orders : [], orders : [],
pages : {} sort : '',
payType : '',
channel : '',
// 分页
pageStatus : '',
page : 1
}; };
}, },
created() { created() {
@@ -71,24 +115,46 @@
getDate(type).then(res => { getDate(type).then(res => {
this.tabsIndex = type this.tabsIndex = type
this.dateValue = res this.dateValue = res
this.page = 1
this.getLists() this.getLists()
}) })
}, },
onReset(){
this.sort = ''
this.payType = ''
this.channel = ''
},
onSettings(){
this.getLists()
this.$refs.settingsPopup.close()
},
// 日期筛选 // 日期筛选
pickerDate(e){ pickerDate(e){
let dateValue = e.detail.value let dateValue = e.detail.value
this.dateValue = dateValue this.dateValue = dateValue
this.getLists() this.getLists()
}, },
// 列表筛选
onScreening(){
this.$refs.settingsPopup.open('bottom')
},
// 获取列表 // 获取列表
getLists(){ getLists(){
customer({ orderUsers({
type: this.tabsIndex, type : this.tabsIndex,
date: this.dateValue date : this.dateValue,
sort : this.sort,
pay_type : this.payType,
channel : this.channel,
page : this.page
}).then(res => { }).then(res => {
this.visitor = res.visitor if(res.orders.page.current === 1){
this.orders = res.orders.data this.orders = []
this.pages = res.orders.page }
this.visitor = res.visitor
this.orders = this.orders.concat(res.orders.data)
this.page = res.orders.page.current
this.pageStatus = res.orders.page.has_more ? 'more': 'noMore'
}).catch(err => { }).catch(err => {
uni.showToast({ uni.showToast({
title: err, title: err,
@@ -96,11 +162,68 @@
}) })
}) })
} }
},
onReachBottom() {
if(this.pageStatus == 'more'){
this.pageStatus = 'loading'
this.page += 1
this.getLists()
}
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
// 筛选层
.popup-content{
padding: $padding * 2;
.title{
font-weight: bold;
font-size: $title-size;
color: $text-color;
margin-top: $margin;
}
.popup-choose-flex{
padding: $padding /2 0;
margin: 0 -($margin - 20rpx);
display: flex;
flex-wrap: wrap;
.item{
width: calc(33.33% - #{$margin - 10});
font-size: $title-size-sm;
text-align: center;
background: $border-color-lg;
line-height: 68rpx;
margin: $margin - 20;
color: $text-gray;
border:solid 1rpx $border-color-lg;
box-sizing: border-box;
&.show{
border:solid 1rpx $text-price;
color: $text-price;
}
}
}
.popup-btns{
padding-top: $padding*2;
display: flex;
justify-content: space-between;
margin: 0 -$margin/2;
.item{
margin: $margin/2;
color: $text-price;
background: rgba($color: $text-price, $alpha: .1);
width: calc(50% - #{$margin});
height: 80rpx;
line-height: 80rpx;
text-align: center;
&:last-child{
background-color: $text-price;
color: white;
}
}
}
}
// 空提示 // 空提示
.list-null{ .list-null{
width: 100vw; width: 100vw;
@@ -144,14 +267,30 @@
background-color: white; background-color: white;
border-bottom: solid 1rpx $border-color; border-bottom: solid 1rpx $border-color;
padding: $padding; padding: $padding;
.statistics-date{ .statistics-flex{
font-size: $title-size + 4; display: flex;
font-weight: bold; justify-content: space-between;
line-height: 60rpx; .statistics-date{
.arrowdown{ font-size: $title-size + 4;
margin-left: $margin/2; font-weight: bold;
line-height: 60rpx;
.arrowdown{
margin-left: $margin/2;
}
}
.statistics-lay{
font-size: $title-size-sm;;
color: gray;
line-height: 50rpx;
&.show{
color: $text-price;
}
.arrowdown{
margin-left: $margin/2;
}
} }
} }
.statistics-text{ .statistics-text{
font-size: $title-size-sm; font-size: $title-size-sm;
color: gray; color: gray;
@@ -211,6 +350,16 @@
font-size: $title-size-sm; font-size: $title-size-sm;
color: $text-gray; color: $text-gray;
} }
.sub-tabs{
padding-top: $padding/2;
font-size: $title-size-sm;
text{
margin-right: $margin - 10;
background: $border-color-lg;
color: $text-gray;
padding: 0 ($padding/2);
}
}
} }
} }
</style> </style>

View File

@@ -2,9 +2,9 @@
<view class="content"> <view class="content">
<!-- tabs --> <!-- tabs -->
<view class="tabs"> <view class="tabs">
<view class="item" :class="{'show': tabsIndex == 'day'}" @click="onTbas('day')">成交</view> <view class="item" :class="{'show': tabsIndex == 'day'}" @click="onTbas('day')">访客</view>
<view class="item" :class="{'show': tabsIndex == 'month'}" @click="onTbas('month')">成交</view> <view class="item" :class="{'show': tabsIndex == 'month'}" @click="onTbas('month')">访客</view>
<view class="item" :class="{'show': tabsIndex == 'year'}" @click="onTbas('year')">成交</view> <view class="item" :class="{'show': tabsIndex == 'year'}" @click="onTbas('year')">访客</view>
</view> </view>
<!-- 统计信息 --> <!-- 统计信息 -->
<view class="statistics"> <view class="statistics">
@@ -24,7 +24,9 @@
<view class="item" v-for="(item, index) in orders" :key="index"> <view class="item" v-for="(item, index) in orders" :key="index">
<image class="cover" :src="item.avatar" mode="aspectFill"></image> <image class="cover" :src="item.avatar" mode="aspectFill"></image>
<view class="title">{{item.nickname || '-'}}</view> <view class="title">{{item.nickname || '-'}}</view>
<view class="sub-title">{{item.date || '-'}}</view> <view class="sub-title">访问记录: {{item.content || '-'}}</view>
<view class="sub-title">手机号码: {{item.mobile || '-'}}</view>
<view class="sub-title">访问时间: {{item.date || '-'}}</view>
</view> </view>
</view> </view>
</block> </block>
@@ -107,6 +109,7 @@
.sub-title{ .sub-title{
color: $text-gray; color: $text-gray;
font-size: $title-size-m; font-size: $title-size-m;
@extend .nowrap;
} }
.icon{ .icon{
width: 288rpx; width: 288rpx;

View File

@@ -1,19 +0,0 @@
<template>
<view>
核销详情
</view>
</template>
<script>
export default {
data() {
return {
};
}
}
</script>
<style lang="scss">
</style>

View File

@@ -0,0 +1,517 @@
<template>
<view class="Record" v-if="loaded">
<view class="record-top">
<image src="/static/images/ver-bg.png" mode="widthFix" class="record-bg" />
<view class="record-top-nav">
<view :class="['record-top-item',type==='year'?'selectTopItem':'']" @click="selectType('year')">按年
</view>
<view :class="['record-top-item',type==='month'?'selectTopItem':'']" @click="selectType('month')">按月
</view>
<view :class="['record-top-item',type==='day'?'selectTopItem':'']" @click="selectType('day')">按日</view>
</view>
<view class="record-mouth-year">
<view class="record-type-left">
<u-picker mode="time" v-model="show" :params="params" @confirm='confirm' title='筛选日期'
start-year='2021' :end-year='currentYear' />
<view @click="show = true">
{{date?date:'选择日期'}}
<uni-icons type="arrowdown" color="#fff" size="12" />
</view>
</view>
<view class="record-type-right">
<view :class="['pay_type_item',scantype==='goods'?'pay_type_item_select':'']"
@click="selectCoinType('goods')">权证</view>
<view :class="['pay_type_item',scantype==='coupons'?'pay_type_item_select':'']"
@click="selectCoinType('coupons')">优惠券</view>
</view>
</view>
<view class="record-title">核销总数 ( ) </view>
<view class="record-money"><span></span>{{account}}
<span></span>
</view>
</view>
<view class="boss" v-if="isBos">
<view class="boss-left">
<image src="/static/images/boss.png" mode="mode" class="boss-img">我是BOSS
</view>
<view class="boss-right" @click="shopShow = true">
<u-select v-model="shopShow" :list="ShopList" @confirm="shopConfirm" value-name='store_id'
label-name='name' />
门店<u-icon name="arrow-down" color="#606266" label-color='#606266' margin-right='10' label-pos='left'
:label='store_id?store_name:"全部门店"' size="28" />
</view>
</view>
<!-- 列表 -->
<view class="lists" v-if="lists.length>0">
<view class="list-item" v-for="(item,index) in lists" :key='index'>
<view class="list-item-title">
<view class="left">
<view class="tags">{{scantype === 'goods'?'权证核销':'优惠券核销'}}</view>
<view class='title' v-if="scantype === 'goods'">{{item.goods_sku.goods_name}}</view>
<view class='title' v-else>{{item.coupon.title}}</view>
</view>
<!-- <view class="right"> -->
<!-- <u-icon name="checkmark-circle-fill" size='50' color='#e93340' /> -->
<!-- </view> -->
</view>
<view class="list-item-content" v-if='scantype === "goods"'>
<image class="good-img" :src="item.goods_sku.cover" mode="aspectFill" />
<view class="list-item-right">
<view class="content-item">核销商品数量X {{item.qty}} </view>
<view class="content-item">核销商品规格{{item.goods_sku.unit || '通用规格'}}</view>
<view class="content-item">核销时间{{item.used_at}}</view>
</view>
</view>
<view class="list-item-content" v-else>
<image class="good-img" v-if='item.source.type ==="goods"' :src="item.source.cover"
mode="aspectFill" />
<view class="list-item-right">
<view class="content-item" v-if='item.source.type ==="goods"'>兑换商品名称{{item.source.name}}
</view>
<view class="content-item"> 优惠券规格 {{item.coupon.full}} {{item.coupon.price}} </view>
<view class="content-item">优惠券类型{{item.coupon.type.text}}</view>
<view class="content-item">核销时间{{item.used_at}}</view>
</view>
</view>
<view class="person">
<image class="avatar" :src="item.clerk.avatar" mode="aspectFill" />
{{item.clerk.nickname}}
<view class="shop-name">{{item.store.name}}</view>
</view>
</view>
</view>
<!-- 无列表 -->
<no-list v-if="lists.length === 0 && scantype === 'goods'" name='no-in' txt="没有任何权证核销记录" />
<no-list v-if="lists.length === 0 && scantype === 'coupons'" name='no-out' txt="没有任何优惠券核销记录" />
<!-- <u-toast ref="uToast" /> -->
<u-toast ref="uToast" />
</view>
</template>
<script>
import {
scanList
} from '@/apis/interfaces/scan';
export default {
data() {
return {
lists: [],
has_more: true,
page: 1,
type: 'year', // 统计类型day日month月year年
scantype: 'goods', // goods 数权核销 coupons 优惠券核销
date: new Date().toISOString().slice(0, 4), // 日Y-m-d月Y-m年Y
params: {
year: true,
month: true,
day: true
},
show: false, // 显示
currentDay: new Date().toISOString().slice(0, 10),
currentMonth: new Date().toISOString().slice(0, 7),
currentYear: new Date().toISOString().slice(0, 4),
account: '',
loaded: false,
shopShow: false,
ShopList: [],
store_name: '',
store_id: '',
isBos:false
}
},
onLoad() {
this.getList()
},
onReachBottom() {
if (this.has_more) {
this.page = this.page + 1
this.getList()
} else {
this.$refs.uToast.show({
title: '吼吼吼~我是有底的~',
type: 'error',
icon: false,
duration: 3000
})
}
},
methods: {
// 获取列表
getList() {
let data = {
page: this.page,
date_type: this.type,
date: this.date,
store_id:this.store_id
}
let apiUrl = ''
if (this.scantype === 'goods') {
apiUrl = 'manages/warrants/logs'
} else {
apiUrl = 'coupons/verify/logs/coupons'
}
scanList(apiUrl, data).then(res => {
console.log(res)
this.account = res.all
this.lists = this.lists.concat(res.lists.data)
this.has_more = res.lists.page.has_more
this.loaded = true
this.ShopList = [{name:'全部',store_id:''},...res.stores]
this.isBos = res.isBos
}).catch(err => {
this.$refs.uToast.show({
title: err.message,
type: 'error',
icon: false,
duration: 3000
})
})
},
selectCoinType(type) {
if (this.scantype !== type) {
this.scantype = type
this.store_id = ''
this.reset()
}
},
// 重置
reset() {
this.page = 1
this.lists = []
this.has_more = true
this.getList()
},
// 选择 年 月 日 切换要重置数据
selectType(type) {
console.log(type, typeof type)
if (this.type !== type) {
switch (type) {
case 'year':
this.type = type
this.params = {
year: true,
month: false,
day: false
}
this.date = this.currentYear
this.store_id = ''
this.reset()
break;
case 'month':
this.type = type
this.params = {
year: true,
month: true,
day: false
}
this.date = this.currentMonth
this.store_id = ''
this.reset()
break;
case 'day':
this.type = type
this.params = {
year: true,
month: false,
day: false
}
this.date = this.currentDay
this.store_id = ''
this.reset()
break;
}
}
},
// 点击确认按钮年月日
confirm(e) {
let type = this.type
switch (type) {
case 'year':
this.date = e.year
this.reset()
break;
case 'month':
this.date = e.year + '-' + e.month
this.reset()
break;
case 'day':
this.date = e.year + '-' + e.month + '-' + e.day
this.reset()
break;
}
},
// 筛选门店信息
shopConfirm(e) {
this.store_id = e[0].value
this.store_name = e[0].label
this.reset()
}
}
}
</script>
<style lang="scss" scoped>
.Record {
width: 100%;
min-height: 100vh;
padding-top: 30rpx;
background-color: #f5f5f5;
}
.record-top {
width: calc(100% - 60rpx);
height: 360rpx;
background-image: linear-gradient(to left, #076cff, #076cff);
box-shadow: 0 10rpx 20rpx 0rpx rgba($color: $main-color, $alpha: 0.4);
margin: 0 30rpx;
border-radius: 20rpx;
box-sizing: border-box;
position: relative;
padding: 10rpx 50rpx 20rpx 50rpx;
z-index: 1;
.record-bg {
position: absolute;
width: 230rpx;
bottom: 0;
right: 30rpx;
z-index: 1;
}
.record-top-nav {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
box-sizing: border-box;
.record-top-item {
margin: 40rpx 20rpx;
font-size: 30rpx;
font-weight: 500;
color: #fff;
}
.selectTopItem {
border-bottom: solid 4rpx #fff;
}
}
.record-mouth-year {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
position: relative;
z-index: 2;
color: #fff;
font-size: 30rpx;
.record-type-left {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
box-sizing: border-box;
uni-icons {
margin-left: 4rpx;
}
}
.record-type-right {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
box-sizing: border-box;
font-size: 24rpx;
.pay_type_item {
margin: 0 10rpx;
padding: 2rpx 20rpx;
border-radius: 30rpx;
border: solid 1rpx rgba($color: #000000, $alpha: 0);
}
.pay_type_item_select {
border: solid 1rpx #f7f7f7;
}
}
}
.record-title {
font-size: 28rpx;
color: #fff;
padding: 20rpx 0;
}
.record-money {
color: #fff;
font-size: 50rpx;
font-weight: bold;
span {
font-size: 30rpx;
font-weight: 400;
margin-right: 4rpx;
}
}
}
.boss {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 30rpx;
background-color: #fff;
.boss-left {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
box-sizing: border-box;
font-size: 32rpx;
font-weight: bold;
}
.boss-right {
font-size: 28rpx;
u-icon {
padding-left: 20rpx;
}
}
.boss-img {
width: 90rpx;
height: 90rpx;
border-radius: 50%;
margin-right: 20rpx;
}
}
// 列表
.lists {
// box-shadow: 0 10rpx 20rpx 0rpx rgba($color: #000, $alpha: 0.4);
padding: 20rpx;
.list-item {
background-color: #fff;
width: 100%;
border-radius: 20rpx;
margin-bottom: 20rpx;
padding: 20rpx;
.list-item-title {
width: 100%;
border-bottom: solid 1rpx #f7f7f7;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 20rpx 0;
.left {
flex: 1;
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
box-sizing: border-box;
.title {
width: 520rpx;
overflow: hidden;
font-size: 30rpx;
margin-left: 12rpx;
text-overflow: ellipsis;
white-space: nowrap;
}
.tags {
padding: 4rpx 10rpx;
border-radius: 20rpx 0 20rpx 0;
background-color: #076cff;
font-size: 26rpx;
color: #fff;
}
}
// .right{
// padding: 20rpx 30rpx;
// }
}
.list-item-content {
width: 100%;
color: #999;
padding: 20rpx 0;
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
box-sizing: border-box;
border-bottom: solid 1rpx #f7f7f7;
.good-img {
margin-right: 20rpx;
width: 160rpx;
height: 160rpx;
border-radius: 10rpx;
}
.list-item-right {
flex: 1;
.content-item {
padding: 10rpx 0;
}
}
}
.person {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
box-sizing: border-box;
font-size: 30rpx;
padding: 20rpx 0 0 0;
font-weight: bold;
.avatar {
width: 70rpx;
height: 70rpx;
border-radius: 50%;
margin-right: 10rpx;
}
.shop-name {
background-color: #076cff;
color: #fff;
font-size: 24rpx;
font-weight: 400;
padding: 4rpx 20rpx;
border-radius: 12rpx;
margin-left: 20rpx;
}
}
}
}
</style>

View File

@@ -9,7 +9,7 @@
<view class="goods" @click="scanCode('goods','get')"> 权证核销 </view> <view class="goods" @click="scanCode('goods','get')"> 权证核销 </view>
<view class="coupons" @click="scanCode('coupons','get')"> 优惠券核销 </view> <view class="coupons" @click="scanCode('coupons','get')"> 优惠券核销 </view>
</view> </view>
<view class="history">核销记录</view> <view class="history" @click="goHistory">核销记录</view>
<u-toast ref="uToast" /> <u-toast ref="uToast" />
<!-- 二维码展示动画效果 --> <!-- 二维码展示动画效果 -->
@@ -74,7 +74,7 @@
} }
}); });
}, },
// 请求核销前置,优惠券前置和权证前置 // 请求核销前置,优惠券前置和权证前置get post 是核销
scanInfo(token, method) { scanInfo(token, method) {
console.log(token, this.scanType) console.log(token, this.scanType)
let apiUrl = '' let apiUrl = ''
@@ -122,7 +122,8 @@
success: (res1) => { success: (res1) => {
if (res1.confirm) { if (res1.confirm) {
uni.navigateTo({ uni.navigateTo({
url:'/pages/property/coupon/canUseList?code='+this.code url: '/pages/property/coupon/canUseList?code=' +
this.code
}) })
} else { } else {
this.showCode = true this.showCode = true
@@ -145,6 +146,12 @@
}) })
this.showCode = false this.showCode = false
}) })
},
// 核销记录
goHistory() {
uni.navigateTo({
url:'/pages/verification/history'
})
} }
} }
} }

View File

@@ -10,7 +10,7 @@ export default getDate = (type) =>{
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const date = new Date() const date = new Date()
const year = date.getFullYear() const year = date.getFullYear()
const month = (date.getMonth() + 1) < 9 ? '0' + (date.getMonth() + 1) : date.getMonth() const month = (date.getMonth() + 1) <= 9 ? '0' + (date.getMonth() + 1) : date.getMonth()
const day = date.getDate() const day = date.getDate()
switch(type){ switch(type){

BIN
static/images/boss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/images/ver-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -0,0 +1,10 @@
## 1.2.12021-08-24
- 新增 支持国际化
## 1.2.02021-07-30
- 组件兼容 vue3如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
## 1.1.82021-05-12
- 新增 组件示例地址
## 1.1.72021-03-30
- 修复 uni-load-more 在首页使用时h5 平台报 'uni is not defined' 的 bug
## 1.1.62021-02-05
- 调整为uni_modules目录规范

View File

@@ -0,0 +1,5 @@
{
"uni-load-more.contentdown": "Pull up to show more",
"uni-load-more.contentrefresh": "loading...",
"uni-load-more.contentnomore": "No more data"
}

View File

@@ -0,0 +1,8 @@
import en from './en.json'
import zhHans from './zh-Hans.json'
import zhHant from './zh-Hant.json'
export default {
en,
'zh-Hans': zhHans,
'zh-Hant': zhHant
}

View File

@@ -0,0 +1,5 @@
{
"uni-load-more.contentdown": "上拉显示更多",
"uni-load-more.contentrefresh": "正在加载...",
"uni-load-more.contentnomore": "没有更多数据了"
}

View File

@@ -0,0 +1,5 @@
{
"uni-load-more.contentdown": "上拉顯示更多",
"uni-load-more.contentrefresh": "正在加載...",
"uni-load-more.contentnomore": "沒有更多數據了"
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,86 @@
{
"id": "uni-load-more",
"displayName": "uni-load-more 加载更多",
"version": "1.2.1",
"description": "LoadMore 组件,常用在列表里面,做滚动加载使用。",
"keywords": [
"uni-ui",
"uniui",
"加载更多",
"load-more"
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"category": [
"前端组件",
"通用组件"
],
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "u"
}
}
}
}
}

View File

@@ -0,0 +1,70 @@
### LoadMore 加载更多
> **组件名uni-load-more**
> 代码块: `uLoadMore`
用于列表中,做滚动加载使用,展示 loading 的各种状态。
### 安装方式
本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`
如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
### 使用方式
在 ``template`` 中使用组件
```html
<uni-load-more :status="more"></uni-load-more>
```
## API
### LoadMore Props
|属性名 |类型 | 可选值 |默认值 |说明 |
|:-: |:-: |:-: |:-: |:-: |
|iconSize |Number |- |24 |指定图标大小 |
|status |String |more/loading/noMore |more |loading 的状态 |
|showIcon |Boolean|- |true |是否显示 loading 图标 |
|iconType |String |snow/circle/auto |auto |指定图标样式|
|color |String |- |#777777 |图标和文字颜色 |
|contentText|Object|- |{contentdown: "上拉显示更多",contentrefresh: "正在加载...",contentnomore: "没有更多数据了"}|各状态文字说明 |
#### Status Options
|参数名称 |说明 |
|:-: |:-: |
|more |loading前 |
|loading|loading前中 |
|more |没有更多数据 |
#### IconType Options
|参数名称 |说明 |
|:-: |:-: |
|snow |ios雪花加载样式 |
|circle |安卓环形加载样式 |
|auto |根据平台自动选择加载样式 |
> **说明**
> `iconType`为`snow`时,在`APP-NVUE`平台不可设置大小,在非`APP-NVUE`平台不可设置颜色
### 事件说明
|事件名 |说明 |返回值 |
|:-: |:-: |:-: |
|clickLoadMore |点击加载更多时触发 |e.detail={status:'loading'}|
## 组件示例
点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/load-more/load-more](https://hellouniapp.dcloud.net.cn/pages/extUI/load-more/load-more)

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

View File

@@ -1 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__CD19AAD","name":"易品新境","version":{"name":"1.0.0","code":"100"},"description":"易品新境为商家提供营销引流工具","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"OAuth":{},"Payment":{},"Share":{},"Geolocation":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"autoclose":false,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#f5f5f5"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"safearea":{"bottom":{"offset":"none"}},"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"splashscreen":{"androidStyle":"common"},"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"oauth":{"univerify":{},"weixin":{"appid":"wx222fbe58feee7819","appsecret":"3d24525a636d7573a8fae885097d5cf7","UniversalLinks":""}},"payment":{"weixin":{"__platform__":["android"],"appid":"wx222fbe58feee7819","UniversalLinks":""}},"share":{"weixin":{"appid":"wx222fbe58feee7819","UniversalLinks":""}},"maps":{},"ad":{},"geolocation":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"arguments":"{\"name\":\"\",\"path\":\"\",\"query\":\"\",\"id\":0}","allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"3.1.18","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#bababa","selectedColor":"#e93340","backgroundColor":"#FFFFFF","borderStyle":"rgba(255,255,255,0.4)","list":[{"pagePath":"pages/equity/index","text":"通证权易","iconPath":"static/tabBar/tabBar_icon_00.png","selectedIconPath":"static/tabBar/tabBar_show_00.png"},{"pagePath":"pages/market/index","text":"转让市场","iconPath":"static/tabBar/tabBar_icon_01.png","selectedIconPath":"static/tabBar/tabBar_show_01.png"},{"pagePath":"pages/store/index","text":"企业工具","iconPath":"static/tabBar/tabBar_icon_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png"},{"pagePath":"pages/property/index","text":"我的资产","iconPath":"static/tabBar/tabBar_icon_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}} {"@platforms":["android","iPhone","iPad"],"id":"__UNI__CD19AAD","name":"易品新境","version":{"name":"1.0.0","code":"100"},"description":"易品新境为商家提供营销引流工具","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"OAuth":{},"Payment":{},"Share":{},"Geolocation":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"autoclose":false,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#f5f5f5"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"safearea":{"bottom":{"offset":"none"}},"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"splashscreen":{"androidStyle":"common"},"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"oauth":{"univerify":{},"weixin":{"appid":"wx222fbe58feee7819","appsecret":"3d24525a636d7573a8fae885097d5cf7","UniversalLinks":""}},"payment":{"weixin":{"__platform__":["android"],"appid":"wx222fbe58feee7819","UniversalLinks":""}},"share":{"weixin":{"appid":"wx222fbe58feee7819","UniversalLinks":""}},"maps":{},"ad":{},"geolocation":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"arguments":"{\"name\":\"\",\"path\":\"\",\"query\":\"\",\"id\":0}","allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"3.2.3","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#bababa","selectedColor":"#e93340","backgroundColor":"#FFFFFF","borderStyle":"rgba(255,255,255,0.4)","list":[{"pagePath":"pages/equity/index","text":"通证权易","iconPath":"static/tabBar/tabBar_icon_00.png","selectedIconPath":"static/tabBar/tabBar_show_00.png"},{"pagePath":"pages/market/index","text":"转让市场","iconPath":"static/tabBar/tabBar_icon_01.png","selectedIconPath":"static/tabBar/tabBar_show_01.png"},{"pagePath":"pages/store/index","text":"企业工具","iconPath":"static/tabBar/tabBar_icon_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png"},{"pagePath":"pages/property/index","text":"我的资产","iconPath":"static/tabBar/tabBar_icon_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}}