Browse Source

feat:订单模块对接接口

storeBelieveInLight 1 year ago
parent
commit
7e250b55f0
32 changed files with 2759 additions and 1405 deletions
  1. 145 28
      commit/order.js
  2. 10 7
      commit/request.js
  3. 29 29
      emChat/emChatContainer/emInputBarContainer/recordAudioContainer/index.vue
  4. 2 2
      manifest.json
  5. 1 0
      package.json
  6. 33 26
      pages.json
  7. 133 83
      pages/ordermanagement/index.vue
  8. 145 100
      shop/afterSalesManagement/afterCardDetail.vue
  9. 38 38
      shop/afterSalesManagement/afterCardListInfo.vue
  10. 303 25
      shop/afterSalesManagement/afterSalesDetail.vue
  11. 7 1
      shop/afterSalesManagement/components/search/search.vue
  12. 6 6
      shop/afterSalesManagement/components/tablist.vue
  13. 153 25
      shop/afterSalesManagement/index.vue
  14. 134 127
      shop/commodity/components/changeDetailInfo/ItemsInsidePackage.vue
  15. 1 1
      shop/commodity/components/changeDetailInfo/changeLogisticsInformation.vue
  16. 32 6
      shop/commodity/components/fillLogisticsInfo.vue
  17. 24 17
      shop/commodity/components/orderDetail/logisticInfocardJianjie.vue
  18. 247 103
      shop/commodity/components/orderDetail/orderCardDetailInfo.vue
  19. 18 14
      shop/commodity/components/orderDetailSendCard.vue
  20. 440 415
      shop/commodity/components/orderList/orderListCard.vue
  21. 1 1
      shop/commodity/components/popupSelect.vue
  22. 34 17
      shop/commodity/components/popupSelectItem/popupSelectItem.vue
  23. 129 118
      shop/commodity/components/shipmentGoodsCard.vue
  24. 139 36
      shop/commodity/details.vue
  25. 95 60
      shop/commodity/logisticsInformationDetail.vue
  26. 158 85
      shop/commodity/order.vue
  27. 165 6
      shop/commodity/orderUtil.js
  28. 135 27
      shop/commodity/sendoutgoods.vue
  29. 2 2
      shop/components/tabs/tabs/tabs.vue
  30. BIN
      static/images/new_ui/yiquxiao.png
  31. BIN
      static/images/new_ui/yishenqinftuikuan.png
  32. BIN
      static/images/new_ui/yituikuan.png

+ 145 - 28
commit/order.js

@@ -1,37 +1,39 @@
1
-import { 
2
- myRequest 
1
+import {
2
+    myRequest
3
 } from './request.js'
3
 } from './request.js'
4
 // 正向订单状态数
4
 // 正向订单状态数
5
-export function getOrderStstusAmount(data) { 
6
- return myRequest({ 
7
-  url: 'order_service/orderService/getOrderStstusAmount', 
8
-  method: 'post', 
9
-  data 
10
- }) 
11
-} 
5
+export function getOrderStstusAmount(data) {
6
+    return myRequest({
7
+        url: 'order_service/orderService/getOrderStstusAmount',
8
+        method: 'post',
9
+        data
10
+    })
11
+}
12
 // 正向订单列表
12
 // 正向订单列表
13
-export function orderList(data) { 
14
- return myRequest({ 
15
-  url: 'order_service/orderService/orderList', 
16
-  method: 'post', 
17
-  data 
18
- }) 
19
-} 
13
+export function orderList(data) {
14
+    return myRequest({
15
+        url: 'order_service/orderService/orderList',
16
+        method: 'post',
17
+        data
18
+    })
19
+}
20
 // 订单详情页面
20
 // 订单详情页面
21
-export function getOrderDetails(data) { 
22
- return myRequest({ 
23
-  url: 'order_service/orderService/getOrderDetails', 
24
-  method: 'post', 
25
-  data 
26
- }) 
27
-} 
28
-const pre = "api/"
21
+export function getOrderDetails(data) {
22
+    return myRequest({
23
+        url: 'order_service/orderService/getOrderDetails',
24
+        method: 'post',
25
+        data
26
+    })
27
+}
28
+const pre = ""
29
+const apiType = "php"
29
 // 订单状态数
30
 // 订单状态数
30
 export function getOrderStatusNumber(data) {
31
 export function getOrderStatusNumber(data) {
31
     return myRequest({
32
     return myRequest({
32
         url: `${pre}mer/store/order/chart`,
33
         url: `${pre}mer/store/order/chart`,
33
         method: 'GET',
34
         method: 'GET',
34
-         data
35
+        data,
36
+        apiType
35
     })
37
     })
36
 }
38
 }
37
 
39
 
@@ -40,15 +42,130 @@ export function getOrderList(data) {
40
     return myRequest({
42
     return myRequest({
41
         url: `${pre}mer/store/order/lst`,
43
         url: `${pre}mer/store/order/lst`,
42
         method: 'GET',
44
         method: 'GET',
43
-         data
45
+        data,
46
+        apiType
47
+    })
48
+}
49
+// 订单列表产品
50
+export function getOrderListProduct(order_sn) {
51
+    const data = {
52
+        order_sn: order_sn,
53
+        order_type: -1,
54
+        distribution_mode: -1,
55
+        keywords: order_sn,
56
+        status: "",
57
+        date: "",
58
+        page: 1,
59
+        limit: 20,
60
+        type: 1,
61
+        username: "",
62
+        pay_type: -1,
63
+        ylj_status: "",
64
+        paid: "",
65
+    }
66
+    return myRequest({
67
+        url: `${pre}mer/store/order/lst`,
68
+        method: 'GET',
69
+        data,
70
+        apiType
44
     })
71
     })
45
 }
72
 }
46
-
47
 // filtter
73
 // filtter
48
 export function getOrderListFiltter(data) {
74
 export function getOrderListFiltter(data) {
49
     return myRequest({
75
     return myRequest({
50
         url: `${pre}mer/store/order/filtter`,
76
         url: `${pre}mer/store/order/filtter`,
51
         method: 'GET',
77
         method: 'GET',
52
-         data
78
+        data,
79
+        apiType
80
+    })
81
+}
82
+
83
+/**
84
+ * @description 订单 -- 发货规则
85
+ */
86
+
87
+export function orderDeliveryRuleApi(id) {
88
+    return myRequest({
89
+        url: `${pre}mer/store/order/delivery/${id}/form`,
90
+        method: 'GET',
91
+        apiType
92
+    })
93
+}
94
+/**
95
+ * @description 订单 -- 发货
96
+ */
97
+
98
+export function orderDeliveryApi(id, data) {
99
+    return myRequest({
100
+        url: `${pre}/mer/store/order/delivery/${id}.html`,
101
+        method: 'POST',
102
+        data,
103
+        apiType
104
+    })
105
+}
106
+
107
+
108
+/**
109
+ * @description 订单 -- 详情
110
+ */
111
+
112
+export function orderDetailApi(id) {
113
+    return myRequest({
114
+        url: `${pre}mer/store/order/detail/${id}`,
115
+        method: 'GET',
116
+        apiType
117
+    })
118
+}
119
+/**
120
+ * @description 获取物流信息
121
+ */
122
+export function getExpress(id) {
123
+    return myRequest({
124
+        url: `${pre}mer/store/order/express/${id}`,
125
+        method: 'GET',
126
+        apiType
127
+    })
128
+}
129
+
130
+/**售后列表 */
131
+
132
+export function getAfterSaleList(data) {
133
+    return myRequest({
134
+        url: `${pre}mer/store/refundorder/lst`,
135
+        method: 'GET',
136
+        data,
137
+        apiType
138
+    })
139
+}
140
+/**
141
+ * @description 退款单获取物流信息
142
+ */
143
+export function refundorderExpressApi(id) {
144
+    return myRequest({
145
+        url: `${pre}mer/store/refundorder/express/${id}`,
146
+        method: 'GET',
147
+        apiType
148
+    })
149
+}
150
+/**
151
+ * @description 自提
152
+ */
153
+export function takeProductApi(id, data) {
154
+    return myRequest({
155
+        url: `${pre}mer/store/order/carry/${id}`,
156
+        method: 'GET',
157
+        data,
158
+        apiType
159
+    })
160
+}
161
+
162
+/**
163
+ * @description 退款订单 -- 详情
164
+ */
165
+export function refundorderDetailApi(id) {
166
+    return myRequest({
167
+        url: `${pre}mer/store/refundorder/detail/${id}`,
168
+        method: 'GET',
169
+        apiType
53
     })
170
     })
54
 }
171
 }

+ 10 - 7
commit/request.js

@@ -4,9 +4,8 @@ var baseURL = 'https://api.hxxfb.com/gateway/' // API访问的地址
4
 	  baseURL = 'https://api.hxxfb.com/gateway/';//测试环境
4
 	  baseURL = 'https://api.hxxfb.com/gateway/';//测试环境
5
  }else if(is==2){
5
  }else if(is==2){
6
 	 // baseURL = 'https://api.hebeiyhc.com/gateway/'; //生产环境
6
 	 // baseURL = 'https://api.hebeiyhc.com/gateway/'; //生产环境
7
-	 // baseURL = 'https://api.hebeiyhc.com/gateway/'; //生产环境
8
-	 baseURL = '/gateway/'; //生产环境
9
-	//  baseURL = '/gateway/'; //生产环境
7
+	 baseURL = 'https://api.hebeiyhc.com/gateway/'; //生产环境
8
+	
10
  }else{
9
  }else{
11
 	  baseURL = 'https://api.hxxfb.com/gateway/'; //预生产环境
10
 	  baseURL = 'https://api.hxxfb.com/gateway/'; //预生产环境
12
  }
11
  }
@@ -28,16 +27,20 @@ let bas = Base64.encode(jmi + "," + Fzitem)
28
  
27
  
