From 1dcd8399c853ef724133d4d1ad0d700db0f293e7 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 12 二月 2026 18:19:50 +0800
Subject: [PATCH] 经销商管理pay
---
mini-program/pagesA/pages/order/order.vue | 364 ++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 313 insertions(+), 51 deletions(-)
diff --git a/mini-program/pagesA/pages/order/order.vue b/mini-program/pagesA/pages/order/order.vue
index 773c5d1..4c3c1b2 100644
--- a/mini-program/pagesA/pages/order/order.vue
+++ b/mini-program/pagesA/pages/order/order.vue
@@ -1,17 +1,17 @@
<template>
<view class="box">
<view class="cate">
- <view @click="changeRow(index)" :class="active === index ? 'cate-item active' : 'cate-item'" v-for="(item, index) in cate" :key="index">
+ <view @click="changeRow(item)" :class="active === index ? 'cate-item active' : 'cate-item'" v-for="(item, index) in cate" :key="index">
{{item.name}}
<view class="cate-item-xiab" v-if="active === index"></view>
</view>
</view>
<view class="list">
- <view class="list-item" v-for="(item, index) in dataList" :key="index" @click="jumpOrderDetail(item.id)">
- <view class="a">
+ <view class="list-item" v-for="(item, index) in dataList" :key="index">
+ <view class="a" @click="jumpOrderDetail(item.id)">
<view class="a-left">
- <view class="a-left-tips">{{item.receiveType==1?'鑷彁':'蹇�掗厤閫�'}}</view>
- <text>璁㈠崟鍙凤細{{item.id}}</text>
+ <view :class="'a-left-tips '+(item.receiveType==1?'shop-top-tips-a':'shop-top-tips-b')">{{item.receiveType==1?'鑷彁':'閰嶉��'}}</view>
+ <text>璁㈠崟鍙凤細{{item.code}}</text>
</view>
<text v-if="item.status ==0" class="a-right">寰呮敮浠�</text>
<text v-if="item.status ==1" class="a-right">{{item.receiveType==1?'寰呰嚜鎻�':'寰呭彂璐�'}}</text>
@@ -20,20 +20,10 @@
<text v-if="item.status ==4" class="a-right grey">宸插彇娑�</text>
<text v-if="item.status ==6" class="a-right grey">宸查��娆�</text>
</view>
- <view class="b">
- <view class="b-item" v-for="(item1, index1) in (item.goodsorderDetailList||[])">
+ <view class="b" @click="jumpOrderDetail(item.id)">
+ <view class="b-item" v-for="(item1, index1) in (item.goodsorderDetailList||[])" >
<view class="b-item-image">
- <image :src="item1.imgurl||'/static/logo.png'" mode="widthFix"></image>
- </view>
- <view class="b-item-title">{{item1.name||''}}</view>
- <view class="b-item-jia">
- <text>楼{{(item1.price||0).toFixed(2)}}</text>
- <text>x{{item1.goodsNum||0}}</text>
- </view>
- </view>
- <view class="b-item" v-for="(item1, index1) in (item.goodsorderDetailList||[])">
- <view class="b-item-image">
- <image :src="item1.imgurl||'/static/logo.png'" mode="widthFix"></image>
+ <image :src="item1.imgurl||'/static/static/default2.png'" mode="widthFix"></image>
</view>
<view class="b-item-title">{{item1.name||''}}</view>
<view class="b-item-jia">
@@ -50,12 +40,19 @@
<text></text>
</view>
</view>
- <view class="c-btns">
+ <view class="c-btns" v-if="userType ==1">
<view class="c-btns-item blue" @click="contactPhone(item)">鑱旂郴瀹㈡埛</view>
- <view class="c-btns-item bg" v-if="item.status==1 && item.receiveType==1">鑷彁鏍搁攢</view>
+ <view class="c-btns-item bg" v-if="item.status==1 && item.receiveType==1" @click="hexiaoOrder(item)">鑷彁鏍搁攢</view>
+ </view>
+ <view class="c-btns" v-if="userType !=1">
+ <view class="c-btns-item grey" @click="cancelOrder(item)" v-if="item.status==0 || item.status==1">鍙栨秷璁㈠崟</view>
+ <view class="c-btns-item grey" @click="deleteOrder(item)" v-if="item.status==4">鍒犻櫎璁㈠崟</view>
+ <view class="c-btns-item blue" @click="openQrcode(item)" v-if="item.status==1 && item.receiveType==1">鑷彁鐮�</view>
+ <view class="c-btns-item blue" @click="payOrder(item)" v-if="item.status==0">鍘绘敮浠�</view>
+ <view class="c-btns-item blue" @click="doneOrder(item)" v-if="item.status==2">纭鏀惰揣</view>
</view>
</view>
- <view class="d" v-if="item.memberInfo">
+ <view class="d" v-if="item.memberInfo" @click="jumpOrderDetail(item.id)">
璁㈠崟澶囨敞锛歿{item.memberInfo||''}}
</view>
</view>
@@ -85,11 +82,68 @@
<!-- <view class="phone-botton" @click="contactPhone()" >鍏抽棴</view> -->
</view>
</u-popup>
+ <!-- 纭鏀惰揣 -->
+ <u-popup :show="showDone" round="15" :safeAreaInsetBottom="false" mode="center">
+ <view class="tc">
+ <view class="tc-contemt">
+ <view class="tc-contemt-title">纭鏀惰揣鎻愰啋</view>
+ <view class="tc-contemt-nr">
+ 鎮ㄧ‘璁ゅ凡缁忔敹鍒板晢鍝佷簡鍚楋紵
+ </view>
+ </view>
+ <view class="tc-btn">
+ <view class="tc-btn-item" @click="showDone = false;currentOrder=null;">鍙栨秷</view>
+ <view class="tc-btn-item" style="color: #004096;" @click="doneOrderDo()">纭鏀惰揣</view>
+ </view>
+ </view>
+ </u-popup>
+ <!-- 鍙栨秷璁㈠崟 -->
+ <u-popup :show="showCancel" round="15" :safeAreaInsetBottom="false" mode="center">
+ <view class="tc">
+ <view class="tc-contemt">
+ <view class="tc-contemt-title">纭畾鍙栨秷鎻愰啋</view>
+ <view class="tc-contemt-nr">
+ 鎮ㄧ‘璁ゅ彇娑堣璁㈠崟鍚楋紵
+ </view>
+ </view>
+ <view class="tc-btn">
+ <view class="tc-btn-item" @click="showCancel = false;currentOrder=null;">鎴戝啀鎯虫兂</view>
+ <view class="tc-btn-item" style="color: red;" @click="cancelOrderDo">纭鍙栨秷</view>
+ </view>
+ </view>
+ </u-popup>
+ <!-- 鍒犻櫎璁㈠崟 -->
+ <u-popup :show="showDelete" round="15" :safeAreaInsetBottom="false" mode="center">
+ <view class="tc">
+ <view class="tc-contemt">
+ <view class="tc-contemt-title">纭鍒犻櫎鎻愰啋</view>
+ <view class="tc-contemt-nr">
+ 鎮ㄧ‘璁ゅ垹闄よ璁㈠崟鍚楋紵
+ </view>
+ </view>
+ <view class="tc-btn">
+ <view class="tc-btn-item" @click="showDelete = false;currentOrder=null;">鎴戝啀鎯虫兂</view>
+ <view class="tc-btn-item" style="color: red;" @click="deleteOrderDo">纭鍒犻櫎</view>
+ </view>
+ </view>
+ </u-popup>
+ <u-popup :show="showQrcode" round="15" @close="openQrcode()" :safeAreaInsetBottom="false" mode="bottom" :closeable="true" :closeOnClickOverlay="false">
+ <view class="tc" style="width: 100%;">
+ <view class="tc-contemt">
+ <view class="tc-contemt-title" style="text-align: center;">鑷彁鐮�</view>
+ <view class="tc-contemt-nr" style="border: 1rpx solid #f2f2f2;width: 150px;height: 150px;">
+ <image style="border: 1rpx solid #f2f2f2;width: 150px;height: 150px;" v-if="currentOrder && currentOrder.qrCodeBase64" :src="currentOrder.qrCodeBase64" model="widthFix" ></image>
+ </view>
+ <view class="tc-contemt-title" style="text-align: center;">{{currentOrder.exchangeCode|| ''}}</view>
+ </view>
+ </view>
+ </u-popup>
</view>
</template>
<script>
import { mapState } from 'vuex'
+ import QRCode from 'qrcode';
export default {
computed: {
...mapState(['navHeight', 'statusbarHeight','shopInfo', 'shopToken'])
@@ -97,37 +151,210 @@
data() {
return {
i: '',
- active:0,
+ currentOrder:null,
+ showDone:false,
+ showCancel:false,
+ showDelete:false,
+ showQrcode:false,
+ showPay:false,
showPhone:false,
loading:false,
+ active:0,
currentPage:1,
total:0,
hasNext:true,
+ userType:null,
dataList:[],
shop:{},
linkItem:{},
- cate: [
- { name: '鍏ㄩ儴', id: '' },
- { name: '寰呮敮浠�', id: 0 },
- { name: '寰呭彂璐�/鑷彁', id: 1 }
+ cate:[],
+ cate1: [
+ { name: '鍏ㄩ儴', id: '' ,index:0},
+ { name: '寰呮敮浠�', id: 0 ,index:1},
+ { name: '寰呭彂璐�/鑷彁', id: 1,index:2 }
+ ],
+ cate0: [
+ { name: '鍏ㄩ儴', id: '' ,index:0},
+ { name: '寰呮敮浠�', id: 0 ,index:1},
+ { name: '寰呭彂璐�/鑷彁', id: 1,index:2 },
+ { name: '寰呮敹璐�', id: 2 ,index:3},
]
};
},
onLoad(options) {
- if (options.status) {
- this.i = Number(options.status)
+ console.log(options )
+ this.active = 0
+ this.cate =[]
+ this.userType = Number(options.userType)
+ if(this.userType == 1){
+ this.shop ={}
+ this.checkShopLogin()
+ this.shop = this.shopInfo || {}
+ this.cate =this.cate1;
+ }else{
+ this.cate =this.cate0;
}
+ if (options.status) {
+ this.active = Number(options.status)
+ this.i = this.cate[this.active].id
+ }
+ this.getFirstPageData()
+ var that =this
+ uni.$on('updateOrder',function(data){
+ console.log('鐩戝惉鍒颁簨浠舵潵鑷� update 锛屾惡甯﹀弬鏁� msg 涓猴細' ,data);
+ if(data.delete == 1){
+ //鍒犻櫎璁㈠崟锛屽己鍒跺埛鏂版暟鎹�
+ that.getFirstPageData()
+ }else if(data.info!=null && data.info.orderId!=null){
+ console.log('鐩戝惉鍒颁簨浠舵潵鑷� update 01锛�' ,data);
+ that.dataList.forEach((item,index)=>{
+ if(item.id==data.info.orderId){
+ console.log('鐩戝惉鍒颁簨浠舵潵鑷� update 02锛�' ,data);
+ item.status = data.info.orderStatus
+ }
+ })
+ }
+
+ })
},
onShow() {
- this.shop ={}
- this.checkShopLogin()
- this.shop = this.shopInfo || {}
- this.getFirstPageData()
+ this.showDone=false
+ this.showCancel=false
+ this.showDelete=false
+ this.showQrcode=false
+ this.showPay=false
+ this.showPhone=false
+ this.loading=false,
+ this.currentOrder=null
},
onReachBottom(){
this.getDataList();
},
methods: {
+ async openQrcode(item){
+ this.currentOrder = null
+ var that =this
+ if(!this.showQrcode){
+ this.currentOrder = item
+ if(this.currentOrder.qrCodeBase64 == undefined && this.currentOrder.qrCodeBase64==null){
+ try {
+ const ocanvas = uni.createOffscreenCanvas({ type: "2d" });
+ const qrCodeBase64 = await QRCode.toDataURL(ocanvas,this.currentOrder.exchangeCode, {
+ scale: 1, // 浜岀淮鐮佺殑缂╂斁姣斾緥锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
+ width: 150, // 浜岀淮鐮佺殑瀹藉害锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
+ margin: 1 // 浜岀淮鐮佸懆鍥寸殑绌虹櫧杈硅窛锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
+ });
+ this.currentOrder.qrCodeBase64 =qrCodeBase64
+ that.showQrcode = true
+ } catch (err) {
+ uni.showToast({
+ title:'鐢熸垚鑷彁鐮佸け璐�',
+ icon:'error'
+ })
+ }
+ }else{
+ that.showQrcode = true
+ }
+ }else{
+ this.showQrcode = false
+ }
+ },
+ hexiaoOrder(item){
+ uni.navigateTo({
+ url:'/pagesA/pages/write-off-a/write-off-a?id='+item.id
+ })
+ },
+ cancelOrder(item){
+ this.currentOrder = null
+ this.showCancel = !this.showCancel
+ if(this.showCancel){
+ this.currentOrder = item
+ }
+ },
+ deleteOrder(item){
+ this.currentOrder = null
+ this.showDelete = !this.showDelete
+ if(this.showDelete){
+ this.currentOrder = item
+ }
+ },
+
+ payOrder(item){
+ },
+ doneOrder(item){
+ this.currentOrder = null
+ this.showDone = !this.showDone
+ if(this.showDone){
+ this.currentOrder = item
+ }
+ },
+ async doneOrderDo(){
+ if(this.userType == 1 || this.currentOrder==null || this.currentOrder.id == null) {
+ return
+ }
+ var that =this
+ let res = await this.$u.api.affirmOrder({ orderId: this.currentOrder.id });
+ if (res.code === 200 ) {
+ //淇敼璁㈠崟鐘舵��
+ this.dataList.forEach(item=>{
+ if(item.id==this.currentOrder.id){
+ item.status =3
+ }
+ })
+ this.doneOrder()
+ }else{
+ /* uni.showToast({
+ title:res.message||'纭畾鏀惰揣澶辫触锛�',
+ icon:'error'
+ }) */
+ }
+ },
+ async cancelOrderDo(){
+ if(this.userType == 1 || this.currentOrder==null || this.currentOrder.id == null) {
+ return
+ }
+ var that =this
+ let res = await that.$u.api.cancelOrder({ orderId: this.currentOrder.id });
+ if (res.code === 200 ) {
+ //淇敼璁㈠崟鐘舵��
+ this.dataList.forEach(item=>{
+ if(item.id==this.currentOrder.id){
+ item.status = 4
+ }
+ })
+ this.cancelOrder()
+ }else{
+ /* uni.showToast({
+ title:res.message||'鍙栨秷璁㈠崟澶辫触锛�',
+ icon:'error'
+ }) */
+ }
+ },
+ async deleteOrderDo(){
+ if(this.userType == 1 || this.currentOrder==null || this.currentOrder.id == null) {
+ return
+ }
+ var that =this
+ let res = await that.$u.api.delOrder({ orderId: this.currentOrder.id });
+ if (res.code === 200 ) {
+ //淇敼璁㈠崟鐘舵��
+ /* var tindex = -1;
+ this.dataList.forEach((item,index)=>{
+ if(item.id==this.currentOrder.id){
+ tindex = index
+ }
+ })
+ if(tindex>=0){
+ this.dataList.splice(tindex,1)
+ } */
+ this.getFirstPageData()
+ }else{
+ /* uni.showToast({
+ title:res.message||'鍒犻櫎璁㈠崟澶辫触锛�',
+ icon:'error'
+ }) */
+ }
+ },
contactPhone(item){
this.showPhone = !this.showPhone
this.linkItem = item ||{}
@@ -140,9 +367,9 @@
})
}
},
- changeRow(index) {
- this.active=index
- this.i = this.cate[index].id
+ changeRow( item) {
+ this.active=item.index
+ this.i = item.id
this.getFirstPageData()
},
getFirstPageData(){
@@ -163,15 +390,27 @@
this.dataList=[]
}
var that =this
- let res = await that.$u.api.shopOrderPage({
- capacity:10,
- model: {
- receiveType: 1,
- status: this.i
- },
- page:this.currentPage
- });
- console.log(res)
+ let res ={};
+ if(this.userType == 1){
+ res = await that.$u.api.shopOrderPage({
+ capacity:10,
+ model: {
+ receiveType: 1,
+ status: this.i
+ },
+ page:this.currentPage
+ });
+ }else{
+ res = await that.$u.api.orderPage({
+ capacity:10,
+ model: {
+ receiveType: 1,
+ status: this.i
+ },
+ page:this.currentPage
+ });
+ }
+ console.log(res)
if (res.code === 200 ) {
if ( res.data && res.data.page ===this.currentPage) {
res.data.records = res.data.records||[]
@@ -188,9 +427,9 @@
},
jumpOrderDetail(id){
uni.navigateTo({
- url: '/pagesA/pages/order-details/order-details?userType=1&id='+id
+ url: '/pagesA/pages/order-details/order-details?userType='+this.userType+'&id='+id
})
- },
+ },
checkShopLogin(){
var that =this
if( this.shopInfo ==null || this.shopInfo.id==null || this.shopToken==null || this.shopToken==''){
@@ -236,14 +475,20 @@
.a-left-tips {
padding: 0 6rpx;
height: 40rpx;
- line-height: 40rpx;
- // background: #00B775;
- background: #00B775;
+ line-height: 40rpx;
border-radius: 8rpx;
font-weight: 400;
font-size: 22rpx;
color: #FFFFFF;
margin-right: 16rpx;
+ }
+ .shop-top-tips-a {
+ background: #00B775;
+ border: 1rpx solid #00B775;
+ }
+ .shop-top-tips-b {
+ background: #004096;
+ border: 1rpx solid #004096;
}
text {
font-weight: 400;
@@ -259,6 +504,19 @@
.grey{
color: #999999 !important;
}
+ }
+ .d{
+ width: 100%;
+ padding:20rpx 20rpx;
+ margin-top: 22rpx;
+ background: #F8F9FB;
+ border-radius: 8rpx;
+ font-weight: 400;
+ font-size: 26rpx;
+ color: #666666;
+ line-height: 36rpx;
+ text-align: left;
+ font-style: normal;
}
.b {
width: 100%;
@@ -363,6 +621,10 @@
border: 1rpx solid #004096;
color: #004096 !important;
}
+ .grey {
+ border: 1rpx solid #666666;
+ color: #666666 !important;
+ }
.bg{
background: #004096;
border-radius: 34rpx;
@@ -383,10 +645,10 @@
align-items: center;
justify-content: center;
border-radius: 34rpx;
- border: 1rpx solid #B2B2B2;
+ // border: 1rpx solid #B2B2B2;
font-weight: 400;
font-size: 28rpx;
- color: #666666;
+ // color: #666666;
margin-right: 20rpx;
&:last-child {
margin: 0 !important;
--
Gitblit v1.9.3