From ee24d5d1cf9025f6c15f3b4a435fd0ac7ccc8054 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 24 二月 2026 09:06:43 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dingyuannongji

---
 mini-program/pagesA/pages/write-off/write-off.vue                           |  122 +++++
 mini-program/static/icon/default2.png                                       |    0 
 server/dmmall_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java  |    2 
 mini-program/utils/http.interceptor.js                                      |    1 
 mini-program/pages/distributor/distributor.vue                              |   65 ++-
 mini-program/utils/http.api.js                                              |   19 
 server/dmmall_web/src/main/java/com/doumee/InterfaceApplication.java        |    1 
 mini-program/unpackage/dist/dev/mp-weixin/common/main.js                    |   56 +-
 server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java |    1 
 /dev/null                                                                   |   25 -
 mini-program/pagesA/pages/order-details/order-details.vue                   |  354 ++++++++++++++---
 mini-program/pagesA/pages/order/order.vue                                   |  364 +++++++++++++++--
 mini-program/pages/mine/mine.vue                                            |   22 
 mini-program/pagesA/pages/write-off-a/write-off-a.vue                       |  154 ++++++
 14 files changed, 952 insertions(+), 234 deletions(-)

diff --git a/mini-program/pages/distributor/distributor.vue b/mini-program/pages/distributor/distributor.vue
index fd05157..1ecd56c 100644
--- a/mini-program/pages/distributor/distributor.vue
+++ b/mini-program/pages/distributor/distributor.vue
@@ -86,7 +86,7 @@
 					<image src="/static/icon/ic_xunizhanghu@2x.png" mode="widthFix"></image>
 					<text>铏氭嫙璐﹀彿</text>
 				</view>
-				<view class="func-item" style="margin-bottom: 30rpx;">
+				<view class="func-item" style="margin-bottom: 30rpx;" @click="jumpWriteoff">
 					<image src="/static/icon/ic_zitihexiao@2x.png" mode="widthFix"></image>
 					<text>鑷彁鏍搁攢</text>
 				</view>
@@ -107,11 +107,11 @@
 			</view>
 			<view class="title"  v-if="!show">寰呭鐞嗚鍗� ({{total}})</view>
 			<view class="list"  v-if="!show">
-				<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>
@@ -120,17 +120,7 @@
 						<text  v-if="item.status ==4"class="a-right">宸插彇娑�</text>
 						<text  v-if="item.status ==6" class="a-right">宸查��娆�</text>
 					</view>
-					<view class="b">
-						<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"   @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>
@@ -152,14 +142,14 @@
 						</view>
 						<view class="c-btns">
 							<view class="c-btns-item blue" @click="contactPhone(item)">鑱旂郴瀹㈡埛</view>
-							<view class="c-btns-item bg">鑷彁鏍搁攢</view>
+							<view class="c-btns-item bg" v-if="item.status == 1 && item.receiveType ==1" @click="hexiaoOrder(item)">鑷彁鏍搁攢</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>
-				<view v-if="!hasNext" class="nomore">宸插姞杞藉叏閮�</view>
+				<view v-if="!hasNext" class="nomore">{{total>0?'宸插姞杞藉叏閮ㄦ暟鎹�':'鏆傛棤寰呭鐞嗚鍗�'}}</view>
 			</view>
 		</view>
 		<!-- 纭閫�鍑虹櫥闄� -->
@@ -245,13 +235,34 @@
 			 this.active=0
 			 this.shop = this.shopInfo || {}
 			 this.getCountData()
+			 this.total=0
+			 this.hasNext=true
 			 this.currentPage = 0
 			 this.getOrderList()
 		},
 		onReachBottom(){ 
 			this.getOrderList( );
 		},
+		onLoad() {
+			 var that =this
+			uni.$on('updateOrder',function(data){
+				if(data.info!=null && data.info.orderId!=null && data.info.orderStatus ==3){
+					 if(data.info.orderStatus ==3){
+						 that.getCountData()
+					 }
+					 that.total=0
+					 that.hasNext=true
+					 that.currentPage = 0
+					 that.getOrderList()
+				 }
+			 }) 
+		},
 		methods:{ 
+			hexiaoOrder(item){
+				uni.navigateTo({
+					url:'/pagesA/pages/write-off-a/write-off-a?id='+item.id
+				})
+			},
 			openQrcode(){
 				if(this.shop.programCode){
 					this.showQrcode = !this.showQrcode
@@ -372,12 +383,17 @@
 			},
 			jumpOrderList() {
 				uni.navigateTo({
-					url: '/pagesA/pages/order/order'
+					url: '/pagesA/pages/order/order?userType=1'
 				})
 			},
 			jumpAccount() {
 				uni.navigateTo({
 					url: '/pagesA/pages/virtual-account/virtual-account'
+				})
+			},
+			jumpWriteoff() {
+				uni.navigateTo({
+					url: '/pagesA/pages/write-off/write-off'
 				})
 			},
 			jumpMemberList() {
@@ -472,13 +488,20 @@
 								padding: 0 6rpx;
 								height: 40rpx;
 								line-height: 40rpx;
-								background: #00B775;
 								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;
 								font-size: 26rpx;
diff --git a/mini-program/pages/mine/mine.vue b/mini-program/pages/mine/mine.vue
index 0df5eae..109db88 100644
--- a/mini-program/pages/mine/mine.vue
+++ b/mini-program/pages/mine/mine.vue
@@ -46,24 +46,24 @@
 			<view class="func">
 				<view class="func-top">
 					<view class="func-top-title">鎴戠殑璁㈠崟</view>
-					<view class="func-top-to" @click="jumpOrder">
+					<view class="func-top-to" @click="jumpOrder(0)">
 						鍏ㄩ儴璁㈠崟
 						<image src="/static/icon/ic_ar2@2x.png" mode="widthFix"></image>
 					</view>
 				</view>
 				<view class="func-list">
-					<view class="func-list-item" @click="jumpOrder(0)">
+					<view class="func-list-item" @click="jumpOrder(1)">
 						<view class="func-list-item-num" v-if="orderNum && orderNum.waitPayOrders > 0">{{orderNum.waitPayOrders}}</view>
 						<image src="/static/icon/mine_ic_daifukuan@2x.png" mode="widthFix"></image>
 						<text>寰呮敮浠�</text>
 					</view>
-					<view class="func-list-item" @click="jumpOrder(1)">
+					<view class="func-list-item" @click="jumpOrder(2)">
 						<view class="func-list-item-num" v-if="orderNum && orderNum.waitOrders > 0">{{orderNum.waitOrders}}</view>
 						<image src="/static/icon/mine_ic_daifahuo@2x.png" mode="widthFix"></image>
 						<text>寰呭彂璐�/鑷彁</text>
 					</view>
-					<view class="func-list-item" @click="jumpOrder(2)">
-						<view class="func-list-item-num" v-if="orderNum && orderNum.waitOrders > 0">{{orderNum.waitReceivedOrders}}</view>
+					<view class="func-list-item" @click="jumpOrder(3)">
+						<view class="func-list-item-num" v-if="orderNum && orderNum.waitReceivedOrders > 0">{{orderNum.waitReceivedOrders}}</view>
 						<image src="/static/icon/mine_ic_daishouhuo@2x.png" mode="widthFix"></image>
 						<text>寰呮敹璐�</text>
 					</view>
@@ -157,15 +157,9 @@
 			},
 			// 璺宠浆璁㈠崟鍒楄〃
 			jumpOrder(status) {
-				if (status >= 0) {
-					uni.navigateTo({
-						url: '/pages/order/order?status=' + status
-					})
-				} else {
-					uni.navigateTo({
-						url: '/pages/order/order'
-					})
-				}
+				uni.navigateTo({
+					url: '/pagesA/pages/order/order?userType=0&status=' + status
+				})
 			}
 		}
 	}
diff --git a/mini-program/pagesA/pages/order-details/order-details.vue b/mini-program/pagesA/pages/order-details/order-details.vue
index 043c5c0..11ffc1c 100644
--- a/mini-program/pagesA/pages/order-details/order-details.vue
+++ b/mini-program/pagesA/pages/order-details/order-details.vue
@@ -57,23 +57,22 @@
 					</view>
 				</view>
 			</view>