29
 export const myRequest = (options) => {
28
 export const myRequest = (options) => {
30
 	return new Promise((resolve, reject) => {
29
 	return new Promise((resolve, reject) => {
31
-		console.log( baseURL + options.url," baseURL + options.url baseURL + options.url")
30
+		 if(options.apiType === 'php'){
31
+			baseURL = 'http://shop.hxxfb.com/'
32
+			// baseURL = '/'
33
+			// console.log('url = ',baseURL + options.url,"PHP")
34
+		 }
32
 		uni.request({
35
 		uni.request({
33
 			url: baseURL + options.url, //接口地址:前缀+方法中传入的地址 
36
 			url: baseURL + options.url, //接口地址:前缀+方法中传入的地址 
34
 			method: options.method || 'GET', //请求方法:传入的方法或者默认是“GET” 
37
 			method: options.method || 'GET', //请求方法:传入的方法或者默认是“GET” 
35
 			data: options.data || {}, //传递参数:传入的参数或者默认传递空集合 
38
 			data: options.data || {}, //传递参数:传入的参数或者默认传递空集合 
36
 			header: {
39
 			header: {
37
 				// 'Content-Type': 'application/x-www-form-urlencoded',
40
 				// 'Content-Type': 'application/x-www-form-urlencoded',
38
-				// 'X-token': uni.getStorageSync('authorization'), //请求头信息
39
-				'X-token':'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkuaHh4ZmIuY29tIiwiYXVkIjoiYXBpLmh4eGZiLmNvbSIsImlhdCI6MTczOTk2NDIxMiwibmJmIjoxNzM5OTY0MjEyLCJleHAiOjE3NTA3NjQyMTIsImp0aSI6WzM1OSwibWVyIl19.IX8wt8Fc05VgshXbUFTusGag4KD__teryi13L-QrJQM',
40
-				'volunteerdes': bas // DES+B64加密 
41
+				'X-token': uni.getStorageSync('authorization'), //请求头信息
42
+				// 'X-token':'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkuaHh4ZmIuY29tIiwiYXVkIjoiYXBpLmh4eGZiLmNvbSIsImlhdCI6MTczOTk2NDIxMiwibmJmIjoxNzM5OTY0MjEyLCJleHAiOjE3NTA3NjQyMTIsImp0aSI6WzM1OSwibWVyIl19.IX8wt8Fc05VgshXbUFTusGag4KD__teryi13L-QrJQM',
43
+				// 'volunteerdes': bas // DES+B64加密 
41
 			},
44
 			},
42
 
45
 
43
 			success: (res) => {
46
 			success: (res) => {

+ 29 - 29
emChat/emChatContainer/emInputBarContainer/recordAudioContainer/index.vue

@@ -103,35 +103,35 @@ export default {
103
     //web平台采集音频录音
103
     //web平台采集音频录音
104
     //#ifdef WEB
104
     //#ifdef WEB
105
     executeWebAudioRecord() {
105
     executeWebAudioRecord() {
106
-      import('../../../../recorderCore/src/recorder-core').then((Recorder) => {
107
-        require('../../../../recorderCore/src/engine/mp3');
108
-        require('../../../../recorderCore/src/engine/mp3-engine');
109
-        this.initStartRecord();
110
-        this.webRecorderManager = new Recorder.default({
111
-          type: 'mp3',
112
-        });
113
-        this.webRecorderManager.open(
114
-          () => {
115
-            console.log('>>>>>>web 录音开始执行');
116
-            this.recording = true;
117
-            this.saveRecordTime();
118
-            this.webRecorderManager.start();
119
-          },
120
-          (msg, isUserNotAllow) => {
121
-            if (isUserNotAllow) {
122
-              uni.showToast({
123
-                title: '鉴权失败,请重试',
124
-                icon: 'none',
125
-              });
126
-            } else {
127
-              uni.showToast({
128
-                title: `开启失败,请重试`,
129
-                icon: 'none',
130
-              });
131
-            }
132
-          }
133
-        );
134
-      });
106
+      // import('../../../../recorderCore/src/recorder-core').then((Recorder) => {
107
+      //   require('../../../../recorderCore/src/engine/mp3');
108
+      //   require('../../../../recorderCore/src/engine/mp3-engine');
109
+      //   this.initStartRecord();
110
+      //   this.webRecorderManager = new Recorder.default({
111
+      //     type: 'mp3',
112
+      //   });
113
+      //   this.webRecorderManager.open(
114
+      //     () => {
115
+      //       console.log('>>>>>>web 录音开始执行');
116
+      //       this.recording = true;
117
+      //       this.saveRecordTime();
118
+      //       this.webRecorderManager.start();
119
+      //     },
120
+      //     (msg, isUserNotAllow) => {
121
+      //       if (isUserNotAllow) {
122
+      //         uni.showToast({
123
+      //           title: '鉴权失败,请重试',
124
+      //           icon: 'none',
125
+      //         });
126
+      //       } else {
127
+      //         uni.showToast({
128
+      //           title: `开启失败,请重试`,
129
+      //           icon: 'none',
130
+      //         });
131
+      //       }
132
+      //     }
133
+      //   );
134
+      // });
135
     },
135
     },
136
     // #endif
136
     // #endif
137
     requestMiniProgramAuthorization() {
137
     requestMiniProgramAuthorization() {

+ 2 - 2
manifest.json

@@ -105,14 +105,14 @@
105
               // }
105
               // }
106
               // 自行修改下方的 /api
106
               // 自行修改下方的 /api
107
               "/api": {
107
               "/api": {
108
-                "target": "https://api.hxxfb.com",
108
+                "target": "https://api.hxxfb.com/",
109
                 "pathRewirte": {
109
                 "pathRewirte": {
110
                   //路径重写
110
                   //路径重写
111
                   "^/api": "/"
111
                   "^/api": "/"
112
                 }
112
                 }
113
               },
113
               },
114
               "/gateway/api": {
114
               "/gateway/api": {
115
-                "target": "https://api.hxxfb.com",
115
+                "target": "https://api.hxxfb.com/",
116
                 "pathRewirte": {
116
                 "pathRewirte": {
117
                   //路径重写
117
                   //路径重写
118
                   "^/api": "/"
118
                   "^/api": "/"

+ 1 - 0
package.json

@@ -1,5 +1,6 @@
1
 {
1
 {
2
   "dependencies": {
2
   "dependencies": {
3
+    "@dcloudio/uni-ui": "^1.5.7",
3
     "base-64": "^1.0.0",
4
     "base-64": "^1.0.0",
4
     "crypto-js": "^4.1.1",
5
     "crypto-js": "^4.1.1",
5
     "easemob-websdk": "^4.6.0",
6
     "easemob-websdk": "^4.6.0",

+ 33 - 26
pages.json

@@ -305,33 +305,33 @@
305
 		            }
305
 		            }
306
 		        }
306
 		        }
307
 		    ]
307
 		    ]
308
+		},
309
+		{
310
+		    "root" : "emChat",
311
+		    "pages" : [
312
+		       {
313
+		         "path": "emChatContainer/index",
314
+		         "style": {
315
+		           "navigationStyle": "custom",
316
+		           "navigationBarTextStyle": "white",
317
+		           "app-plus": {
318
+		             "bounce": "none"
319
+		           }
320
+		         }
321
+		       }
322
+		    ]
323
+		},
324
+		{
325
+		    "root" : "chatIndex",
326
+		    "pages" : [
327
+		       {
328
+				   "path" : "storemanagement/index",
329
+				   "style" : {
330
+					   "navigationStyle": "custom"
331
+				   }
332
+			   }
333
+		    ]
308
 		}
334
 		}
309
-		// {
310
-		//     "root" : "emChat",
311
-		//     "pages" : [
312
-		//        {
313
-		//          "path": "emChatContainer/index",
314
-		//          "style": {
315
-		//            "navigationStyle": "custom",
316
-		//            "navigationBarTextStyle": "white",
317
-		//            "app-plus": {
318
-		//              "bounce": "none"
319
-		//            }
320
-		//          }
321
-		//        }
322
-		//     ]
323
-		// },
324
-		// {
325
-		//     "root" : "chatIndex",
326
-		//     "pages" : [
327
-		//        {
328
-		// 		   "path" : "storemanagement/index",
329
-		// 		   "style" : {
330
-		// 			   "navigationStyle": "custom"
331
-		// 		   }
332
-		// 	   }
333
-		//     ]
334
-		// }
335
 		
335
 		
336
     ],
336
     ],
337
     "globalStyle" : {
337
     "globalStyle" : {
@@ -381,5 +381,12 @@
381
 			}
381
 			}
382
            
382
            
383
         ]
383
         ]
384
+    },
385
+    "easycom": {
386
+    	"autoscan": true,
387
+		"custom":{
388
+			"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
389
+		}
384
     }
390
     }
391
+
385
 }
392
 }

+ 133 - 83
pages/ordermanagement/index.vue

@@ -5,19 +5,19 @@
5
       <view class="ordermanagement-list">
5
       <view class="ordermanagement-list">
6
         <view class="ordermanagement-list-yi">
6
         <view class="ordermanagement-list-yi">
7
           <view class="ordermanagement-list-yi-top">
7
           <view class="ordermanagement-list-yi-top">
8
-            {{ num.orderPayment == undefined ? 0 : num.orderPayment }}
8
+            {{ orderSta.orderPayment == undefined ? 0 : orderSta.orderPayment }}
9
           </view>
9
           </view>
10
           <view class="ordermanagement-list-yi-bottom"> 已支付订单数 </view>
10
           <view class="ordermanagement-list-yi-bottom"> 已支付订单数 </view>
11
         </view>
11
         </view>
12
         <view class="ordermanagement-list-yi">
12
         <view class="ordermanagement-list-yi">
13
           <view class="ordermanagement-list-yi-top">
13
           <view class="ordermanagement-list-yi-top">
14
-            {{ num.payPrice == undefined ? 0 : num.payPrice }}
14
+            {{ orderSta.payPrice == undefined ? 0 : orderSta.payPrice }}
15
           </view>
15
           </view>
16
           <view class="ordermanagement-list-yi-bottom"> 实际支付金额 </view>
16
           <view class="ordermanagement-list-yi-bottom"> 实际支付金额 </view>
17
         </view>
17
         </view>
18
         <view class="ordermanagement-list-yi">
18
         <view class="ordermanagement-list-yi">
19
           <view class="ordermanagement-list-yi-top">
19
           <view class="ordermanagement-list-yi-top">
20
-            {{ num.refundPrice == undefined ? 0 : num.refundPrice }}
20
+            {{ orderSta.refundPrice == undefined ? 0 : orderSta.refundPrice }}
21
           </view>
21
           </view>
22
           <view class="ordermanagement-list-yi-bottom"> 已退款金额 </view>
22
           <view class="ordermanagement-list-yi-bottom"> 已退款金额 </view>
23
         </view>
23
         </view>
@@ -38,12 +38,12 @@
38
         <view
38
         <view
39
           class="ordermanagement-yisdf"
39
           class="ordermanagement-yisdf"
40
           v-for="(item, index) in dingdan"
40
           v-for="(item, index) in dingdan"
41
-          :key="index+'__index__'"
41
+          :key="index + '__index__'"
42
           @click="jiru(item.status, index + 1)"
42
           @click="jiru(item.status, index + 1)"
43
         >
43
         >
44
           <view class="ordermanagement-img">
44
           <view class="ordermanagement-img">
45
             <image :src="item.img" mode="widthFix"></image>
45
             <image :src="item.img" mode="widthFix"></image>
46
-            <view class="ordermanagement-img-biao" v-if="item.num != 0">
46
+            <view class="ordermanagement-img-biao" v-if="item.num > 0">
47
               {{ item.num }}
47
               {{ item.num }}
48
             </view>
48
             </view>
49
           </view>
49
           </view>
@@ -55,9 +55,6 @@
55
     </view>
55
     </view>
56
 
56
 
57
     <view class="ordermanagement-dingsss">
57
     <view class="ordermanagement-dingsss">
58
-      <!-- <view class="ordermanagement-ding-text">
59
-				售后管理
60
-			</view> -->
61
       <view class="view-wrapper">
58
       <view class="view-wrapper">
62
         <view class="ordermanagement-ding-text"> 售后管理 </view>
59
         <view class="ordermanagement-ding-text"> 售后管理 </view>
63
         <view class="view-all" @click="afterSalesClick('all', 0)">
60
         <view class="view-all" @click="afterSalesClick('all', 0)">
@@ -72,11 +69,14 @@
72
         <view
69
         <view
73
           class="ordermanagement-yisdf"
70
           class="ordermanagement-yisdf"
74
           v-for="(item, index) in dingdansss"
71
           v-for="(item, index) in dingdansss"
75
-          :key="index+'pp'+'__index__'"
76
-		  @click="afterSalesClick(item, index )"
72
+          :key="index + 'pp' + '__index__'"
73
+          @click="afterSalesClick(item.status, index+1)"
77
         >
74
         >
78
           <view class="ordermanagement-img">
75
           <view class="ordermanagement-img">
79
             <image :src="item.img" mode="widthFix"></image>
76
             <image :src="item.img" mode="widthFix"></image>
77
+             <view class="ordermanagement-img-biao" v-if="item.num > 0">
78
+              {{ item.num }}
79
+            </view>
80
           </view>
80
           </view>
81
           <view class="">
81
           <view class="">
82
             {{ item.name }}
82
             {{ item.name }}
@@ -84,20 +84,29 @@
84
         </view>
84
         </view>
85
       </view>
85
       </view>
86
     </view>
86
     </view>
87
-	
87
+
88
     <!-- <quickPickUpVue class="custom_pick-up"></quickPickUpVue> -->
88
     <!-- <quickPickUpVue class="custom_pick-up"></quickPickUpVue> -->
89
   </view>
89
   </view>
90
 </template>
90
 </template>
91
 
91
 
92
 <script>
92
 <script>
93
-import { getOrderStstusAmount,getOrderStatusNumber,getOrderList } from "@/commit/order.js";
93
+import {
94
+  getOrderStatusNumber,
95
+  getOrderList,
96
+  getAfterSaleList,
97
+} from "@/commit/order.js";
94
 import quickPickUpVue from "./components/quickPickUp/quickPickUp.vue";
98
 import quickPickUpVue from "./components/quickPickUp/quickPickUp.vue";
95
-import {toQueryString} from "@/utils/index.js"
99
+import { toQueryString } from "@/utils/index.js";
96
 export default {
100
 export default {
97
   components: { quickPickUpVue },
101
   components: { quickPickUpVue },
98
   data() {
102
   data() {
99
     return {
103
     return {
100
-      num: [], //正向订单状态数
104
+      orderSta: {
105
+        orderPayment: "0",
106
+        payPrice: "0",
107
+        refundPrice: "0",
108
+      },
109
+      num: {}, //正向订单状态数
101
       mer_id: 264,
110
       mer_id: 264,
102
       dingdan: [
111
       dingdan: [
103
         {
112
         {
@@ -120,7 +129,6 @@ export default {
120
           name: "待评价",
129
           name: "待评价",
121
           status: 4,
130
           status: 4,
122
         },
131
         },
123
-        // ,
124
         // {
132
         // {
125
         // 	img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154847886.png',
133
         // 	img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154847886.png',
126
         // 	name: '已退款',
134
         // 	name: '已退款',
@@ -128,86 +136,100 @@ export default {
128
         // }
136
         // }
129
       ],
137
       ],
130
       dingdansss: [
138
       dingdansss: [
131
-		//  {
132
-        //   img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154904247.png",
133
-        //   name: "全部",
134
-        // },
135
         {
139
         {
136
           img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154932244.png",
140
           img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154932244.png",
137
           name: "审核中",
141
           name: "审核中",
142
+          status:0,
143
+          num:0,
138
         },
144
         },
139
         {
145
         {
140
           img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154949118.png",
146
           img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154949118.png",
141
           name: "处理中",
147
           name: "处理中",
148
+          num:0,
149
+           status:2,
142
         },
150
         },
143
         {
151
         {
144
           img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812155008586.png",
152
           img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812155008586.png",
145
           name: "已完成",
153
           name: "已完成",
154
+          num:0,
155
+           status:3,
146
         },
156
         },
147
-        // {
148
-        //   img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154904247.png",
149
-        //   name: "待审核",
150
-        // },
151
-        // {
152
-        //   img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154932244.png",
153
-        //   name: "未通过",
154
-        // },
155
-        // {
156
-        //   img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154949118.png",
157
-        //   name: "已通过",
158
-        // },
159
-        // {
160
-        //   img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154918922.png",
161
-        //   name: "待收货",
162
-        // },
163
-        // {
164
-        //   img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812155008586.png",
165
-        //   name: "已完成",
166
-        // },
167
       ],
157
       ],
168
     };
158
     };
169
   },
159
   },
170
   onLoad() {},
160
   onLoad() {},
171
-  onShow() {
172
-      uni.showLoading({
173
-    	title: '加载中',
161
+  async onShow() {
162
+    uni.showLoading({
163
+      title: "加载中",
174
     });
164
     });
175
     let selectmerchant = uni.getStorageSync("selectmerchant");
165
     let selectmerchant = uni.getStorageSync("selectmerchant");
176
     this.mer_id = selectmerchant.merId;
166
     this.mer_id = selectmerchant.merId;
177
-    this.getOrderStatusNumberData()
167
+    await this.getOrderListData();
168
+    await this.getOrderStatusNumberData();
169
+    await this.getAfterSaleListData()
178
   },
170
   },
179
   methods: {
171
   methods: {
180
-//售后管理
181
-afterSalesClick(item,index){
182
-   const params = {
183
-	   tabIndex:index,
184
-	   mer_id:this.mer_id
185
-   }
186
-   uni.redirectTo({
187
-	   url: `../../shop/afterSalesManagement/index?${toQueryString(params)}`
188
-   })
189
-},
190
-
191
-
172
+    //售后管理
173
+    afterSalesClick(status, index) {
174
+      const params = {
175
+        tabIndex: index,
176
+        mer_id: this.mer_id,
177
+        status: status,
178
+      };
179
+      uni.redirectTo({
180
+        url: `../../shop/afterSalesManagement/index?${toQueryString(params)}`,
181
+      });
182
+    },
183
+    // 订单金额
184
+    async getOrderListData() {
185
+      try {
186
+        const res = await getOrderList({
187
+          order_sn: "",
188
+          order_type: -1,
189
+          distribution_mode: -1,
190
+          keywords: "",
191
+          status: "",
192
+          date: "",
193
+          page: 1,
194
+          limit: 20,
195
+          type: 1,
196
+          username: "",
197
+          pay_type: -1,
198
+          ylj_status: "",
199
+          paid: "",
200
+        });
201
+        console.log(res, "resresresresres");
202
+        if (res.data.status === 200) {
203
+          const data = res.data.data.stat || [];
192
 
204
 
205
+          let obj = {
206
+            已支付订单数量: "orderPayment",
207
+            实际支付金额: "payPrice",
208
+            已退款金额: "refundPrice",
209
+          };
210
+          data.forEach((item) => {
211
+            this.orderSta[obj[item.name]] = item.count || undefined;
212
+          });
213
+        }
214
+      } catch (error) {}
215
+    },
193
 
216
 
194
     // 正向订单状态数
217
     // 正向订单状态数
195
     getOrderStatusNumberData() {
218
     getOrderStatusNumberData() {
196
       getOrderStatusNumber({
219
       getOrderStatusNumber({
197
-        // mer_id: this.mer_id,
198
-        order_sn:"",
199
-        order_type:'-1',
200
-        distribution_mode:'-1',
201
-        keywords:"",
202
-        status:"",
203
-        date:'',
204
-        page:1,
205
-        limit:10,
206
-        type:1,
207
-        username:'',
208
-        pay_type:-1,
209
-        ylj_status:'',
210
-        paid:''
220
+        order_sn: "",
221
+        order_type: "-1",
222
+        distribution_mode: "-1",
223
+        keywords: "",
224
+        status: "",
225
+        date: "",
226
+        page: 1,
227
+        limit: 10,
228
+        type: 1,
229
+        username: "",
230
+        pay_type: -1,
231
+        ylj_status: "",
232
+        paid: "",
211
       }).then(
233
       }).then(
212
         (res) => {
234
         (res) => {
213
           if (res.data.status == 200) {
235
           if (res.data.status == 200) {
@@ -216,26 +238,26 @@ afterSalesClick(item,index){
216
               {
238
               {
217
                 img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154736170.png",
239
                 img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154736170.png",
218
                 name: "待付款",
240
                 name: "待付款",
219
-                num: this.num.orderPrepPayment,
220
-                status: 5,
241
+                num: this.num.unpaid || 0,
242
+                status: 1,
221
               },
243
               },
222
               {
244
               {
223
                 img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154723185.png",
245
                 img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154723185.png",
224
                 name: "待发货",
246
                 name: "待发货",
225
-                num: this.num.orderForDelivery,
226
-                status: 0,
247
+                num: this.num.unshipped || 0,
248
+                status: 2,
227
               },
249
               },
228
               {
250
               {
229
                 img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154804269.png",
251
                 img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154804269.png",
230
                 name: "待收货",
252
                 name: "待收货",
231
-                num: this.num.orderForReceived,
232
-                status: 1,
253
+                num: this.num.untake || 0,
254
+                status: 3,
233
               },
255
               },
234
               {
256
               {
235
                 img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154750259.png",
257
                 img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154750259.png",
236
                 name: "待评价",
258
                 name: "待评价",
237
-                num: this.num.orderForSpeech,
238
-                status: 2,
259
+                num: this.num.unevaluate || 0,
260
+                status: 4,
239
               },
261
               },
240
             ];
262
             ];
241
             uni.hideLoading();
263
             uni.hideLoading();
@@ -246,6 +268,34 @@ afterSalesClick(item,index){
246
         }
268
         }
247
       );
269
       );
248
     },
270
     },
271
+    //售后
272
+    async getAfterSaleListData() {
273
+      try {
274
+        const res = await getAfterSaleList({
275
+          refund_order_sn: "",
276
+          status: "",
277
+          date: "",
278
+          page: 1,
279
+          limit: 20,
280
+          order_sn: "",
281
+          refund_type: "",
282
+        });
283
+       
284
+        if(res.data.status == 200){
285
+          const data = res.data.data.stat
286
+           var num = data.refuse;
287
+          var num1 = data.end;
288
+          var num2 =data.agree;
289
+
290
+
291
+       let finishOrder = num + num1 + num2;
292
+          this.dingdansss[0].num =data.audit || 0
293
+          this.dingdansss[1].num = data.backgood || 0
294
+          this.dingdansss[2].num = finishOrder || 0
295
+        }
296
+        uni.hideLoading();
297
+      } catch (error) {}
298
+    },
249
     jiru(e, i) {
299
     jiru(e, i) {
250
       let authorization = uni.getStorageSync("authorization");
300
       let authorization = uni.getStorageSync("authorization");
251
       let userinfo = uni.getStorageSync("userinfo");
301
       let userinfo = uni.getStorageSync("userinfo");
@@ -429,7 +479,11 @@ page {
429
         font-weight: 400;
479
         font-weight: 400;
430
         color: #5f6060;
480
         color: #5f6060;
431
 
481
 
432
-        .ordermanagement-img {
482
+      
483
+      }
484
+    }
485
+  }
486
+  .ordermanagement-img {
433
           width: 48rpx;
487
           width: 48rpx;
434
           height: 48rpx;
488
           height: 48rpx;
435
           position: relative;
489
           position: relative;
@@ -455,12 +509,8 @@ page {
455
             align-items: center;
509
             align-items: center;
456
           }
510
           }
457
         }
511
         }
458
-      }
459
-    }
460
-  }
461
-
462
   .ordermanagement-dingsss {
512
   .ordermanagement-dingsss {
463
-    width:calc(100% - 52rpx);
513
+    width: calc(100% - 52rpx);
464
     height: 216rpx;
514
     height: 216rpx;
465
     display: flex;
515
     display: flex;
466
     flex-direction: column;
516
     flex-direction: column;

+ 145 - 100
shop/afterSalesManagement/afterCardDetail.vue

@@ -1,42 +1,44 @@
1
 <template>
1
 <template>
2
   <view class="details-xiangqing">
2
   <view class="details-xiangqing">
3
     <view class="details-xiangqing-top">
3
     <view class="details-xiangqing-top">
4
-      <view class="details-xiangqing-top-let">
5
-        <image :src="orderProduct.mer_avatar" mode="widthFix"></image>
4
+      <view class="details-xiangqing-top-let" v-if="storeRefundItem.mer">
5
+        <image :src="storeRefundItem.mer_avatar" v-if="storeRefundItem.mer.mer_avatar" mode="widthFix"></image>
6
       </view>
6
       </view>
7
-      <view class="details-xiangqing-top-in">
8
-        {{ orderProduct.mer_name }}
7
+      <view class="details-xiangqing-top-in" v-if="storeRefundItem.mer"> 
8
+        {{ storeRefundItem.mer.yhc_about_name}}
9
       </view>
9
       </view>
10
       <!-- <view class="details-xiangqing-top-rigt">
10
       <!-- <view class="details-xiangqing-top-rigt">
11
     
11
     
12
       </view> -->
12
       </view> -->
13
-      <view class="details-xiangqingt-yi-top-right"> 退款中 </view>
13
+      <view class="details-xiangqingt-yi-top-right">
14
+        {{ formatDataValue("status") }}
15
+      </view>
14
     </view>
16
     </view>
15
     <view class="details-xiangqing-niri">
17
     <view class="details-xiangqing-niri">
16
       <view
18
       <view
17
         class="order-list-yi-in-neibu"
19
         class="order-list-yi-in-neibu"
18
-        v-for="(item, index) in orderProduct.procductList"
20
+        v-for="(item, index) in list"
19
         :key="index"
21
         :key="index"
20
       >
22
       >
21
         <view class="order-list-yi-in-neibu-left">
23
         <view class="order-list-yi-in-neibu-left">
22
-          <view class="order-list-yi-in-neibu-left-img">
23
-            <image :src="item.image" mode="widthFix"></image>
24
+          <view class="order-list-yi-in-neibu-left-img" v-if="item.product">
25
+            <image :src="item.product.cart_info.product.image" mode="widthFix" v-if="item.product.cart_info"></image>
24
           </view>
26
           </view>
25
           <view class="order-list-yi-in-neibu-left-url">
27
           <view class="order-list-yi-in-neibu-left-url">
26
-            <view class="order-list-yi-in-neibu-left-url-top">
27
-              {{ item.store_name }}
28
+            <view class="order-list-yi-in-neibu-left-url-top" v-if="item.product.cart_info">
29
+              {{ item.product.cart_info.product.store_name || '' }}
28
             </view>
30
             </view>
29
-            <view class="order-list-yi-in-neibu-left-url-bottom">
30
-              8盒/箱,30ML*8袋/盒
31
+            <view class="order-list-yi-in-neibu-left-url-bottom" v-if="item.product.cart_info" >
32
+              {{item.product.cart_info.productAttr.sku}}
31
             </view>
33
             </view>
32
           </view>
34
           </view>
33
         </view>
35
         </view>
34
         <view class="order-list-yi-in-neibu-right">
36
         <view class="order-list-yi-in-neibu-right">
35
-          <view class="order-list-yi-in-neibu-right-im">
36
-            ¥{{ item.pay_price }}
37
+          <view class="order-list-yi-in-neibu-right-im" v-if="item.product">
38
+            ¥{{ item.product.cart_info.productAttr.price }}
37
           </view>
39
           </view>
38
           <view class="order-list-yi-in-neibu-right-in">
40
           <view class="order-list-yi-in-neibu-right-in">
39
-            共{{ item.cart_num }}件
41
+            共{{ item.product.product_num || 0 }}件
40
           </view>
42
           </view>
41
         </view>
43
         </view>
42
       </view>
44
       </view>
@@ -48,48 +50,16 @@
48
           >
50
           >
49
             <view class="label-box"> {{ orItem.name }} </view>
51
             <view class="label-box"> {{ orItem.name }} </view>
50
             <view class="value-box">
52
             <view class="value-box">
51
-              {{ detaulData[orItem.props] || "--" }}
53
+              {{ formatDataValue(orItem.props) || "--" }}
52
             </view>
54
             </view>
53
           </view>
55
           </view>
54
           <view class="tips-mdex" v-if="orItem.isTips"
56
           <view class="tips-mdex" v-if="orItem.isTips"
55
-            >含邮费 ¥0.00,买家实收退款 ¥99含邮费 ¥0.00,买家实收退款 ¥99</view
57
+            >含邮费 ¥{{ items.total_postage || "0.00" }},买家实收退款 ¥{{
58
+              items.total_price - items.total_postage || "0.00"
59
+            }}</view
56
           >
60
           >
57
         </template>
61
         </template>
58
-        <!-- <view class="details-xiangqing-shujussss-yis">
59
-          <view class=""> 售后原因 </view>
60
-          <view class=""> 拍多了备份 </view>
61
-        </view>
62
-        <view class="details-xiangqing-shujussss-yis">
63
-          <view class=""> 售后件数 </view>
64
-          <view class=""> 3件 </view>
65
-        </view>
66
-        <view class="details-xiangqing-shujussss-yis">
67
-          <view class=""> 买家应退 </view>
68
-          <view class=""> 3件 </view>
69
-        </view>
70
-        <view class="details-xiangqing-shujussss-yis">
71
-          <view class="">
72
-            退款金额
73
-            <view class="tips-mdex">含邮费 ¥0.00,买家实收退款 ¥99</view>
74
-          </view>
75
-          <view class=""> ¥999.00 </view>
76
-        </view>
77
-        <view class="details-xiangqing-shujussss-yis">
78
-          <view class=""> 售后地址 </view>
79
-          <view class=""> 此处显示商家的售后地址家的售后地址家的售 </view>
80
-        </view>
81
-        <view class="details-xiangqing-shujussss-yis">
82
-          <view class=""> 申请时间 </view>
83
-          <view class=""> 2023-10-31 11:11:11 </view>
84
-        </view>
85
-        <view class="details-xiangqing-shujussss-yis">
86
-          <view class=""> 订单编号 </view>
87
-          <view class=""> WX345678876543456787 </view>
88
-        </view>
89
-        <view class="details-xiangqing-shujussss-yis">
90
-          <view class=""> 售后编号 </view>
91
-          <view class=""> rwx23456789098765434 </view>
92
-        </view> -->
62
+        
93
       </view>
63
       </view>
94
     </view>
64
     </view>
95
   </view>
65
   </view>
@@ -98,96 +68,171 @@
98
 <script>
68
 <script>
99
 //订单详情 卡片详细信息
69
 //订单详情 卡片详细信息
100
 import { copy } from "@/utils/index.js";
70
 import { copy } from "@/utils/index.js";
71
+import {
72
+  orderRefundFilterText,
73
+  orderRefundText,
74
+  orderRefundFilter,
75
+} from "../commodity/orderUtil.js";
76
+import { getAfterSaleList,refundorderDetailApi } from "@/commit/order.js";
101
 export default {
77
 export default {
78
+  props: {
79
+    items: {
80
+      type: Object,
81
+      default: () => ({}),
82
+    },
83
+    storeRefundItem: {
84
+      type: Object,
85
+      default: () => {},
86
+    },
87
+  },
102
   data() {
88
   data() {
103
     return {
89
     return {
104
       cardListData: [
90
       cardListData: [
105
         {
91
         {
106
           name: "售后类型",
92
           name: "售后类型",
107
-          props: "type",
93
+          props: "refund_type",
108
           isTips: false,
94
           isTips: false,
109
         },
95
         },
110
         {
96
         {
111
           name: "售后原因",
97
           name: "售后原因",
112
-          props: "resonse",
113
-          isTips: false,
114
-        },
115
-        {
116
-          name: "售后类型",
117
-          props: "type1",
98
+          props: "mark",
118
           isTips: false,
99
           isTips: false,
119
         },
100
         },
120
         {
101
         {
121
           name: "售后件数",
102
           name: "售后件数",
122
-          props: "unit",
103
+          props: "refund_num",
123
           isTips: false,
104
           isTips: false,
124
         },
105
         },
125
         {
106
         {
126
-          name: "买家应退",
127
-          props: "yingtui",
107
+          name: "退款金额",
108
+          props: "refund_price",
128
           isTips: false,
109
           isTips: false,
129
         },
110
         },
130
         {
111
         {
131
-          name: "退款金额",
132
-          props: "jine",
112
+          name: "退款商品总额",
113
+          props: "price",
133
           isTips: true,
114
           isTips: true,
134
         },
115
         },
135
         {
116
         {
136
           name: "售后地址",
117
           name: "售后地址",
137
-          props: "address",
118
+          props: "user_address",
138
           isTips: false,
119
           isTips: false,
139
         },
120
         },
140
         {
121
         {
141
           name: "申请时间",
122
           name: "申请时间",
142
-          props: "time",
123
+          props: "create_time",
143
           isTips: false,
124
           isTips: false,
144
         },
125
         },
145
         {
126
         {
146
           name: "订单编号",
127
           name: "订单编号",
147
-          props: "order_id",
128
+          props: "order_sn",
148
           isTips: false,
129
           isTips: false,
149
         },
130
         },
150
         {
131
         {
151
           name: "售后编号",
132
           name: "售后编号",
152
-          props: "order_sn",
133
+          props: "refund_order_sn",
153
           isTips: false,
134
           isTips: false,
154
         },
135
         },
155
       ],
136
       ],
156
-      detaulData: {
157
-        type: "退货退款",
158
-        resonse: "拍多了备份",
159
-        type1: "3件",
160
-        unit: "3件",
161
-        yingtui: "3件",
162
-        jine: "¥999.00",
163
-        address: "此处显示商家的售后地址家的售后地址家的售",
164
-        time: "2023-10-31 11:11:11",
165
-        order_id: "WX345678876543456787",
166
-        order_sn: " rwx23456789098765434",
167
-      },
168
-      orderProduct: {
169
-        pay_type: "特殊商户积分",
170
-        mer_name: "北京众兴未来咨询管理有限公司",
171
-        mer_avatar:
172
-          "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
173
-        pay_time: "2022-05-01 14:00",
174
-        order_id: "3645657575757483757",
175
-        pay_price: "999.00",
176
-        status: "3",
177
-        procductList: [
178
-          {
179
-            pay_price: "88888",
180
-            cart_num: "10",
181
-            image:
182
-              "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
183
-            store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
184
-          },
185
-        ],
186
-      },
137
+
138
+      detaulData: {},
139
+      orderProduct: {},
140
+      status: "",
141
+      refund_order_id: "", //售后编号
142
+      list: [],
187
     };
143
     };
188
   },
144
   },
189
-
145
+  mounted() {
146
+    console.log(this.$route.query.indexs, "f4gsdfgsd3fgdsfgsrdf");
147
+    // 0全部  1审核中  2处理中  3已完成
148
+    let currentActive = this.$route.query["indexs"];
149
+    this.refund_order_id = this.$route.query["refund_order_id"]; //售后编号
150
+//  console.log(this.refund_order_sn,"refund_order_sn",currentActive)
151
+    if (currentActive == 0) {
152
+      //全部
153
+      this.status = "";
154
+    } else if (currentActive == 1) {
155
+      //审核中 0
156
+      this.status = 0;
157
+    } else if (currentActive == 2) {
158
+      //2处理中 2
159
+      this.status = 2;
160
+    } else if (currentActive == 3) {
161
+      //3已完成
162
+      this.status = 3;
163
+    } else {
164
+      this.status = "";
165
+    }
166
+   
167
+    if (this.refund_order_id) {
168
+      this.getAfterSaleListData(this.refund_order_id);
169
+    }
170
+  },
190
   methods: {
171
   methods: {
172
+    formatDataValue(type) {
173
+      if (type == "status") {
174
+        return orderRefundFilter(this.storeRefundItem[type]) || "";
175
+      } else if (type == "refund_type") {
176
+        return this.storeRefundItem["refund_type"] == 1
177
+          ? "仅退款"
178
+          : this.storeRefundItem["refund_type"] == 2
179
+          ? "退货退款"
180
+          : "";
181
+      } else if (type === "price") {
182
+         return this.getTotal() || "0.00"
183
+      } else if (type === "refund_order_sn") {
184
+        return this.storeRefundItem["refund_order_sn"] || "--";
185
+      } else if (type === "user_address") {
186
+        return this.items["user_address"] || "--";
187
+      } else if (type === "order_sn") {
188
+        return this.items["order_sn"] || "--";
189
+      } else if (type === "refund_num") {
190
+        return this.storeRefundItem["refund_num"] || "--";
191
+      } else if (type === "mark") {
192
+        return this.storeRefundItem["mark"] || "--";
193
+      } else if (type === "nickname") {
194
+        return (
195
+          (this.items && this.items.user && this.items.user["nickname"]) || "--"
196
+        );
197
+      } else if (type === "create_time") {
198
+        return this.storeRefundItem["create_time"] || "--";
199
+      } else if (type === "refund_price") {
200
+        return this.storeRefundItem["refund_price"] || "--";
201
+      }
202
+    },
203
+    getTotal() {
204
+      let sum = 0;
205
+      let row = this.list || []
206
+      for (let i = 0; i < row.length; i++) {
207
+        sum += row[i].product.cart_info.productAttr.price * row[i].refund_num;
208
+      }
209
+      return sum.toFixed(2);
210
+    },
211
+
212
+    async getAfterSaleListData(refund_order_sn, order_sn) {
213
+      const params = {
214
+        refund_order_sn: refund_order_sn,
215
+        status: this.status,
216
+        date: "",
217
+        page: 1,
218
+        limit: 20,
219
+        order_sn: order_sn,
220
+        refund_type: "",
221
+      };
222
+    // console.log(params,"getAfterSaleListData")
223
+      try {
224
+        // const res = await getAfterSaleList(params);
225
+        const res = await refundorderDetailApi(refund_order_sn);
226
+        if (res.data.status == 200) {
227
+          // console.log(res.data.data.list, "res.data.data.list");
228
+          const productData= res.data.data&&res.data.data.refundProduct || []
229
+          this.list = productData;
230
+        }
231
+      } catch (error) {
232
+      } finally {
233
+        uni.hideLoading();
234
+      }
235
+    },
191
     handleCopy(val) {
236
     handleCopy(val) {
192
       copy(val);
237
       copy(val);
193
     },
238
     },

+ 38 - 38
shop/afterSalesManagement/afterCardListInfo.vue

@@ -1,11 +1,11 @@
1
 <template>
1
 <template>
2
   <view class="details-xiangqing">
2
   <view class="details-xiangqing">
3
     <view class="details-xiangqing-top">
3
     <view class="details-xiangqing-top">
4
-      <view class="details-xiangqing-top-let">
5
-        <image :src="orderProduct.mer_avatar" mode="widthFix"></image>
4
+      <view class="details-xiangqing-top-let" v-if="detailItem.order">
5
+        <image :src="detailItem.order.mer_avatar" mode="widthFix" v-if="detailItem.order.mer_avatar"></image>
6
       </view>
6
       </view>
7
-      <view class="details-xiangqing-top-in">
8
-        {{ orderProduct.mer_name }}
7
+      <view class="details-xiangqing-top-in" v-if="detailItem.order">
8
+        {{ detailItem.order.order_sn }}
9
       </view>
9
       </view>
10
       <view class="details-xiangqing-top-rigt">
10
       <view class="details-xiangqing-top-rigt">
11
         <uni-icons
11
         <uni-icons
@@ -15,40 +15,41 @@
15
           class="arrow_right_log"
15
           class="arrow_right_log"
16
         ></uni-icons>
16
         ></uni-icons>
17
       </view>
17
       </view>
18
-      <view class="details-xiangqingt-yi-top-right"> 退款中 </view>
18
+      <view class="details-xiangqingt-yi-top-right"> {{formatDataValue(detailItem,'status')}} </view>
19
     </view>
19
     </view>
20
     <view class="details-xiangqing-niri">
20
     <view class="details-xiangqing-niri">
21
       <view
21
       <view
22
         class="order-list-yi-in-neibu"
22
         class="order-list-yi-in-neibu"
23
-        v-for="(item, index) in orderProduct.procductList"
24
-        :key="index"
23
+        v-for="(item, index) in detailItem.refundProduct"
24
+        :key="index+'_index'+item.order_product_id"
25
       >
25
       >
26
+      <!-- item.product.cart_info.product -->
26
         <view class="order-list-yi-in-neibu-left">
27
         <view class="order-list-yi-in-neibu-left">
27
-          <view class="order-list-yi-in-neibu-left-img">
28
-            <image :src="item.image" mode="widthFix"></image>
28
+          <view class="order-list-yi-in-neibu-left-img" v-if="item.product">
29
+            <image :src="item.product.cart_info.product.image" mode="widthFix" v-if="item.product.cart_info"></image>
29
           </view>
30
           </view>
30
           <view class="order-list-yi-in-neibu-left-url">
31
           <view class="order-list-yi-in-neibu-left-url">
31
-            <view class="order-list-yi-in-neibu-left-url-top">
32
-              {{ item.store_name }}
32
+            <view class="order-list-yi-in-neibu-left-url-top" v-if="item.product">
33
+              {{ item.product.cart_info.product.store_name || '' }}
33
             </view>
34
             </view>
34
-            <view class="order-list-yi-in-neibu-left-url-top">
35
-              {{ item.store_name }}
35
+            <view class="order-list-yi-in-neibu-left-url-top" v-if="item.product">
36
+              {{ item.product.cart_info.productAttr.sku }}
36
             </view>
37
             </view>
37
           </view>
38
           </view>
38
         </view>
39
         </view>
39
         <view class="order-list-yi-in-neibu-right">
40
         <view class="order-list-yi-in-neibu-right">
40
-          <view class="order-list-yi-in-neibu-right-im">
41
-            ¥{{ item.pay_price }}
41
+          <view class="order-list-yi-in-neibu-right-im" v-if="item.product">
42
+            ¥{{ item.product.cart_info.productAttr.price || "0.00" }}
42
           </view>
43
           </view>
43
           <view class="order-list-yi-in-neibu-right-in">
44
           <view class="order-list-yi-in-neibu-right-in">
44
-            共{{ item.cart_num }}件
45
+            共{{ item.product.product_num || 0 }}件
45
           </view>
46
           </view>
46
         </view>
47
         </view>
47
       </view>
48
       </view>
48
 
49
 
49
       <view class="brn-ligd">
50
       <view class="brn-ligd">
50
-        <view class="btn-cls" @click="viewWuLiu('xxx')"> 查看物流 </view>
51
-        <view class="btn-cls" @click="viewDetail('xxx')"> 查看详情 </view>
51
+        <view class="btn-cls" @click="viewWuLiu(detailItem)"> 查看物流 </view>
52
+        <view class="btn-cls" @click="viewDetail(detailItem)"> 查看详情 </view>
52
       </view>
53
       </view>
53
 
54
 
54
     </view>
55
     </view>
@@ -58,32 +59,30 @@
58
 <script>
59
 <script>
59
 //订单详情 卡片详细信息
60
 //订单详情 卡片详细信息
60
 import { copy } from "@/utils/index.js";
61
 import { copy } from "@/utils/index.js";
62
+import {orderRefundFilter} from "../commodity/orderUtil.js"
61
 export default {
63
 export default {
64
+  props:{
65
+    detailItem:{
66
+      type:Object,
67
+      default:()=>{}
68
+
69
+    },
70
+    index:{
71
+      type:Number,
72
+      default:0
73
+    }
74
+  },
62
   data() {
75
   data() {
63
     return {
76
     return {
64
-      orderProduct: {
65
-        pay_type: "特殊商户积分",
66
-        mer_name: "北京众兴未来咨询管理有限公司",
67
-        mer_avatar:
68
-          "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
69
-        pay_time: "2022-05-01 14:00",
70
-        order_id: "3645657575757483757",
71
-        pay_price: "999.00",
72
-        status: "3",
73
-        procductList: [
74
-          {
75
-            pay_price: "88888",
76
-            cart_num: "10",
77
-            image:
78
-              "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
79
-            store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
80
-          },
81
-        ],
82
-      },
83
     };
77
     };
84
   },
78
   },
85
 
79
 
86
   methods: {
80
   methods: {
81
+    formatDataValue(data,type){
82
+      if(type === 'status'){
83
+        return orderRefundFilter(data[type]) || ''
84
+      }
85
+    },
87
     handleCopy(val) {
86
     handleCopy(val) {
88
       copy(val);
87
       copy(val);
89
     },
88
     },
@@ -151,7 +150,7 @@ export default {
151
     }
150
     }
152
 
151
 
153
     .details-xiangqing-top-in {
152
     .details-xiangqing-top-in {
154
-      width: 364rpx;
153
+      max-width: 364rpx;
155
       font-size: 28rpx;
154
       font-size: 28rpx;
156
       font-weight: 600;
155
       font-weight: 600;
157
       overflow: hidden;
156
       overflow: hidden;
@@ -164,6 +163,7 @@ export default {
164
       flex: 1;
163
       flex: 1;
165
       font-weight: 400;
164
       font-weight: 400;
166
       color: #1f7cff;
165
       color: #1f7cff;
166
+      white-space: nowrap;
167
     }
167
     }
168
     .details-xiangqing-top-rigt {
168
     .details-xiangqing-top-rigt {
169
       //   width: 36rpx;
169
       //   width: 36rpx;

+ 303 - 25
shop/afterSalesManagement/afterSalesDetail.vue

@@ -4,10 +4,20 @@
4
     <view class="after-contents">
4
     <view class="after-contents">
5
       <!-- 退货信息卡片 -->
5
       <!-- 退货信息卡片 -->
6
       <view class="afterdetails-tuihuo mb-26">
6
       <view class="afterdetails-tuihuo mb-26">
7
-        <view class="afterdetails-tuihuo-top">
8
-          <view class="tuihuo-title">退货审核中</view>
7
+        <view class="afterdetails-tuihuo-top" @click="handleDetailInfo">
8
+          <view class="tuihuo-title">{{ formatDataValue("status") }}</view>
9
           <!-- 退货审核中 退货中 -->
9
           <!-- 退货审核中 退货中 -->
10
-          <view class="tuihuo-tab">未发货仅退款</view>
10
+          <view
11
+            class="tuihuo-tab"
12
+            v-if="storeRefundOrder && storeRefundOrder.refund_type"
13
+            >{{
14
+              storeRefundOrder.refund_type == 1
15
+                ? "仅退款"
16
+                : storeRefundOrder.refund_type == 2
17
+                ? "退货退款"
18
+                : ""
19
+            }}</view
20
+          >
11
         </view>
21
         </view>
12
         <view class="afterdetails-tuihuo-bottom">
22
         <view class="afterdetails-tuihuo-bottom">
13
           <!-- 退货退款成功 、退货退款失败 退货审核中 已发货仅退款成功 字体颜色 color: #1F7CFF; -->
23
           <!-- 退货退款成功 、退货退款失败 退货审核中 已发货仅退款成功 字体颜色 color: #1F7CFF; -->
@@ -21,9 +31,27 @@
21
 			  6、退货退款失败:退货退款失败,请查看失败原因
31
 			  6、退货退款失败:退货退款失败,请查看失败原因
22
 			  7、退货退款成功:退货退款已完成,查看具体退款金额
32
 			  7、退货退款成功:退货退款已完成,查看具体退款金额
23
 			  -->
33
 			  -->
24
-          <view class="no-cs-tuihuo ">已发货仅退款成功,查看具体退款金额</view>
34
+          <!-- {{
35
+            refundorderDetail.refund_type == 1
36
+              ? "仅退款"
37
+              : refundorderDetail.refund_type == 2
38
+              ? "退货退款"
39
+              : ""
40
+          }} -->
41
+          <view
42
+            class="no-cs-tuihuo"
43
+            :class="[
44
+              storeRefundOrder && storeRefundOrder.status == 2
45
+                ? 'colorTav'
46
+                : '',
47
+            ]"
48
+            >{{ formatDataValue1("status") }}</view
49
+          >
25
           <!-- 退货退款成功 已发货仅退款成功-->
50
           <!-- 退货退款成功 已发货仅退款成功-->
26
-          <view class="content--tuihuo-icon">
51
+          <view
52
+            class="content--tuihuo-icon"
53
+            v-if="storeRefundOrder && storeRefundOrder.status != 0"
54
+          >
27
             <uni-icons
55
             <uni-icons
28
               type="right"
56
               type="right"
29
               size="26"
57
               size="26"
@@ -34,16 +62,24 @@
34
         </view>
62
         </view>
35
       </view>
63
       </view>
36
       <!-- 物流信息卡片  1、退货退款成功   2、退货退款失败 3、退货中 -->
64
       <!-- 物流信息卡片  1、退货退款成功   2、退货退款失败 3、退货中 -->
37
-      <view class="afterdetails-back mb-26" @click="handleWUliu">
65
+      <view
66
+        class="afterdetails-back mb-26"
67
+        @click="handleWUliu"
68
+        v-if="!storeRefundOrder && storeRefundOrder.delivery_id"
69
+      >
38
         <view class="back-tile">买家退货物流</view>
70
         <view class="back-tile">买家退货物流</view>
39
         <view class="back-bttom">
71
         <view class="back-bttom">
40
           <view class="image-box">
72
           <view class="image-box">
41
             <image src="/static/images/new_ui/kuaidi.png" mode="scaleToFill"
73
             <image src="/static/images/new_ui/kuaidi.png" mode="scaleToFill"
42
           /></view>
74
           /></view>
43
           <view class="content-back">
75
           <view class="content-back">
44
-            <view class="content-back-title">圆通快递</view>
76
+            <view class="content-back-title">{{
77
+              storeRefundOrder && storeRefundOrder.delivery_type
78
+            }}</view>
45
             <view class="content-back-text">
79
             <view class="content-back-text">
46
-              <view class="no-cs">ZT3456789098765</view>
80
+              <view class="no-cs">{{
81
+                storeRefundOrder && storeRefundOrder.delivery_id
82
+              }}</view>
47
               <view class="content-icon">
83
               <view class="content-icon">
48
                 <uni-icons
84
                 <uni-icons
49
                   type="right"
85
                   type="right"
@@ -57,9 +93,13 @@
57
         </view>
93
         </view>
58
       </view>
94
       </view>
59
       <view class="afterdetails-card">
95
       <view class="afterdetails-card">
60
-        <afterCardDetail class="mb-26"></afterCardDetail>
96
+        <afterCardDetail
97
+          class="mb-26"
98
+          :items="refundorderDetail"
99
+          :storeRefundItem="storeRefundOrder"
100
+        ></afterCardDetail>
61
       </view>
101
       </view>
62
-      <view class="record-content">
102
+      <!-- <view class="record-content">
63
         <view class="record-title">协商记录</view>
103
         <view class="record-title">协商记录</view>
64
         <view class="record-icon">
104
         <view class="record-icon">
65
           <uni-icons
105
           <uni-icons
@@ -69,13 +109,61 @@
69
             class="arrow_right_log"
109
             class="arrow_right_log"
70
           ></uni-icons>
110
           ></uni-icons>
71
         </view>
111
         </view>
72
-      </view>
112
+      </view> -->
73
     </view>
113
     </view>
74
     <!-- 1、未发货仅退款  3、退货退款【退货中、退货审核中】 -->
114
     <!-- 1、未发货仅退款  3、退货退款【退货中、退货审核中】 -->
75
-    <view class="btn-list" v-if="true">
76
-      <view class="btn quxiao"> 拒绝退款 </view>
77
-      <view class="btn primary"> 同意退款 </view>
115
+    <!-- `status`  '状态 0:待审核 -1:审核未通过 1:待退货 2:待收货 3:已退款', -->
116
+    <!-- {{
117
+                scope.row.status == 3 ||
118
+                scope.row.status == -1 ||
119
+                scope.row.order.douhuomall == 1
120
+                  ? "售后进度"
121
+                  : "审核"
122
+              }} -->
123
+    <view class="btn-list" v-if="getBtnAuth">
124
+      <view
125
+        class="btn quxiao"
126
+        @click="onHandleclick(storeRefundOrder, 'reject')"
127
+      >
128
+        拒绝退款
129
+      </view>
130
+      <view
131
+        class="btn primary"
132
+        @click="onHandleclick(storeRefundOrder, 'agree')"
133
+      >
134
+        同意退款
135
+      </view>
136
+      <view
137
+        class="btn primary1"
138
+        @click="onHandleclick(storeRefundOrder, 'partAgree')"
139
+      >
140
+        部分退款并完成售后
141
+      </view>
78
     </view>
142
     </view>
143
+    <uni-popup
144
+      ref="popup"
145
+      type="center"
146
+      :animation="true"
147
+      :is-mask-click="false"
148
+    >
149
+      <view class="popup_data">
150
+        <view class="popup_data__headers">
151
+          <view class="popup_data__headers--title">{{ popUpTitle }}</view>
152
+          <uni-icons
153
+            type="closeempty"
154
+            class="custom_icons"
155
+            size="30"
156
+            @click="handleClose"
157
+          ></uni-icons>
158
+        </view>
159
+        <view class="popup_data__content">
160
+          <uni-easyinput type="textarea" autoHeight  placeholder="请输入拒绝原因,500字以内" v-model="refundData.fail_message" ></uni-easyinput>
161
+           </view>
162
+        <button type="primary" class="send-goods" @click="handleConfirm">
163
+          提交
164
+        </button>
165
+      </view>
166
+    </uni-popup>
79
   </view>
167
   </view>
80
 </template>
168
 </template>
81
 
169
 
@@ -83,6 +171,11 @@
83
 import headersVue from "../components/headers/headers.vue";
171
 import headersVue from "../components/headers/headers.vue";
84
 import afterCardDetail from "./afterCardDetail.vue";
172
 import afterCardDetail from "./afterCardDetail.vue";
85
 import { toQueryString } from "@/utils/index.js";
173
 import { toQueryString } from "@/utils/index.js";
174
+import { orderDetailApi, refundorderDetailApi } from "@/commit/order.js";
175
+import {
176
+  orderRefundFilterText,
177
+  orderRefundText,
178
+} from "../commodity/orderUtil.js";
86
 export default {
179
 export default {
87
   components: {
180
   components: {
88
     headersVue,
181
     headersVue,
@@ -92,13 +185,111 @@ export default {
92
     return {
185
     return {
93
       indexs: 0,
186
       indexs: 0,
94
       order_id: "",
187
       order_id: "",
188
+      refundorderDetail: {},
189
+      storeRefundOrder: {},
190
+      refund_order_id: "",
191
+      auditType: "",
192
+      refundData: {
193
+        status: 1, // 1.同意 -1.拒绝 2.部分退款
194
+        fail_message: "",
195
+        part_refund_price: "",
196
+        part_refund_message: "",
197
+        mer_refund_user: "",
198
+        mer_refund_address: "",
199
+        set_phone: "",
200
+      },
201
+      douhuomall: "",
202
+      popUpTitle: "拒绝退款",
95
     };
203
     };
96
   },
204
   },
97
-  onLoad(options) {
205
+  async onLoad(options) {
98
     this.indexs = options.indexs;
206
     this.indexs = options.indexs;
99
     this.order_id = options.order_id;
207
     this.order_id = options.order_id;
208
+    this.refund_order_id = options.refund_order_id;
209
+    await this.getRefundOrderDetails();
210
+    if (this.refund_order_id) {
211
+      await this.getAfterSaleListData(this.refund_order_id);
212
+    }
100
   },
213
   },
101
   methods: {
214
   methods: {
215
+    open(type = "bottom") {
216
+      this.$refs.popup.open(type);
217
+    },
218
+    handleClose() {
219
+      this.close();
220
+    },
221
+    close() {
222
+      this.refundData = {
223
+        status: 1, // 1.同意 -1.拒绝 2.部分退款
224
+        fail_message: "",
225
+        part_refund_price: "",
226
+        part_refund_message: "",
227
+        mer_refund_user: "",
228
+        mer_refund_address: "",
229
+        set_phone: "",
230
+      };
231
+      this.popUpTitle = "";
232
+      this.$refs.popup.close();
233
+    },
234
+    //提交
235
+    handleConfirm() {},
236
+    formatDataValue(type) {
237
+      const data = this.storeRefundOrder || {};
238
+      return orderRefundFilterText(data[type]) || "";
239
+    },
240
+    formatDataValue1(type) {
241
+      const data = this.storeRefundOrder || {};
242
+      return orderRefundText(data[type]) || "";
243
+    },
244
+    // 订单退单详情页面
245
+    async getRefundOrderDetails() {
246
+      uni.showLoading({
247
+        title: "加载中...",
248
+        mask: true,
249
+      });
250
+      try {
251
+        const res = await orderDetailApi(this.order_id);
252
+        if (res.data.status == 200) {
253
+          this.refundorderDetail = {
254
+            ...res.data.data,
255
+          };
256
+          // this.storeRefundOrder =
257
+          //   (this.refundorderDetail &&
258
+          //     this.refundorderDetail.StoreRefundOrder) ||
259
+          //   {};
260
+        }
261
+      } catch (error) {
262
+        if (error.message == "没有权限访问") {
263
+          this.refundorderDetail = {};
264
+        }
265
+      } finally {
266
+        uni.hideLoading();
267
+      }
268
+    },
269
+
270
+    async getAfterSaleListData(refund_order_id) {
271
+      try {
272
+        const res = await refundorderDetailApi(refund_order_id);
273
+        if (res.data.status == 200) {
274
+          const productData = res.data.data || {};
275
+          this.storeRefundOrder = productData;
276
+        }
277
+      } catch (error) {
278
+      } finally {
279
+        uni.hideLoading();
280
+      }
281
+    },
282
+    handleDetailInfo() {
283
+      uni.showModal({
284
+        content: "该功能正在升级中",
285
+
286
+        title: "温馨提示",
287
+        success: (result) => {},
288
+        fail: (res) => {},
289
+        complete: (res) => {},
290
+      });
291
+    },
292
+
102
     headerJump() {
293
     headerJump() {
103
       const params = {
294
       const params = {
104
         indexs: this.indexs,
295
         indexs: this.indexs,
@@ -106,18 +297,54 @@ export default {
106
       const urlParams = toQueryString(params);
297
       const urlParams = toQueryString(params);
107
       uni.redirectTo({ url: "./index?" + urlParams });
298
       uni.redirectTo({ url: "./index?" + urlParams });
108
     },
299
     },
109
-	handleWUliu(item){
110
-		const params = {
300
+    handleWUliu(item) {
301
+      const params = {
111
         status: 0,
302
         status: 0,
112
         indexs: this.indexs,
303
         indexs: this.indexs,
113
         formType: "shouhouDetail",
304
         formType: "shouhouDetail",
114
-        order_id: this.order_id  || "1212",
305
+        order_id: this.order_id,
306
+        refund_order_id: item.refund_order_id,
115
       };
307
       };
308
+
116
       const urlParams = toQueryString(params);
309
       const urlParams = toQueryString(params);
310
+      if (!this.refundorderDetail.delivery_id) return;
117
       uni.redirectTo({
311
       uni.redirectTo({
118
         url: `../commodity/logisticsInformationDetail?${urlParams}`,
312
         url: `../commodity/logisticsInformationDetail?${urlParams}`,
119
       });
313
       });
120
-	}
314
+    },
315
+    onHandleclick(item, type) {
316
+      this.auditType = type;
317
+      // 1.同意 -1.拒绝 2.部分退款
318
+      this.open();
319
+      if (type == "reject") {
320
+        //拒绝
321
+        this.refundData.status = -1;
322
+        this.popUpTitle = "拒绝退款";
323
+      } else if (type == "agree") {
324
+        //通过
325
+        this.refundData.status = 1;
326
+        this.popUpTitle = "同意退款";
327
+      } else if (type == "partAgree") {
328
+        //部分退款并完成售后
329
+        this.refundData.status = 2;
330
+        this.popUpTitle = "部分退款并完成售后";
331
+      }
332
+    },
333
+  },
334
+  computed: {
335
+    getBtnAuth() {
336
+      if (
337
+        (this.storeRefundOrder.refund_type == 2 &&
338
+          (this.storeRefundOrder.status == 1 ||
339
+            this.storeRefundOrder.status == 2)) ||
340
+        (this.storeRefundOrder.status == 0 &&
341
+          this.storeRefundOrder.refund_type == 1)
342
+      ) {
343
+        return true;
344
+      } else {
345
+        return false;
346
+      }
347
+    },
121
   },
348
   },
122
 };
349
 };
123
 </script>
350
 </script>
@@ -210,7 +437,7 @@ page {
210
         padding: 0 10rpx;
437
         padding: 0 10rpx;
211
         color: #999999;
438
         color: #999999;
212
         border: 2rpx solid #999999;
439
         border: 2rpx solid #999999;
213
-		border-radius: 4rpx;
440
+        border-radius: 4rpx;
214
       }
441
       }
215
     }
442
     }
216
     .afterdetails-tuihuo-bottom {
443
     .afterdetails-tuihuo-bottom {
@@ -222,9 +449,9 @@ page {
222
         font-weight: 400;
449
         font-weight: 400;
223
         font-size: 28rpx;
450
         font-size: 28rpx;
224
         color: #1f7cff;
451
         color: #1f7cff;
225
-		&.colorTav{
226
-			color: #999999;
227
-		}
452
+        &.colorTav {
453
+          color: #999999;
454
+        }
228
       }
455
       }
229
       .content--tuihuo-icon {
456
       .content--tuihuo-icon {
230
         width: 30rpx;
457
         width: 30rpx;
@@ -272,13 +499,18 @@ page {
272
   .quxiao {
499
   .quxiao {
273
     border: 1rpx solid #999999;
500
     border: 1rpx solid #999999;
274
     color: #333333;
501
     color: #333333;
275
-    width: 45%;
502
+    width: 25%;
276
     margin-left: 26rpx;
503
     margin-left: 26rpx;
277
   }
504
   }
278
   .primary {
505
   .primary {
279
     color: #ffffff;
506
     color: #ffffff;
280
     background: #1f7cff;
507
     background: #1f7cff;
281
-    width: 45%;
508
+    width: 25%;
509
+  }
510
+  .primary1 {
511
+    color: #ffffff;
512
+    background: #1f7cff;
513
+    width: 37%;
282
   }
514
   }
283
 }
515
 }
284
 .record-content {
516
 .record-content {
@@ -296,4 +528,50 @@ page {
296
     color: #333333;
528
     color: #333333;
297
   }
529
   }
298
 }
530
 }
531
+.popup_data {
532
+  padding: 26rpx 30rpx;
533
+  min-height: 700rpx;
534
+  max-height: 750rpx;
535
+  box-sizing: border-box;
536
+  overflow: hidden;
537
+  background: linear-gradient(180deg, #e5edff 0%, #ffffff 100%);
538
+  border-radius: 24rpx 24rpx 0 0;
539
+  &__headers {
540
+    // height: 40rpx;
541
+    display: flex;
542
+    justify-content: space-between;
543
+    align-items: center;
544
+    border-bottom: 2rpx solid #e5e5e5;
545
+    padding-bottom: 15rpx;
546
+    &--title {
547
+      flex: 1;
548
+      display: -webkit-box;
549
+      -webkit-box-orient: vertical;
550
+      -webkit-line-clamp: 1;
551
+      overflow: hidden;
552
+      justify-content: space-between;
553
+      padding-right: 60rpx;
554
+      font-size: 32rpx;
555
+      font-weight: 600;
556
+    }
557
+    .custom_icons {
558
+      flex-shrink: 0;
559
+    }
560
+  }
561
+  &__content {
562
+    max-height: 620rpx;
563
+    overflow-y: auto;
564
+  }
565
+}
566
+.send-goods {
567
+  height: 78rpx;
568
+  // margin: 0 32rpx;
569
+  font-weight: 400;
570
+  font-size: 30rpx;
571
+  color: #ffffff;
572
+  display: flex;
573
+  justify-content: center;
574
+  align-items: center;
575
+  margin-top: 32rpx;
576
+}
299
 </style>
577
 </style>

+ 7 - 1
shop/afterSalesManagement/components/search/search.vue

@@ -10,7 +10,7 @@
10
         class="search__input"
10
         class="search__input"
11
         v-model="searchValue"
11
         v-model="searchValue"
12
         type="text"
12
         type="text"
13
-        placeholder="输入商品名称/商品ID"
13
+        :placeholder="placeholder"
14
       />
14
       />
15
       <button class="search__btn" @click="haandleSearch">搜索</button>
15
       <button class="search__btn" @click="haandleSearch">搜索</button>
16
     </view>
16
     </view>
@@ -19,6 +19,12 @@
19
 
19
 
20
 <script>
20
 <script>
21
 export default {
21
 export default {
22
+  props: {
23
+    placeholder: {
24
+      type: String,
25
+      default: "请输入搜索内容"
26
+    }
27
+  },
22
   data() {
28
   data() {
23
     return {
29
     return {
24
       searchValue: ""
30
       searchValue: ""

+ 6 - 6
shop/afterSalesManagement/components/tablist.vue

@@ -19,9 +19,9 @@
19
           >
19
           >
20
             <view class="tile-box">
20
             <view class="tile-box">
21
               <text class="name-box">{{ item.name }}</text>
21
               <text class="name-box">{{ item.name }}</text>
22
-              <!-- <text class="count">
23
-                {{ item.count || 0 }}
24
-              </text> -->
22
+              <text class="count" v-if="item.count>0">
23
+               ({{ item.count || 0 }})
24
+              </text>
25
             </view>
25
             </view>
26
           </view>
26
           </view>
27
         </view>
27
         </view>
@@ -156,12 +156,12 @@ export default {
156
           .tile-box {
156
           .tile-box {
157
             display: flex;
157
             display: flex;
158
             align-items: center;
158
             align-items: center;
159
-            flex-direction: column;
159
+            // flex-direction: column;
160
             .name-box {
160
             .name-box {
161
               padding-bottom: 13rpx;
161
               padding-bottom: 13rpx;
162
             }
162
             }
163
             .count {
163
             .count {
164
-              padding-bottom: 13rpx;
164
+              padding: 0 0rpx 12rpx;
165
             }
165
             }
166
           }
166
           }
167
         }
167
         }
@@ -188,7 +188,7 @@ export default {
188
 .active::after {
188
 .active::after {
189
   content: "";
189
   content: "";
190
   position: absolute;
190
   position: absolute;
191
-  width: 50rpx;
191
+  width: 80rpx;
192
   height: 8rpx;
192
   height: 8rpx;
193
   background-color: #1f7cff;
193
   background-color: #1f7cff;
194
   left: 0px;
194
   left: 0px;

+ 153 - 25
shop/afterSalesManagement/index.vue

@@ -3,28 +3,40 @@
3
     <headersVue headerTitle="售后管理" @headerJump="headerJump"></headersVue>
3
     <headersVue headerTitle="售后管理" @headerJump="headerJump"></headersVue>
4
     <view class="afterSalesManagement-content">
4
     <view class="afterSalesManagement-content">
5
       <view class="afterSalesManagement-content--top">
5
       <view class="afterSalesManagement-content--top">
6
+        <!-- placeholder="订单号/退货快递单号/收货人姓名、手机号" -->
6
         <searchVue
7
         <searchVue
7
           @search="search"
8
           @search="search"
8
           class="search-box"
9
           class="search-box"
9
-          placeholder="订单号/退货快递单号/收货人姓名、手机号"
10
+          placeholder="请输入订单号"
10
         ></searchVue>
11
         ></searchVue>
11
       </view>
12
       </view>
12
       <view class="afterSalesManagement-content--tab">
13
       <view class="afterSalesManagement-content--tab">
13
-        <tabsVue :category="dataList" :currentActive="currentActive" @tabs="tabsHandleClick" />
14
+        <tabsVue
15
+          :category="dataList"
16
+          :currentActive="currentActive"
17
+          @tabs="tabsHandleClick"
18
+        />
14
       </view>
19
       </view>
15
     </view>
20
     </view>
16
     <view class="afterSalesManagement-list">
21
     <view class="afterSalesManagement-list">
17
-      <template v-for="item in 10">
22
+      <template v-if="list.length > 0">
18
         <afterCardListInfo
23
         <afterCardListInfo
19
-          :key="item"
24
+          v-for="(item, index) in list"
25
+          :key="item.mer_id + '_index_' + index"
20
           class="afterSalesManagement-list__card"
26
           class="afterSalesManagement-list__card"
27
+          :detailItem="item"
28
+          :index="index"
21
           @viewWuLiu="viewWuLiu"
29
           @viewWuLiu="viewWuLiu"
22
-		  @viewDetail="viewDetail"
30
+          @viewDetail="viewDetail"
23
         ></afterCardListInfo>
31
         ></afterCardListInfo>
24
       </template>
32
       </template>
33
+      <template v-else>
34
+        <emptyDataVue />
35
+      </template>
25
     </view>
36
     </view>
26
     <view
37
     <view
27
       class=""
38
       class=""
39
+      v-if="tihsi == 0 && list.length > 0"
28
       style="margin: 60rpx 0 30rpx 0; color: #999999; font-size: 26rpx"
40
       style="margin: 60rpx 0 30rpx 0; color: #999999; font-size: 26rpx"
29
     >
41
     >
30
       —— 已经到最底部了哦 ——
42
       —— 已经到最底部了哦 ——
@@ -38,77 +50,193 @@ import tabsVue from "./components/tablist.vue";
38
 import searchVue from "./components/search/search.vue";
50
 import searchVue from "./components/search/search.vue";
39
 import afterCardListInfo from "./afterCardListInfo.vue";
51
 import afterCardListInfo from "./afterCardListInfo.vue";
40
 import { toQueryString } from "@/utils/index.js";
52
 import { toQueryString } from "@/utils/index.js";
41
-
53
+import { getAfterSaleList } from "@/commit/order.js";
54
+import emptyDataVue from "../components/emptyData/emptyData.vue";
42
 export default {
55
 export default {
43
   components: {
56
   components: {
44
     headersVue,
57
     headersVue,
45
     tabsVue,
58
     tabsVue,
46
     searchVue,
59
     searchVue,
47
     afterCardListInfo,
60
     afterCardListInfo,
61
+    emptyDataVue,
48
   },
62
   },
49
   data() {
63
   data() {
50
     return {
64
     return {
51
       tihsi: 0,
65
       tihsi: 0,
52
       currentActive: 0,
66
       currentActive: 0,
67
+      indexs: 0,
68
+      refund_order_sn: "",
69
+      date: "",
70
+      page: 1,
71
+      limit: 10,
72
+      order_sn: "",
73
+      refund_type: "",
74
+      list: [],
75
+      tihsi: "",
76
+      is_panudn: true,
77
+      status: "",
53
       dataList: [
78
       dataList: [
54
         {
79
         {
55
-          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154904247.png",
56
           name: "全部",
80
           name: "全部",
81
+          count: 0,
57
         },
82
         },
58
         {
83
         {
59
-          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154932244.png",
60
           name: "审核中",
84
           name: "审核中",
85
+          count: 0,
61
         },
86
         },
62
         {
87
         {
63
-          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154949118.png",
64
           name: "处理中",
88
           name: "处理中",
89
+          count: 0,
65
         },
90
         },
66
         {
91
         {
67
-          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812155008586.png",
68
           name: "已完成",
92
           name: "已完成",
93
+          count: 0,
69
         },
94
         },
70
       ],
95
       ],
71
     };
96
     };
72
   },
97
   },
73
-  onPullDownRefresh() {},
98
+  onPullDownRefresh() {
99
+    uni.showLoading({
100
+      title: "加载中",
101
+    });
102
+    this.page = 1;
103
+    this.is_panudn = true;
104
+    this.list = [];
105
+    this.getAfterSaleListData();
106
+  },
74
   onReachBottom() {
107
   onReachBottom() {
75
-    console.log("onReachBottom");
108
+    if (this.is_panudn == true) {
109
+      this.page++;
110
+      this.getAfterSaleListData();
111
+    } else {
112
+      return;
113
+    }
76
   },
114
   },
77
 
115
 
78
-  onLoad(options) {
79
-	// console.log(options,"tabsHandleClicktabsHandleClicktabsHandleClicktabsHandleClick");
80
-    this.currentActive = options.tabIndex ||  options.index || "0";
116
+  async onLoad(options) {
117
+    // console.log(options,"tabsHandleClicktabsHandleClicktabsHandleClicktabsHandleClick");
118
+    const tabIndex = options.tabIndex || options.indexs || options.index || "0";
119
+    this.indexs = tabIndex;
120
+    this.currentActive = tabIndex;
121
+    // 0全部  1审核中  2处理中  3已完成
122
+    if (this.currentActive == 0) {
123
+      //全部
124
+      this.status = "";
125
+    } else if (this.currentActive == 1) {
126
+      //审核中 0
127
+      this.status = 0;
128
+    } else if (this.currentActive == 2) {
129
+      //2处理中 2
130
+      this.status = 2;
131
+    } else if (this.currentActive == 3) {
132
+      //3已完成
133
+      this.status = 3;
134
+    } else {
135
+      this.status = "";
136
+    }
137
+    await this.getAfterSaleListData();
81
   },
138
   },
82
   methods: {
139
   methods: {
83
     headerJump() {
140
     headerJump() {
84
       uni.switchTab({ url: "/pages/ordermanagement/index" });
141
       uni.switchTab({ url: "/pages/ordermanagement/index" });
85
     },
142
     },
86
-    search(val) {},
143
+  async  search(val) {
144
+      this.order_sn = val;
145
+        await this.orderList();
146
+    },
147
+
148
+    async getAfterSaleListData() {
149
+      const params = {
150
+        refund_order_sn: this.refund_order_sn,
151
+        status: this.status,
152
+        date: this.date,
153
+        page: this.page,
154
+        limit: this.limit,
155
+        order_sn: this.order_sn,
156
+        refund_type: this.refund_type,
157
+      };
158
+       uni.showLoading({
159
+      title: "加载中",
160
+    });
161
+      try {
162
+        const res = await getAfterSaleList(params);
163
+        uni.stopPullDownRefresh();
164
+        if (res.data.status == 200) {
165
+          this.tihsi = res.data.data.count || 0;
166
+          if (res.data.data.count > 0) {
167
+            if (this.page == 1) {
168
+              this.list = res.data.data.list;
169
+            } else {
170
+              this.list = this.list.concat(res.data.data.list);
171
+            }
172
+          } else {
173
+            if (this.page == 1) {
174
+              this.list = [];
175
+            }
176
+            this.is_panudn = false;
177
+          }
178
+          const stat = res.data.data.stat || {};
179
+          this.dataList[0].count = stat.all || 0; //全部
180
+          this.dataList[1].count = stat.audit || 0; //审核中
181
+          this.dataList[2].count = stat.backgood || 0; //处理中
182
+          var num = stat.refuse || 0;
183
+          var num1 = stat.end || 0;
184
+          var num2 = stat.agree || 0;
185
+          this.dataList[3].count = num + num1 + num2 || 0; //已完成
186
+        }
187
+      } catch (error) {
188
+      } finally {
189
+        uni.hideLoading();
190
+      }
191
+    },
192
+
87
     viewWuLiu(item) {
193
     viewWuLiu(item) {
88
       const params = {
194
       const params = {
89
         status: 0,
195
         status: 0,
90
         indexs: this.currentActive,
196
         indexs: this.currentActive,
91
         formType: "shouhou",
197
         formType: "shouhou",
92
-        order_id: item.order_id || "1212",
198
+        order_id: item.order_id || "",
199
+           refund_order_id:item .refund_order_id,
93
       };
200
       };
94
       const urlParams = toQueryString(params);
201
       const urlParams = toQueryString(params);
95
       uni.redirectTo({
202
       uni.redirectTo({
96
         url: `../commodity/logisticsInformationDetail?${urlParams}`,
203
         url: `../commodity/logisticsInformationDetail?${urlParams}`,
97
       });
204
       });
98
     },
205
     },
99
-	viewDetail(item){
100
-		  const params = {
206
+    viewDetail(item) {
207
+      // console.log(item)
208
+      const params = {
101
         indexs: this.currentActive,
209
         indexs: this.currentActive,
102
-        order_id: item.order_id || "1212",
210
+        order_id: item.order_id ,
211
+        refund_order_id:item .refund_order_id,
103
       };
212
       };
213
+      // console.log(params,"paramsparamsparamsparamsparamsparams")
104
       const urlParams = toQueryString(params);
214
       const urlParams = toQueryString(params);
105
-	   uni.redirectTo({
215
+      uni.redirectTo({
106
         url: `./afterSalesDetail?${urlParams}`,
216
         url: `./afterSalesDetail?${urlParams}`,
107
       });
217
       });
108
-	},
109
-	tabsHandleClick(obj){
110
-		this.currentActive = obj.index;
111
-	}
218
+    },
219
+  async  tabsHandleClick(obj) {
220
+      this.currentActive = obj.index;
221
+      // console.log(obj, "tabsHandleClick");
222
+       // 0全部  1审核中  2处理中  3已完成
223
+    if (this.currentActive == 0) {
224
+      //全部
225
+      this.status = "";
226
+    } else if (this.currentActive == 1) {
227
+      //审核中 0
228
+      this.status = 0;
229
+    } else if (this.currentActive == 2) {
230
+      //2处理中 2
231
+      this.status = 2;
232
+    } else if (this.currentActive == 3) {
233
+      //3已完成
234
+      this.status = 3;
235
+    } else {
236
+      this.status = "";
237
+    }
238
+    await this.getAfterSaleListData();
239
+    },
112
   },
240
   },
113
 };
241
 };
114
 </script>
242
 </script>

+ 134 - 127
shop/commodity/components/changeDetailInfo/ItemsInsidePackage.vue

@@ -17,39 +17,48 @@
17
       </view>
17
       </view>
18
 
18
 
19
       <view class="popup_data__package__content">
19
       <view class="popup_data__package__content">
20
-          <view class="detail-send-order-product">
21
-            <view class="detail-send-order-product__wrapper">
22
-              <view
23
-                class="detail-send-order-content"
24
-                v-for="(items, indexs) in orderProduct"
25
-                :key="indexs"
26
-              >
27
-                <view class="detail-send-order-content-left">
28
-                  <view class="detail-send-order-content-left-img">
29
-                    <image
30
-                      v-if="items.image"
31
-                      :src="items.image"
32
-                      mode="widthFix"
33
-                    ></image>
34
-                    <text v-else>暂无照片</text>
35
-                  </view>
20
+        <view class="detail-send-order-product">
21
+          <view class="detail-send-order-product__wrapper">
22
+            <view
23
+              class="detail-send-order-content"
24
+              v-for="(items, indexs) in orderProduct"
25
+              :key="indexs"
26
+            >
27
+              <view class="detail-send-order-content-left">
28
+                <view
29
+                  class="detail-send-order-content-left-img"
30
+                  v-if="items.cart_info"
31
+                >
32
+                  <image
33
+                    v-if="items.cart_info.product.image"
34
+                    :src="items.cart_info.product.image"
35
+                    mode="widthFix"
36
+                  ></image>
37
+                  <text v-else>暂无照片</text>
36
                 </view>
38
                 </view>
37
-                <view class="detail-send-order-content-middle">
38
-                  <view class="detail-send-order-content-middle-top">
39
-                    三个苹果 纯天然浓缩果蔬汁清汁苹果
40
-                  </view>
41
-                  	<view class="detail-send-order-content-middle-top-bot" >
42
-					12sdf
43
-				</view>
39
+              </view>
40
+              <view class="detail-send-order-content-middle">
41
+                <view
42
+                  class="detail-send-order-content-middle-top"
43
+                  v-if="items.cart_info"
44
+                >
45
+                  {{ items.cart_info.product.store_name }}
46
+                </view>
47
+                <view
48
+                  class="detail-send-order-content-middle-top-bot"
49
+                  v-if="items.cart_info"
50
+                >
51
+                  {{ items.cart_info.productAttr.sku || "" }}
44
                 </view>
52
                 </view>
45
-                <view class="detail-send-order-content-right">
46
-                  <view class="detail-send-order-yi-in-neibu-right-in">
47
-                   ×5
48
-                  </view>
53
+              </view>
54
+              <view class="detail-send-order-content-right">
55
+                <view class="detail-send-order-yi-in-neibu-right-in">
56
+                  ×{{ items.product_num || 0 }}
49
                 </view>
57
                 </view>
50
               </view>
58
               </view>
51
             </view>
59
             </view>
52
           </view>
60
           </view>
61
+        </view>
53
       </view>
62
       </view>
54
     </view>
63
     </view>
55
   </uni-popup>
64
   </uni-popup>
@@ -61,48 +70,48 @@ export default {
61
   props: {
70
   props: {
62
     title: {
71
     title: {
63
       type: String,
72
       type: String,
64
-      default: "包裹内商品"
73
+      default: "包裹内商品",
65
     },
74
     },
66
     value: {
75
     value: {
67
       type: [String, Number],
76
       type: [String, Number],
68
-      default: ""
77
+      default: "",
69
     },
78
     },
70
     defaultProps: {
79
     defaultProps: {
71
       type: Object,
80
       type: Object,
72
       default: () => {
81
       default: () => {
73
         return {
82
         return {
74
           props: "text",
83
           props: "text",
75
-          value: "value"
84
+          value: "value",
76
         };
85
         };
77
-      }
86
+      },
78
     },
87
     },
79
-    selectData: {
88
+    orderProduct: {
80
       type: Array,
89
       type: Array,
81
       default: () => {
90
       default: () => {
82
         return [];
91
         return [];
83
-      }
84
-    }
92
+      },
93
+    },
85
   },
94
   },
86
   data() {
95
   data() {
87
     return {
96
     return {
88
       selectId: "",
97
       selectId: "",
89
-      orderProduct: [
90
-        {
91
-          image:
92
-            "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
93
-        },
94
-		{
95
-		  image:
96
-		    "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
97
-		},
98
-		{
99
-		  image:
100
-		    "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
101
-		}, {
102
-          image:
103
-            "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
104
-        }
105
-      ]
98
+      //   orderProduct: [
99
+      //     {
100
+      //       image:
101
+      //         "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
102
+      //     },
103
+      // {
104
+      //   image:
105
+      //     "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
106
+      // },
107
+      // {
108
+      //   image:
109
+      //     "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
110
+      // }, {
111
+      //       image:
112
+      //         "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
113
+      //     }
114
+      //   ]
106
     };
115
     };
107
   },
116
   },
108
   watch: {
117
   watch: {
@@ -110,8 +119,8 @@ export default {
110
       handler(val) {
119
       handler(val) {
111
         this.selectId = val;
120
         this.selectId = val;
112
       },
121
       },
113
-      immediate: true
114
-    }
122
+      immediate: true,
123
+    },
115
   },
124
   },
116
   mounted() {
125
   mounted() {
117
     this.selectId = this.value;
126
     this.selectId = this.value;
@@ -137,8 +146,8 @@ export default {
137
     },
146
     },
138
     close() {
147
     close() {
139
       this.$refs.popupRefs.close();
148
       this.$refs.popupRefs.close();
140
-    }
141
-  }
149
+    },
150
+  },
142
 };
151
 };
143
 </script>
152
 </script>
144
 
153
 
@@ -158,7 +167,7 @@ export default {
158
     justify-content: space-between;
167
     justify-content: space-between;
159
     align-items: center;
168
     align-items: center;
160
     // border-bottom: 2rpx solid #e5e5e5;
169
     // border-bottom: 2rpx solid #e5e5e5;
161
-	 // background: linear-gradient(180deg, #e5edff 0%, #ffffff 100%);
170
+    // background: linear-gradient(180deg, #e5edff 0%, #ffffff 100%);
162
     padding-bottom: 15rpx;
171
     padding-bottom: 15rpx;
163
     &--title {
172
     &--title {
164
       flex: 1;
173
       flex: 1;
@@ -179,78 +188,76 @@ export default {
179
     // border: 2rpx solid #f00;
188
     // border: 2rpx solid #f00;
180
     max-height: 690rpx;
189
     max-height: 690rpx;
181
     overflow-y: auto;
190
     overflow-y: auto;
182
-	margin-bottom: 0rpx;
183
-	.detail-send-order-product{
184
-		width: calc(100% - 54rpx);
185
-		margin:0 26rpx 30rpx;
186
-		&__wrapper{
187
-			
188
-			display: flex;
189
-			flex-direction: column;
190
-			justify-content: space-between;
191
-			align-items: flex-end;
192
-			.detail-send-order-content{
193
-				width:100%;
194
-				display: flex;
195
-				align-items: center;
196
-				padding: 26rpx  0;
197
-				gap:20rpx;
198
-				border-bottom:2rpx solid #e5e5e5;
199
-				&:last-child{
200
-					border-bottom: 0;
201
-				}
202
-				.detail-send-order-content-left{
203
-					height: 100%;
204
-					display: flex;
205
-					align-items: flex-start;
206
-					justify-content: space-between;
207
-					&-img{
208
-						width: 158rpx;
209
-						height: 158rpx;
210
-						background-color: #eee;
211
-						overflow: hidden;
212
-						border-radius: 10rpx;
213
-						flex-shrink: 0;
214
-						image {
215
-							width: 100%;
216
-							height: auto;
217
-						}
218
-					}
219
-				}
220
-	}
221
-	     }
222
-		 .detail-send-order-content-middle-top-bot{
223
-			 font-weight: 400;
224
-			 font-size: 22rpx;
225
-			 color: #666666;
226
-		 }
227
-		 .detail-send-order-content-middle{
228
-			 height: 100%;
229
-			 flex: 1;
230
-			 &-top{
231
-			 	width: 100%;
232
-			 	font-weight: 400;
233
-			 	color: #333333;
234
-			 	font-size: 28rpx;
235
-			 	display: -webkit-box;
236
-			 	-webkit-box-orient: vertical;
237
-			 	-webkit-line-clamp: 1;
238
-			 	overflow: hidden;
239
-			 	justify-content: space-between;
240
-			 }
241
-		 }
242
-	  
243
-	  .detail-send-order-content-right{
191
+    margin-bottom: 0rpx;
192
+    .detail-send-order-product {
193
+      width: calc(100% - 54rpx);
194
+      margin: 0 26rpx 30rpx;
195
+      &__wrapper {
196
+        display: flex;
197
+        flex-direction: column;
198
+        justify-content: space-between;
199
+        align-items: flex-end;
200
+        .detail-send-order-content {
201
+          width: 100%;
202
+          display: flex;
203
+          align-items: center;
204
+          padding: 26rpx 0;
205
+          gap: 20rpx;
206
+          border-bottom: 2rpx solid #e5e5e5;
207
+          &:last-child {
208
+            border-bottom: 0;
209
+          }
210
+          .detail-send-order-content-left {
211
+            height: 100%;
212
+            display: flex;
213
+            align-items: flex-start;
214
+            justify-content: space-between;
215
+            &-img {
216
+              width: 158rpx;
217
+              height: 158rpx;
218
+              background-color: #eee;
219
+              overflow: hidden;
220
+              border-radius: 10rpx;
221
+              flex-shrink: 0;
222
+              image {
223
+                width: 100%;
224
+                height: auto;
225
+              }
226
+            }
227
+          }
228
+        }
229
+      }
230
+      .detail-send-order-content-middle-top-bot {
231
+        font-weight: 400;
232
+        font-size: 22rpx;
233
+        color: #666666;
234
+      }
235
+      .detail-send-order-content-middle {
236
+        height: 100%;
237
+        flex: 1;
238
+        &-top {
239
+          width: 100%;
240
+          font-weight: 400;
241
+          color: #333333;
242
+          font-size: 28rpx;
243
+          display: -webkit-box;
244
+          -webkit-box-orient: vertical;
245
+          -webkit-line-clamp: 1;
246
+          overflow: hidden;
247
+          justify-content: space-between;
248
+        }
249
+      }
244
 
250
 
245
-		  .detail-send-order-yi-in-neibu-right-in{
246
-			  font-weight: 400;
247
-			  font-size: 24rpx;
248
-			  color: #666666;
249
-			  text-align: center;
250
-			  padding-top:5rpx;                                                               
251
-		  }
252
-	  }
253
-	   }
251
+      .detail-send-order-content-right {
252
+        .detail-send-order-yi-in-neibu-right-in {
253
+          font-weight: 400;
254
+          font-size: 24rpx;
255
+          color: #666666;
256
+          text-align: center;
257
+          padding-top: 5rpx;
258
+        }
259
+      }
260
+    }
254
   }
261
   }
255
 }
262
 }
256
 </style>
263
 </style>

+ 1 - 1
shop/commodity/components/changeDetailInfo/changeLogisticsInformation.vue

@@ -30,7 +30,7 @@
30
     </view>
30
     </view>
31
     <view class="card-info-bottom">
31
     <view class="card-info-bottom">
32
       <view class="card-top">
32
       <view class="card-top">
33
-        <view class="card-title">变更送货人信息</view>
33
+        <view class="card-title">变更物流信息</view>
34
       </view>
34
       </view>
35
       <view class="card-content">
35
       <view class="card-content">
36
         <fillLogisticsInfoVue
36
         <fillLogisticsInfoVue

+ 32 - 6
shop/commodity/components/fillLogisticsInfo.vue

@@ -17,7 +17,7 @@
17
           @click="handleQrcode"
17
           @click="handleQrcode"
18
         ></image>
18
         ></image>
19
       </reInputItemVue>
19
       </reInputItemVue>
20
-      <popupSelectItemVue @click-tabs="handleClick"></popupSelectItemVue>
20
+      <popupSelectItemVue @click-tabs="handleClick" :selectData="ruleOptions"></popupSelectItemVue>
21
     </view>
21
     </view>
22
   </view>
22
   </view>
23
 </template>
23
 </template>
@@ -35,17 +35,30 @@ export default {
35
     isShowTitle: {
35
     isShowTitle: {
36
       type: Boolean,
36
       type: Boolean,
37
       default: true
37
       default: true
38
+    },
39
+    ruleOptions:{
40
+      type: Array,
41
+      default: () => []
38
     }
42
     }
39
   },
43
   },
44
+
40
   data() {
45
   data() {
41
-    return {};
46
+    return {
47
+      formData: {
48
+        delivery_id:"",//快递单号
49
+        delivery_name:"",//快递公司value
50
+        delivery_type:1,//发货类型
51
+      }
52
+    };
42
   },
53
   },
43
   methods: {
54
   methods: {
55
+
56
+    //TODO 扫码识别
44
     handleQrcode() {
57
     handleQrcode() {
45
       console.log("handleQrcode");
58
       console.log("handleQrcode");
46
       uni.showModal({
59
       uni.showModal({
47
         title: "提示",
60
         title: "提示",
48
-        content: "扫码功能快马加鞭开发中....",
61
+        content: "正在升级中...",
49
         success(res) {
62
         success(res) {
50
           if (res.confirm) {
63
           if (res.confirm) {
51
             console.log("用户点击了确定");
64
             console.log("用户点击了确定");
@@ -56,15 +69,28 @@ export default {
56
       });
69
       });
57
     },
70
     },
58
     changeInput(val) {
71
     changeInput(val) {
59
-      console.log(val, "物流单号");
72
+      this.formData.delivery_id = val;
73
+       this.chageValue({
74
+       delivery_id: this.formData.delivery_id
75
+      })
60
     },
76
     },
61
     handleSelect() {
77
     handleSelect() {
62
       this.$refs.popup.open();
78
       this.$refs.popup.open();
63
     },
79
     },
64
     handleClick({ selected, item, index }) {
80
     handleClick({ selected, item, index }) {
65
       this.logisticsValue = selected;
81
       this.logisticsValue = selected;
66
-      this.logisticsLabel = item.text;
67
-      console.log(selected, item, index);
82
+      this.logisticsLabel = item.text || item.label  ;
83
+      this.formData.delivery_name = item.value;
84
+      // console.log(selected, item, index,this.logisticsLabel);
85
+      // this.$emit("click-tabs-", { selected, item, index });
86
+      this.chageValue({
87
+        delivery_name: this.formData.delivery_name 
88
+      })
89
+    },
90
+    chageValue(val){
91
+      // console.log(this.formData)
92
+      this.$emit("changeHandle",this.formData)
93
+
68
     }
94
     }
69
   },
95
   },
70
   computed: {
96
   computed: {

+ 24 - 17
shop/commodity/components/orderDetail/logisticInfocardJianjie.vue

@@ -1,19 +1,19 @@
1
 <template>
1
 <template>
2
   <view class="details-back-url-card" @click="goToLogistic">
2
   <view class="details-back-url-card" @click="goToLogistic">
3
-    <view class="order-list-yi-bot-xiangxi custom_top" v-if="true">
3
+    <view class="order-list-yi-bot-xiangxi custom_top" v-if="![5].includes(detail.status)">
4
       <view class="order-list-yi-bot-xiangxier custom_center">
4
       <view class="order-list-yi-bot-xiangxier custom_center">
5
         <view class="dot-line"></view>
5
         <view class="dot-line"></view>
6
       </view>
6
       </view>
7
-      <view class="order-list-yi-bot-xadasrfe">
8
-        <view class="order-list-yi-bot-xadasrfe-top"> 运输中 </view>
9
-		<view class="order-list-yi-bot-xadasrfe-bot custom-txt">
10
-		  <view class=""> 圆通快递 </view>
7
+      <view class="order-list-yi-bot-xadasrfe" >
8
+        <view class="order-list-yi-bot-xadasrfe-top"> {{!detail.delivery_id?"待发货":logisticText}} </view>
9
+		<view class="order-list-yi-bot-xadasrfe-bot custom-txt" v-if="detail.delivery_id">
10
+		  <view class=""> {{detail.delivery_name}} </view>
11
 		  <view class="" style="margin-left: 32rpx">
11
 		  <view class="" style="margin-left: 32rpx">
12
-		  YT1234567890987 
12
+		  {{detail.delivery_id}}
13
 		  </view>
13
 		  </view>
14
 		</view>
14
 		</view>
15
       </view>
15
       </view>
16
-	  <uni-icons type="right" size="20" color="#333333" class="arrow_right_log"></uni-icons>
16
+	  <uni-icons type="right" size="20" color="#333333" class="arrow_right_log" v-show="this.detail.delivery_id"></uni-icons>
17
     </view>
17
     </view>
18
     <view class="order-list-yi-bot-xiangxi">
18
     <view class="order-list-yi-bot-xiangxi">
19
       <view class="order-list-yi-bot-xiangxier">
19
       <view class="order-list-yi-bot-xiangxier">
@@ -25,10 +25,10 @@
25
       </view>
25
       </view>
26
       <view class="order-list-yi-bot-xadasrfe">
26
       <view class="order-list-yi-bot-xadasrfe">
27
         <view class="order-list-yi-bot-xadasrfe-top">
27
         <view class="order-list-yi-bot-xadasrfe-top">
28
-          北京市通州区经开壹中心14号楼9层北京市通州区经开壹中心14号楼9层
28
+          {{detail.user_address}}
29
         </view>
29
         </view>
30
         <view class="order-list-yi-bot-xadasrfe-bot">
30
         <view class="order-list-yi-bot-xadasrfe-bot">
31
-          <view class=""> 郭郭备份 </view>
31
+          <view class=""> {{detail.real_name}} </view>
32
           <view class="" style="margin-left: 32rpx">
32
           <view class="" style="margin-left: 32rpx">
33
             {{ phone_user }}
33
             {{ phone_user }}
34
           </view>
34
           </view>
@@ -42,24 +42,31 @@
42
 //订单详情物流简洁卡片user_phone
42
 //订单详情物流简洁卡片user_phone
43
 import { MaskRules } from "@/utils/index.js";
43
 import { MaskRules } from "@/utils/index.js";
44
 export default {
44
 export default {
45
+  props:{
46
+    detail:{
47
+      type:Object,
48
+      default:()=>{}
49
+    },
50
+    logisticText:{
51
+      type:String,
52
+      default:""
53
+    }
54
+  },
45
   data() {
55
   data() {
46
     return {
56
     return {
47
-      user_phone: "18533332222"
57
+      
48
     };
58
     };
49
   },
59
   },
50
   methods:{
60
   methods:{
51
 	  goToLogistic(){
61
 	  goToLogistic(){
52
-		  console.log("去往物流信息")
62
+      if(!this.detail.delivery_id)return;
53
 		  this.$emit("goToLogistic")
63
 		  this.$emit("goToLogistic")
54
-		  // uni.redirectTo({
55
-		  // 	url: './order?status=' + this.status + '&index=' + this.indexs
56
-		  // 	// url: './order'
57
-		  // });
58
 	  }
64
 	  }
59
   },
65
   },
60
   computed: {
66
   computed: {
61
     phone_user() {
67
     phone_user() {
62
-      return MaskRules.mobile(this.user_phone);
68
+      const user_phone = this.detail.user_phone || ""
69
+      return MaskRules.mobile(user_phone);
63
     }
70
     }
64
   }
71
   }
65
 };
72
 };
@@ -81,7 +88,7 @@ export default {
81
     display: flex;
88
     display: flex;
82
     align-items: flex-start;
89
     align-items: flex-start;
83
 	&.custom_top{
90
 	&.custom_top{
84
-		padding-bottom:32rpx;
91
+		padding-bottom:15rpx;
85
 	}
92
 	}
86
     .arrow_right_log{
93
     .arrow_right_log{
87
 		position: absolute;
94
 		position: absolute;

+ 247 - 103
shop/commodity/components/orderDetail/orderCardDetailInfo.vue

@@ -1,126 +1,224 @@
1
 <template>
1
 <template>
2
-		<view class="details-xiangqing">
3
-			<view class="details-xiangqing-top">
4
-					<view class="details-xiangqing-top-let">
5
-						<image :src="orderProduct.mer_avatar" mode="widthFix"></image>
6
-					</view>
7
-					<view class="details-xiangqing-top-in">
8
-						{{orderProduct.mer_name}}
9
-					</view>
10
-					<view class="details-xiangqing-top-rigt">
11
-						  <uni-icons type="right" size="26" color="#999999" class="arrow_right_log"></uni-icons>
12
-						</image>
13
-					</view>
14
-				</view>
15
-							<view class="details-xiangqing-niri">
16
-				<view class="order-list-yi-in-neibu"  v-for="(item,index) in orderProduct.procductList" :key="index">
17
-					<view class="order-list-yi-in-neibu-left">
18
-						<view class="order-list-yi-in-neibu-left-img">
19
-							<image :src="item.image" mode="widthFix"></image>
20
-						</view>
21
-						<view class="order-list-yi-in-neibu-left-url">
22
-							<view class="order-list-yi-in-neibu-left-url-top">
23
-								{{item.store_name}}
24
-							</view>
25
-						</view>
26
-					</view>
27
-					<view class="order-list-yi-in-neibu-right">
28
-						<view class="order-list-yi-in-neibu-right-im">
29
-							¥{{item.pay_price}}
30
-						</view>
31
-						<view class="order-list-yi-in-neibu-right-in">
32
-							共{{item.cart_num}}件
33
-						</view>
34
-					</view>
35
-				</view>
36
-				
37
-				<view v-if="orderProduct.status=='0'" class="btn-cls" @click="sendGoods">
38
-					立即发货
39
-				</view>
40
-				<view class="details-xiangqing-shujussss">
41
-					<view class="details-xiangqing-shujussss-yis">
42
-						<view class="">
43
-							商品总额
44
-						</view>
45
-						<view class="">
46
-							+¥{{orderProduct.pay_price}}
47
-						</view>
48
-					</view>
49
-					<view class="details-xiangqing-shujussss-yis">
50
-						<view class="">
51
-							优惠金额
52
-						</view>
53
-						<view class="">
54
-							-¥0.00
55
-						</view>
56
-					</view>
57
-					<view class="details-xiangqing-shujussss-yis">
58
-						<view class="">
59
-							订单编号
60
-						</view>
61
-						<view class="" @click="handleCopy(orderProduct.order_id)">
62
-							{{orderProduct.order_id}} | 复制
63
-						</view>
64
-					</view>
65
-					<view class="details-xiangqing-shujussss-yis">
66
-						<view class="">
67
-							下单时间
68
-						</view>
69
-						<view class="">
70
-							{{orderProduct.pay_time}}
71
-						</view>
72
-					</view>
73
-					<view class="details-xiangqing-shujussss-yis">
74
-						<view class="">
75
-							支付方式
76
-						</view>
77
-						<view class="">
78
-							{{orderProduct.pay_type}}
79
-						</view>
80
-					</view>
81
-				</view>
82
-			</view>
83
-			</view>
2
+  <view class="details-xiangqing">
3
+    <view class="details-xiangqing-top">
4
+      <view
5
+        class="details-xiangqing-top-let"
6
+        v-if="detail.user && detail.user.avatar"
7
+      >
8
+        <!-- TODO:头像 -->
9
+        <image :src="detail.user.avatar" mode="widthFix"></image>
10
+      </view>
11
+      <view class="details-xiangqing-top-in">
12
+        {{ detail.user && detail.user.nickname }}
13
+      </view>
14
+      <view class="details-xiangqing-top-rigt">
15
+        <!-- <uni-icons type="right" size="26" color="#999999" class="arrow_right_log"></uni-icons> -->
16
+      </view>
17
+    </view>
18
+    <view class="details-xiangqing-niri">
19
+      <view
20
+        class="order-list-yi-in-neibu"
21
+        v-for="(items, index) in detail.customProductInfo"
22
+        :key="index"
23
+      >
24
+        <view class="order-list-yi-in-neibu-left">
25
+          <view class="order-list-yi-in-neibu-left-img" v-if="items.cart_info">
26
+            <image
27
+              v-if="items.cart_info.product.image"
28
+              :src="items.cart_info.product.image"
29
+              mode="widthFix"
30
+            ></image>
31
+          </view>
32
+          <view class="order-list-yi-in-neibu-left-url">
33
+            <view
34
+              class="order-list-yi-in-neibu-left-url-top"
35
+              v-if="items.cart_info"
36
+            >
37
+              {{ items.cart_info.product.store_name }}
38
+            </view>
39
+          </view>
40
+        </view>
41
+        <view class="order-list-yi-in-neibu-right">
42
+          <view class="order-list-yi-in-neibu-right-im">
43
+            ¥{{ items.cart_info.productAttr.price || "0.00" }}
44
+          </view>
45
+          <view class="order-list-yi-in-neibu-right-in">
46
+            共 {{ items.product_num || 0 }} 件
47
+          </view>
48
+        </view>
49
+      </view>
50
+
51
+      <view v-if="detail.status == '0'" class="btn-lixt">
52
+        <view class="btn-cls" @click="sendGoods"> 立即发货 </view>
53
+      </view>
54
+      <view class="details-xiangqing-shujussss">
55
+        <view class="details-xiangqing-shujussss-yis">
56
+          <view class=""> 商品总额 </view>
57
+          <view class=""> +¥{{ detail.total_price || "0.00" }} </view>
58
+        </view>
59
+        <view class="details-xiangqing-shujussss-yis">
60
+          <view class=""> 优惠金额 </view>
61
+          <view class=""> -¥{{ detail.coupon_price || "0.00" }} </view>
62
+        </view>
63
+        <view class="details-xiangqing-shujussss-yis">
64
+          <view class=""> 订单编号 </view>
65
+          <view class="" @click="handleCopy(detail.order_sn)">
66
+            {{ detail.order_sn }} | 复制
67
+          </view>
68
+        </view>
69
+        <view class="details-xiangqing-shujussss-yis">
70
+          <view class=""> 下单时间 </view>
71
+          <view class="">
72
+            {{ detail.create_time }}
73
+          </view>
74
+        </view>
75
+        <view class="details-xiangqing-shujussss-yis">
76
+          <view class=""> 支付方式 </view>
77
+          <view class="">
78
+            {{ formatData(detail, "pay_type") }}
79
+          </view>
80
+        </view>
81
+      </view>
82
+    </view>
83
+    <uni-popup
84
+      ref="popup"
85
+      type="center"
86
+      :animation="true"
87
+      :is-mask-click="false"
88
+    >
89
+      <view class="popup_data">
90
+        <view class="popup_data__headers">
91
+          <view class="popup_data__headers--title"></view>
92
+          <uni-icons
93
+            type="closeempty"
94
+            class="custom_icons"
95
+            size="30"
96
+            @click="handleClose"
97
+          ></uni-icons>
98
+        </view>
99
+        <view class="popup_data__content">
100
+          <fillLogisticsInfoVue
101
+            class="custom_class"
102
+            :ruleOptions="ruleOptions"
103
+            @changeHandle="changeHandle"
104
+          />
105
+        </view>
106
+        <button type="primary" class="send-goods" @click="handleOpen">发货</button>
107
+      </view>
108
+    </uni-popup>
109
+  </view>
84
 </template>
110
 </template>
85
 
111
 
86
 <script>
112
 <script>
87
 //订单详情 卡片详细信息
113
 //订单详情 卡片详细信息
88
 import { copy } from "@/utils/index.js";
114
 import { copy } from "@/utils/index.js";
115
+import { orderDeliveryApi, orderDeliveryRuleApi } from "@/commit/order.js";
116
+import { getUserPayType } from "../../../commodity/orderUtil.js";
117
+import fillLogisticsInfoVue from "../../../commodity/components/fillLogisticsInfo.vue";
89
 export default {
118
 export default {
119
+  components: {
120
+    fillLogisticsInfoVue,
121
+  },
122
+  props: {
123
+    detail: {
124
+      type: Object,
125
+      default: () => {},
126
+    },
127
+     ruleOptions: {
128
+      type: Array,
129
+      default: () => [],
130
+    },
131
+  },
90
   data() {
132
   data() {
91
     return {
133
     return {
92
-      orderProduct: {
93
-        pay_type: "特殊商户积分",
94
-        mer_name: "北京众兴未来咨询管理有限公司",
95
-        mer_avatar:
96
-          "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
97
-        pay_time: "2022-05-01 14:00",
98
-        order_id: "3645657575757483757",
99
-        pay_price: "999.00",
100
-        status: "3",
101
-        procductList: [
102
-          {
103
-            pay_price: "88888",
104
-            cart_num: "10",
105
-            image:
106
-              "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
107
-            store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
108
-          },
109
-        ],
110
-      },
134
+      orderDeliveryParam: {},
111
     };
135
     };
112
   },
136
   },
113
 
137
 
114
   methods: {
138
   methods: {
139
+ 
140
+    //填写物流信息
141
+    changeHandle(val) {
142
+      // console.log("changeHandle",val)
143
+      this.orderDeliveryParam = val;
144
+    },
115
     handleCopy(val) {
145
     handleCopy(val) {
116
       copy(val);
146
       copy(val);
117
     },
147
     },
118
-    sendGoods() {},
148
+    formatData(val, type = "pay_type") {
149
+      if (type == "pay_type") {
150
+        // console.log(val["pay_type"], "val");
151
+        return getUserPayType(val["paid"], val["pay_type"]);
152
+      } else if (["total_price", "coupon_price", "price"].includes(type)) {
153
+        return val[type] || "0.00";
154
+      } else {
155
+        return val[type] || "";
156
+      }
157
+    },
158
+    async handleOpen() {
159
+      // console.log("changeHandle",this.orderDeliveryParam)
160
+      if (!this.orderDeliveryParam.delivery_id) {
161
+        uni.showToast({
162
+          title: "请填写快递单号",
163
+          icon: "none",
164
+        });
165
+        return;
166
+      }
167
+      if (!this.orderDeliveryParam.delivery_name) {
168
+        uni.showToast({
169
+          title: "请选择物流公司",
170
+          icon: "none",
171
+        });
172
+        return;
173
+      }
174
+      // console.log("changeHandle",this.orderDeliveryParam)
175
+      // this.$refs.refsPackage.open();
176
+      uni.showLoading({
177
+        title: "正在发货中...",
178
+        mask: true,
179
+      });
180
+      const _this = this;
181
+      try {
182
+        const res = await orderDeliveryApi(
183
+          this.detail.order_id,
184
+          this.orderDeliveryParam
185
+        );
186
+        if (res.data.status == 200) {
187
+          uni.showToast({
188
+            title: "发货成功",
189
+            icon: "none",
190
+          });
191
+          _this.$emit("onSendGoodsHandle", this.detail);
192
+          _this. handleClose()
193
+        }
194
+      } catch (error) {
195
+      } finally {
196
+        uni.hideLoading();
197
+      }
198
+    },
199
+    sendGoods() {
200
+      this.open();
201
+    },
202
+    open(type = "bottom") {
203
+      this.$refs.popup.open(type);
204
+    },
205
+    handleClose() {
206
+      this.close();
207
+    },
208
+    close() {
209
+      this.orderDeliveryParam = {}
210
+      this.$refs.popup.close();
211
+    },
119
   },
212
   },
120
 };
213
 };
121
 </script>
214
 </script>
122
 
215
 
123
 <style lang="scss" scoped>
216
 <style lang="scss" scoped>
217
+.btn-lixt {
218
+  width: 100%;
219
+  display: flex;
220
+  justify-content: flex-end;
221
+}
124
 .btn-cls {
222
 .btn-cls {
125
   margin-top: 26rpx;
223
   margin-top: 26rpx;
126
   width: 142rpx;
224
   width: 142rpx;
@@ -258,7 +356,7 @@ export default {
258
         flex-direction: column;
356
         flex-direction: column;
259
         justify-content: space-between;
357
         justify-content: space-between;
260
         align-items: flex-end;
358
         align-items: flex-end;
261
-
359
+        flex-shrink: 0;
262
         .order-list-yi-in-neibu-right-im {
360
         .order-list-yi-in-neibu-right-im {
263
           font-size: 28rpx;
361
           font-size: 28rpx;
264
           font-weight: 500;
362
           font-weight: 500;
@@ -293,4 +391,50 @@ export default {
293
     }
391
     }
294
   }
392
   }
295
 }
393
 }
394
+.popup_data {
395
+  padding: 26rpx 30rpx;
396
+  min-height: 700rpx;
397
+  max-height: 750rpx;
398
+  box-sizing: border-box;
399
+  overflow: hidden;
400
+  background: linear-gradient(180deg, #e5edff 0%, #ffffff 100%);
401
+  border-radius: 24rpx 24rpx 0 0;
402
+  &__headers {
403
+    // height: 40rpx;
404
+    display: flex;
405
+    justify-content: space-between;
406
+    align-items: center;
407
+    border-bottom: 2rpx solid #e5e5e5;
408
+    padding-bottom: 15rpx;
409
+    &--title {
410
+      flex: 1;
411
+      display: -webkit-box;
412
+      -webkit-box-orient: vertical;
413
+      -webkit-line-clamp: 1;
414
+      overflow: hidden;
415
+      justify-content: space-between;
416
+      padding-right: 60rpx;
417
+      font-size: 32rpx;
418
+      font-weight: 600;
419
+    }
420
+    .custom_icons {
421
+      flex-shrink: 0;
422
+    }
423
+  }
424
+  &__content {
425
+    max-height: 620rpx;
426
+    overflow-y: auto;
427
+  }
428
+}
429
+.send-goods {
430
+  height: 78rpx;
431
+  // margin: 0 32rpx;
432
+  font-weight: 400;
433
+  font-size: 30rpx;
434
+  color: #ffffff;
435
+  display: flex;
436
+  justify-content: center;
437
+  align-items: center;
438
+  margin-top: 26rpx;
439
+}
296
 </style>
440
 </style>

+ 18 - 14
shop/commodity/components/orderDetailSendCard.vue

@@ -2,32 +2,32 @@
2
 	<view class="detail-send-order">
2
 	<view class="detail-send-order">
3
 		<view class="detail-send-order-top">
3
 		<view class="detail-send-order-top">
4
 			<view class="detail-send-order-top-left">
4
 			<view class="detail-send-order-top-left">
5
-				订单编号:425676547654
5
+				订单编号:{{items.order_sn || '--'}}
6
 			</view>
6
 			</view>
7
 		</view>
7
 		</view>
8
 	<view class="detail-send-order-product">
8
 	<view class="detail-send-order-product">
9
-	 <view class="detail-send-order-product__wrapper">
10
-	 	<view class="detail-send-order-content" v-for="(items,indexs) in orderProduct" :key="indexs">
9
+	 <view class="detail-send-order-product__wrapper" v-if="items.orderProduct">
10
+	 	<view class="detail-send-order-content" v-for="(itemData,indexs) in items.orderProduct" :key="indexs">
11
 	 		<view class="detail-send-order-content-left">
11
 	 		<view class="detail-send-order-content-left">
12
 	 			<view class="detail-send-order-content-left-img">
12
 	 			<view class="detail-send-order-content-left-img">
13
-					<image v-if="items.image" :src="items.image" mode="widthFix"></image>
13
+					<image v-if="itemData.cart_info" :src="itemData.cart_info.product.image" mode="widthFix"></image>
14
 					<text  v-else>暂无照片</text>
14
 					<text  v-else>暂无照片</text>
15
 	 			</view>
15
 	 			</view>
16
 	 		</view>
16
 	 		</view>
17
 			<view class="detail-send-order-content-middle">
17
 			<view class="detail-send-order-content-middle">
18
-				<view class="detail-send-order-content-middle-top" >
19
-					三个苹果 纯天然浓缩果蔬汁清汁苹果
18
+				<view class="detail-send-order-content-middle-top" v-if="itemData.cart_info">
19
+					{{itemData.cart_info.product.store_name || ""}}
20
+				</view>
21
+				<view class="detail-send-order-content-middle-top-bot" v-if="itemData.cart_info">
22
+					{{itemData.cart_info.productAttr.sku || ''}}
20
 				</view>
23
 				</view>
21
-			<!-- 	<view class="detail-send-order-content-middle-top-bot" v-if="items.cart_info">
22
-					{{items.cart_info.product.sku}}
23
-				</view> -->
24
 			</view>
24
 			</view>
25
 	 		<view class="detail-send-order-content-right">
25
 	 		<view class="detail-send-order-content-right">
26
 	 			<view class="detail-send-order-yi-in-neibu-right-im">
26
 	 			<view class="detail-send-order-yi-in-neibu-right-im">
27
-	 				¥1855555
27
+	 				¥{{items.pay_price || 0}}
28
 	 			</view>
28
 	 			</view>
29
 	 			<view class="detail-send-order-yi-in-neibu-right-in">
29
 	 			<view class="detail-send-order-yi-in-neibu-right-in">
30
-	 				共10件
30
+	 				共 {{items.total_num || 0}} 件
31
 	 			</view>
31
 	 			</view>
32
 	 		</view>
32
 	 		</view>
33
 	 	</view>
33
 	 	</view>
@@ -40,11 +40,15 @@
40
 
40
 
41
 <script>
41
 <script>
42
 	export default {
42
 	export default {
43
+		props:{
44
+			items:{
45
+				type:Object,
46
+				default:()=>{}
47
+			}
48
+		},
43
 		data() {
49
 		data() {
44
 			return {
50
 			return {
45
-				orderProduct:[{
46
-					image:"https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
47
-				}]
51
+				
48
 				
52
 				
49
 			};
53
 			};
50
 		}
54
 		}

+ 440 - 415
shop/commodity/components/orderList/orderListCard.vue

@@ -1,429 +1,454 @@
1
 <template>
1
 <template>
2
-	<view class="order-list-card-wrapper" :class="[itemProduct.status==0?downP:incrseP]">
3
-		<view class="order-list-yi-top">
4
-			<view class="order-list-yi-top-left">
5
-				订单编号:{{itemProduct.order_sn}}
6
-			</view>
7
-			<view class="order-list-yi-top-right">
8
-			{{formatStatusValue(itemProduct.status)}}
9
-			</view>
10
-		</view>
11
-		<view class="order-list-address">
12
-			 <view class="order-list-address__container">
13
-				 <view class="order-list-address__remdk">
14
-				 		 <image src="https://cdn.bjtdba.com/vod/image/2022-08-13/20220813164638215.png"
15
-				 		 	mode="widthFix"></image>
16
-							<view class="order-list-address__content">
17
-								{{item.user_address || "暂无地址信息"}}
18
-							</view>
19
-				 </view>
20
-				 <view class="order-list-address__xadasrfe" >
21
-				 		<template v-if="item.real_name && item.user_phone">
22
-							<view class="">
23
-								{{item.real_name }}
24
-							</view>
25
-								 <text class="user_phone" >
26
-								 	{{item.user_phone.substr(0, 3) + '****' + item.user_phone.substr(7)}}
27
-								 </text>
28
-						</template>
29
-						<template v-else>
30
-							<view class="">
31
-								{{item.real_name || "暂无用户名" }}
32
-							</view>
33
-								 <text class="user_phone"v-if="item.user_phone" >
34
-								 	{{item.user_phone.substr(0, 3) + '****' + item.user_phone.substr(7)}}
35
-								 </text>
36
-								 <text class="user_phone"v-else >
37
-								 	暂无用户手机号码
38
-								 </text>
39
-						</template>
40
-				 </view>
41
-			 </view>
42
-		</view>
43
-		<view class="order-list-product">
44
-		 <view class="order-list-product__wrapper">
45
-		 	<view class="order-list-content" v-for="(items,indexs) in itemProduct.orderProduct" :key="indexs">
46
-		 		<view class="order-list-content-left">
47
-		 			<view class="order-list-content-left-img">
48
-						<template v-if="items.cart_info">
49
-							<image v-if="items.cart_info.product.image" :src="items.cart_info.product.image" mode="widthFix"></image>
50
-				      	<text  v-else>暂无照片</text>
51
-						</template>
52
-						<template v-else>
53
-							<text>暂无照片</text>
54
-						</template>
55
-		 				
56
-		 			</view>
57
-		 		</view>
58
-				<view class="order-list-content-middle">
59
-					<view class="order-list-content-middle-top" v-if="items.cart_info">
60
-						{{items.cart_info.product.store_name}}
61
-					</view>
62
-					<view class="order-list-content-middle-top-bot" v-if="items.cart_info">
63
-						{{items.cart_info.product.sku}}
64
-					</view>
65
-				</view>
66
-		 		<view class="order-list-content-right">
67
-		 			<view class="order-list-yi-in-neibu-right-im">
68
-		 				¥{{items.product_price}}
69
-		 			</view>
70
-		 			<view class="order-list-yi-in-neibu-right-in">
71
-		 				共10件
72
-		 			</view>
73
-		 		</view>
74
-		 	</view>
75
-		 	
76
-		 
77
-		 </view>
78
-		</view>
79
-	   <view class="order-list-btn">
80
-		<view v-if="itemProduct.status=='0'" class="btn-list" @click="handleSendOutGoods(itemProduct,'sendGoods')">
81
-	    	立即发货
82
-	    </view>
83
-		<view  class="btn-list" @click="handleSendOutGoods(itemProduct,'delivered')">
84
-			已送达
85
-		</view>
86
-		<view  class="btn-list" @click="handleSendOutGoods(itemProduct,'logistics')">
87
-			查看物流
88
-		</view>
89
-		<view  class="btn-list" @click="handleSendOutGoods(itemProduct,'pickup')">
90
-			立即自提
91
-		</view>
92
-		<view  class="btn-list" @click="handleSendOutGoods(itemProduct,'detail')">
93
-			详情
94
-		</view>
95
-		</view>
96
-	</view>
2
+  <view
3
+    class="order-list-card-wrapper"
4
+  >
5
+    <view class="order-list-yi-top">
6
+      <view class="order-list-yi-top-left">
7
+        订单编号:{{ itemProduct.order_sn }}
8
+      </view>
9
+      <view class="order-list-yi-top-right">
10
+        {{ formatPropsValue(itemProduct,'status') }}
11
+      </view>
12
+    </view>
13
+    <view class="order-list-address">
14
+      <view class="order-list-address__container">
15
+        <view class="order-list-address__remdk">
16
+          <image
17
+            src="https://cdn.bjtdba.com/vod/image/2022-08-13/20220813164638215.png"
18
+            mode="widthFix"
19
+          ></image>
20
+          <view class="order-list-address__content">
21
+            {{ item.user_address || "暂无地址信息" }}
22
+          </view>
23
+        </view>
24
+        <view class="order-list-address__xadasrfe">
25
+          <template >
26
+            <view class="">
27
+              {{ item.real_name }}
28
+            </view>
29
+            <text class="user_phone">
30
+              {{
31
+               formatPropsValue(item, "user_phone")	
32
+              }}
33
+            </text>
34
+          </template>
35
+        </view>
36
+      </view>
37
+    </view>
38
+    <view class="order-list-product">
39
+      <view class="order-list-product__wrapper">
40
+        <view
41
+          class="order-list-content"
42
+          v-for="(items, indexs) in itemProduct.orderProduct"
43
+          :key="indexs"
44
+        >
45
+          <view class="order-list-content-left">
46
+            <view class="order-list-content-left-img">
47
+              <template v-if="items.cart_info">
48
+                <image
49
+                  v-if="items.cart_info.product.image"
50
+                  :src="items.cart_info.product.image"
51
+                  mode="widthFix"
52
+                ></image>
53
+                <text v-else>暂无照片</text>
54
+              </template>
55
+              <template v-else>
56
+                <text>暂无照片</text>
57
+              </template>
58
+            </view>
59
+          </view>
60
+          <view class="order-list-content-middle">
61
+            <view class="order-list-content-middle-top" v-if="items.cart_info">
62
+              {{ items.cart_info.product.store_name }}
63
+            </view>
64
+            <view
65
+              class="order-list-content-middle-top-bot"
66
+              v-if="items.cart_info"
67
+            >
68
+			<view v-if="items.cart_info.productAttr.sku"> {{ items.cart_info.productAttr.sku }}</view>
69
+             <view class="isms" v-else style="height: 30rpx;"></view>
70
+            </view>
71
+          </view>
72
+          <view class="order-list-content-right">
73
+            <view class="order-list-yi-in-neibu-right-im">
74
+              ¥{{ items.cart_info.productAttr.price || 0 }}
75
+            </view>
76
+            <view class="order-list-yi-in-neibu-right-in"> 共 {{items.product_num || 0}} 件 </view>
77
+          </view>
78
+        </view>
79
+      </view>
80
+    </view>
81
+    <view class="order-list-btn">
82
+      <view
83
+        v-if="getBtnAuth(itemProduct,'sendGoods')"
84
+        class="btn-list"
85
+        @click="handleSendOutGoods(itemProduct, 'sendGoods')"
86
+      >
87
+        立即发货
88
+      </view>
89
+      <view
90
+	   v-if="getBtnAuth(itemProduct,'delivered')"
91
+        class="btn-list"
92
+        @click="handleSendOutGoods(itemProduct, 'delivered')"
93
+      >
94
+        已送达
95
+      </view>
96
+      <view
97
+        class="btn-list"
98
+		 v-if="getBtnAuth(itemProduct,'logistics')"
99
+        @click="handleSendOutGoods(itemProduct, 'logistics')"
100
+      >
101
+        查看物流
102
+      </view>
103
+      <view 
104
+	  class="btn-list"
105
+	   v-if="getBtnAuth(itemProduct,'pickup')"
106
+	   @click="handleSendOutGoods(itemProduct, 'pickup')">
107
+        立即自提
108
+      </view>
109
+      <view
110
+	   class="btn-list"
111
+	     v-if="getBtnAuth(itemProduct,'detail')"
112
+	   @click="handleSendOutGoods(itemProduct, 'detail')">
113
+        订单详情
114
+      </view>
115
+    </view>
116
+  </view>
97
 </template>
117
 </template>
98
 
118
 
99
 <script>
119
 <script>
100
-	export default {
101
-		props:{
102
-			item:{
103
-				type:Object,
104
-				default:()=>{}
105
-			}
106
-		},
107
-		
108
-		data() {
109
-			return {
110
-				incrseP: 'order-list-yi',
111
-				downP: 'order-list-yissss',//待发货
112
-				itemProduct:{}
113
-			};
114
-		},
115
-		mounted() {
116
-			this.itemProduct  =this.item
117
-		},
118
-		watch:{
119
-			item:{
120
-				handler(value){
121
-					this.$set(this,"itemProduct",value)
122
-				},
123
-				deep:true
124
-			}
125
-		},
126
-		methods:{
127
-			handleSendOutGoods(item,type){
128
-				this.$emit("handleSendOutGoods",item,type)
129
-			},
130
-			getDataFormatValue(data,type){
131
-				console.log(this.item,"item======item")
132
-			},
133
-			formatStatusValue(status){
134
-				let obj = {
135
-					"6":'已取消',
136
-					"0":'待发货',
137
-					"1":'待收货',
138
-					"2":'待评价',
139
-					"3":'已完成',
140
-					"4":'已申请退款',
141
-					"-1":'已退款',
142
-					"5":'待付款',
143
-				}
144
-				return obj[status] || "--"
145
-			}
120
+import {getOrderListStatus} from "../../orderUtil"
121
+import {MaskRules} from "@/utils/index.js"
122
+export default {
123
+  props: {
124
+    item: {
125
+      type: Object,
126
+      default: () => {},
127
+    },
128
+    index: {
129
+      type: Number,
130
+      default: 0,
131
+    },
132
+  },
133
+
134
+  data() {
135
+    return {
136
+      itemProduct: {},
137
+    };
138
+  },
139
+  mounted() {
140
+    this.itemProduct = this.item;
141
+  },
142
+  watch: {
143
+    item: {
144
+      handler(value) {
145
+        this.$set(this, "itemProduct", value);
146
+      },
147
+      deep: true,
148
+    },
149
+  },
150
+  methods: {
151
+    getBtnAuth(item,btnType) {
152
+		if(btnType === "sendGoods"){//发送货
153
+		// @click="send(scope.row.order_id)"
154
+		return (item.order_type ==0 && item.status == 0 && item.paid == 1 && item.distribution_mode == 1)
155
+		}else if(btnType === "logistics"){//查看物流 已支付并不等于 待付款
156
+         return item.paid == 1  && item.status != 5 && item.delivery_id
157
+		}else if(btnType === "delivered"){//已送达
158
+		  return false
159
+		}else if(btnType === "pickup"){//自提
160
+			// take(scope.row.order_id)
161
+			return item.order_type == 0 && item.status == 0 && item.paid == 1 && item.distribution_mode == 2
162
+		}else{
163
+			return true
164
+		}
165
+    },
166
+    handleSendOutGoods(item, type) {
167
+      this.$emit("handleSendOutGoods", item, type);
168
+    },
169
+    formatPropsValue(data, type) {
170
+		if(type=="user_phone"){
171
+			if(!data[type]) return "暂无用户手机号码"
172
+			return MaskRules.mobile(data[type])
173
+		}else if(type == "status") {
174
+			return getOrderListStatus(data[type])
175
+		}else {
176
+			return data[type] || "--"
146
 		}
177
 		}
147
-	}
178
+	},
179
+  },
180
+};
148
 </script>
181
 </script>
149
 
182
 
150
 <style lang="scss" scoped>
183
 <style lang="scss" scoped>
151
-.order-list-card-wrapper{
152
-	width: 100%;
153
-	min-height: 450rpx;
154
-	background: #FFFFFF;
155
-	border-radius: 16rpx;
156
-	// border:2rpx solid #f00;
157
-	.order-list-yi-top {
158
-		width: 100%;
159
-		padding: 32rpx 0 32rpx 0;
160
-		border-bottom: 1rpx solid #E5E5E5;
161
-		display: flex;
162
-		justify-content: space-between;
163
-		align-items: center;
164
-		font-size: 26rpx;
165
-		.order-list-yi-top-left {
166
-			font-weight: 500;
167
-			color: #333333;
168
-			margin-left: 26rpx;
169
-		}
170
-		.order-list-yi-top-right {
171
-			font-weight: 400;
172
-			color: #1F7CFF;
173
-			margin-right: 26rpx;
174
-		}
175
-		}
176
-	&.order-list-yi{
177
-		margin-bottom: 20rpx;
178
-		display: flex;
179
-		flex-direction: column;
180
-		justify-content: flex-start;
181
-		align-items: center;
182
-		
183
-	}
184
-	.order-list-address{
185
-		width: calc(100% - 54rpx);
186
-		margin: 26rpx;
187
-		display: flex;
188
-		align-items: center;
189
-		justify-content: center;
190
-		background: #F8F8F8;
191
-		border-radius: 16rpx;
192
-		&__container{
193
-			width: 100%;
194
-			padding:20rpx 20rpx 9rpx 16rpx;
195
-			.order-list-address__remdk{
196
-				display: flex;
197
-				align-items: center;
198
-				image {
199
-				width: 38rpx;
200
-				height: 38rpx;
201
-				flex-shrink: 0;
202
-				margin-right: 10rpx;
203
-				}
204
-				.order-list-address__content{
205
-					width: 100%;
206
-					font-size: 26rpx;
207
-					font-weight: 400;
208
-					color: #333333;
209
-					display: -webkit-box;
210
-					-webkit-box-orient: vertical;
211
-					-webkit-line-clamp: 2;
212
-					overflow: hidden;
213
-				}
214
-			}
215
-			.order-list-address__xadasrfe{
216
-				width:100%;
217
-				padding:10rpx ;
218
-				font-size: 28rpx;
219
-				font-weight: 400;
220
-				color: #999999;
221
-				display: flex;
222
-				align-items: center;
223
-				word-break: break-all;
224
-				box-sizing: border-box;
225
-				min-height:28rpx;
226
-				gap:32rpx;
227
-				.user_phone{
228
-					padding-top:6rpx;
229
-				}
230
-			}
231
-		}
184
+.order-list-card-wrapper {
185
+  width: 100%;
186
+  min-height: 450rpx;
187
+  background: #ffffff;
188
+  border-radius: 16rpx;
189
+  // border:2rpx solid #f00;
190
+  .order-list-yi-top {
191
+    width: 100%;
192
+    padding: 32rpx 0 32rpx 0;
193
+    border-bottom: 1rpx solid #e5e5e5;
194
+    display: flex;
195
+    justify-content: space-between;
196
+    align-items: center;
197
+    font-size: 26rpx;
198
+    .order-list-yi-top-left {
199
+      font-weight: 500;
200
+      color: #333333;
201
+      margin-left: 26rpx;
202
+    }
203
+    .order-list-yi-top-right {
204
+      font-weight: 400;
205
+      color: #1f7cff;
206
+      margin-right: 26rpx;
207
+    }
208
+  }
209
+  &.order-list-yi {
210
+    margin-bottom: 20rpx;
211
+    display: flex;
212
+    flex-direction: column;
213
+    justify-content: flex-start;
214
+    align-items: center;
215
+  }
216
+  .order-list-address {
217
+    width: calc(100% - 54rpx);
218
+    margin: 26rpx;
219
+    display: flex;
220
+    align-items: center;
221
+    justify-content: center;
222
+    background: #f8f8f8;
223
+    border-radius: 16rpx;
224
+    &__container {
225
+      width: 100%;
226
+      padding: 20rpx 20rpx 9rpx 16rpx;
227
+      .order-list-address__remdk {
228
+        display: flex;
229
+        align-items: center;
230
+        image {
231
+          width: 38rpx;
232
+          height: 38rpx;
233
+          flex-shrink: 0;
234
+          margin-right: 10rpx;
235
+        }
236
+        .order-list-address__content {
237
+          width: 100%;
238
+          font-size: 26rpx;
239
+          font-weight: 400;
240
+          color: #333333;
241
+          display: -webkit-box;
242
+          -webkit-box-orient: vertical;
243
+          -webkit-line-clamp: 2;
244
+          overflow: hidden;
245
+        }
246
+      }
247
+      .order-list-address__xadasrfe {
248
+        width: 100%;
249
+        padding: 10rpx;
250
+        font-size: 28rpx;
251
+        font-weight: 400;
252
+        color: #999999;
253
+        display: flex;
254
+        align-items: center;
255
+        word-break: break-all;
256
+        box-sizing: border-box;
257
+        min-height: 28rpx;
258
+        gap: 32rpx;
259
+        .user_phone {
260
+          padding-top: 6rpx;
261
+        }
262
+      }
263
+    }
264
+  }
265
+  .order-list-product {
266
+    // border: 2rpx solid #F00;
267
+    width: calc(100% - 54rpx);
268
+    margin: 0 26rpx;
269
+    &__wrapper {
270
+      display: flex;
271
+      flex-direction: column;
272
+      justify-content: space-between;
273
+      align-items: flex-end;
274
+      .order-list-content {
275
+        width: 100%;
276
+        display: flex;
277
+        align-items: center;
278
+        padding: 10rpx 0 15rpx 0;
279
+        gap: 20rpx;
280
+        .order-list-content-left {
281
+          height: 100%;
282
+          display: flex;
283
+          align-items: flex-start;
284
+          justify-content: space-between;
285
+          &-img {
286
+            width: 158rpx;
287
+            height: 158rpx;
288
+            background-color: #eee;
289
+            overflow: hidden;
290
+            border-radius: 10rpx;
291
+            flex-shrink: 0;
292
+            image {
293
+              width: 100%;
294
+              height: auto;
295
+            }
296
+          }
297
+        }
298
+      }
299
+      .order-list-content-middle {
300
+        height: 100%;
301
+        flex: 1;
232
 
302
 
233
-	}
234
-.order-list-product{
235
-	// border: 2rpx solid #F00;
236
-	width: calc(100% - 54rpx);
237
-	margin:0 26rpx;
238
-	&__wrapper{
239
-		
240
-		display: flex;
241
-		flex-direction: column;
242
-		justify-content: space-between;
243
-		align-items: flex-end;
244
-		.order-list-content{
245
-			width:100%;
246
-			display: flex;
247
-			align-items: center;
248
-			padding: 10rpx 0 15rpx 0;
249
-			gap:20rpx;
250
-			.order-list-content-left{
251
-				height: 100%;
252
-				display: flex;
253
-				align-items: flex-start;
254
-				justify-content: space-between;
255
-				&-img{
256
-					width: 158rpx;
257
-					height: 158rpx;
258
-					background-color: #eee;
259
-					overflow: hidden;
260
-					border-radius: 10rpx;
261
-					flex-shrink: 0;
262
-					image {
263
-						width: 100%;
264
-						height: auto;
265
-					}
266
-				}
267
-			}
268
-		}
269
-	.order-list-content-middle{
270
-		height: 100%;
271
-		flex: 1;
272
-		
273
-		&-top{
274
-			// width:100%;
275
-			
276
-			font-family: PingFangSC, PingFang SC;
277
-			font-weight: 400;
278
-			font-size: 28rpx;
279
-			color: #333333;
280
-			text-align: left;
281
-		display: -webkit-box;
282
-		-webkit-box-orient: vertical;
283
-		-webkit-line-clamp: 1;
284
-		overflow: hidden;
285
-			line-height: 80rpx;
286
-			
287
-		}
288
-		&-top-bot{
289
-			padding-top: 10rpx;
290
-			font-family: PingFangSC, PingFang SC;
291
-			font-weight: 400;
292
-			font-size: 22rpx;
293
-			color: #666666;
294
-			text-align: left;
295
-		}
296
-	}
297
-	.order-list-content-right{
298
-		height: 73rpx;
299
-		flex-shrink: 0;
300
-		font-size: 28rpx;
301
-		font-weight: 500;
302
-		color: #333333;
303
-		display: flex;
304
-		flex-direction: column;
305
-		justify-content: space-between;
306
-		align-items: flex-end;
307
-	}
308
-	}
309
-	.osjdhujfhueihfg {
310
-		// width: 634rpx;
311
-		// height: 272rpx;
312
-	
313
-		display: flex;
314
-		flex-direction: column;
315
-		justify-content: space-between;
316
-		align-items: flex-end;
317
-	
318
-	
319
-		.order-list-yi-in-neibu {
320
-			width: 634rpx;
321
-			// height: 158rpx;
322
-			// background-color: #1F7CFF;
323
-			display: flex;
324
-			justify-content: space-between;
325
-			align-items: flex-start;
326
-			padding: 10rpx 0 10rpx 0;
327
-	
328
-			.order-list-yi-in-neibu-left {
329
-				width: 474rpx;
330
-				height: 100%;
331
-				display: flex;
332
-				align-items: flex-start;
333
-				justify-content: space-between;
334
-	
335
-				.order-list-yi-in-neibu-left-img {
336
-					width: 158rpx;
337
-					height: 158rpx;
338
-					// background-color: #1F7CFF;
339
-					overflow: hidden;
340
-	
341
-					image {
342
-						width: 100%;
343
-						height: auto;
344
-					}
345
-				}
346
-	
347
-				.order-list-yi-in-neibu-left-url {
348
-					width: 290rpx;
349
-					height: 70rpx;
350
-					display: flex;
351
-					flex-direction: column;
352
-					justify-content: space-between;
353
-	
354
-					.order-list-yi-in-neibu-left-url-top {
355
-						width: 100%;
356
-						font-weight: 400;
357
-						color: #333333;
358
-						font-size: 28rpx;
359
-						display: inline-block;
360
-						overflow: hidden;
361
-						text-overflow: ellipsis;
362
-						white-space: nowrap;
363
-					}
364
-	
365
-					.order-list-yi-in-neibu-left-url-top-bot {
366
-						width: 100%;
367
-						font-size: 24rpx;
368
-						font-weight: 400;
369
-						color: #666666;
370
-						display: inline-block;
371
-						overflow: hidden;
372
-						text-overflow: ellipsis;
373
-						white-space: nowrap;
374
-					}
375
-				}
376
-			}
377
-	
378
-			.order-list-yi-in-neibu-right {
379
-				height: 73rpx;
380
-				font-size: 28rpx;
381
-				font-weight: 500;
382
-				color: #333333;
383
-				display: flex;
384
-				flex-direction: column;
385
-				justify-content: space-between;
386
-				align-items: flex-end;
387
-	
388
-				.order-list-yi-in-neibu-right-im {
389
-					font-size: 28rpx;
390
-					font-weight: 500;
391
-					color: #333333;
392
-				}
393
-	
394
-				.order-list-yi-in-neibu-right-in {
395
-					font-size: 24rpx;
396
-					font-weight: 400;
397
-					color: #666666;
398
-				}
399
-			}
400
-		}
401
-	}
402
-}
303
+        &-top {
304
+          // width:100%;
403
 
305
 
404
-.order-list-btn{
405
-	display: flex;
406
-	align-items: center;
407
-	justify-content: flex-end;
408
-	flex-wrap: wrap;
409
-	padding: 10rpx 26rpx 26rpx;
410
-	gap:10rpx;
411
-	.btn-list{
412
-		display: flex;
413
-		align-items: center;
414
-		justify-content: center;
415
-		width: 142rpx;
416
-		border-radius: 40rpx;
417
-		border: 1rpx solid #999999;
418
-		font-size: 24rpx;
419
-		font-weight: 400;
420
-		color: #333333;
421
-		text-align: center;
422
-		padding: 15rpx 10rpx;
423
-		// 
424
-	}
425
-}
306
+          font-family: PingFangSC, PingFang SC;
307
+          font-weight: 400;
308
+          font-size: 28rpx;
309
+          color: #333333;
310
+          text-align: left;
311
+          display: -webkit-box;
312
+          -webkit-box-orient: vertical;
313
+          -webkit-line-clamp: 1;
314
+          overflow: hidden;
315
+          line-height: 80rpx;
316
+        }
317
+        &-top-bot {
318
+          font-family: PingFangSC, PingFang SC;
319
+          font-weight: 400;
320
+          font-size: 22rpx;
321
+          color: #666666;
322
+          text-align: left;
323
+        }
324
+      }
325
+      .order-list-content-right {
326
+        height: 73rpx;
327
+        flex-shrink: 0;
328
+        font-size: 28rpx;
329
+        font-weight: 500;
330
+        color: #333333;
331
+        display: flex;
332
+        flex-direction: column;
333
+        justify-content: space-between;
334
+        align-items: flex-end;
335
+      }
336
+    }
337
+    .osjdhujfhueihfg {
338
+      // width: 634rpx;
339
+      // height: 272rpx;
340
+
341
+      display: flex;
342
+      flex-direction: column;
343
+      justify-content: space-between;
344
+      align-items: flex-end;
345
+
346
+      .order-list-yi-in-neibu {
347
+        width: 634rpx;
348
+        // height: 158rpx;
349
+        // background-color: #1F7CFF;
350
+        display: flex;
351
+        justify-content: space-between;
352
+        align-items: flex-start;
353
+        padding: 10rpx 0 10rpx 0;
354
+
355
+        .order-list-yi-in-neibu-left {
356
+          width: 474rpx;
357
+          height: 100%;
358
+          display: flex;
359
+          align-items: flex-start;
360
+          justify-content: space-between;
361
+
362
+          .order-list-yi-in-neibu-left-img {
363
+            width: 158rpx;
364
+            height: 158rpx;
365
+            // background-color: #1F7CFF;
366
+            overflow: hidden;
367
+
368
+            image {
369
+              width: 100%;
370
+              height: auto;
371
+            }
372
+          }
373
+
374
+          .order-list-yi-in-neibu-left-url {
375
+            width: 290rpx;
376
+            height: 70rpx;
377
+            display: flex;
378
+            flex-direction: column;
379
+            justify-content: space-between;
380
+
381
+            .order-list-yi-in-neibu-left-url-top {
382
+              width: 100%;
383
+              font-weight: 400;
384
+              color: #333333;
385
+              font-size: 28rpx;
386
+              display: inline-block;
387
+              overflow: hidden;
388
+              text-overflow: ellipsis;
389
+              white-space: nowrap;
390
+            }
391
+
392
+            .order-list-yi-in-neibu-left-url-top-bot {
393
+              width: 100%;
394
+              font-size: 24rpx;
395
+              font-weight: 400;
396
+              color: #666666;
397
+              display: inline-block;
398
+              overflow: hidden;
399
+              text-overflow: ellipsis;
400
+              white-space: nowrap;
401
+            }
402
+          }
403
+        }
404
+
405
+        .order-list-yi-in-neibu-right {
406
+          height: 73rpx;
407
+          font-size: 28rpx;
408
+          font-weight: 500;
409
+          color: #333333;
410
+          display: flex;
411
+          flex-direction: column;
412
+          justify-content: space-between;
413
+          align-items: flex-end;
414
+
415
+          .order-list-yi-in-neibu-right-im {
416
+            font-size: 28rpx;
417
+            font-weight: 500;
418
+            color: #333333;
419
+          }
426
 
420
 
421
+          .order-list-yi-in-neibu-right-in {
422
+            font-size: 24rpx;
423
+            font-weight: 400;
424
+            color: #666666;
425
+          }
426
+        }
427
+      }
428
+    }
429
+  }
427
 
430
 
431
+  .order-list-btn {
432
+    display: flex;
433
+    align-items: center;
434
+    justify-content: flex-end;
435
+    flex-wrap: wrap;
436
+    padding: 10rpx 26rpx 26rpx;
437
+    gap: 10rpx;
438
+    .btn-list {
439
+      display: flex;
440
+      align-items: center;
441
+      justify-content: center;
442
+      width: 142rpx;
443
+      border-radius: 40rpx;
444
+      border: 1rpx solid #999999;
445
+      font-size: 24rpx;
446
+      font-weight: 400;
447
+      color: #333333;
448
+      text-align: center;
449
+      padding: 15rpx 10rpx;
450
+      //
451
+    }
452
+  }
428
 }
453
 }
429
 </style>
454
 </style>

+ 1 - 1
shop/commodity/components/popupSelect.vue

@@ -33,7 +33,7 @@
33
                 index === selectId || selectId === item.value ? 'isActive' : ''
33
                 index === selectId || selectId === item.value ? 'isActive' : ''
34
               ]"
34
               ]"
35
             >
35
             >
36
-              {{ item.text }}
36
+              {{ item.text || item.label }}
37
             </view>
37
             </view>
38
           </view>
38
           </view>
39
         </view>
39
         </view>

+ 34 - 17
shop/commodity/components/popupSelectItem/popupSelectItem.vue

@@ -45,25 +45,41 @@ export default {
45
       type: [String, Number],
45
       type: [String, Number],
46
       default: ""
46
       default: ""
47
     },
47
     },
48
+    isDisabledAll:{
49
+      type:Boolean,
50
+      default:false
51
+    },
52
+     isDisabledInput:{
53
+      type:Boolean,
54
+      default:false
55
+    },
56
+       isDisabledSelect:{
57
+      type:Boolean,
58
+      default:false
59
+    },
60
+    selectValue: {
61
+      type: [String, Number],
62
+      default: ""
63
+    },
48
     selectData: {
64
     selectData: {
49
       type: Array,
65
       type: Array,
50
       default: () => {
66
       default: () => {
51
         return [
67
         return [
52
-          { value: 0, text: "顺丰速运", code: "SF" },
53
-          { value: 1, text: "中通快递", code: "ZTO" },
54
-          { value: 2, text: "韵达快递", code: "YUNDA" },
55
-          { value: 3, text: "申通快递", code: "STO" },
56
-          { value: 4, text: "EMS邮政", code: "EMS" },
57
-          { value: 5, text: "圆通速递", code: "YTO" },
58
-          { value: 6, text: "DHL国际", code: "DHL" },
59
-          { value: 7, text: "京东物流", code: "JD" },
60
-          { value: 8, text: "FedEx联邦", code: "FDX" },
61
-          { value: 9, text: "UPS联合包裹", code: "UPS" },
62
-          { value: 10, text: "德邦快递", code: "DEPPON" },
63
-          { value: 11, text: "百世快递", code: "BEST" },
64
-          { value: 12, text: "极兔速递", code: "J&T" },
65
-          { value: 13, text: "TNT快递", code: "TNT" },
66
-          { value: 14, text: "跨越速运", code: "KYE" }
68
+          // { value: 0, text: "顺丰速运", code: "SF" },
69
+          // { value: 1, text: "中通快递", code: "ZTO" },
70
+          // { value: 2, text: "韵达快递", code: "YUNDA" },
71
+          // { value: 3, text: "申通快递", code: "STO" },
72
+          // { value: 4, text: "EMS邮政", code: "EMS" },
73
+          // { value: 5, text: "圆通速递", code: "YTO" },
74
+          // { value: 6, text: "DHL国际", code: "DHL" },
75
+          // { value: 7, text: "京东物流", code: "JD" },
76
+          // { value: 8, text: "FedEx联邦", code: "FDX" },
77
+          // { value: 9, text: "UPS联合包裹", code: "UPS" },
78
+          // { value: 10, text: "德邦快递", code: "DEPPON" },
79
+          // { value: 11, text: "百世快递", code: "BEST" },
80
+          // { value: 12, text: "极兔速递", code: "J&T" },
81
+          // { value: 13, text: "TNT快递", code: "TNT" },
82
+          // { value: 14, text: "跨越速运", code: "KYE" }
67
         ];
83
         ];
68
       }
84
       }
69
     }
85
     }
@@ -77,16 +93,17 @@ export default {
77
   methods: {
93
   methods: {
78
     handleClick({ selected, item, index }) {
94
     handleClick({ selected, item, index }) {
79
       this.logisticsValue = selected;
95
       this.logisticsValue = selected;
80
-      this.logisticsLabel = item.text;
96
+      this.logisticsLabel = item.text || item.label;
81
       this.$emit("click-tabs", { selected, item, index });
97
       this.$emit("click-tabs", { selected, item, index });
82
     },
98
     },
83
     handleSelect() {
99
     handleSelect() {
100
+      if(this.isDisabledAll || this.isDisabledSelect) return;
84
       this.$refs.popup.open();
101
       this.$refs.popup.open();
85
     }
102
     }
86
   },
103
   },
87
   computed: {
104
   computed: {
88
     logistics() {
105
     logistics() {
89
-      return this.logisticsLabel || this.defaultLabel;
106
+      return this.logisticsLabel || this.defaultLabel || this.selectValue;
90
     }
107
     }
91
   }
108
   }
92
 };
109
 };

+ 129 - 118
shop/commodity/components/shipmentGoodsCard.vue

@@ -1,129 +1,140 @@
1
 <template>
1
 <template>
2
-	
3
-	<view class="card-wrapper">
4
-	   <view class="card-wrapper__text">{{title}}</view>
5
-	   <view class="card-wrapper__address">
6
-		   {{address}}
7
-	   </view>
8
-	   
9
-	   <view class="card-wrapper__user">
10
-		   <view class="card-wrapper__user--info">
11
-		   	<view class="">
12
-		   		{{userInfo}}
13
-		   	</view>
14
-		   		 <text class="user_phone" >
15
-		   		 	{{phone_user}}
16
-		   		 </text>
17
-		   </view>
18
-		   <view class="card-wrapper__user--btn" @click="handleLooks">
19
-		    <!-- <image src="/static/images/new_ui/look.png" ></image> -->
20
-			<uni-icons :type="!showPhone?'eye-slash':'eye-slash-filled'" size="30" :color="showPhone?'#007aff':'#333'"></uni-icons>
2
+  <view class="card-wrapper">
3
+    <view class="card-wrapper__text">{{ title }}</view>
4
+    <view class="card-wrapper__address">
5
+      {{ address }}
6
+    </view>
21
 
7
 
22
-			</view>
23
-	   </view>
24
-	</view>
8
+    <view class="card-wrapper__user">
9
+      <view class="card-wrapper__user--info">
10
+        <view class="">
11
+          {{ userInfo }}
12
+        </view>
13
+        <text class="user_phone">
14
+          {{ phone_user }}
15
+        </text>
16
+      </view>
17
+      <view class="card-wrapper__user--btn" @click="handleLooks">
18
+        <!-- <image src="/static/images/new_ui/look.png" ></image> -->
19
+        <uni-icons
20
+          :type="!showPhone ? 'eye-slash' : 'eye-slash-filled'"
21
+          size="30"
22
+          :color="showPhone ? '#007aff' : '#333'"
23
+        ></uni-icons>
24
+      </view>
25
+    </view>
26
+  </view>
25
 </template>
27
 </template>
26
 
28
 
27
 <script>
29
 <script>
28
-	import {MaskRules} from "@/utils/index.js"
29
-	export default {
30
-		props:{
31
-			title:{
32
-				type:String,
33
-				default:"发货商品"
34
-			},
35
-			phone:{
36
-				type:String,
37
-				default:"18533332222"
38
-			},
39
-			userInfo:{
40
-				type:String,
41
-				default:"郭郭备份"
42
-			},
43
-			address:{
44
-				type:String,
45
-				default:"北京市通州区经开壹中心14号楼9层北京市通州区经开壹中心14号楼9层"
46
-			}
47
-		},
48
-		data() {
49
-			return {
50
-				showPhone:false,
51
-			};
52
-		},
53
-		methods:{
54
-			handleLooks(){
55
-				this.showPhone = !this.showPhone
56
-			}
57
-			
58
-		},
59
-	  computed: {
60
-	  	phone_user() {
61
-			if(this.showPhone){
62
-				return this.phone
63
-			}else{
64
-				return MaskRules.mobile(this.phone)
65
-			}
66
-			
67
-	  	}
68
-	  },
69
-		
70
-	}
30
+import { MaskRules } from "@/utils/index.js";
31
+export default {
32
+  props: {
33
+    title: {
34
+      type: String,
35
+      default: "发货商品",
36
+    },
37
+    items: {
38
+      type: Object,
39
+      default: () => {
40
+        return {
41
+          user_phone: "",
42
+          user_address: "",
43
+          real_name: "",
44
+        };
45
+      },
46
+    },
47
+  },
48
+  watch: {
49
+    items: {
50
+      handler(newVal, oldVal) {
51
+        if (newVal) {
52
+          this.items = newVal;
53
+        }
54
+      },
55
+    },
56
+  },
57
+  data() {
58
+    return {
59
+      showPhone: false,
60
+    };
61
+  },
62
+  methods: {
63
+    handleLooks() {
64
+      this.showPhone = !this.showPhone;
65
+    },
66
+  },
67
+  computed: {
68
+    phone_user() {
69
+      if (this.showPhone) {
70
+        return this.phone;
71
+      } else {
72
+        return MaskRules.mobile(this.phone);
73
+      }
74
+    },
75
+    phone() {
76
+      return this.items.user_phone || "";
77
+    },
78
+    userInfo() {
79
+      return this.items.real_name || "";
80
+    },
81
+    address() {
82
+      return this.items.user_address || "";
83
+    },
84
+  },
85
+};
71
 </script>
86
 </script>
72
 
87
 
73
 <style lang="scss">
88
 <style lang="scss">
74
-.card-wrapper{
89
+.card-wrapper {
90
+  background: #ffffff;
91
+  border-radius: 16rpx;
92
+  padding: 26rpx 21rpx 10rpx 32rpx;
93
+  display: flex;
94
+  flex-direction: column;
95
+  &__text {
96
+    font-size: 36rpx;
97
+    font-weight: bold;
98
+    color: #333;
99
+    margin: 0 0 26rpx;
100
+  }
101
+  &__address {
102
+    font-weight: 400;
103
+    font-size: 26rpx;
104
+    color: #333333;
105
+    line-height: 37rpx;
106
+    text-align: left;
107
+  }
75
 
108
 
76
-	background: #FFFFFF;
77
-	 border-radius: 16rpx;
78
-	 padding: 26rpx 21rpx 10rpx 32rpx;
79
-	  display: flex;
80
-	  flex-direction: column;
81
-	&__text{
82
-	  font-size: 36rpx;
83
-	  font-weight: bold;
84
-	  color: #333;
85
-	  margin: 0 0 26rpx;
86
-	}
87
- &__address{
88
-	font-weight: 400;
89
-	font-size: 26rpx;
90
-	color: #333333;
91
-	line-height: 37rpx;
92
-	text-align: left;
93
- }
94
-		
95
-	.card-wrapper__user{
96
-		display: flex;
97
-		justify-content: space-around;
98
-		align-items: center;
99
-		&--info{
100
-			width:100%;
101
-			padding:10rpx 10rpx 10rpx 0 ;
102
-			font-size: 28rpx;
103
-			font-weight: 400;
104
-			color: #999999;
105
-			display: flex;
106
-			align-items: center;
107
-			word-break: break-all;
108
-			box-sizing: border-box;
109
-			min-height:28rpx;
110
-			gap:32rpx;
111
-			flex:1;
112
-			.user_phone{
113
-				padding-top:6rpx;
114
-			}
115
-		}
116
-		&--btn{
117
-			width:45rpx;
118
-			flex-shrink: 0;
119
-			image{
120
-				width:41rpx;
121
-				height: 27rpx;
122
-			}
123
-		}
124
-	}
109
+  .card-wrapper__user {
110
+    display: flex;
111
+    justify-content: space-around;
112
+    align-items: center;
113
+    &--info {
114
+      width: 100%;
115
+      padding: 10rpx 10rpx 10rpx 0;
116
+      font-size: 28rpx;
117
+      font-weight: 400;
118
+      color: #999999;
119
+      display: flex;
120
+      align-items: center;
121
+      word-break: break-all;
122
+      box-sizing: border-box;
123
+      min-height: 28rpx;
124
+      gap: 32rpx;
125
+      flex: 1;
126
+      .user_phone {
127
+        padding-top: 6rpx;
128
+      }
129
+    }
130
+    &--btn {
131
+      width: 45rpx;
132
+      flex-shrink: 0;
133
+      image {
134
+        width: 41rpx;
135
+        height: 27rpx;
136
+      }
137
+    }
138
+  }
125
 }
139
 }
126
-
127
-
128
-
129
 </style>
140
 </style>

+ 139 - 36
shop/commodity/details.vue

@@ -8,45 +8,59 @@
8
       ></image>
8
       ></image>
9
       <view class="details-back-biaohsi">
9
       <view class="details-back-biaohsi">
10
         <view class="details-back-biaohsi-kuan">
10
         <view class="details-back-biaohsi-kuan">
11
-          <image
12
-            src="https://cdn.bjtdba.com/vod/image/2022-08-15/20220815143421834.png"
13
-            mode="widthFix"
14
-          >
11
+          <image :src="formDataItem(orderData, 'image')" mode="widthFix">
15
           </image>
12
           </image>
16
         </view>
13
         </view>
17
         <view class="details-back-biaohsi-zhuanbgtia">
14
         <view class="details-back-biaohsi-zhuanbgtia">
18
-          <view class="details-back-biaohsi-zhuanbgtia-top"> 待发货 </view>
15
+          <view class="details-back-biaohsi-zhuanbgtia-top">
16
+            {{ formDataItem(orderData, "status") }}
17
+          </view>
19
           <view class="details-back-biaohsi-zhuanbgtia-bot">
18
           <view class="details-back-biaohsi-zhuanbgtia-bot">
20
-            等待卖家付款
19
+            {{ formDataItem(orderData, "text") }}
21
           </view>
20
           </view>
22
         </view>
21
         </view>
23
       </view>
22
       </view>
24
       <logisticInfocardJianjieVue
23
       <logisticInfocardJianjieVue
25
         @goToLogistic="goToLogistic"
24
         @goToLogistic="goToLogistic"
26
         class="logistic--wrapper"
25
         class="logistic--wrapper"
26
+        :detail="orderData"
27
+        :logisticText="logisticText"
27
       />
28
       />
28
     </view>
29
     </view>
29
 
30
 
30
-    <view class="order-detail-card">
31
-      <orderCardDetailInfoVue />
32
-     <deliverCardItemVue
31
+    <view
32
+      class="order-detail-card"
33
+      :style="{ 'margin-top': orderData.status == 5 ? '140rpx' : '160rpx' }"
34
+    >
35
+      <orderCardDetailInfoVue :detail="orderData" :ruleOptions="ruleOptions" @onSendGoodsHandle="onSendGoodsHandle"/>
36
+      <!-- <deliverCardItemVue
33
        class="inputInfo"
37
        class="inputInfo"
34
        :isBottomMessage="true"
38
        :isBottomMessage="true"
35
        leftTitle="物流信息有误?"
39
        leftTitle="物流信息有误?"
36
        rightTitle="更改物流信息"
40
        rightTitle="更改物流信息"
37
-     />
41
+     /> -->
38
     </view>
42
     </view>
39
   </view>
43
   </view>
40
 </template>
44
 </template>
41
 
45
 
42
 <script>
46
 <script>
43
-import { getOrderDetails } from "@/commit/order.js";
47
+import {
48
+  orderDetailApi,
49
+  getExpress,
50
+  getOrderList,
51
+  orderDeliveryRuleApi,
52
+  getOrderListProduct
53
+} from "@/commit/order.js";
44
 import headersVue from "../components/headers/headers.vue";
54
 import headersVue from "../components/headers/headers.vue";
45
 import logisticInfocardJianjieVue from "./components/orderDetail/logisticInfocardJianjie.vue";
55
 import logisticInfocardJianjieVue from "./components/orderDetail/logisticInfocardJianjie.vue";
46
 import { orderStatus } from "../commodity/orderUtil.js";
56
 import { orderStatus } from "../commodity/orderUtil.js";
47
 import { toQueryString } from "@/utils/index.js";
57
 import { toQueryString } from "@/utils/index.js";
48
 import deliverCardItemVue from "./components/changeDetailInfo/pendingReceiptGoodsModules/deliverCardItem.vue";
58
 import deliverCardItemVue from "./components/changeDetailInfo/pendingReceiptGoodsModules/deliverCardItem.vue";
49
 import orderCardDetailInfoVue from "./components/orderDetail/orderCardDetailInfo.vue";
59
 import orderCardDetailInfoVue from "./components/orderDetail/orderCardDetailInfo.vue";
60
+import {
61
+  getOrderListStatus,
62
+  getOrderDetailStatus,
63
+} from "../commodity/orderUtil.js";
50
 export default {
64
 export default {
51
   components: {
65
   components: {
52
     headersVue,
66
     headersVue,
@@ -54,7 +68,7 @@ export default {
54
     logisticInfocardJianjieVue,
68
     logisticInfocardJianjieVue,
55
     //产品信息
69
     //产品信息
56
     orderCardDetailInfoVue,
70
     orderCardDetailInfoVue,
57
-	deliverCardItemVue
71
+    deliverCardItemVue,
58
   },
72
   },
59
   data() {
73
   data() {
60
     return {
74
     return {
@@ -62,57 +76,146 @@ export default {
62
       is_limin: true,
76
       is_limin: true,
63
       orderList: [],
77
       orderList: [],
64
       indexs: "",
78
       indexs: "",
65
-      status: ""
79
+      status: "",
80
+      orderData: {},
81
+      logisticText: "运输中",
82
+      listDetailPro: {},
83
+      ruleOptions:[]
66
     };
84
     };
67
   },
85
   },
68
   onLoad(e) {
86
   onLoad(e) {
69
     this.order_id = e.order_id;
87
     this.order_id = e.order_id;
70
     this.indexs = e.indexs;
88
     this.indexs = e.indexs;
71
     this.status = e.status;
89
     this.status = e.status;
72
-    // this.getOrderDetails()
90
+    this.getOrderDetails();
91
+    if (e && e.detailInfo) {
92
+      this.listDetailPro = JSON.parse(e.detailInfo);
93
+    }
73
   },
94
   },
74
   methods: {
95
   methods: {
96
+        async getOrderListSigleData(order_sn) {
97
+       try {
98
+         const res = await getOrderListProduct(order_sn)
99
+         if (res.data.status == 200) {
100
+           let detailDa = res.data.data.list[0] && res.data.data.list[0].orderProduct || [];
101
+           this.orderData = { ...this.orderData, customProductInfo: detailDa };
102
+         }
103
+       } catch (error) {
104
+        
105
+       }
106
+    },
107
+   async onSendGoodsHandle(){
108
+    await this.getOrderDetails();
109
+   },
110
+    async getLogisticData(id) {
111
+      if (!id) return;
112
+      try {
113
+        const res = await getExpress(id);
114
+        if (res.data.status == 200) {
115
+          const data = res.data.data || [];
116
+          console.log("物流信息", data.length > 0);
117
+          if (data.length > 0) {
118
+            data.forEach((item) => {
119
+              if (["派送中"].includes(item.status)) {
120
+                this.logisticText = "派送中";
121
+              } else if (["已揽收"].includes(item.status)) {
122
+                this.logisticText = "已揽收";
123
+              } else if (["已发货"].includes(item.status)) {
124
+                this.logisticText = "已发货";
125
+              } else if (["运输中"].includes(item.status)) {
126
+                this.logisticText = "运输中";
127
+              } else if (["已签收"].includes(item.status)) {
128
+                this.logisticText = "已签收";
129
+              } else if (["待签收"].includes(item.status)) {
130
+                this.logisticText = "待签收";
131
+              } else {
132
+                this.logisticText = "运输中";
133
+              }
134
+            });
135
+          } else {
136
+            this.logisticText = "待出货中";
137
+          }
138
+        }
139
+      } catch (error) {}
140
+      // /mer/store/order/express/5881
141
+    },
75
     goToLogistic() {
142
     goToLogistic() {
76
-      const obj = {
143
+    const obj = {
77
         status: this.status,
144
         status: this.status,
78
         index: this.indexs,
145
         index: this.indexs,
146
+        indexs: this.indexs,
79
         formType: "detail",
147
         formType: "detail",
80
-        order_id: this.order_id
148
+        order_id: this.order_id,
81
       };
149
       };
82
       const urlParams = toQueryString(obj);
150
       const urlParams = toQueryString(obj);
83
       uni.redirectTo({
151
       uni.redirectTo({
84
-        url: `./logisticsInformationDetail?${urlParams}`
152
+        url: `./logisticsInformationDetail?${urlParams}`,
85
       });
153
       });
86
     },
154
     },
87
     formDataItem(val, type = "status") {
155
     formDataItem(val, type = "status") {
88
       if (type === "status") {
156
       if (type === "status") {
89
-        return orderStatus(val["status"]);
157
+        return getOrderListStatus(val["status"]);
158
+      } else if (type === "image") {
159
+        return getOrderDetailStatus(val, "image");
160
+      } else if (type === "text") {
161
+        return getOrderDetailStatus(val, "text");
90
       } else {
162
       } else {
91
         return val[type] || "";
163
         return val[type] || "";
92
       }
164
       }
93
     },
165
     },
94
     // 订单详情页面
166
     // 订单详情页面
95
-    getOrderDetails() {
96
-      getOrderDetails({
97
-        order_id: this.order_id
98
-      }).then(
99
-        (res) => {
100
-          if (res.data.status == 200) {
101
-            this.orderList = res.data.data.order;
167
+    async getOrderDetails() {
168
+      uni.showLoading({
169
+        title: "加载中...",
170
+        mask: true,
171
+      });
172
+      try {
173
+        const res = await orderDetailApi(this.order_id);
174
+        if (res.data.status == 200) {
175
+          this.orderData = {
176
+            ...res.data.data
177
+          };
178
+          if (this.orderData.delivery_id) {
179
+            await this.getLogisticData(this.order_id);
180
+          }
181
+          if (this.orderData.status == 0) {
182
+            await this.getOrderDeliveryRule();
102
           }
183
           }
103
-        },
104
-        (fail) => {
105
-          console.log(fail);
184
+            this.getOrderListSigleData(this.orderData.order_sn);
185
+          // this.getOrderListSigleData(this.orderData.order_sn)
106
         }
186
         }
107
-      );
187
+      } catch (error) {
188
+      } finally {
189
+        uni.hideLoading();
190
+      }
191
+    },
192
+       // 获取发货规则
193
+    async getOrderDeliveryRule() {
194
+      try {
195
+        const res = await orderDeliveryRuleApi(this.orderData.order_id);
196
+        if (res.data.status == 200) {
197
+          let data = res.data.data.rule;
198
+          data.forEach((item) => {
199
+            let ruleData =
200
+              (item.control[0] &&
201
+                item.control[0].rule[0] &&
202
+                item.control[0].rule[0].options) ||
203
+              [];
204
+            this.ruleOptions = ruleData;
205
+          });
206
+          // console.log("发货规则", this.ruleOptions);
207
+        }
208
+      } catch (error) {
209
+      } finally {
210
+      }
108
     },
211
     },
109
     topgi() {
212
     topgi() {
110
       uni.redirectTo({
213
       uni.redirectTo({
111
-        url: "./order?status=" + this.status + "&index=" + this.indexs
214
+        url: "./order?status=" + this.status + "&index=" + this.indexs,
112
         // url: './order'
215
         // url: './order'
113
       });
216
       });
114
-    }
115
-  }
217
+    },
218
+  },
116
 };
219
 };
117
 </script>
220
 </script>
118
 
221
 
@@ -187,14 +290,14 @@ page {
187
     top: 190rpx;
290
     top: 190rpx;
188
   }
291
   }
189
   .order-detail-card {
292
   .order-detail-card {
190
-	  width:calc(100% - 54rpx);
293
+    width: calc(100% - 54rpx);
191
     height: calc(100% - 260rpx);
294
     height: calc(100% - 260rpx);
192
     margin-top: 220rpx;
295
     margin-top: 220rpx;
193
     margin-bottom: 50rpx;
296
     margin-bottom: 50rpx;
194
   }
297
   }
195
 }
298
 }
196
-.inputInfo{
197
-	padding:0 25rpx;
198
-	margin: 26rpx 0 0 ;
299
+.inputInfo {
300
+  padding: 0 25rpx;
301
+  margin: 26rpx 0 0;
199
 }
302
 }
200
 </style>
303
 </style>

+ 95 - 60
shop/commodity/logisticsInformationDetail.vue

@@ -8,11 +8,11 @@
8
             <view class="image-scroll_box__image">
8
             <view class="image-scroll_box__image">
9
               <view
9
               <view
10
                 v-for="(item, index) in procductList"
10
                 v-for="(item, index) in procductList"
11
-                :key="item.cart_num + '_index_' + index"
11
+                :key="item.cart_id + '_index_' + index"
12
                 class="cmsd-ocm"
12
                 class="cmsd-ocm"
13
               >
13
               >
14
-                <image :src="item.image" />
15
-                <view class="tip-num">{{ 10 }}件</view>
14
+                <image :src="item.cart_info.product.image" v-if="item.cart_info"/>
15
+                <view class="tip-num">{{ item.product_num || 0 }}件</view>
16
               </view>
16
               </view>
17
             </view>
17
             </view>
18
           </view>
18
           </view>
@@ -22,20 +22,20 @@
22
         </view>
22
         </view>
23
       </view>
23
       </view>
24
       <view class="logistics-info-card-headers__logicistics">
24
       <view class="logistics-info-card-headers__logicistics">
25
-        <view class="image-company__image">
25
+        <view class="image-company__image"   v-if="orderData.delivery_image">
26
           <image
26
           <image
27
-            src="https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png"
27
+            :src="orderData.delivery_image"
28
           />
28
           />
29
         </view>
29
         </view>
30
         <view class="image-company__content">
30
         <view class="image-company__content">
31
           <view class="image-company__content-title">
31
           <view class="image-company__content-title">
32
-            <text>中通快递: </text>
33
-            <text>98765432345678</text>
32
+            <text>{{orderData.delivery_name}}: </text>
33
+            <text>{{orderData.delivery_id}}</text>
34
           </view>
34
           </view>
35
         </view>
35
         </view>
36
         <view class="image-company__btn">
36
         <view class="image-company__btn">
37
-          <view class="copy-btn btn" @click="handleGiop('copy')">复制</view>
38
-          <view class="tel-btn btn" @click="handleGiop('tel')">电话</view>
37
+          <view class="copy-btn btn" @click="handleGiop('copy',orderData.delivery_id)">复制</view>
38
+          <view class="tel-btn btn" @click="handleGiop('tel',orderData.delivery_phone)">电话</view>
39
         </view>
39
         </view>
40
       </view>
40
       </view>
41
     </view>
41
     </view>
@@ -49,16 +49,16 @@
49
               </view>
49
               </view>
50
               <view class="order-list-yi-bot-xadasrfe">
50
               <view class="order-list-yi-bot-xadasrfe">
51
                 <view class="order-list-yi-bot-xadasrfe-top">
51
                 <view class="order-list-yi-bot-xadasrfe-top">
52
-                  <text
53
-                    >北京市北京市朝阳区北京市北京市朝阳区北京市北京市朝阳</text
52
+                  <view
53
+                    >{{orderData.user_address}}</view
54
                   >
54
                   >
55
-                  <text> 郭女士</text>
56
-                  <text>185****4736</text>
55
+                  <text> {{orderData.real_name}}</text>
56
+                 <text> {{formatData(orderData,"user_phone")}}</text>
57
                 </view>
57
                 </view>
58
               </view>
58
               </view>
59
             </view>
59
             </view>
60
           </view>
60
           </view>
61
-          <view class="logicistis">
61
+          <view class="logicistis" v-if="logisticsData.length>0">
62
             <view
62
             <view
63
               class="logicistis-bot-xiangxi"
63
               class="logicistis-bot-xiangxi"
64
               v-for="(items, index) in logisticsData"
64
               v-for="(items, index) in logisticsData"
@@ -78,20 +78,29 @@
78
               </view>
78
               </view>
79
             </view>
79
             </view>
80
           </view>
80
           </view>
81
+          <template v-else>
82
+            <emptyData title="暂无物流信息" style="top:45%;left:25%;width:auto"></emptyData>
83
+          </template>
81
         </view>
84
         </view>
82
       </view>
85
       </view>
83
     </template>
86
     </template>
84
     <emptyData v-else></emptyData>
87
     <emptyData v-else></emptyData>
85
-    <ItemsInsidePackageVue ref="refsPackage" />
88
+    <ItemsInsidePackageVue ref="refsPackage" :orderProduct="procductList"/>
86
   </view>
89
   </view>
87
 </template>
90
 </template>
88
 
91
 
89
 <script>
92
 <script>
90
 import headersVue from "../components/headers/headers.vue";
93
 import headersVue from "../components/headers/headers.vue";
91
-import { toQueryString, copy } from "@/utils/index.js";
94
+import { toQueryString, copy,MaskRules  } from "@/utils/index.js";
92
 import ItemsInsidePackageVue from "./components/changeDetailInfo/ItemsInsidePackage.vue";
95
 import ItemsInsidePackageVue from "./components/changeDetailInfo/ItemsInsidePackage.vue";
93
 import { mockDataLogistics } from "./mockData.js";
96
 import { mockDataLogistics } from "./mockData.js";
94
 import emptyData from "../components/emptyData/emptyData.vue";
97
 import emptyData from "../components/emptyData/emptyData.vue";
98
+import {
99
+
100
+  getExpress,
101
+  getOrderListProduct,
102
+  orderDetailApi
103
+} from "@/commit/order.js";
95
 export default {
104
 export default {
96
   components: { headersVue, ItemsInsidePackageVue, emptyData },
105
   components: { headersVue, ItemsInsidePackageVue, emptyData },
97
   data() {
106
   data() {
@@ -101,66 +110,89 @@ export default {
101
       order_id: "", //订单ID
110
       order_id: "", //订单ID
102
       formType: "",
111
       formType: "",
103
       logisticsData: [],
112
       logisticsData: [],
104
-      procductList: [
105
-        {
106
-          pay_price: "88888",
107
-          cart_num: "10",
108
-          image:
109
-            "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
110
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
111
-        },
112
-        {
113
-          pay_price: "88888",
114
-          cart_num: "10",
115
-          image:
116
-            "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
117
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
118
-        },
119
-        {
120
-          pay_price: "88888",
121
-          cart_num: "10",
122
-          image:
123
-            "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
124
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
125
-        },
126
-        {
127
-          pay_price: "88888",
128
-          cart_num: "10",
129
-          image:
130
-            "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
131
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
132
-        },
133
-        {
134
-          pay_price: "88888",
135
-          cart_num: "10",
136
-          image:
137
-            "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
138
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
139
-        },
140
-      ],
113
+      orderData: {},
114
+      procductList: [],
115
+      isShouHou: false,
141
     };
116
     };
142
   },
117
   },
143
-  onLoad(e) {
118
+  async onLoad(e) {
144
     this.order_id = e.order_id;
119
     this.order_id = e.order_id;
145
     this.indexs = e.indexs;
120
     this.indexs = e.indexs;
146
     this.status = e.status;
121
     this.status = e.status;
147
     this.formType = e.formType || "";
122
     this.formType = e.formType || "";
148
-    // this.getOrderDetails()
149
-    this.logisticsData = mockDataLogistics || [];
123
+    this.isShouHou = e.shouhou==0?true:false;
124
+    await this.getOrderDetails();
150
   },
125
   },
151
   methods: {
126
   methods: {
152
-    handleGiop(type) {
127
+    handleGiop(type,value) {
153
       if (type === "copy") {
128
       if (type === "copy") {
154
-        copy("98765432345678");
129
+        copy(value);
155
       } else {
130
       } else {
131
+        if(!value){
132
+          uni.showToast({
133
+            title: "暂无电话",
134
+            icon: "none",
135
+          })
136
+          return
137
+        }
156
         uni.makePhoneCall({
138
         uni.makePhoneCall({
157
-          phoneNumber: "98765432345678",
139
+          phoneNumber: value,
158
         });
140
         });
159
       }
141
       }
160
     },
142
     },
143
+    formatData(data,type){
144
+      if(type==='user_phone'){
145
+        if(!data[type]) return ""
146
+        return MaskRules.mobile(data[type]);
147
+      }else{
148
+        return data[type] || "--";
149
+      }
150
+    },
161
     handlePopup() {
151
     handlePopup() {
162
       this.$refs.refsPackage.open();
152
       this.$refs.refsPackage.open();
163
     },
153
     },
154
+    async getOrderListSigleData(order_sn) {
155
+      try {
156
+        const res = await getOrderListProduct(order_sn);
157
+        if (res.data.status == 200) {
158
+          let detailDa =
159
+            (res.data.data.list[0] && res.data.data.list[0].orderProduct) || [];
160
+          this.procductList = detailDa || [];
161
+          console.log(this.procductList,"this.procductList")
162
+        }
163
+      } catch (error) {}
164
+    },
165
+    async getOrderDetails() {
166
+      uni.showLoading({
167
+        title: "加载中...",
168
+        mask: true,
169
+      });
170
+      try {
171
+        const res = await orderDetailApi(this.order_id);
172
+        if (res.data.status == 200) {
173
+          this.orderData = {
174
+            ...res.data.data,
175
+          };
176
+          if (this.orderData.delivery_id) {
177
+            await this.getLogisticData(this.order_id);
178
+          }
179
+          this.getOrderListSigleData(this.orderData.order_sn);
180
+        }
181
+      } catch (error) {
182
+      } finally {
183
+        uni.hideLoading();
184
+      }
185
+    },
186
+    async getLogisticData(id) {
187
+      if (!id) return;
188
+      try {
189
+        const res = await getExpress(id);
190
+        if (res.data.status == 200) {
191
+          const data = res.data.data || [];
192
+          this.logisticsData = data;
193
+        }
194
+      } catch (error) {}
195
+    },
164
     topgi() {
196
     topgi() {
165
       let obj = {
197
       let obj = {
166
         // status: this.status,
198
         // status: this.status,
@@ -171,14 +203,17 @@ export default {
171
       if (["oldInfo", "shouhou"].includes(this.formType)) {
203
       if (["oldInfo", "shouhou"].includes(this.formType)) {
172
         obj = {
204
         obj = {
173
           status: this.status,
205
           status: this.status,
206
+          indexs: this.indexs,
174
           index: this.indexs,
207
           index: this.indexs,
208
+          
175
         };
209
         };
176
       } else {
210
       } else {
177
         obj = {
211
         obj = {
178
           status: this.status,
212
           status: this.status,
179
-          index: this.indexs,
213
+          indexs: this.indexs,
180
           formType: this.formType,
214
           formType: this.formType,
181
           order_id: this.order_id,
215
           order_id: this.order_id,
216
+           index: this.indexs,
182
         };
217
         };
183
       }
218
       }
184
       const params = toQueryString(obj);
219
       const params = toQueryString(obj);

+ 158 - 85
shop/commodity/order.vue

@@ -1,41 +1,57 @@
1
 <template>
1
 <template>
2
-	<view class="order">
3
-		<headersVue @headerJump="topgi" headerTitle="订单列表"/>
4
-		<view class="order-list-filter-wrapper">
5
-			<view class="order-search_customs">
6
-				<searchVue @search="search"></searchVue>
7
-			</view>
8
-			<view class="order-nbeirong_customs">
9
-				<tabsVue :category="num" :curruntActive="indexs" @tabs="tabsHandleClick"/>
10
-			</view>
11
-		</view>
12
-		
13
-		 <view class="order-list">
14
-			
15
-			<template v-if="listMock.length>0">
16
-				<template v-for="(item,index) in listMock" >
17
-					 <orderListCardVue class="order-list__card" :key="index+'index'" @handleSendOutGoods="handleSendOutGoods" :item="item" />
18
-				</template>
19
-			</template>
20
-			<template v-else>
21
-				<emptyDataVue/>
22
-			</template>
23
-			 </view>
24
-			
25
-			<view class="" v-if="tihsi==0&&listMock.length>0" style="margin: 60rpx 0 30rpx 0; color: #999999; font-size: 26rpx;">
26
-				—— 已经到最底部了哦 ——
27
-			</view>
28
-	</view>
2
+  <view class="order">
3
+    <headersVue @headerJump="topgi" headerTitle="订单列表" />
4
+    <view class="order-list-filter-wrapper">
5
+      <view class="order-search_customs">
6
+        <searchVue @search="search"></searchVue>
7
+      </view>
8
+      <view class="order-nbeirong_customs">
9
+        <tabsVue
10
+          :category="num"
11
+          :curruntActive="indexs"
12
+          @tabs="tabsHandleClick"
13
+        />
14
+      </view>
15
+    </view>
16
+
17
+    <view class="order-list">
18
+      <template v-if="list.length > 0">
19
+        <template v-for="(item, index) in list">
20
+          <orderListCardVue
21
+            class="order-list__card"
22
+            :key="index + 'index'"
23
+            @handleSendOutGoods="handleSendOutGoods"
24
+            :item="item"
25
+            :index="index"
26
+          />
27
+        </template>
28
+      </template>
29
+      <template v-else>
30
+        <emptyDataVue />
31
+      </template>
32
+    </view>
33
+
34
+    <view
35
+      class=""
36
+      v-if="tihsi == 0 && list.length > 0"
37
+      style="margin: 60rpx 0 30rpx 0; color: #999999; font-size: 26rpx"
38
+    >
39
+      —— 已经到最底部了哦 ——
40
+    </view>
41
+  </view>
29
 </template>
42
 </template>
30
 
43
 
31
 <script>
44
 <script>
32
-import { orderList } from "@/commit/order.js";
45
+import {
46
+  getOrderStatusNumber,
47
+  getOrderList,
48
+  getAfterSaleList,
49
+} from "@/commit/order.js";
33
 import emptyDataVue from "../components/emptyData/emptyData.vue";
50
 import emptyDataVue from "../components/emptyData/emptyData.vue";
34
 import tabsVue from "../components/tabs/tabs/tabs.vue";
51
 import tabsVue from "../components/tabs/tabs/tabs.vue";
35
 import orderListCardVue from "./components/orderList/orderListCard.vue";
52
 import orderListCardVue from "./components/orderList/orderListCard.vue";
36
 import searchVue from "./components/search/search.vue";
53
 import searchVue from "./components/search/search.vue";
37
 import headersVue from "../components/headers/headers.vue";
54
 import headersVue from "../components/headers/headers.vue";
38
-import { listData } from "./mockData.js";
39
 import { toQueryString } from "@/utils/index.js";
55
 import { toQueryString } from "@/utils/index.js";
40
 export default {
56
 export default {
41
   components: {
57
   components: {
@@ -47,7 +63,6 @@ export default {
47
   },
63
   },
48
   data() {
64
   data() {
49
     return {
65
     return {
50
-      listMock: [],
51
       page: 1,
66
       page: 1,
52
       limit: 10,
67
       limit: 10,
53
       tihsi: "",
68
       tihsi: "",
@@ -58,6 +73,7 @@ export default {
58
       indexs: 0,
73
       indexs: 0,
59
       // sty: true,
74
       // sty: true,
60
       list: [],
75
       list: [],
76
+      keywords: "",
61
       num: [
77
       num: [
62
         {
78
         {
63
           name: "全部",
79
           name: "全部",
@@ -108,36 +124,23 @@ export default {
108
           show: true,
124
           show: true,
109
         },
125
         },
110
       ],
126
       ],
111
-      // num: [{
112
-      // 		name: "待付款",
113
-      // 		status: 5
114
-      // 	},
115
-      // 	{
116
-      // 		name: "待发货",
117
-      // 		status: 0
118
-      // 	},
119
-      // 	{
120
-      // 		name: "待收货",
121
-      // 		status: 1
122
-      // 	},
123
-      // 	{
124
-      // 		name: "待评价",
125
-      // 		status: 2
126
-      // 	},
127
-      // 	// {
128
-      // 	// 	name: "已完成"
129
-      // 	// }
130
-      // ]
131
     };
127
     };
132
   },
128
   },
133
   onLoad(e) {
129
   onLoad(e) {
134
     let selectmerchant = uni.getStorageSync("selectmerchant");
130
     let selectmerchant = uni.getStorageSync("selectmerchant");
135
     this.mer_id = selectmerchant.merId;
131
     this.mer_id = selectmerchant.merId;
136
-    this.status = e.status; //进入状态
137
-    this.indexs = e.index == null ? 0 : e.index;
138
-    this.listMock = listData || [];
139
-    // this.orderList()
132
+    
133
+    let tabIndex = e.index == null ? 0 : e.index;
134
+    this.indexs = tabIndex;
135
+    if (e.index !=  e.status) {
136
+      this.status = tabIndex;
137
+    } else {
138
+      this.status = e.status; //进入状态
139
+    }
140
+    this.orderList();
141
+    this.getOrderStatusNumberData();
140
   },
142
   },
143
+
141
   onPullDownRefresh() {
144
   onPullDownRefresh() {
142
     uni.showLoading({
145
     uni.showLoading({
143
       title: "加载中",
146
       title: "加载中",
@@ -145,7 +148,7 @@ export default {
145
     this.page = 1;
148
     this.page = 1;
146
     this.is_panudn = true;
149
     this.is_panudn = true;
147
     this.list = [];
150
     this.list = [];
148
-    // this.orderList();
151
+    this.orderList();
149
   },
152
   },
150
   onReachBottom() {
153
   onReachBottom() {
151
     if (this.is_panudn == true) {
154
     if (this.is_panudn == true) {
@@ -156,56 +159,128 @@ export default {
156
     }
159
     }
157
   },
160
   },
158
   methods: {
161
   methods: {
159
-    search(val) {
160
-      console.log(val, "搜索");
162
+    async getOrderStatusNumberData() {
163
+      try {
164
+        const res = await getOrderStatusNumber({
165
+          order_sn: "",
166
+          order_type: "-1",
167
+          distribution_mode: "-1",
168
+          keywords: "",
169
+          status: "",
170
+          date: "",
171
+          page: 1,
172
+          limit: 10,
173
+          type: 1,
174
+          username: "",
175
+          pay_type: -1,
176
+          ylj_status: "",
177
+          paid: "",
178
+        });
179
+        if (res.data.status == 200) {
180
+          this.num[0].totalNum = res.data.data.all || 0; //全部
181
+          this.num[1].totalNum = res.data.data.unpaid || 0; //待付款
182
+          this.num[2].totalNum = res.data.data.unshipped || 0; //待发货
183
+          this.num[3].totalNum = res.data.data.untake || 0; //待收货
184
+          this.num[4].totalNum = res.data.data.unevaluate || 0; //待评价
185
+          this.num[5].totalNum = res.data.data.complete || 0; //已完成
186
+          this.num[6].totalNum = res.data.data.refund || 0; //已退款
187
+          this.num[7].totalNum = res.data.data.del || 0; //已删除
188
+        }
189
+      } catch (error) {
190
+      } finally {
191
+        uni.hideLoading();
192
+      }
193
+    },
194
+    async search(val) {
195
+      this.keywords = val;
196
+      await this.orderList();
161
     },
197
     },
198
+    getStatus(val) {
199
+      if (val == undefined || val === "all" || val === null) {
200
+        return "";
201
+      } else {
202
+        return val;
203
+      }
204
+    },
205
+
162
     handleSendOutGoods(v, type) {
206
     handleSendOutGoods(v, type) {
163
-      console.log("發貨", v, this.indexs);
164
-      const urlParams = {
207
+      console.log(v, "v");
208
+      let urlParams = {
165
         order_id: v.order_id,
209
         order_id: v.order_id,
166
         status: v.status,
210
         status: v.status,
167
         indexs: this.indexs,
211
         indexs: this.indexs,
168
-        goodsCustomType: type === "delivered" ? "deliverGoods" : type,
212
+        goodsCustomType: type,
169
         formType: "oldInfo",
213
         formType: "oldInfo",
170
       };
214
       };
171
-      console.log(urlParams, "urlParams");
172
       let url = toQueryString(urlParams);
215
       let url = toQueryString(urlParams);
173
-      const newUrl = {
174
-        sendGoods: `./sendoutgoods?${url}`, //立即发货
175
-        delivered: `./sendoutgoods?${url}`, //已送达
176
-        logistics: `./logisticsInformationDetail?${url}`, //查看物流
177
-        deliverGoods: `./sendoutgoods?${url}`, //送貨
178
-        pickup: `./sendoutgoods?${url}`, //立即自提
179
-        detail: `./details?${url}`,
180
-      };
181
-      let redirectToUrl = newUrl[type] || newUrl["logistics"];
182
-      console.log(redirectToUrl, "redirectToUrl");
183
-      console.log(type, "type");
216
+      let redirectToUrl = "";
217
+      if (type === "detail") {
218
+        redirectToUrl = `./details?${url}&detailInfo=${encodeURIComponent(JSON.stringify(v.orderProduct))}`;
219
+      } else if (type === "logistics") {
220
+          redirectToUrl = `./logisticsInformationDetail?${url}`;                           
221
+      } else if (type === "sendGoods") {
222
+        //发货
223
+        redirectToUrl = `./sendoutgoods?${url}`;
224
+      } else if (type === "delivered") {
225
+        //立即发货
226
+      } else if (type === "deliverGoods") {
227
+        //送貨
228
+      } else if (type === "pickup") {
229
+        //立即自提
230
+      }
231
+      if (!redirectToUrl) {
232
+        return;
233
+      }
184
       uni.redirectTo({
234
       uni.redirectTo({
185
         url: redirectToUrl,
235
         url: redirectToUrl,
186
       });
236
       });
237
+      // const newUrl = {
238
+      //   sendGoods: `./sendoutgoods?${url}`, //立即发货
239
+      //   delivered: `./sendoutgoods?${url}`, //已送达
240
+      //   logistics: `./logisticsInformationDetail?${url}`, //查看物流
241
+      //   deliverGoods: `./sendoutgoods?${url}`, //送貨
242
+      //   pickup: `./sendoutgoods?${url}`, //立即自提
243
+      //   detail: `./details?${url}`,
244
+      // };
245
+      // let redirectToUrl = newUrl[type] || newUrl["logistics"];
246
+      // console.log(redirectToUrl, "redirectToUrl");
247
+      // console.log(type, "type");
248
+      // uni.redirectTo({
249
+      //   url: redirectToUrl,
250
+      // });
187
     },
251
     },
188
     // 正向订单列表
252
     // 正向订单列表
189
     orderList() {
253
     orderList() {
190
-      return false;
191
       uni.showLoading({
254
       uni.showLoading({
192
         title: "加载中",
255
         title: "加载中",
193
       });
256
       });
194
-      orderList({
195
-        pageNum: this.page,
196
-        pageSize: this.limit,
257
+
258
+      getOrderList({
197
         mer_id: this.mer_id,
259
         mer_id: this.mer_id,
198
         status: this.status,
260
         status: this.status,
261
+        order_sn: "",
262
+        order_type: -1,
263
+        distribution_mode: -1,
264
+        keywords: this.keywords,
265
+        status: this.getStatus(this.status),
266
+        date: "",
267
+        page: this.page,
268
+        limit: this.limit,
269
+        type: 1,
270
+        username: "",
271
+        pay_type: -1,
272
+        ylj_status: "",
273
+        paid: "",
199
       }).then(
274
       }).then(
200
         (res) => {
275
         (res) => {
201
           uni.stopPullDownRefresh();
276
           uni.stopPullDownRefresh();
202
           if (res.data.status == 200) {
277
           if (res.data.status == 200) {
203
-            this.tihsi = res.data.data.pageInfo.list.length;
204
-            if (res.data.data.pageInfo.list.length > 0) {
278
+            this.tihsi = res.data.data.count || 0;
279
+            if (res.data.data.count > 0) {
205
               if (this.page == 1) {
280
               if (this.page == 1) {
206
-                this.list = res.data.data.pageInfo.list;
281
+                this.list = res.data.data.list;
207
               } else {
282
               } else {
208
-                this.list = this.list.concat(res.data.data.pageInfo.list);
283
+                this.list = this.list.concat(res.data.data.list);
209
               }
284
               }
210
             } else {
285
             } else {
211
               if (this.page == 1) {
286
               if (this.page == 1) {
@@ -238,14 +313,12 @@ export default {
238
       this.ysne(index, item.status);
313
       this.ysne(index, item.status);
239
     },
314
     },
240
     ysne(index, status) {
315
     ysne(index, status) {
241
-      this.status = status;
316
+      // console.log(index, status, "---tabsHandleClick")
317
+      this.status = index == 0 ? null : status;
242
       this.indexs = index;
318
       this.indexs = index;
243
       this.page = 1;
319
       this.page = 1;
244
       this.is_panudn = true;
320
       this.is_panudn = true;
245
-
246
-      console.log(index, this.indexs, "---tabsHandleClick");
247
-      console.log(status, this.status, "---tabsHandleClickitem");
248
-      // this.orderList()
321
+      this.orderList();
249
     },
322
     },
250
     topgi() {
323
     topgi() {
251
       uni.switchTab({
324
       uni.switchTab({

+ 165 - 6
shop/commodity/orderUtil.js

@@ -10,9 +10,168 @@ export const orderStatus = {
10
 }
10
 }
11
 
11
 
12
 export const logisticStatus = {
12
 export const logisticStatus = {
13
-	"1":"已发货",
14
-	"2":"已揽收",
15
-	"3":"运输中",
16
-	"4":"配送中",
17
-	"5":"已签收"
18
-}
13
+    "1": "已发货",
14
+    "2": "已揽收",
15
+    "3": "运输中",
16
+    "4": "配送中",
17
+    "5": "已签收"
18
+}
19
+/**
20
+ * 
21
+ * @param {*} paid 支付类型paid == 1   paid == 0 支付状态
22
+ * @param {*} pay_type 
23
+ * @returns 
24
+ */
25
+export function getUserPayType(paid, pay_type) {
26
+    if (paid == 1) { //支付类型paid == 1
27
+        // console.log(paid,pay_type, "pay_typepay_typepay_typepay_type")
28
+        return { //pay_type
29
+            0: '虚拟支付',
30
+            1: '微信支付',
31
+            2: '小程序支付',
32
+            3: '银行卡支付',
33
+            4: '支付宝支付',
34
+            5: '红积分兑换'
35
+        } [pay_type] || "--"
36
+
37
+    } else if (paid == 0) { //支付状态
38
+        return paid == 0 ? "未支付" : "已支付"
39
+    } else {
40
+        return "--"
41
+    }
42
+}
43
+
44
+
45
+export function getOrderListStatus(status) {
46
+    return {
47
+        "5": '待付款',
48
+        "0": '待发货',
49
+        "1": '待收货',
50
+        "2": '待评价',
51
+        "3": '已完成',
52
+        "4": '已申请退款',
53
+        "-1": '已退款',
54
+        "6": '已取消',
55
+    } [status] || ""
56
+}
57
+
58
+export function getOrderDetailStatus(item, type = "image") {
59
+    const textMap = {
60
+        "5": '等待买家付款',//待付款
61
+        "0": '等待卖家发货',
62
+        "1": '等待买家收货',
63
+        "2": '等待买家评价',
64
+        "3": '订单已完成',
65
+        "4": '买家已申请退款',
66
+        "-1": '卖家已退款',
67
+        "6": '买家已取消订单',
68
+    }
69
+    const imageMap = {
70
+        "0": '/static/images/new_ui/daifahuo.png',
71
+        "1": '/static/images/new_ui/daishouhuo.png',
72
+        "2": '/static/images/new_ui/daipingjia.png',
73
+        "5": '/static/images/new_ui/daifukuan.png',
74
+        "3": '/static/images/new_ui/yiwancheng.png',
75
+        "4": '/static/images/new_ui/yishenqinftuikuan.png',
76
+        "-1": '/static/images/new_ui/yituikuan.png',
77
+        "6": '/static/images/new_ui/yiquxiao.png',
78
+    }
79
+    if (item.paid == 0) { //未付款
80
+        if (item.status == 0) { //待付款
81
+            return type == "image" ? imageMap['5'] : textMap['5']
82
+        }else{
83
+             return type == "image" ? imageMap[item.status] : textMap[item.status]
84
+        }
85
+    } else if (item.paid == 1) { //已付款
86
+        return type == "image" ? imageMap[item.status] : textMap[item.status]
87
+    }
88
+
89
+
90
+
91
+
92
+
93
+}
94
+
95
+
96
+/**
97
+ * @description 退款单状态 售后状态
98
+ */
99
+export function orderRefundFilter(status) {
100
+    const statusMap = {
101
+        '0': '审核中',
102
+        '-1': '审核未通过',
103
+        '1': '待退货',
104
+        '2': '退货中',
105
+        '3': '退款完成',
106
+        '4': '退款失败',
107
+        '5': '部分退款',
108
+        '6': '申请已取消'
109
+    }
110
+    return statusMap[status]
111
+}
112
+/**
113
+ * @description 退款单状态 售后状态
114
+ */
115
+export function orderRefundFilterText(status) {
116
+    const statusMap = {
117
+        '0': '退货审核中',
118
+        '-1': '退货审核未通过',
119
+        '1': '待退货',
120
+        '2': '退货中',
121
+        '3': '退款完成',
122
+        '4': '退款失败',
123
+        '5': '部分退款',
124
+        '6': '申请已取消'
125
+    }
126
+    return statusMap[status]
127
+}
128
+
129
+
130
+
131
+/**
132
+ * @description 
133
+ */
134
+export function orderRefundText(status) {
135
+    const statusMap = {
136
+        '0': '48小时未审核,系统将自动通过该申请',
137
+        '-1': '退货审核未通过',
138
+        '1': '待退货',
139
+        '2': '买家已寄出',
140
+        '3': '退货退款已完成,查看具体退款金额',
141
+        '4': '退货退款失败,请查看失败原因',
142
+        '5': '退货退款已完成,查看具体退款金额',
143
+        '6': '申请已取消'
144
+    }
145
+    return statusMap[status]
146
+}
147
+
148
+
149
+
150
+/**
151
+ * @description 自提订单状态
152
+ */
153
+export function takeOrderStatusFilter(status) {
154
+    const statusMap = {
155
+        '0': '待提货',
156
+        '1': '待提货',
157
+        '2': '待评价',
158
+        '3': '已完成',
159
+        '-1': '已退款'
160
+    }
161
+    return statusMap[status]
162
+}
163
+
164
+
165
+// < el - table - column label = "养老金状态"
166
+// min - width = "100" >
167
+//     <
168
+//     template slot - scope = "scope" >
169
+//     <
170
+//     span v -
171
+//     if = "scope.row.is_red_ylj=='0'" > 未结算 < /span> <
172
+//     span v -
173
+//     if = "scope.row.is_red_ylj=='2'" > 已失效 < /span> <
174
+//     span v -
175
+//     if = "scope.row.is_red_ylj=='1'" > 已结算 < /span> <
176
+//     /template> <
177
+//     /el-table-column>

+ 135 - 27
shop/commodity/sendoutgoods.vue

@@ -2,11 +2,13 @@
2
   <view class="order-send-out-goods">
2
   <view class="order-send-out-goods">
3
     <headersVue @headerJump="topgi" :header-title="headerTitle"></headersVue>
3
     <headersVue @headerJump="topgi" :header-title="headerTitle"></headersVue>
4
     <view class="order-send-out-goods__content">
4
     <view class="order-send-out-goods__content">
5
-      <shipmentGoodsCardVue :title="shipmentGoodsTitle" />
6
-      <orderDetailSendCardVue class="custom_class" />
5
+      <shipmentGoodsCardVue :title="shipmentGoodsTitle" :items="detailData" />
6
+      <orderDetailSendCardVue class="custom_class" :items="detailData" />
7
       <fillLogisticsInfoVue
7
       <fillLogisticsInfoVue
8
         class="custom_class"
8
         class="custom_class"
9
         v-if="goodsCustomType === 'sendGoods'"
9
         v-if="goodsCustomType === 'sendGoods'"
10
+        :ruleOptions="ruleOptions"
11
+        @changeHandle="changeHandle"
10
       />
12
       />
11
       <reInputItemVue
13
       <reInputItemVue
12
         v-if="goodsCustomType === 'pickup'"
14
         v-if="goodsCustomType === 'pickup'"
@@ -17,7 +19,7 @@
17
 	    class="inputInfo"
19
 	    class="inputInfo"
18
 	  ></reInputItemVue> -->
20
 	  ></reInputItemVue> -->
19
       <popupSelectItemVue
21
       <popupSelectItemVue
20
-        v-if="goodsCustomType === 'deliverGoods'"
22
+        v-if="goodsCustomType === 'deliverGoods' || detailData.delivery_type===2"
21
         class="inputInfo"
23
         class="inputInfo"
22
         defaultLabel="请选择送货人员"
24
         defaultLabel="请选择送货人员"
23
         name="送货人员信息"
25
         name="送货人员信息"
@@ -26,30 +28,38 @@
26
         @click-tabs="clickTabs"
28
         @click-tabs="clickTabs"
27
       >
29
       >
28
         <view class="upop" slot="right" @click="selectUserInfo">
30
         <view class="upop" slot="right" @click="selectUserInfo">
29
-          <view class="title xcv">{{ deliveryMan }}</view>
31
+          <view class="title xcv">{{ detailData.delivery_name }}{{detailData.delivery_id}}</view>
30
           <image src="/static/images/new_ui/arrow-right.png" mode=""></image>
32
           <image src="/static/images/new_ui/arrow-right.png" mode=""></image>
31
         </view>
33
         </view>
32
       </popupSelectItemVue>
34
       </popupSelectItemVue>
35
+      <!-- delivery_type===2 配送信息
36
+      送货人姓名:{{ orderDatalist.delivery_name }}
37
+      送货人电话:{{ orderDatalist.delivery_id }}
38
+
39
+       -->
33
       <!-- //收货码 -->
40
       <!-- //收货码 -->
34
-      <deliverFillInfoCardVue class="inputInfo" />
41
+      <!-- <deliverFillInfoCardVue class="inputInfo" /> -->
35
       <!-- 送货信息有误 -->
42
       <!-- 送货信息有误 -->
36
-      <deliverCardItemVue class="inputInfo" />
37
-      <deliverCardItemVue
43
+      <!-- <deliverCardItemVue class="inputInfo" /> -->
44
+      <!-- <deliverCardItemVue
38
         class="inputInfo"
45
         class="inputInfo"
39
         :isBottomMessage="true"
46
         :isBottomMessage="true"
40
         leftTitle="物流信息有误?"
47
         leftTitle="物流信息有误?"
41
         rightTitle="更改物流信息"
48
         rightTitle="更改物流信息"
42
-      />
49
+      /> -->
43
       <!-- // 变更送货人信息 -->
50
       <!-- // 变更送货人信息 -->
44
-      <changeDeliveryPersonInfoVue style="margin-top: 20rpx" />
51
+      <!-- <changeDeliveryPersonInfoVue style="margin-top: 20rpx" /> -->
45
       <!-- 变更物流信息  -->
52
       <!-- 变更物流信息  -->
46
-      <changeLogisticsInformation style="margin-top: 20rpx" />
47
-      <view class="btn-box" v-if="['sendGoods','pickup','deliverGoods'].includes(goodsCustomType)">
53
+      <!-- <changeLogisticsInformation style="margin-top: 20rpx" /> -->
54
+      <view
55
+        class="btn-box"
56
+        v-if="['sendGoods', 'pickup', 'deliverGoods'].includes(goodsCustomType)"
57
+      >
48
         <button
58
         <button
49
           type="primary"
59
           type="primary"
50
           class="send-goods"
60
           class="send-goods"
51
           v-if="goodsCustomType === 'sendGoods'"
61
           v-if="goodsCustomType === 'sendGoods'"
52
-		  @click="handleOpen"
62
+          @click="handleOpen"
53
         >
63
         >
54
           发货
64
           发货
55
         </button>
65
         </button>
@@ -63,16 +73,10 @@
63
         >
73
         >
64
           自提
74
           自提
65
         </button>
75
         </button>
66
-         <button
67
-          v-else
68
-          type="primary"
69
-          class="send-goods"
70
-        >
71
-          提交
72
-        </button>
76
+        <button v-else type="primary" class="send-goods">提交</button>
73
       </view>
77
       </view>
74
     </view>
78
     </view>
75
-	<ItemsInsidePackageVue ref="refsPackage"/>
79
+    <ItemsInsidePackageVue ref="refsPackage" />
76
   </view>
80
   </view>
77
 </template>
81
 </template>
78
 
82
 
@@ -89,6 +93,12 @@ import deliverCardItemVue from "./components/changeDetailInfo/pendingReceiptGood
89
 import changeDeliveryPersonInfoVue from "./components/changeDetailInfo/changeDeliveryPersonInfo.vue";
93
 import changeDeliveryPersonInfoVue from "./components/changeDetailInfo/changeDeliveryPersonInfo.vue";
90
 import changeLogisticsInformation from "./components/changeDetailInfo/changeLogisticsInformation.vue";
94
 import changeLogisticsInformation from "./components/changeDetailInfo/changeLogisticsInformation.vue";
91
 import ItemsInsidePackageVue from "./components/changeDetailInfo/ItemsInsidePackage.vue";
95
 import ItemsInsidePackageVue from "./components/changeDetailInfo/ItemsInsidePackage.vue";
96
+import {
97
+  orderDetailApi,
98
+  orderDeliveryApi,
99
+  orderDeliveryRuleApi,
100
+  getOrderListProduct
101
+} from "@/commit/order.js";
92
 export default {
102
 export default {
93
   components: {
103
   components: {
94
     shipmentGoodsCardVue,
104
     shipmentGoodsCardVue,
@@ -144,20 +154,117 @@ export default {
144
         pickup: "自提商品",
154
         pickup: "自提商品",
145
       },
155
       },
146
       deliveryMan: "请选择送货人员",
156
       deliveryMan: "请选择送货人员",
157
+      detailData: {},
158
+      listFromData: [],
159
+      ruleOptions:[],
160
+      orderDeliveryParam:{},//物流
147
     };
161
     };
148
   },
162
   },
149
-  onLoad(e) {
163
+  async onLoad(e) {
150
     this.order_id = e.order_id;
164
     this.order_id = e.order_id;
151
     this.indexs = e.indexs;
165
     this.indexs = e.indexs;
152
     this.status = e.status;
166
     this.status = e.status;
153
     this.goodsCustomType = e.goodsCustomType;
167
     this.goodsCustomType = e.goodsCustomType;
154
     this.headerTitle = this.headerTitleMap[this.goodsCustomType];
168
     this.headerTitle = this.headerTitleMap[this.goodsCustomType];
155
     this.shipmentGoodsTitle = this.shipmentGoodsTitleMap[this.goodsCustomType];
169
     this.shipmentGoodsTitle = this.shipmentGoodsTitleMap[this.goodsCustomType];
170
+
171
+    await this.getOrderDetailsInfo();
172
+       if (this.goodsCustomType === "sendGoods") {
173
+      //获取发货规则信息
174
+      await this.getOrderDeliveryRule()
175
+    }
156
   },
176
   },
157
   methods: {
177
   methods: {
158
-	  handleOpen(){
159
-		  this.$refs.refsPackage.open()
160
-	  },
178
+    async getOrderListSigleData(order_sn) {
179
+       try {
180
+         const res = await getOrderListProduct(order_sn)
181
+         if (res.data.status == 200) {
182
+           let detailDa = res.data.data.list[0] && res.data.data.list[0].orderProduct || [];
183
+           this.detailData = { ...this.detailData, orderProduct: detailDa };
184
+         }
185
+       } catch (error) {
186
+        
187
+       }
188
+    },
189
+    async getOrderDetailsInfo() {
190
+      uni.showLoading({
191
+        title: "加载中",
192
+        mask: true,
193
+      });
194
+      try {
195
+        const res = await orderDetailApi(this.order_id);
196
+        if (res.data.status == 200) {
197
+          let detailDa = res.data.data || {};
198
+          this.detailData = { ...detailDa };
199
+          this.getOrderListSigleData(this.detailData.order_sn);
200
+          // console.log("订单详情", this.detailData);
201
+        }
202
+      } catch (error) {
203
+      } finally {
204
+        uni.hideLoading();
205
+      }
206
+    },
207
+    // 获取发货规则
208
+    async getOrderDeliveryRule() {
209
+      try {
210
+        const res = await orderDeliveryRuleApi(this.order_id);
211
+        if (res.data.status == 200) {
212
+          let data = res.data.data.rule;
213
+           data.forEach(item=>{
214
+            let ruleData = item.control[0]&&item.control[0].rule[0] && item.control[0].rule[0].options || []
215
+           this.ruleOptions = ruleData
216
+          });
217
+          // console.log("发货规则", this.ruleOptions);
218
+        }
219
+      } catch (error) {
220
+      } finally {
221
+      }
222
+    },
223
+    //填写物流信息
224
+    changeHandle(val){
225
+      // console.log("changeHandle",val)
226
+      this.orderDeliveryParam = val
227
+    },
228
+   async handleOpen() {
229
+      // console.log("changeHandle",this.orderDeliveryParam)
230
+      if(!this.orderDeliveryParam.delivery_id){
231
+        uni.showToast({
232
+          title: "请填写快递单号",
233
+          icon: "none",
234
+        });
235
+        return
236
+      }
237
+       if(!this.orderDeliveryParam.delivery_name){
238
+        uni.showToast({
239
+          title: "请选择物流公司",
240
+          icon: "none",
241
+        });
242
+        return
243
+      }
244
+      // console.log("changeHandle",this.orderDeliveryParam)
245
+      // this.$refs.refsPackage.open();
246
+      uni.showLoading({
247
+        title: "正在发货中...",
248
+        mask: true,
249
+      });
250
+      const _this =this
251
+      try {
252
+        const res = await orderDeliveryApi(this.order_id, this.orderDeliveryParam);
253
+          if(res.data.status == 200){
254
+             uni.showToast({
255
+              title: "发货成功",
256
+              icon: "none",
257
+            });
258
+            setTimeout(() => {
259
+              _this.topgi()
260
+            },1000)
261
+          }
262
+      } catch (error) {
263
+        
264
+      }finally{
265
+        uni.hideLoading();
266
+      }
267
+    },
161
     copyHandle(val) {
268
     copyHandle(val) {
162
       copy(val);
269
       copy(val);
163
     },
270
     },
@@ -173,6 +280,7 @@ export default {
173
     },
280
     },
174
     selectUserInfo() {
281
     selectUserInfo() {
175
       console.log("选择用户信息");
282
       console.log("选择用户信息");
283
+      return;
176
       const urlParams = {
284
       const urlParams = {
177
         status: this.status,
285
         status: this.status,
178
         index: this.indexs,
286
         index: this.indexs,
@@ -211,10 +319,10 @@ page {
211
     .btn-box {
319
     .btn-box {
212
       width: 100%;
320
       width: 100%;
213
       position: fixed;
321
       position: fixed;
214
-      background: #FFFFFF;
215
-	  height: 125rpx;
322
+      background: #ffffff;
323
+      height: 125rpx;
216
       bottom: 0rpx;
324
       bottom: 0rpx;
217
-	  padding-top: 15rpx;
325
+      padding-top: 15rpx;
218
       .send-goods {
326
       .send-goods {
219
         height: 78rpx;
327
         height: 78rpx;
220
         margin: 0 32rpx;
328
         margin: 0 32rpx;

+ 2 - 2
shop/components/tabs/tabs/tabs.vue

@@ -1,8 +1,8 @@
1
 <template>
1
 <template>
2
-	<view class="content">
2
+	<view class="content" @touchmove.prevent>
3
 		<view class="nav">
3
 		<view class="nav">
4
 			<!-- 选项卡水平方向滑动,scroll-with-animation是滑动到下一个选项时,有一个延时效果 -->
4
 			<!-- 选项卡水平方向滑动,scroll-with-animation是滑动到下一个选项时,有一个延时效果 -->
5
-			<scroll-view class="tab-scroll" scroll-x="true" scroll-with-animation :scroll-left="scrollLeft">
5
+			<scroll-view @touchmove.stop class="tab-scroll" scroll-x="true" scroll-with-animation :scroll-left="scrollLeft">
6
 				<view class="tab-scroll_box">
6
 				<view class="tab-scroll_box">
7
 					<!-- 选项卡类别列表 -->
7
 					<!-- 选项卡类别列表 -->
8
 					<view class="tab-scroll_item" v-for=" (item,index) in category" 
8
 					<view class="tab-scroll_item" v-for=" (item,index) in category" 

BIN
static/images/new_ui/yiquxiao.png


BIN
static/images/new_ui/yishenqinftuikuan.png


BIN
static/images/new_ui/yituikuan.png