-			<view class="user">
+			<view class="user"  v-if="userType!=1">
 				<view class="user-jxa">
 					<view class="user-jxa-title">
 						<image src="/static/icon/ic_address@2x1.png" mode="widthFix"></image>
 						<text>{{info.shopInfo.name||''}}</text>
 					</view>
-					<view class="user-jxa-lx">
+					<view class="user-jxa-lx"  @click="contact( info.shopInfo.phone)">
 						<image src="/static/icon/ic_call@2x.png" mode="widthFix"></image>
-						<text v-if="userType==1" @click="contact(info.linkphone)">鑱旂郴瀹㈡埛</text> 
-						<text v-if="info.orderStatus!=0 && userType==0" @click="contact(info.shopInfo.phone || '')">鑱旂郴缁忛攢鍟�</text>
+						<text  > 鑱旂郴缁忛攢鍟�</text> 
 					</view>
 				</view>
 				<view class="user-jxtime">
 					<image class="user-jxtime-icon" src="/static/icon/ic_openinghours@2x.png" mode="widthFix"></image>
 					<text>钀ヤ笟鏃堕棿锛歿{info.shopInfo.startTime || ''}}</text>
 				</view>
-				<view class="user-jxtime">
+				<view class="user-jxtime" @click="jumpMap()">
 					<image class="user-jxtime-icon" src="/static/icon/ic_shopaddress@2x.png" mode="widthFix"></image>
 					<text>{{info.shopInfo.addr || ''}}</text>
 					<image class="user-jxtime-to" src="/static/icon/ic_ar2@2x.png" mode="widthFix"></image>
@@ -86,29 +85,48 @@
 					<view class="user-qrcode-btn" @click="copyText(info.exchangeCode)">澶嶅埗鑷彁鐮�</view>
 				</view>
 			</view>
-			<view class="user"   v-if="info.receiveType!=1">
+			<view class="user" v-if="userType==1">
 				<view class="user-top">
 					<view class="user-icon">
-						<image src="/static/icon/ic_location@2x.png" mode="widthFix"></image>
+						<image :src="info.member && info.member.imgFullUrl? info.member.imgFullUrl:'/static/icon/default.png'" mode="widthFix"></image>
 					</view>
 					<view class="user-info">
 						<view class="user-info-a">
-							<text>{{info.linkename || ''}}</text>
-							<text>{{info.linkephone || ''}}</text>
+							<text>{{info.linkName || ''}}</text>
+							<view class="user-jxa-lx"  @click="contact( info.linkPhone )">
+								<image src="/static/icon/ic_call@2x.png" mode="widthFix"></image>
+								<text > 鑱旂郴瀹㈡埛</text> 
+							</view>
 						</view>
 						<view class="user-info-b">
-							{{info.addr||''}}
+							<!-- <image src="/static/icon/ic_call@2x.png" mode="widthFix"></image> -->
+							<text>{{info.linkPhone || ''}}</text>
 						</view>
 					</view>
 				</view>
-				<view class="user-xian"></view>
-				<view class="user-kd">
+				<view class="user-remark"  v-if="info.memberInfo">
+					<text>璁㈠崟澶囨敞锛�</text>
+					<text>{{info.memberInfo || ''}}</text>
+				</view>
+				<view class="user-xian" v-if="info.receiveType!=1"></view>
+				<view class="user-kd" v-if="info.receiveType!=1">
+					<image src="/static/icon/ic_location@2x.png" mode="widthFix"></image>
+					<text>{{info.linkAddress || ''}}</text>
+				</view>
+				<view class="user-kd" v-if="info.receiveType!=1&& info.kdName && info.kdCode">
 					<image src="/static/icon/ic_wuliu@2x.png" mode="widthFix"></image>
 					<text>{{info.kdName || ''}}锝渰{info.kdCode || ''}}</text>
+					<image class="image2" src="/static/icon/ic_cppy@2x.png"  @click="copyText(info.kdCode )" mode="widthFix"></image>
 				</view>
 			</view>  
-			<view class="shop">
-				<view class="shop-info" style="margin: 0;"  v-if="info.status ==6">
+			<view class="user" v-if="userType!=1 &&info.memberInfo" >
+				<view class="user-kd" >
+					<text>璁㈠崟澶囨敞锛�</text>
+					<text>{{info.memberInfo || ''}}</text>
+				</view>
+			</view>  
+			<view class="shop"  v-if="info.orderStatus ==6">
+				<view class="shop-info" style="margin: 0;" >
 					<view class="shop-info-item" style="margin-bottom: 12rpx;">
 						<view class="shop-info-item-label" style="color: #222222; font-size: 30rpx; font-weight: 600;">閫�娆鹃噾棰�</view>
 						<view class="shop-info-item-price xfk">
@@ -135,13 +153,12 @@
 					<view :class="'shop-top-tips '+(info.receiveType==1?'shop-top-tips-a':'shop-top-tips-b' )">{{info.receiveType==1?'鑷彁':'閰嶉��'}}</view>
 					<text>{{info.shopInfo.name || ''}}</text>
 				</view>
-				<view class="b">
-					<view class="b-item" v-for="(item, index) in (info.goodsorderDetailList||[])" :key="index">
-						<view class="b-item-image">
-<!-- 							<image v-if="item.imgurl!=null" :src="item.imgurl" mode="widthFix"></image>
- -->							 <image src="/static/icon/default2.png" mode="widthFix"></image>
+				<view class="b" v-if="info.goodsorderDetailList && info.goodsorderDetailList.length">
+					<view class="b-item" v-for="(item, index) in info.goodsorderDetailList" :key="index"  @click="jumpGoodsDetail(item,index)" >
+						<view class="b-item-image" >
+							 <image :src="item.imgurl?item.imgurl:'/static/icon/default2.png'" mode="widthFix"></image>
 						</view>
-						<view class="b-item-title">
+						<view class="b-item-title" >
 							<view class="b-item-title-val">{{item.name || ''}}</view>
 							<view class="b-item-jia">
 								<text>楼{{(item.price || 0).toFixed(2)}}</text>
@@ -204,7 +221,49 @@
 							<text>{{info.createDate || ''}}</text>
 						</view>
 					</view>
-					<view class="xinxi-list-item">
+					<view class="xinxi-list-item" v-if="info.shopInfo!=null && info.shopInfo.id!=null">
+						<view class="xinxi-list-item-label">缁� 閿� 鍟嗭細</view>
+						<view class="xinxi-list-item-right">
+							<text>{{info.shopInfo.name || ''}}</text>
+						</view>
+					</view>
+					<view class="xinxi-list-item" v-if="info.shopInfo!=null && info.shopInfo.id!=null">
+						<view class="xinxi-list-item-label">鑱旂郴鐢佃瘽锛�</view>
+						<view class="xinxi-list-item-right">
+							<text>{{info.shopInfo.phone || ''}}</text>
+						</view>
+					</view>
+					<view class="xinxi-list-item" v-if="info.payDate!=null">
+						<view class="xinxi-list-item-label">鏀粯鏃堕棿锛�</view>
+						<view class="xinxi-list-item-right">
+							<text>{{info.payDate || ''}}</text>
+						</view>
+					</view>
+					<view class="xinxi-list-item" v-if="info.payStatus != 0">
+						<view class="xinxi-list-item-label">鏀粯鏂瑰紡锛�</view>
+						<view class="xinxi-list-item-right">
+							<text>{{info.payMethod==0?'寰俊鏀粯':'绉垎鎶垫墸'}}</text>
+						</view>
+					</view>
+					<view class="xinxi-list-item" v-if="info.payOrderId">
+						<view class="xinxi-list-item-label">浜ゆ槗娴佹按鍙凤細</view>
+						<view class="xinxi-list-item-right">
+							<text>{{info.payOrderId || ''}}</text>
+						</view>
+					</view>
+					<view class="xinxi-list-item" v-if="info.cancelDate!=null">
+						<view class="xinxi-list-item-label">鍙栨秷鏃堕棿锛�</view>
+						<view class="xinxi-list-item-right">
+							<text>{{info.cancelDate || ''}}</text>
+						</view>
+					</view>
+					<view class="xinxi-list-item" v-if="info.doneDate!=null">
+						<view class="xinxi-list-item-label">瀹屾垚鏃堕棿锛�</view>
+						<view class="xinxi-list-item-right">
+							<text>{{info.doneDate || ''}}</text>
+						</view>
+					</view>
+					<view class="xinxi-list-item" v-if="1==2">
 						<view class="xinxi-list-item-label">璁㈠崟澶囨敞锛�</view>
 						<view class="xinxi-list-item-right">
 							<text>{{info.memberInfo||'-'}}</text>
@@ -215,14 +274,19 @@
 			<view style="width: 100%; height: calc(100rpx + env(safe-area-inset-bottom));"></view>
 		</view>
 		<view class="footer">
-			<view class="caozuo">
-				<view class="caozuo-item">鍙栨秷璁㈠崟</view>
-				<view class="caozuo-item" style="border: 1rpx solid #004096; color: #004096;">缁х画鏀粯</view>
+			<view class="caozuo" v-if="userType!=1">
+				<view class="caozuo-item" v-if="info.orderStatus==0 || info.orderStatus ==1"  @click="cancelOrder()"> 鍙栨秷璁㈠崟</view>
+				<view class="caozuo-item"  @click="deleteOrder()" v-if="info.orderStatus==4"> 鍒犻櫎璁㈠崟</view> 
+				<view class="caozuo-item"  @click="payOrder()" v-if=" info.orderStatus==0" style="border: 1rpx solid #004096; color: #004096;">缁х画鏀粯</view>
+				<view class="caozuo-item" @click="doneOrder()"  v-if=" info.orderStatus==2" style="border: 1rpx solid #004096; color: #004096;">纭鏀惰揣</view>
+			</view>
+			<view class="caozuo" v-if="userType==1">
+				<view class="caozuo-item" @click="hexiaoOrder()"  v-if=" info.orderStatus==1 && info.receiveType ==1" style="border: 1rpx solid #004096; color: #004096;">鑷彁鏍搁攢</view>
 			</view>
 			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
 		</view>
 		<!-- 纭鏀惰揣 -->
-		<u-popup :show="show" round="15" :safeAreaInsetBottom="false" mode="center">
+		<u-popup :show="showDone" round="15" :safeAreaInsetBottom="false" mode="center">
 			<view class="tc">
 				<view class="tc-contemt">
 					<view class="tc-contemt-title">纭鏀惰揣鎻愰啋</view>
@@ -231,8 +295,38 @@
 					</view>
 				</view>
 				<view class="tc-btn">
-					<view class="tc-btn-item" @click="show = false">鍙栨秷</view>
-					<view class="tc-btn-item" style="color: #004096;">纭鏀惰揣</view>
+					<view class="tc-btn-item" @click="showDone = false; ">鍙栨秷</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; ">鎴戝啀鎯虫兂</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; ">鎴戝啀鎯虫兂</view>
+					<view class="tc-btn-item" style="color: red;" @click="deleteOrderDo">纭鍒犻櫎</view>
 				</view>
 			</view>
 		</u-popup>
@@ -249,6 +343,10 @@
 		data() {
 			return {
 				show: false,
+				showDone:false,
+				showCancel:false,
+				showDelete:false,
+				showPay:false,
 				qrCodeBase64:'',
 				id:null,
 				userType:0,
@@ -267,6 +365,10 @@
 			}else{
 				this.getUserDetail()
 			}
+			this.showDone=false
+			this.showCancel=false
+			this.showDelete=false
+			this.showPay=false
 		},
 		onLoad(options) {
 			this.id = options.id
@@ -274,61 +376,135 @@
 			this.qrCodeUrl=''
 		},
 		methods:{
-			  copyText(text) {
-			      try {
-					   wx.setClipboardData({
-						  data: text||' ',
-						  success: function () {
-							uni.showToast({ title: '澶嶅埗鎴愬姛' });
-						  },
-						  fail: function () {
-							uni.showToast({ title: '澶嶅埗澶辫触', icon: 'none' });
-						  }
-						});
-			      } catch (err) {
-			        console.error('澶嶅埗澶辫触', err);
-			        uni.showToast({ title: '澶嶅埗澶辫触', icon: 'none' });
-			      }
-			    },
+			hexiaoOrder(item){
+				uni.navigateTo({
+					url:'/pagesA/pages/write-off-a/write-off-a?id='+this.id
+				})
+			},
+			cancelOrder(item){
+				this.showCancel = !this.showCancel
+			},
+			deleteOrder(item){
+				this.showDelete = !this.showDelete
+			},
+			payOrder(item){
+			},
+			doneOrder(item){
+				this.showDone = !this.showDone
+			},
+			async  doneOrderDo(){
+				if(this.userType == 1 ) {
+					return
+				}
+				var that =this
+				let res = await this.$u.api.affirmOrder({ orderId: this.info.orderId  });
+				if (res.code === 200 ) { 
+					//淇敼璁㈠崟鐘舵��
+					this.info.orderStatus = 3
+					 uni.$emit('updateOrder',{info:this.info,delete:0})
+					await this.getUserDetail()
+					this.doneOrder()
+				}else{
+					/* uni.showToast({
+						title:res.message||'纭畾鏀惰揣澶辫触锛�',
+						icon:'error'
+					}) */
+				}
+			},
+			async cancelOrderDo(){
+				if(this.userType == 1 ) {
+					return
+				}
+				var that =this
+				let res = await that.$u.api.cancelOrder({ orderId: this.info.orderId  });
+				if (res.code === 200 ) { 
+					this.info.orderStatus = 4
+					uni.$emit('updateOrder',{info:this.info,delete:0})
+					await  this.getUserDetail()
+					this.cancelOrder()
+				}else{
+				/* 	uni.showToast({
+						title:res.message||'鍙栨秷璁㈠崟澶辫触锛�',
+						icon:'error'
+					}) */
+				}
+			},
+			async deleteOrderDo(){
+				if(this.userType == 1 ) {
+					return
+				}
+				var that =this
+				let res = await that.$u.api.delOrder({ orderId: this.info.orderId  });
+				if (res.code === 200 ) { 
+					uni.$emit('updateOrder',{info:this.info,delete:1})
+					uni.navigateBack({delta:1})
+				}else{
+					/* uni.showToast({
+						title:res.message||'鍒犻櫎璁㈠崟澶辫触锛�',
+						icon:'error'
+					}) */
+				}
+			},
+			jumpMap(){
+			
+			},
+		    copyText(text) {
+			    try {
+				   wx.setClipboardData({
+					  data: text||' ',
+					  success: function () {
+						uni.showToast({ title: '澶嶅埗鎴愬姛' });
+					  },
+					  fail: function () {
+						uni.showToast({ title: '澶嶅埗澶辫触', icon: 'none' });
+					  }
+					});
+			    } catch (err) {
+				    console.error('澶嶅埗澶辫触', err);
+				    uni.showToast({ title: '澶嶅埗澶辫触', icon: 'none' });
+			    }
+			},
 			async getQrcodeByStr(){
-					try { 
-				  const ocanvas = uni.createOffscreenCanvas({ type: "2d" });
-						const qrCodeBase64 = await QRCode.toDataURL(ocanvas,this.info.exchangeCode, {
-													scale: 1, // 浜岀淮鐮佺殑缂╂斁姣斾緥锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
-													width: 300, // 浜岀淮鐮佺殑瀹藉害锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
-													margin: 1 // 浜岀淮鐮佸懆鍥寸殑绌虹櫧杈硅窛锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
-												}); 
-						this.qrCodeBase64 =qrCodeBase64
-						console.log("==================this.info.exchangeCode1:",qrCodeBase64)
-				      } catch (err) {
-						  uni.showToast({
-						  	title:'鍒涘缓浜岀淮鐮佸け璐�',
-							icon:'error'
-						  })
-				      }
+				try { 
+				    const ocanvas = uni.createOffscreenCanvas({ type: "2d" });
+					const qrCodeBase64 = await QRCode.toDataURL(ocanvas,this.info.exchangeCode, {
+						scale: 1, // 浜岀淮鐮佺殑缂╂斁姣斾緥锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
+						width: 300, // 浜岀淮鐮佺殑瀹藉害锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
+						margin: 1 // 浜岀淮鐮佸懆鍥寸殑绌虹櫧杈硅窛锛屽彲浠ユ牴鎹渶瑕佽皟鏁�
+					}); 
+					this.qrCodeBase64 =qrCodeBase64
+				  } catch (err) {
+					uni.showToast({
+						title:'鐢熸垚鑷彁鐮佸け璐�',
+						icon:'error'
+					})
+				}
 			},
 			contact(phone){
-				if(phone !=null && phonee!=''){
+				console.log(phone)
+				if(phone !=null && phone!=''){
 					uni.makePhoneCall({
 					   phoneNumber: phone 
 					})
 				}
 			},
-			async  getShopDetail(index){
+			async  getShopDetail(){
 				var that =this 
 				let res = await that.$u.api.shopOrderDetail({orderId:this.id,tokenType:1  })
 				if (res.code === 200) { 
 					this.info = res.data 
 					this.info.shopInfo = this.info.shopInfo||{}
-					
 					this.getQrcodeByStr()
+					uni.$emit('updateOrder',{info:this.info,delete:0})
 				} 
 			},
-			async  getUserDetail(index){
+			async  getUserDetail(){
 				var that =this 
-				let res = await that.$u.api.shopOrderDetail({orderId:this.id,tokenType:1  })
+				let res = await this.$u.api.orderDetail({orderId:this.id  })
 				if (res.code === 200) { 
 					this.info = res.data 
+					this.getQrcodeByStr()
+					uni.$emit('updateOrder',{info:this.info,delete:0})
 				} 
 			},
 			checkShopLogin(){
@@ -342,6 +518,11 @@
 			jumpBack(){
 				uni.navigateBack({ delta: 1 });
 			},
+			jumpGoodsDetail(item){
+				uni.navigateTo({
+					url: '/pages/details/details?id='+item.id
+				})
+			}
 		}
 	}
 </script>
@@ -841,12 +1022,14 @@
 					align-items: flex-start;
 					.user-icon {
 						flex-shrink: 0;
-						width: 48rpx;
-						height: 48rpx;
+						width: 80rpx;
+						height: 80rpx;
+						border-radius: 50%;
 						margin-right: 22rpx;
 						image {
 							width: 100%;
 						}
+						
 					}
 					.user-info {
 						flex: 1;
@@ -856,6 +1039,7 @@
 							width: 100%;
 							display: flex;
 							align-items: center;
+							justify-content: space-between;
 							text {
 								&:nth-child(1) {
 									font-weight: 500;
@@ -869,6 +1053,22 @@
 									margin-left: 14rpx;
 								}
 							}
+							.user-jxa-lx {
+								  right:0;
+								  
+								display: flex;
+								align-items: center;
+								image {
+									width: 26rpx;
+									height: 26rpx;
+									margin-right: 10rpx;
+								}
+								text {
+									font-weight: 400;
+									font-size: 26rpx;
+									color: #222222;
+								}
+							}
 						}
 						.user-info-b {
 							width: 100%;
@@ -876,6 +1076,11 @@
 							font-size: 26rpx;
 							color: #666666;
 							margin-top: 18rpx;
+							image {
+								width: 30rpx;
+								height: 30rpx;
+								margin-right: 10rpx;
+							}
 						}
 					}
 				}
@@ -884,6 +1089,18 @@
 					height: 1rpx;
 					margin: 30rpx 0;
 					background-color: #E5E5E5;
+				}
+				.user-remark{
+					width: 100%;
+					padding: 20rpx 10rpx;
+					margin: 30rpx 30rpx;
+					background: #F8F9FB;
+					border-radius: 8rpx;
+					text {
+						font-weight: 400;
+						font-size: 26rpx;
+						color: #333333; 
+					}
 				}
 				.user-kd {
 					width: 100%;
@@ -897,7 +1114,12 @@
 					text {
 						font-weight: 400;
 						font-size: 26rpx;
-						color: #333333;
+						color: #333333; 
+					}
+					.image2 {
+						width: 24rpx;
+						height: 24rpx;
+						margin-left: 12rpx;
 					}
 				}
 			}
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;
diff --git a/mini-program/pagesA/pages/write-off-a/write-off-a.vue b/mini-program/pagesA/pages/write-off-a/write-off-a.vue
index 6612df0..a5fa76f 100644
--- a/mini-program/pagesA/pages/write-off-a/write-off-a.vue
+++ b/mini-program/pagesA/pages/write-off-a/write-off-a.vue
@@ -1,44 +1,144 @@
 <template>
 	<view class="box">
-		<view class="title">鏍搁攢璁㈠崟</view>
+		<view class="title">鏍搁攢璁㈠崟
+		<text v-if="info.orderStatus ==0" class="status status-b">寰呮敮浠�</text>
+		<text  v-if="info.orderStatus ==1"class="status  status-a" >{{info.receiveType==1?'寰呰嚜鎻�':'寰呭彂璐�'}}</text>
+		<text  v-if="info.orderStatus ==2" class="status  status-b">寰呮敹璐�</text>
+		<text  v-if="info.orderStatus ==3" class="status  status-b" >浜ゆ槗瀹屾垚</text>
+		<text  v-if="info.orderStatus ==4" class="status  status-b">宸插彇娑�</text>
+		<text  v-if="info.orderStatus ==6"class="status  status-b" >宸查��娆�</text>
+		</view>
 		<view class="item">
 			<view class="item-user">
 				<view class="item-user-image">
-					<image src="/static/logo.png" mode="widthFix"></image>
+					<image :src="info.member && info.member.imgFullUrl? info.member.imgFullUrl:'/static/icon/default.png'" mode="widthFix"></image>
 				</view>
 				<view class="item-user-info">
-					<text>寮犳捣娑�</text>
-					<text>18155665556</text>
+					<text>{{info.linkName || ''}}</text>
+					<text>{{info.linkPhone || ''}}</text>
 				</view>
 			</view>
-			<view class="item-info">璁㈠崟澶囨敞锛�11鏈�22鏃ユ潵鎷�</view>
+			<view class="item-info">璁㈠崟澶囨敞锛歿{info.memberInfo || ''}}</view>
 		</view>
 		<view class="item">
 			<view class="item-title">鍟嗗搧鍒楄〃</view>
-			<view class="row">
-				<view class="row-image">
-					<image src="/static/logo.png" mode="widthFix"></image>
+			<template v-if="info.goodsorderDetailList && info.goodsorderDetailList.length">
+				<view class="row" v-for="(item, index) in info.goodsorderDetailList" :key="index"  >
+					<view class="row-image">
+						<image :src="item.imgurl?item.imgurl:'/static/icon/default2.png'"  mode="widthFix"></image>
+					</view>
+					<view class="row-info">
+						{{info.name || ''}}
+					</view>
+					<view class="row-price">
+						<text楼{{(info.price || 0).toFixed(2)}}</text>
+						<text>x{{info.goodsNum || 1}}</text>
+					</view>
 				</view>
-				<view class="row-info">
-					涓仈鑹剧瀹介娇 閫傜敤闆锋矁/涓仈/涔呬繚鐢�
-				</view>
-				<view class="row-price">
-					<text>楼499.00</text>
-					<text>x1</text>
-				</view>
-			</view>
+			</template>
 		</view>
 		<view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 108rpx);"></view>
-		<view class="button">纭鏍搁攢</view>
+		<view class="button" @click="confirm" v-if="info.orderStatus==1 && info.receiveType ==1">纭鏍搁攢</view>
+		
+		<u-popup :show="show" 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="show = false; ">鎴戝啀鎯虫兂</view>
+					<view class="tc-btn-item" style="color: #004096;" @click="confirmDo">纭鏍搁攢</view>
+				</view>
+			</view>
+		</u-popup>
+		<u-popup :show="show1" 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="jumpBack ">杩斿洖</view>
+					<view class="tc-btn-item" style="color: #004096;" @click="jumpWriteoff()">缁х画鏍搁攢</view>
+				</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
 <script>
+	import QRCode from 'qrcode';
+	import { mapState } from 'vuex'
 	export default {
+		computed: {
+			...mapState(['navHeight', 'statusbarHeight','shopInfo', 'shopToken'])
+		},
 		data() {
 			return {
-				
+				show:false,
+				show1:false,
+				shop:{},
+				id:null,
+				info:{}
 			};
+		},
+		onShow() {
+			this.show1 =false
+			this.show =false
+			this.info={}
+			this.shop  ={}
+			this.checkShopLogin()
+			this.shop = this.shopInfo || {} 
+			this.getShopDetail()
+		},
+		onLoad(options) {
+			this.id = options.id
+		},
+		methods:{
+			async confirmDo(){
+				this.show = !this.show
+				var that =this
+				var that =this
+				let res = await that.$u.api.writeOffOrder({ orderId: this.info.orderId  });
+				if (res.code === 200 ) { 
+					this.info.orderStatus = 3
+					this.show = false
+					this.show1 = true
+					uni.$emit('updateOrder',{info:this.info,delete:0})
+				}else{
+				}  
+			},
+			jumpWriteoff(){
+				uni.navigateTo({
+					url: '/pagesA/pages/write-off/write-off'
+				})
+			},
+			jumpBack(){
+				uni.navigateBack({delta:1})
+			},
+			confirm(){
+				this.show = !this.show
+			},
+			async  getShopDetail(){
+				var that =this 
+				let res = await that.$u.api.shopOrderDetail({orderId:this.id,tokenType:1  })
+				if (res.code === 200) { 
+					this.info = res.data 
+				} 
+			},
+			checkShopLogin(){
+				var that =this
+				if( this.shopInfo ==null || this.shopInfo.id==null ||  this.shopToken==null || this.shopToken==''){
+					uni.navigateTo({
+						url: '/pages/login/login'
+					})
+				} 
+			},
 		}
 	}
 </script>
@@ -71,6 +171,24 @@
 			font-weight: 600;
 			font-size: 32rpx;
 			color: #111111;
+			.status{
+				padding: 0 6rpx;
+				height: 40rpx;
+				line-height: 40rpx;
+				border-radius: 8rpx;
+				font-weight: 400;
+				font-size: 22rpx;
+				color: #FFFFFF;
+				margin-right: 16rpx;
+			}
+			.status-a {
+				background: #00B775; 
+				border: 1rpx solid #00B775;
+			}
+			.status-b {
+				background: #666666;
+				border: 1rpx solid #004096;
+			}
 		}
 		.item {
 			width: 100%;
diff --git a/mini-program/pagesA/pages/write-off/write-off.vue b/mini-program/pagesA/pages/write-off/write-off.vue
index 0314a76..21fc787 100644
--- a/mini-program/pagesA/pages/write-off/write-off.vue
+++ b/mini-program/pagesA/pages/write-off/write-off.vue
@@ -2,22 +2,122 @@
 	<view class="box">
 		<view class="title">杈撳叆鑷彁鐮�</view>
 		<view class="input">
-			<input type="number" placeholder="璇疯緭鍏�6浣嶈嚜鎻愮爜" />
+			<input type="number" v-model="code" placeholder="璇疯緭鍏�6浣嶈嚜鎻愮爜" />
 		</view>
-		<view class="btn">纭</view>
-		<view class="footer">
-			<image src="/pagesA/images/ic_saoma@2x.png" mode="widthFix"></image>
+		<view class="btn" v-if="!loading" @click="confirmDo">纭</view>
+		<view class="btn1" v-if="loading" >姝e湪鏌ヨ</view>
+		<view class="footer" @click="scanCodeDo">
+			<image src="/pagesA/static/ic_saoma@2x.png" mode="widthFix"></image>
 			<text>鎵爜鏍搁攢</text>
 		</view>
+		<u-popup :show="show1" round="15" :safeAreaInsetBottom="false" mode="center">
+			<view class="tc">
+				<view class="tc-contemt">
+					<view class="tc-contemt-title">璁㈠崟鏌ヨ缁撴灉</view>
+					<view class="tc-contemt-nr">
+						璁㈠崟銆恵{info.code}}銆戜笉婊¤冻鏍搁攢鏉′欢锛�
+					</view>
+				</view>
+				<view class="tc-btn">
+					<view class="tc-btn-item" @click="show1=false ">纭</view>
+				</view>
+			</view>
+		</u-popup>
 	</view>
 </template>
 
 <script>
+	import QRCode from 'qrcode';
+	import { mapState } from 'vuex'
 	export default {
+		computed: {
+			...mapState(['navHeight', 'statusbarHeight','shopInfo', 'shopToken'])
+		},
 		data() {
 			return {
-				
+				code:null,
+				show1:false,
+				loading:false,
+				id:null,
+				info:{}
 			};
+		},
+		onShow() {
+			this.loading =false
+			this.show1 =false
+			this.info={}
+			this.code =''
+			this.checkShopLogin()
+		},
+		onLoad(options) {
+		},
+		methods:{
+			scanCodeDo(){
+				this.code = ''
+				var that =this
+				uni.scanCode({
+				    success: function (res) {
+				        console.log('鏉$爜绫诲瀷锛�' + res.scanType);
+				        console.log('鏉$爜鍐呭锛�' + res.result);
+				        // 澶勭悊鎵弿缁撴灉
+						that.code = res.result
+						that.confirmDo()
+				    },
+				    fail: function (err) {
+						uni.showToast({
+							title:'鎵爜澶辫触',
+							icon:'error'
+						})
+				    }
+				});
+			},
+			async confirmDo(){
+				if(this.code ){
+					this.getShopDetail()
+				}
+			},
+			jumpWriteoffA(){
+				if(this.info && this.info.orderId){
+					uni.navigateTo({
+						url: '/pagesA/pages/write-off-a/write-off-a?id='+this.info.orderId
+					})
+				}
+			},
+			jumpBack(){
+				uni.navigateBack({delta:1})
+			}, 
+			 getShopDetail(){
+				if(this.loading){
+					return
+				}
+				this.loading =true
+				var that =this 
+				that.$u.api.getOrderDetailByCode({exchangeCode:this.code,tokenType:1  })
+				.then(res=>{
+					console.log(res)
+					if (res.code === 200) {
+						that.info = res.data 
+						if(res.data.orderStatus == 1 && res.data.receiveType ==1){
+							that.jumpWriteoffA()
+						}else{
+							this.show1 = !this.show1
+							this.loading =false
+						}
+					} 
+				}).catch(e=>{
+					this.loading =false
+				}).finally(e=>{
+					// this.loading =false
+				})
+			},
+			checkShopLogin(){
+				var that =this
+				if( this.shopInfo ==null || this.shopInfo.id==null ||  this.shopToken==null || this.shopToken==''){
+					uni.navigateTo({
+						url: '/pages/login/login'
+					})
+				} 
+			},
 		}
 	}
 </script>
@@ -55,6 +155,18 @@
 				text-align: center;
 			}
 		}
+		.btn1{
+			width: 630rpx;
+			height: 88rpx;
+			line-height: 88rpx;
+			text-align: center;
+			background: #666666;
+			border-radius: 44rpx;
+			font-weight: 600;
+			font-size: 32rpx;
+			color: #FFFFFF;
+			margin-top: 40rpx;
+		}
 		.btn {
 			width: 630rpx;
 			height: 88rpx;
diff --git a/mini-program/static/icon/default2.png b/mini-program/static/icon/default2.png
index 5953111..d15c9b9 100644
--- a/mini-program/static/icon/default2.png
+++ b/mini-program/static/icon/default2.png
Binary files differ
diff --git a/mini-program/unpackage/dist/dev/mp-weixin/common/main.js b/mini-program/unpackage/dist/dev/mp-weixin/common/main.js
index 87a53df..56f2c73 100644
--- a/mini-program/unpackage/dist/dev/mp-weixin/common/main.js
+++ b/mini-program/unpackage/dist/dev/mp-weixin/common/main.js
@@ -1,9 +1,9 @@
 (global["webpackJsonp"] = global["webpackJsonp"] || []).push([["common/main"],{
 
 /***/ 0:
-/*!*************************************************!*\
-  !*** D:/璞嗙背/dingyuannongji/mini-program/main.js ***!
-  \*************************************************/
+/*!****************************************************************!*\
+  !*** D:/code/idea2023/git/dingyuannongji/mini-program/main.js ***!
+  \****************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -50,9 +50,9 @@
 /***/ }),
 
 /***/ 27:
-/*!*************************************************!*\
-  !*** D:/璞嗙背/dingyuannongji/mini-program/App.vue ***!
-  \*************************************************/
+/*!****************************************************************!*\
+  !*** D:/code/idea2023/git/dingyuannongji/mini-program/App.vue ***!
+  \****************************************************************/
 /*! no static exports found */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
@@ -61,7 +61,7 @@
 /* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ 28);
 /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
 /* harmony import */ var _App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./App.vue?vue&type=style&index=0&lang=scss& */ 35);
-/* harmony import */ var _HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 37);
+/* harmony import */ var _soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 37);
 var render, staticRenderFns, recyclableRender, components
 var renderjs
 
@@ -71,7 +71,7 @@
 
 /* normalize component */
 
-var component = Object(_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
+var component = Object(_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
   _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
   render,
   staticRenderFns,
@@ -90,25 +90,25 @@
 /***/ }),
 
 /***/ 28:
-/*!**************************************************************************!*\
-  !*** D:/璞嗙背/dingyuannongji/mini-program/App.vue?vue&type=script&lang=js& ***!
-  \**************************************************************************/
+/*!*****************************************************************************************!*\
+  !*** D:/code/idea2023/git/dingyuannongji/mini-program/App.vue?vue&type=script&lang=js& ***!
+  \*****************************************************************************************/
 /*! no static exports found */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=script&lang=js& */ 29);
-/* harmony import */ var _HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
-/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
- /* harmony default export */ __webpack_exports__["default"] = (_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); 
+/* harmony import */ var _soft_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=script&lang=js& */ 29);
+/* harmony import */ var _soft_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_soft_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _soft_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _soft_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_soft_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); 
 
 /***/ }),
 
 /***/ 29:
-/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/璞嗙背/dingyuannongji/mini-program/App.vue?vue&type=script&lang=js& ***!
-  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/code/idea2023/git/dingyuannongji/mini-program/App.vue?vue&type=script&lang=js& ***!
+  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -319,25 +319,25 @@
 /***/ }),
 
 /***/ 35:
-/*!***********************************************************************************!*\
-  !*** D:/璞嗙背/dingyuannongji/mini-program/App.vue?vue&type=style&index=0&lang=scss& ***!
-  \***********************************************************************************/
+/*!**************************************************************************************************!*\
+  !*** D:/code/idea2023/git/dingyuannongji/mini-program/App.vue?vue&type=style&index=0&lang=scss& ***!
+  \**************************************************************************************************/
 /*! no static exports found */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
 __webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../鍔炲叕/HBuilderX.3.8.12.20230817/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=style&index=0&lang=scss& */ 36);
-/* harmony import */ var _HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
-/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
- /* harmony default export */ __webpack_exports__["default"] = (_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_3_8_12_20230817_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); 
+/* harmony import */ var _soft_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_soft_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_soft_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--8-oneOf-1-3!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../soft/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=style&index=0&lang=scss& */ 36);
+/* harmony import */ var _soft_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_soft_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_soft_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_soft_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_soft_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_soft_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _soft_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_soft_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_soft_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _soft_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_soft_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_soft_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_soft_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_soft_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_soft_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_soft_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_App_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a); 
 
 /***/ }),
 
 /***/ 36:
-/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/璞嗙背/dingyuannongji/mini-program/App.vue?vue&type=style&index=0&lang=scss& ***!
-  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/code/idea2023/git/dingyuannongji/mini-program/App.vue?vue&type=style&index=0&lang=scss& ***!
+  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
diff --git a/mini-program/utils/http.api.js b/mini-program/utils/http.api.js
index 553aa51..db7a0ea 100644
--- a/mini-program/utils/http.api.js
+++ b/mini-program/utils/http.api.js
@@ -54,8 +54,15 @@
 	let getPlatformAboutUs = (params = {}) => vm.$u.http.get('web/account/getPlatformAboutUs', { params });	// 鑾峰彇绯荤粺閰嶇疆
 	let findIntegralRecordPage = (data = {}) => vm.$u.http.post('web/integral/findIntegralRecordPage', {...data,tokenType:1});	//缁忛攢鍟� - 鑾峰彇缁忛攢鍟嗙殑绉垎璁板綍
 	let myCustomer = (data = {}) => vm.$u.http.post('web/shop/myCustomer', {...data,tokenType:1});	//缁忛攢鍟� - 鎴戠殑瀹㈡埛淇℃伅 
-	let shopOrderDetail = (params = {}) => vm.$u.http.get('web/orders/shopOrderDetail', { params });	//缁忛攢鍟� - 璁㈠崟璇︽儏 
-	
+	let shopOrderDetail = (params = {}) => vm.$u.http.get('web/orders/shopOrderDetail', { params });	//缁忛攢鍟� - 璁㈠崟璇︽儏
+	let orderDetail = (params = {}) => vm.$u.http.get('web/orders/orderDetail', { params });	//瀹㈡埛 - 璁㈠崟璇︽儏
+	let delOrder = (data = {}) => vm.$u.http.post('web/orders/delOrder',data );	//璁㈠崟鍒犻櫎
+	let cancelOrder = (data = {}) => vm.$u.http.post('web/orders/cancelOrder', data );	//鍙栨秷璁㈠崟
+	let affirmOrder = (data = {}) => vm.$u.http.post('web/orders/affirmOrder',data );	//纭鏀惰揣
+	let writeOffOrder = (data = {}) => vm.$u.http.post('web/orders/writeOffOrder',{...data,tokenType:1} );	//璁㈠崟鏍搁攢
+	let getOrderDetailByCode = (data = {}) => vm.$u.http.post('web/orders/getOrderDetailByCode',{...data,tokenType:1});	//缁忛攢鍟� - 璁㈠崟璇︽儏
+
+
 	vm.$u.api = {
 		commentApply,
 		findActivityReplyCommentDTOPage,
@@ -105,7 +112,13 @@
 		getPlatformAboutUs,
 		findIntegralRecordPage,
 		myCustomer,
-		shopOrderDetail
+		shopOrderDetail,
+		orderDetail,
+		delOrder,
+		cancelOrder,
+		affirmOrder,
+		writeOffOrder,
+		getOrderDetailByCode
 	};
 }
 
diff --git a/mini-program/utils/http.interceptor.js b/mini-program/utils/http.interceptor.js
index 08fb1ea..f8b0134 100644
--- a/mini-program/utils/http.interceptor.js
+++ b/mini-program/utils/http.interceptor.js
@@ -6,6 +6,7 @@
 	
 	// 璇锋眰鎷︽埅鍣�
 	uni.$u.http.interceptors.request.use((config) => {
+		console.log(config)
 		if(config.data && config.data.tokenType===1){
 			config.header['tokenType'] = config.data.tokenType;
 			const HeadShoptoken = vm.$store.state.shopToken 
diff --git a/server/dmmall_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java b/server/dmmall_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
index ae4e6df..66e0bd4 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -66,7 +66,7 @@
     public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
         ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
         shiroFilterFactoryBean.setSecurityManager(securityManager);
-        Map<String, String> map = new HashMap<>();
+        Map<String, String> map = new LinkedHashMap<>();
         // 璺緞鎷︽埅閰嶇疆
         map.put("/system/login", "anon");
         map.put("/system/logout", "anon");
diff --git a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
index 3082db6..016c782 100644
--- a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
+++ b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
@@ -156,7 +156,6 @@
         }
     }
 
-
     public Integer getTokenId(String token){
         try {
             Integer lastIndex = token.lastIndexOf("_")+1;
diff --git a/server/dmmall_web/src/main/java/com/doumee/InterfaceApplication.java b/server/dmmall_web/src/main/java/com/doumee/InterfaceApplication.java
index d29475d..869599a 100644
--- a/server/dmmall_web/src/main/java/com/doumee/InterfaceApplication.java
+++ b/server/dmmall_web/src/main/java/com/doumee/InterfaceApplication.java
@@ -17,7 +17,6 @@
 @EnableAsync
 @MapperScan("com.doumee.dao")
 public class InterfaceApplication {
-
     public static void main(String[] args) {
         ApplicationContext context = SpringApplication.run(InterfaceApplication.class);
         context.getEnvironment();
diff --git a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java b/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
deleted file mode 100644
index f978edf..0000000
--- a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.alibaba.fastjson.JSON;
-import com.doumee.core.model.ApiResponse;
-import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
-import org.springframework.http.HttpStatus;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-public class ShiroAuthFilter extends FormAuthenticationFilter {
-
-    public ShiroAuthFilter() {
-        super();
-    }
-
-    @Override
-    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
-        HttpServletResponse servletResponse = (HttpServletResponse) response;
-        servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
-        servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
-        return Boolean.FALSE;
-    }
-}
diff --git a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroCache.java b/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroCache.java
deleted file mode 100644
index 36cd7af..0000000
--- a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroCache.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.service.proxy.CacheProxy;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.cache.Cache;
-import org.apache.shiro.cache.CacheException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * Shiro缂撳瓨
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Scope(value = "prototype")
-@Slf4j
-@Component
-public class ShiroCache implements Cache<Object, Serializable> {
-
-    private String keyPrefix = "";
-
-    @Autowired
-    private CacheProxy<Object, Serializable> cacheProxy;
-
-    public ShiroCache () {
-        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
-    }
-
-    public ShiroCache(String keyPrefix) {
-        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
-        this.keyPrefix = keyPrefix;
-    }
-
-    @Override
-    public Serializable get(Object key) throws CacheException {
-        if (key == null) {
-            return null;
-        }
-        return cacheProxy.get(getKey(key));
-    }
-
-    @Override
-    public Serializable put(Object key, Serializable value) throws CacheException {
-        if (key == null) {
-            return null;
-        }
-        cacheProxy.put(getKey(key), value);
-        return value;
-    }
-
-    public Serializable put(Object key, Serializable value, int timeout) throws CacheException {
-        if (key == null) {
-            return null;
-        }
-        cacheProxy.put(getKey(key), value, timeout);
-        return value;
-    }
-
-    @Override
-    public void clear() throws CacheException {
-        Set<Object> keys = this.keys();
-        cacheProxy.remove(keys);
-    }
-
-    @Override
-    public int size() {
-        return this.keys().size();
-    }
-
-    @Override
-    public Set<Object> keys() {
-        Set<Object> keys = cacheProxy.keys(keyPrefix + "*");
-        if (CollectionUtils.isEmpty(keys)) {
-            return Collections.emptySet();
-        }
-        return keys;
-    }
-
-    @Override
-    public Collection<Serializable> values() {
-        Collection<Serializable> values = new ArrayList<>();
-        Set<Object> keys = this.keys();
-        if (CollectionUtils.isEmpty(keys)) {
-            return values;
-        }
-        for (Object k : keys) {
-            values.add(cacheProxy.get(k));
-        }
-        return values;
-    }
-
-    @Override
-    public Serializable remove(Object key) throws CacheException {
-        if (key == null) {
-            return null;
-        }
-        Serializable value = this.get(getKey(key));
-        cacheProxy.remove(getKey(key));
-        return value;
-    }
-
-    private Object getKey (Object key) {
-        return (key instanceof String ? (this.keyPrefix + key) : key);
-    }
-}
diff --git a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java b/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
deleted file mode 100644
index fedcb98..0000000
--- a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.cache.Cache;
-import org.apache.shiro.cache.CacheException;
-import org.apache.shiro.cache.CacheManager;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * 鑷畾涔塖hiro CacheManager
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Slf4j
-@Component
-public class ShiroCacheManager implements CacheManager {
-
-    private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap();
-
-    private static ApplicationContext applicationContext;
-
-    @Override
-    public <K, V> Cache<K, V> getCache(String name) throws CacheException {
-        log.debug("get cache, name=" + name);
-        Cache cache = this.caches.get(name);
-        if (cache == null) {
-            cache = applicationContext.getBean(ShiroCache.class, "shiro:cache:");
-            this.caches.put(name, cache);
-        }
-        return cache;
-    }
-
-    @Autowired
-    public void setApplicationContext (ApplicationContext applicationContext) {
-        if (ShiroCacheManager.applicationContext == null) {
-            ShiroCacheManager.applicationContext = applicationContext;
-        }
-    }
-}
diff --git a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroConfig.java b/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroConfig.java
deleted file mode 100644
index 9b3e514..0000000
--- a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroConfig.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.doumee.config.shiro;
-
-import org.apache.shiro.mgt.SecurityManager;
-import org.apache.shiro.session.mgt.SessionManager;
-import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
-import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
-import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
-import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import javax.servlet.Filter;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * Shiro閰嶇疆
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Configuration
-public class ShiroConfig {
-
-    @Value("${cache.session.expire}")
-    private int sessionExpireTime;
-
-    @Autowired
-    private ShiroCredentialsMatcher shiroCredentialsMatcher;
-
-    @Autowired
-    private ShiroSessionDAO shiroSessionDAO;
-
-    @Autowired
-    private ShiroCacheManager shiroCacheManager;
-
-    @Autowired
-    private ShiroRealm shiroRealm;
-
-    @Bean
-    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
-        DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
-        autoProxyCreator.setProxyTargetClass(true);
-        return autoProxyCreator;
-    }
-
-    @Bean
-    public SessionManager sessionManager() {
-        ShiroSessionManager sessionManager = new ShiroSessionManager();
-        sessionManager.setSessionDAO(shiroSessionDAO);
-        return sessionManager;
-    }
-
-    @Bean
-    public SecurityManager securityManager() {
-        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
-        securityManager.setRealm(shiroRealm);
-        securityManager.setSessionManager(this.sessionManager());
-        securityManager.setCacheManager(shiroCacheManager);
-        return securityManager;
-    }
-
-    @Bean
-    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
-        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
-        shiroFilterFactoryBean.setSecurityManager(securityManager);
-        Map<String, String> map = new HashMap<>();
-        // 璺緞鎷︽埅閰嶇疆
-        map.put("/system/login", "anon");
-        map.put("/system/logout", "anon");
-        map.put("/common/captcha", "anon");
-        map.put("/web/**", "anon");
-        //鏂囦欢涓婁紶鍙栨秷鎷︽埅
-        map.put("/public/**", "anon");
-        // - 鏀捐swagger
-        map.put("/doc.html", "anon");
-        map.put("/webjars/**", "anon");
-        map.put("/swagger-resources/**", "anon");
-        map.put("/v2/api-docs/**", "anon");
-        // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
-        map.put("/**", "authc");
-        shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
-        // 娣诲姞璁よ瘉杩囨护鍣�
-        Map<String, Filter> filters = new LinkedHashMap<>();
-        filters.put("authc", new ShiroAuthFilter());
-        shiroFilterFactoryBean.setFilters(filters);
-        return shiroFilterFactoryBean;
-    }
-
-    @Bean
-    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
-        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
-        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
-        return authorizationAttributeSourceAdvisor;
-    }
-
-    @Bean
-    public ShiroSessionDAO getShiroSessionDAO () {
-        shiroSessionDAO.setExpireTime(sessionExpireTime);
-        return shiroSessionDAO;
-    }
-
-    @Bean
-    public ShiroRealm getShiroRealm () {
-        shiroRealm.setCredentialsMatcher(shiroCredentialsMatcher);
-        return shiroRealm;
-    }
-}
diff --git a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java b/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
deleted file mode 100644
index 75c5280..0000000
--- a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.utils.Utils;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.system.SystemUserService;
-import org.apache.shiro.authc.AuthenticationInfo;
-import org.apache.shiro.authc.AuthenticationToken;
-import org.apache.shiro.authc.UsernamePasswordToken;
-import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-
-/**
- * Shiro瀵嗙爜姣斿澶勭悊
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Component
-public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
-
-    @Lazy
-    @Autowired
-    private SystemUserService systemUserService;
-
-    @Override
-    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
-        UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
-        SystemUser queryUserDto = new SystemUser();
-        queryUserDto.setUsername(usernamePasswordToken.getUsername());
-        queryUserDto.setDeleted(Boolean.FALSE);
-        SystemUser systemUser = systemUserService.findOne(queryUserDto);
-        if (systemUser == null) {
-            return Boolean.FALSE;
-        }
-        // 鍔犲瘑瀵嗙爜
-        String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
-        // 姣旇緝瀵嗙爜
-        return this.equals(pwd, systemUser.getPassword());
-    }
-}
diff --git a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroRealm.java
deleted file mode 100644
index 690addf..0000000
--- a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroRealm.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.model.LoginUserInfo;
-import com.doumee.dao.system.model.SystemPermission;
-import com.doumee.dao.system.model.SystemRole;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.system.SystemPermissionService;
-import com.doumee.service.system.SystemRoleService;
-import com.doumee.service.system.SystemUserService;
-import org.apache.shiro.authc.AuthenticationException;
-import org.apache.shiro.authc.AuthenticationInfo;
-import org.apache.shiro.authc.AuthenticationToken;
-import org.apache.shiro.authc.SimpleAuthenticationInfo;
-import org.apache.shiro.authz.AuthorizationInfo;
-import org.apache.shiro.authz.SimpleAuthorizationInfo;
-import org.apache.shiro.realm.AuthorizingRealm;
-import org.apache.shiro.subject.PrincipalCollection;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Component
-public class ShiroRealm extends AuthorizingRealm {
-
-    @Lazy
-    @Autowired
-    private SystemUserService systemUserService;
-
-    @Lazy
-    @Autowired
-    private SystemRoleService systemRoleService;
-
-    @Lazy
-    @Autowired
-    private SystemPermissionService systemPermissionService;
-
-    /**
-     * 鏉冮檺澶勭悊
-     * @author Eva.Caesar Liu
-     * @date 2023/03/21 14:49
-     */
-    @Override
-    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
-        LoginUserInfo loginUserInfo = (LoginUserInfo)principalCollection.getPrimaryPrincipal();
-        // 璁剧疆鐢ㄦ埛瑙掕壊鍜屾潈闄�
-        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
-        authorizationInfo.addRoles(loginUserInfo.getRoles());
-        authorizationInfo.addStringPermissions(loginUserInfo.getPermissions());
-        return authorizationInfo;
-    }
-
-    /**
-     * 璁よ瘉澶勭悊
-     * @author Eva.Caesar Liu
-     * @date 2023/03/21 14:49
-     */
-    @Override
-    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
-        // 鑾峰彇鐢ㄦ埛鍚�
-        String username = authenticationToken.getPrincipal().toString();
-        // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
-        SystemUser queryDto = new SystemUser();
-        queryDto.setUsername(username);
-        queryDto.setDeleted(Boolean.FALSE);
-        SystemUser user = systemUserService.findOne(queryDto);
-        if (user == null) {
-            return null;
-        }
-        // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
-        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
-        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
-        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
-        // 楠岃瘉鐢ㄦ埛
-        return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
-    }
-
-}
diff --git a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java b/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
deleted file mode 100644
index 2cc6a11..0000000
--- a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.session.Session;
-import org.apache.shiro.session.UnknownSessionException;
-import org.apache.shiro.session.mgt.SimpleSession;
-import org.apache.shiro.session.mgt.eis.SessionDAO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Data
-@Slf4j
-@Component
-public class ShiroSessionDAO implements SessionDAO {
-
-    private static final String KEY_PREFIX = "shiro:session:";
-
-    @Autowired
-    private ShiroCache shiroCache;
-
-    private int expireTime = 1800;
-
-    @Autowired
-    private ShiroTokenManager shiroTokenManager;
-
-    @Override
-    public Serializable create(Session session) {
-        if (session == null) {
-            log.error("session is null");
-            throw new UnknownSessionException("session is null");
-        }
-        Serializable sessionId = shiroTokenManager.build();
-        ((SimpleSession)session).setId(sessionId);
-        this.saveSession(session);
-        return sessionId;
-    }
-
-    @Override
-    public Session readSession(Serializable sessionId) throws UnknownSessionException{
-        if (sessionId == null) {
-            log.warn("session id is null");
-            return null;
-        }
-        if (sessionId instanceof String) {
-            // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
-            shiroTokenManager.check((String) sessionId);
-        }
-        log.debug("read session from cache");
-        Session session = getSessionFromCache(sessionId);
-        if (session == null) {
-            throw new UnknownSessionException("There is no session with id [" + sessionId + "]");
-        }
-        return session;
-    }
-
-    @Override
-    public void update(Session session) throws UnknownSessionException {
-        this.saveSession(session);
-    }
-
-    @Override
-    public void delete(Session session) {
-        if (session != null && session.getId() != null) {
-            shiroCache.remove(KEY_PREFIX + session.getId());
-        }
-    }
-
-    @Override
-    public Collection<Session> getActiveSessions() {
-        Set<Session> sessions = new HashSet<>();
-        Set<Object> keys = shiroCache.keys();
-        if (keys != null && keys.size() > 0) {
-            Iterator iter = keys.iterator();
-            while(iter.hasNext()) {
-                sessions.add((Session) shiroCache.get(iter.next()));
-            }
-        }
-        return sessions;
-    }
-
-    private void saveSession(Session session) throws UnknownSessionException {
-        if (session == null || session.getId() == null) {
-            log.error("session or session id is null");
-            throw new UnknownSessionException("session or session id is null");
-        }
-        shiroCache.put(KEY_PREFIX + session.getId(), (SimpleSession)session, expireTime);
-    }
-
-    private Session getSessionFromCache (Serializable sessionId) {
-        Serializable object = shiroCache.get(KEY_PREFIX + sessionId);
-        Session session = null;
-        if (object != null) {
-            session = (Session)shiroCache.get(KEY_PREFIX + sessionId);
-        }
-        return session;
-    }
-
-    public void setExpireTime (int expireTime) {
-        this.expireTime = expireTime;
-    }
-}
diff --git a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java b/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
deleted file mode 100644
index ef159a7..0000000
--- a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.session.Session;
-import org.apache.shiro.session.mgt.DefaultSessionManager;
-import org.apache.shiro.session.mgt.SessionContext;
-import org.apache.shiro.session.mgt.SessionKey;
-import org.apache.shiro.web.servlet.Cookie;
-import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
-import org.apache.shiro.web.servlet.SimpleCookie;
-import org.apache.shiro.web.session.mgt.WebSessionManager;
-import org.apache.shiro.web.util.WebUtils;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.Serializable;
-
-/**
- * 鑷畾涔変細璇濈鐞嗗櫒
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Slf4j
-public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
-
-    private static final String AUTH_TOKEN = "eva-auth-token";
-
-    @Override
-    protected void onStart(Session session, SessionContext context) {
-        super.onStart(session, context);
-        if (!WebUtils.isHttp(context)) {
-            log.debug("SessionContext argument is not Http compatible or does not have an Http request/response pair. No session ID cookie will be set.");
-            return;
-        }
-        HttpServletRequest request = WebUtils.getHttpRequest(context);
-        HttpServletResponse response = WebUtils.getHttpResponse(context);
-        Serializable sessionId = session.getId();
-        this.storeSessionId(sessionId, request, response);
-        request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);
-        request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);
-    }
-
-    @Override
-    public Serializable getSessionId(SessionKey key) {
-        Serializable sessionId = super.getSessionId(key);
-        if (sessionId == null && WebUtils.isWeb(key)) {
-            ServletRequest servletRequest = WebUtils.getRequest(key);
-            if (!(servletRequest instanceof HttpServletRequest)) {
-                log.trace("Can not get sessionId from header, the request is not HttpServletRequest");
-                return null;
-            }
-            HttpServletRequest request = (HttpServletRequest) servletRequest;
-            // 浠巆ookie涓幏鍙栬璇�
-            javax.servlet.http.Cookie[] cookies = request.getCookies();
-            if (cookies != null) {
-                for (javax.servlet.http.Cookie cookie : cookies) {
-                    if (AUTH_TOKEN.equals(cookie.getName())) {
-                        return cookie.getValue();
-                    }
-                }
-            }
-            // 浠巋eader涓幏鍙栬璇�
-            return request.getHeader(AUTH_TOKEN);
-        }
-        return sessionId;
-    }
-
-    @Override
-    public boolean isServletContainerSessions() {
-        return false;
-    }
-
-    private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
-        if (currentId == null) {
-            String msg = "sessionId cannot be null when persisting for subsequent requests.";
-            throw new IllegalArgumentException(msg);
-        }
-        Cookie cookie = new SimpleCookie(AUTH_TOKEN);
-        cookie.setHttpOnly(false);
-        String idString = currentId.toString();
-        cookie.setValue(idString);
-        cookie.saveTo(request, response);
-        log.trace("Set session ID cookie for session with id {}", idString);
-    }
-}
diff --git a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java b/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
deleted file mode 100644
index 1ba1679..0000000
--- a/server/dmmall_web/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.exception.UnSafeSessionException;
-import org.springframework.stereotype.Component;
-
-import java.util.UUID;
-
-/**
- * 榛樿Token绠$悊鍣�
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Component
-public class ShiroTokenManager {
-
-    String build() {
-        return UUID.randomUUID().toString();
-    }
-
-    void check(String token) throws UnSafeSessionException {
-        if (token == null || token.length() != 36) {
-            throw new UnSafeSessionException();
-        }
-    }
-}

--
Gitblit v1.9.3