Browse Source

新增售后管理

storeBelieveInLight 1 year ago
parent
commit
7bb1bd52fb
33 changed files with 4755 additions and 1116 deletions
  1. 28 1
      commit/order.js
  2. 8 5
      commit/request.js
  3. 30 23
      manifest.json
  4. 29 7
      pages.json
  5. 485 424
      pages/ordermanagement/index.vue
  6. 50 0
      pages/supplychainon/emptyData/emptyData.vue
  7. 96 0
      pages/supplychainon/search/search.vue
  8. 75 10
      pages/supplychainon/supplychainon.vue
  9. 205 0
      pages/supplychainon/tablist.vue
  10. 408 0
      shop/afterSalesManagement/afterCardDetail.vue
  11. 287 0
      shop/afterSalesManagement/afterCardListInfo.vue
  12. 299 0
      shop/afterSalesManagement/afterSalesDetail.vue
  13. 50 0
      shop/afterSalesManagement/components/emptyData/emptyData.vue
  14. 87 0
      shop/afterSalesManagement/components/search/search.vue
  15. 206 0
      shop/afterSalesManagement/components/tablist.vue
  16. 154 0
      shop/afterSalesManagement/index.vue
  17. 75 51
      shop/commodity/logisticsInformationDetail.vue
  18. 275 264
      shop/commodity/order.vue
  19. 562 0
      shop/components/cascade-picker.vue
  20. 142 25
      shop/productManagementModule/addProduct.vue
  21. 191 0
      shop/productManagementModule/components/listCardInfo.vue
  22. 2 2
      shop/productManagementModule/components/tablist.vue
  23. 333 303
      shop/productManagementModule/index.vue
  24. 608 0
      shop/productManagementModule/mockDataPro.js
  25. 22 0
      shop/productManagementModule/productClassification.vue
  26. 5 1
      shop/productManagementModule/productManagement.vue
  27. BIN
      static/images/new_ui/Apifox-windows-latest.zip
  28. BIN
      static/images/new_ui/cangku.png
  29. BIN
      static/images/new_ui/jingjiekucun.png
  30. BIN
      static/images/new_ui/kuaidi.png
  31. BIN
      static/images/new_ui/yijingchushou.png
  32. BIN
      static/images/new_ui/yijingshouqing.png
  33. 43 0
      utils/index.js

+ 28 - 1
commit/order.js

@@ -24,4 +24,31 @@ export function getOrderDetails(data) {
24 24
   method: 'post', 
25 25
   data 
26 26
  }) 
27
-} 
27
+} 
28
+const pre = "api/"
29
+// 订单状态数
30
+export function getOrderStatusNumber(data) {
31
+    return myRequest({
32
+        url: `${pre}mer/store/order/chart`,
33
+        method: 'GET',
34
+         data
35
+    })
36
+}
37
+
38
+// 订单列表
39
+export function getOrderList(data) {
40
+    return myRequest({
41
+        url: `${pre}mer/store/order/lst`,
42
+        method: 'GET',
43
+         data
44
+    })
45
+}
46
+
47
+// filtter
48
+export function getOrderListFiltter(data) {
49
+    return myRequest({
50
+        url: `${pre}mer/store/order/filtter`,
51
+        method: 'GET',
52
+         data
53
+    })
54
+}

+ 8 - 5
commit/request.js

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

+ 30 - 23
manifest.json

@@ -87,30 +87,37 @@
87 87
         "devServer" : {
88 88
             "https" : false,
89 89
             "proxy" : {
90
-                // 自行修改下方的 /web
91
-                "/gateway" : {
92
-                  // "secure": false,
93
-                  "target": "https://api.hxxfb.com",
94
-                  "pathRewirte": {
95
-                    //路径重写
96
-                    "^/gateway": "/gateway"
97
-                  }
98
-                },
99
-                // "target" : "https://api.hebeiyhc.com"
100
-                // "target": "http://8.141.0.149:9000",
101
-                // "target": "https://app.bjtdba.com"
102
-                // "pathRewrite": {
103
-                // 	//路径重写
104
-                // 	"^/gateway": ""
105
-                // }
106
-                // 自行修改下方的 /api
107
-                "/api" : {
108
-                    "target" : "https://api.hxxfb.com",
109
-                    "pathRewirte" : {
110
-                        //路径重写
111
-                        "^/api" : "/"
112
-                    }
90
+              // 自行修改下方的 /web
91
+              "/gateway": {
92
+                // "secure": false,
93
+                "target": "https://api.hxxfb.com",
94
+                "pathRewirte": {
95
+                  //路径重写
96
+                  "^/gateway": "/gateway"
97
+                }
98
+              },
99
+              // "target" : "https://api.hebeiyhc.com"
100
+              // "target": "http://8.141.0.149:9000",
101
+              // "target": "https://app.bjtdba.com"
102
+              // "pathRewrite": {
103
+              // 	//路径重写
104
+              // 	"^/gateway": ""
105
+              // }
106
+              // 自行修改下方的 /api
107
+              "/api": {
108
+                "target": "https://api.hxxfb.com",
109
+                "pathRewirte": {
110
+                  //路径重写
111
+                  "^/api": "/"
112
+                }
113
+              },
114
+              "/gateway/api": {
115
+                "target": "https://api.hxxfb.com",
116
+                "pathRewirte": {
117
+                  //路径重写
118
+                  "^/api": "/"
113 119
                 }
120
+              }
114 121
             }
115 122
         },
116 123
         "router" : {

+ 29 - 7
pages.json

@@ -25,7 +25,7 @@
25 25
       // "navigationBarBackgroundColor": "#FFFF"
26 26
       {
27 27
         "path": "pages/index/bottombat",
28
-        "style": {
28
+        "style": {         
29 29
           "navigationBarTitleText": ""
30 30
         }
31 31
       },
@@ -265,6 +265,28 @@
265 265
                 		// "navigationBarTitleText" : "",
266 266
                 		"navigationStyle" : "custom"
267 267
                 	}
268
+                },
269
+                {
270
+                	"path" : "productManagementModule/productClassification",//商品分类
271
+                	"style" : {
272
+                    "navigationStyle": "custom",
273
+                    "enablePullDownRefresh": true
274
+                  }
275
+                },
276
+                   {
277
+                	"path" : "afterSalesManagement/index",//售后管理
278
+                	"style" : {
279
+                    "navigationStyle": "custom",
280
+                    "enablePullDownRefresh": true
281
+                  }
282
+                },
283
+                {
284
+                	"path" : "afterSalesManagement/afterSalesDetail",//售后详情
285
+                	"style" : 
286
+                	{
287
+                    // "navigationBarTitleText" : ""
288
+                    "navigationStyle": "custom"
289
+                  }
268 290
                 }
269 291
             ]
270 292
         },
@@ -339,12 +361,12 @@
339 361
                 "selectedIconPath" : "static/tab/dian1.png",
340 362
                 "text" : "商品管理"
341 363
             },
342
-			{
343
-			    "pagePath" : "pages/supplychainon/supplychainon",
344
-			    "iconPath" : "static/tab/gongyinglian.png",
345
-			    "selectedIconPath" : "static/tab/gongyinglian1.png",
346
-			    "text" : "供应链"
347
-			},
364
+			// {
365
+			//     "pagePath" : "pages/supplychainon/supplychainon",
366
+			//     "iconPath" : "static/tab/gongyinglian.png",
367
+			//     "selectedIconPath" : "static/tab/gongyinglian1.png",
368
+			//     "text" : "供应链"
369
+			// },
348 370
             {
349 371
                 "pagePath" : "pages/ordermanagement/index",
350 372
                 "iconPath" : "static/tab/daing.png",

+ 485 - 424
pages/ordermanagement/index.vue

@@ -1,452 +1,513 @@
1 1
 <template>
2
-	<view class="ordermanagement">
3
-		<view class="ordermanagement-header">
4
-			<view class="ordermanagement-header-text">
5
-				订单管理
6
-			</view>
7
-			<view class="ordermanagement-list">
8
-				<view class="ordermanagement-list-yi">
9
-					<view class="ordermanagement-list-yi-top">
10
-						{{num.orderPayment==undefined?0:num.orderPayment}}
11
-					</view>
12
-					<view class="ordermanagement-list-yi-bottom">
13
-						已支付订单数
14
-					</view>
15
-				</view>
16
-				<view class="ordermanagement-list-yi">
17
-					<view class="ordermanagement-list-yi-top">
18
-						{{num.payPrice==undefined?0:num.payPrice}}
19
-					</view>
20
-					<view class="ordermanagement-list-yi-bottom">
21
-						实际支付金额
22
-					</view>
23
-				</view>
24
-				<view class="ordermanagement-list-yi">
25
-					<view class="ordermanagement-list-yi-top">
26
-						{{num.refundPrice==undefined?0:num.refundPrice}}
27
-					</view>
28
-					<view class="ordermanagement-list-yi-bottom">
29
-						已退款金额
30
-					</view>
31
-				</view>
32
-			</view>
33
-		</view>
34
-		<view class="ordermanagement-ding">
35
-			<view class="view-wrapper">
36
-				<view class="ordermanagement-ding-text">
37
-					我的订单
38
-				</view>
39
-				<view class="view-all" @click="jiru('all',0)">
40
-					<text>查看全部</text>
41
-					<image src="/static/images/new_ui/arrow-right.png" class="icon-img"></image>
42
-				</view>
43
-			</view>
44
-			<view class="ordermanagement-ding-nei">
45
-				<view class="ordermanagement-yisdf" v-for="(item,index) in dingdan" :key="index" @click="jiru(item.status,index+1)">
46
-					<view class="ordermanagement-img">
47
-						<image :src="item.img" mode="widthFix"></image>
48
-						<view class="ordermanagement-img-biao" v-if="item.num==0?false:true">
49
-							{{item.num}}
50
-						</view>
51
-					</view>
52
-					<view class="">
53
-						{{item.name}}
54
-					</view>
55
-				</view>
56
-			</view>
57
-		</view>
58
-		
59
-		<quickPickUpVue class="custom_pick-up"></quickPickUpVue>
60
-		
61
-		<!-- 		<view class="ordermanagement-dingsss">
62
-			<view class="ordermanagement-ding-text">
2
+  <view class="ordermanagement">
3
+    <view class="ordermanagement-header">
4
+      <view class="ordermanagement-header-text"> 订单管理 </view>
5
+      <view class="ordermanagement-list">
6
+        <view class="ordermanagement-list-yi">
7
+          <view class="ordermanagement-list-yi-top">
8
+            {{ num.orderPayment == undefined ? 0 : num.orderPayment }}
9
+          </view>
10
+          <view class="ordermanagement-list-yi-bottom"> 已支付订单数 </view>
11
+        </view>
12
+        <view class="ordermanagement-list-yi">
13
+          <view class="ordermanagement-list-yi-top">
14
+            {{ num.payPrice == undefined ? 0 : num.payPrice }}
15
+          </view>
16
+          <view class="ordermanagement-list-yi-bottom"> 实际支付金额 </view>
17
+        </view>
18
+        <view class="ordermanagement-list-yi">
19
+          <view class="ordermanagement-list-yi-top">
20
+            {{ num.refundPrice == undefined ? 0 : num.refundPrice }}
21
+          </view>
22
+          <view class="ordermanagement-list-yi-bottom"> 已退款金额 </view>
23
+        </view>
24
+      </view>
25
+    </view>
26
+    <view class="ordermanagement-ding">
27
+      <view class="view-wrapper">
28
+        <view class="ordermanagement-ding-text"> 我的订单 </view>
29
+        <view class="view-all" @click="jiru('all', 0)">
30
+          <text>查看全部</text>
31
+          <image
32
+            src="/static/images/new_ui/arrow-right.png"
33
+            class="icon-img"
34
+          ></image>
35
+        </view>
36
+      </view>
37
+      <view class="ordermanagement-ding-nei">
38
+        <view
39
+          class="ordermanagement-yisdf"
40
+          v-for="(item, index) in dingdan"
41
+          :key="index+'__index__'"
42
+          @click="jiru(item.status, index + 1)"
43
+        >
44
+          <view class="ordermanagement-img">
45
+            <image :src="item.img" mode="widthFix"></image>
46
+            <view class="ordermanagement-img-biao" v-if="item.num != 0">
47
+              {{ item.num }}
48
+            </view>
49
+          </view>
50
+          <view class="">
51
+            {{ item.name }}
52
+          </view>
53
+        </view>
54
+      </view>
55
+    </view>
56
+
57
+    <view class="ordermanagement-dingsss">
58
+      <!-- <view class="ordermanagement-ding-text">
63 59
 				售后管理
64
-			</view>
65
-			<view class="ordermanagement-ding-nei">
66
-				<view class="ordermanagement-yisdf" v-for="(item,index) in dingdansss" :key="dingdan">
67
-					<view class="ordermanagement-img">
68
-						<image :src="item.img" mode="widthFix"></image>
69
-					</view>
70
-					<view class="">
71
-						{{item.name}}
72
-					</view>
73
-				</view>
74
-			</view>
75
-		</view> -->
76
-	</view>
60
+			</view> -->
61
+      <view class="view-wrapper">
62
+        <view class="ordermanagement-ding-text"> 售后管理 </view>
63
+        <view class="view-all" @click="afterSalesClick('all', 0)">
64
+          <text>查看全部</text>
65
+          <image
66
+            src="/static/images/new_ui/arrow-right.png"
67
+            class="icon-img"
68
+          ></image>
69
+        </view>
70
+      </view>
71
+      <view class="ordermanagement-ding-nei">
72
+        <view
73
+          class="ordermanagement-yisdf"
74
+          v-for="(item, index) in dingdansss"
75
+          :key="index+'pp'+'__index__'"
76
+		  @click="afterSalesClick(item, index )"
77
+        >
78
+          <view class="ordermanagement-img">
79
+            <image :src="item.img" mode="widthFix"></image>
80
+          </view>
81
+          <view class="">
82
+            {{ item.name }}
83
+          </view>
84
+        </view>
85
+      </view>
86
+    </view>
87
+	
88
+    <!-- <quickPickUpVue class="custom_pick-up"></quickPickUpVue> -->
89
+  </view>
77 90
 </template>
78 91
 
79 92
 <script>
80
-	import {
81
-		getOrderStstusAmount
82
-	} from '@/commit/order.js'
83
-	import quickPickUpVue from './components/quickPickUp/quickPickUp.vue';
84
-	export default {
85
-		components:{quickPickUpVue},
86
-		data() {
87
-			return {
88
-				num: [], //正向订单状态数
89
-				mer_id: 264,
90
-				dingdan: [{
91
-						img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154736170.png',
92
-						name: '待付款',
93
-						status:1
94
-					},
95
-					{
96
-						img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154723185.png',
97
-						name: '待发货',
98
-						status:2
99
-					},
100
-					{
101
-						img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154804269.png',
102
-						name: '待收货',
103
-						status:3
104
-					},
105
-					{
106
-						img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154750259.png',
107
-						name: '待评价',
108
-						status:4
109
-					}
110
-					// ,
111
-					// {
112
-					// 	img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154847886.png',
113
-					// 	name: '已退款',
114
-					//status:6
115
-					// }
116
-				],
117
-				dingdansss: [{
118
-						img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154904247.png',
119
-						name: '待审核'
120
-					},
121
-					{
122
-						img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154932244.png',
123
-						name: '未通过'
124
-					},
125
-					{
126
-						img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154949118.png',
127
-						name: '已通过'
128
-					},
129
-					{
130
-						img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154918922.png',
131
-						name: '待收货'
132
-					},
133
-					{
134
-						img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812155008586.png',
135
-						name: '已完成'
136
-					}
137
-				]
138
-			}
139
-		},
140
-		onLoad() {
141
-			
142
-		},
143
-		onShow() {
144
-			// uni.showLoading({
145
-			// 	title: '加载中',
146
-			// });
147
-			let selectmerchant = uni.getStorageSync('selectmerchant')
148
-			this.mer_id = selectmerchant.merId
149
-			// this.getOrderStstusAmount()
150
-			
151
-			
152
-			
153
-			
154
-		},
155
-		methods: {
156
-			// 正向订单状态数
157
-			getOrderStstusAmount() {
158
-				getOrderStstusAmount({
159
-					mer_id: this.mer_id
160
-				}).then(res => {
161
-					if (res.data.status == 200) {
162
-						this.num = res.data.data
163
-						this.dingdan = [{
164
-								img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154736170.png',
165
-								name: '待付款',
166
-								num: this.num.orderPrepPayment,
167
-								status:5
168
-							},
169
-							{
170
-								img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154723185.png',
171
-								name: '待发货',
172
-								num: this.num.orderForDelivery,
173
-								status:0
174
-							},
175
-							{
176
-								img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154804269.png',
177
-								name: '待收货',
178
-								num: this.num.orderForReceived,
179
-								status:1
180
-							},
181
-							{
182
-								img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154750259.png',
183
-								name: '待评价',
184
-								num: this.num.orderForSpeech,
185
-								status:2
186
-							}
187
-						]
188
-						uni.hideLoading();
189
-					}
190
-				}, fail => {
191
-					console.log(fail)
192
-				})
193
-			},
194
-			jiru(e,i) {
195
-				
196
-				
197
-				let authorization = uni.getStorageSync('authorization')
198
-				let userinfo = uni.getStorageSync('userinfo')
199
-				let selectmerchant = uni.getStorageSync('selectmerchant')
200
-				let uid = userinfo.uid
201
-				uni.redirectTo({
202
-					url: "../../shop/commodity/order?status="+e + "&index="+ i
203
-				})
204
-				return
205
-				if (authorization && uid) {
206
-					if (selectmerchant.merId >= 0 && selectmerchant.status == -1) {
207
-						uni.redirectTo({
208
-							url: "/openmerchant/guide/index" //有或者没有商户 没有金额支付and激活码支付
209
-						});
210
-						return
211
-					} else if (selectmerchant.merId > 0 && (selectmerchant.status == 1 || selectmerchant.status == 5)) {
212
-						uni.redirectTo({
213
-							url: "../../shop/commodity/order?status="+e + "&index="+ i
214
-						})
215
-						return
216
-					} else if (selectmerchant.merId >= 0 && (selectmerchant.status == 3 || selectmerchant.status == 4)) {
217
-						uni.redirectTo({
218
-							url: '/openmerchant/shopentry/process?mer_id=' + selectmerchant.merId //已开通商户未填写资料
219
-						});
220
-						return
221
-					} else if (selectmerchant.merId > 0 && selectmerchant.status == 0) {
222
-						uni.redirectTo({
223
-							url: '/openmerchant/shopentry/processaudit?submitCode=' + 3 //已开通商户待审核
224
-						});
225
-						return
226
-					} else if (selectmerchant.merId > 0 && selectmerchant.status == 2) {
227
-						uni.redirectTo({
228
-							url: '/openmerchant/shopentry/processaudit?submitCode=' + 2 //已开通商户审核拒绝
229
-						});
230
-						return
231
-					}
232
-				
233
-				} else {
234
-					uni.navigateTo({
235
-						url: "/pages/user/login/index?type=1"
236
-					});
237
-					return
238
-				}
239
-				
240
-				
241
-			}
242
-		}
243
-	}
93
+import { getOrderStstusAmount,getOrderStatusNumber,getOrderList } from "@/commit/order.js";
94
+import quickPickUpVue from "./components/quickPickUp/quickPickUp.vue";
95
+import {toQueryString} from "@/utils/index.js"
96
+export default {
97
+  components: { quickPickUpVue },
98
+  data() {
99
+    return {
100
+      num: [], //正向订单状态数
101
+      mer_id: 264,
102
+      dingdan: [
103
+        {
104
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154736170.png",
105
+          name: "待付款",
106
+          status: 1,
107
+        },
108
+        {
109
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154723185.png",
110
+          name: "待发货",
111
+          status: 2,
112
+        },
113
+        {
114
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154804269.png",
115
+          name: "待收货",
116
+          status: 3,
117
+        },
118
+        {
119
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154750259.png",
120
+          name: "待评价",
121
+          status: 4,
122
+        },
123
+        // ,
124
+        // {
125
+        // 	img: 'https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154847886.png',
126
+        // 	name: '已退款',
127
+        //status:6
128
+        // }
129
+      ],
130
+      dingdansss: [
131
+		//  {
132
+        //   img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154904247.png",
133
+        //   name: "全部",
134
+        // },
135
+        {
136
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154932244.png",
137
+          name: "审核中",
138
+        },
139
+        {
140
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154949118.png",
141
+          name: "处理中",
142
+        },
143
+        {
144
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812155008586.png",
145
+          name: "已完成",
146
+        },
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
+      ],
168
+    };
169
+  },
170
+  onLoad() {},
171
+  onShow() {
172
+      uni.showLoading({
173
+    	title: '加载中',
174
+    });
175
+    let selectmerchant = uni.getStorageSync("selectmerchant");
176
+    this.mer_id = selectmerchant.merId;
177
+    this.getOrderStatusNumberData()
178
+  },
179
+  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
+
192
+
193
+
194
+    // 正向订单状态数
195
+    getOrderStatusNumberData() {
196
+      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:''
211
+      }).then(
212
+        (res) => {
213
+          if (res.data.status == 200) {
214
+            this.num = res.data.data;
215
+            this.dingdan = [
216
+              {
217
+                img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154736170.png",
218
+                name: "待付款",
219
+                num: this.num.orderPrepPayment,
220
+                status: 5,
221
+              },
222
+              {
223
+                img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154723185.png",
224
+                name: "待发货",
225
+                num: this.num.orderForDelivery,
226
+                status: 0,
227
+              },
228
+              {
229
+                img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154804269.png",
230
+                name: "待收货",
231
+                num: this.num.orderForReceived,
232
+                status: 1,
233
+              },
234
+              {
235
+                img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154750259.png",
236
+                name: "待评价",
237
+                num: this.num.orderForSpeech,
238
+                status: 2,
239
+              },
240
+            ];
241
+            uni.hideLoading();
242
+          }
243
+        },
244
+        (fail) => {
245
+          console.log(fail);
246
+        }
247
+      );
248
+    },
249
+    jiru(e, i) {
250
+      let authorization = uni.getStorageSync("authorization");
251
+      let userinfo = uni.getStorageSync("userinfo");
252
+      let selectmerchant = uni.getStorageSync("selectmerchant");
253
+      let uid = userinfo.uid;
254
+      uni.redirectTo({
255
+        url: "../../shop/commodity/order?status=" + e + "&index=" + i,
256
+      });
257
+      return;
258
+      if (authorization && uid) {
259
+        if (selectmerchant.merId >= 0 && selectmerchant.status == -1) {
260
+          uni.redirectTo({
261
+            url: "/openmerchant/guide/index", //有或者没有商户 没有金额支付and激活码支付
262
+          });
263
+          return;
264
+        } else if (
265
+          selectmerchant.merId > 0 &&
266
+          (selectmerchant.status == 1 || selectmerchant.status == 5)
267
+        ) {
268
+          uni.redirectTo({
269
+            url: "../../shop/commodity/order?status=" + e + "&index=" + i,
270
+          });
271
+          return;
272
+        } else if (
273
+          selectmerchant.merId >= 0 &&
274
+          (selectmerchant.status == 3 || selectmerchant.status == 4)
275
+        ) {
276
+          uni.redirectTo({
277
+            url:
278
+              "/openmerchant/shopentry/process?mer_id=" + selectmerchant.merId, //已开通商户未填写资料
279
+          });
280
+          return;
281
+        } else if (selectmerchant.merId > 0 && selectmerchant.status == 0) {
282
+          uni.redirectTo({
283
+            url: "/openmerchant/shopentry/processaudit?submitCode=" + 3, //已开通商户待审核
284
+          });
285
+          return;
286
+        } else if (selectmerchant.merId > 0 && selectmerchant.status == 2) {
287
+          uni.redirectTo({
288
+            url: "/openmerchant/shopentry/processaudit?submitCode=" + 2, //已开通商户审核拒绝
289
+          });
290
+          return;
291
+        }
292
+      } else {
293
+        uni.navigateTo({
294
+          url: "/pages/user/login/index?type=1",
295
+        });
296
+        return;
297
+      }
298
+    },
299
+  },
300
+};
244 301
 </script>
245 302
 <style>
246
-	page {
247
-		background-color: #F7F8FC;
248
-	}
303
+page {
304
+  background-color: #f7f8fc;
305
+}
249 306
 </style>
250 307
 <style lang="scss" scoped>
251
-	.ordermanagement {
252
-		width: 100%;
253
-		height: 100%;
254
-		display: flex;
255
-		flex-direction: column;
256
-		align-items: center;
308
+.ordermanagement {
309
+  width: 100%;
310
+  height: 100%;
311
+  display: flex;
312
+  flex-direction: column;
313
+  align-items: center;
314
+  padding-bottom: 50rpx;
315
+  box-sizing: border-box;
257 316
 
258
-		.ordermanagement-header {
259
-			width: 100%;
260
-			height: 100%;
261
-			display: flex;
262
-			flex-direction: column;
263
-			align-items: center;
264
-			width: 100%;
265
-			height: 328rpx;
266
-			background: linear-gradient(180deg, rgba(31, 124, 255, 0.2200) 0%, rgba(255, 255, 255, 0.1500) 100%);
267
-			position: relative;
268
-			display: flex;
269
-			justify-content: center;
317
+  .ordermanagement-header {
318
+    width: 100%;
319
+    height: 100%;
320
+    display: flex;
321
+    flex-direction: column;
322
+    align-items: center;
323
+    width: 100%;
324
+    height: 328rpx;
325
+    background: linear-gradient(
326
+      180deg,
327
+      rgba(31, 124, 255, 0.22) 0%,
328
+      rgba(255, 255, 255, 0.15) 100%
329
+    );
330
+    position: relative;
331
+    display: flex;
332
+    justify-content: center;
270 333
 
271
-			.ordermanagement-header-text {
272
-				position: absolute;
273
-				font-size: 46rpx;
274
-				font-weight: 500;
275
-				color: #333333;
276
-				top: 202rpx;
277
-				left: 64rpx;
278
-			}
334
+    .ordermanagement-header-text {
335
+      position: absolute;
336
+      font-size: 46rpx;
337
+      font-weight: 500;
338
+      color: #333333;
339
+      top: 60rpx;
340
+      left: 64rpx;
341
+    }
279 342
 
280
-			.ordermanagement-list {
281
-				position: absolute;
282
-				top: 298rpx;
283
-				width: calc(100% - 54rpx);
284
-				min-height: 150rpx;
285
-				margin: 0 26rpx;
286
-				background: #FFFFFF;
287
-				border-radius: 16rpx;
288
-				display: flex;
289
-				justify-content: space-around;
290
-				align-items: center;
343
+    .ordermanagement-list {
344
+      position: absolute;
345
+      top: 160rpx;
346
+      width: calc(100% - 54rpx);
347
+      min-height: 150rpx;
348
+      margin: 0 26rpx;
349
+      background: #ffffff;
350
+      border-radius: 16rpx;
351
+      display: flex;
352
+      justify-content: space-around;
353
+      align-items: center;
291 354
 
292
-				.ordermanagement-list-yi {
293
-					height: 70rpx;
294
-					display: flex;
295
-					flex-direction: column;
296
-					justify-content: space-between;
297
-					align-items: center;
355
+      .ordermanagement-list-yi {
356
+        height: 70rpx;
357
+        display: flex;
358
+        flex-direction: column;
359
+        justify-content: space-between;
360
+        align-items: center;
298 361
 
299
-					.ordermanagement-list-yi-top {
300
-						font-size: 36rpx;
301
-						font-weight: bold;
302
-						color: #333333;
303
-					}
362
+        .ordermanagement-list-yi-top {
363
+          font-size: 36rpx;
364
+          font-weight: bold;
365
+          color: #333333;
366
+        }
304 367
 
305
-					.ordermanagement-list-yi-bottom {
306
-						font-size: 26rpx;
307
-						font-weight: 400;
308
-						color: #333333;
309
-					}
310
-				}
311
-			}
312
-		}
368
+        .ordermanagement-list-yi-bottom {
369
+          font-size: 26rpx;
370
+          font-weight: 400;
371
+          color: #333333;
372
+        }
373
+      }
374
+    }
375
+  }
376
+  .view-wrapper {
377
+    display: flex;
378
+    justify-content: space-between;
379
+    align-items: center;
380
+    width: 100%;
381
+  }
382
+  .view-all {
383
+    display: flex;
384
+    justify-content: center;
385
+    align-items: center;
386
+    font-family: PingFangSC, PingFang SC;
387
+    font-weight: 400;
388
+    font-size: 24rpx;
389
+    > text:first-child {
390
+      padding-right: 8rpx;
391
+      color: #999999;
392
+    }
393
+    .icon-img {
394
+      width: 26rpx;
395
+      height: 26rpx;
396
+    }
397
+  }
398
+  .ordermanagement-ding {
399
+    width: calc(100% - 54rpx);
400
+    min-height: 216rpx;
401
+    margin: 20rpx 26rpx 32rpx 26rpx;
402
+    display: flex;
403
+    flex-direction: column;
404
+    justify-content: space-between;
405
+    align-items: flex-start;
313 406
 
314
-		.ordermanagement-ding {
315
-			width: calc(100% - 54rpx);
316
-			min-height: 216rpx;
317
-			margin: 156rpx 26rpx 32rpx 26rpx;
318
-			display: flex;
319
-			flex-direction: column;
320
-			justify-content: space-between;
321
-			align-items: flex-start;
322
-            .view-wrapper{
323
-				display: flex;
324
-				justify-content: space-between;
325
-				align-items: center;
326
-				width:100%;
327
-				
328
-			}
329
-			.view-all{
330
-				display: flex;
331
-				justify-content:center;
332
-				align-items: center;
333
-				font-family: PingFangSC, PingFang SC;
334
-				font-weight: 400;
335
-				font-size: 24rpx;
336
-				>text:first-child{
337
-					padding-right: 8rpx;
338
-					color: #999999;
339
-				}
340
-				.icon-img{
341
-					width: 26rpx;
342
-					height: 26rpx;
343
-					
344
-				}
345
-			}
346
-			.ordermanagement-ding-text {
347
-				font-size: 30rpx;
348
-				font-weight: 600;
349
-				color: #333333;
350
-			}
407
+    .ordermanagement-ding-text {
408
+      font-size: 30rpx;
409
+      font-weight: 600;
410
+      color: #333333;
411
+    }
351 412
 
352
-			.ordermanagement-ding-nei {
353
-				width: 100%;
354
-				height: 160rpx;
355
-				background: #FFFFFF;
356
-				border-radius: 16rpx;
357
-				display: flex;
358
-				justify-content: space-around;
359
-				align-items: center;
413
+    .ordermanagement-ding-nei {
414
+      width: 100%;
415
+      height: 160rpx;
416
+      background: #ffffff;
417
+      border-radius: 16rpx;
418
+      display: flex;
419
+      justify-content: space-around;
420
+      align-items: center;
360 421
 
361
-				.ordermanagement-yisdf {
362
-					height: 96rpx;
363
-					display: flex;
364
-					flex-direction: column;
365
-					justify-content: space-between;
366
-					align-items: center;
367
-					font-size: 24rpx;
368
-					font-weight: 400;
369
-					color: #5F6060;
422
+      .ordermanagement-yisdf {
423
+        height: 96rpx;
424
+        display: flex;
425
+        flex-direction: column;
426
+        justify-content: space-between;
427
+        align-items: center;
428
+        font-size: 24rpx;
429
+        font-weight: 400;
430
+        color: #5f6060;
370 431
 
371
-					.ordermanagement-img {
372
-						width: 48rpx;
373
-						height: 48rpx;
374
-						position: relative;
432
+        .ordermanagement-img {
433
+          width: 48rpx;
434
+          height: 48rpx;
435
+          position: relative;
375 436
 
376
-						image {
377
-							width: 100%;
378
-							height: 100%;
379
-						}
437
+          image {
438
+            width: 100%;
439
+            height: 100%;
440
+          }
380 441
 
381
-						.ordermanagement-img-biao {
382
-							position: absolute;
383
-							left: 40rpx;
384
-							bottom: 31rpx;
385
-							width: 30rpx;
386
-							height: 30rpx;
387
-							border-radius: 50%;
388
-							background: #FE0032;
389
-							font-size: 20rpx;
390
-							font-weight: 400;
391
-							color: #FFFFFF;
392
-							display: flex;
393
-							justify-content: center;
394
-							align-items: center;
395
-						}
396
-					}
397
-				}
398
-			}
399
-		}
442
+          .ordermanagement-img-biao {
443
+            position: absolute;
444
+            left: 40rpx;
445
+            bottom: 31rpx;
446
+            width: 30rpx;
447
+            height: 30rpx;
448
+            border-radius: 50%;
449
+            background: #fe0032;
450
+            font-size: 20rpx;
451
+            font-weight: 400;
452
+            color: #ffffff;
453
+            display: flex;
454
+            justify-content: center;
455
+            align-items: center;
456
+          }
457
+        }
458
+      }
459
+    }
460
+  }
400 461
 
401
-		.ordermanagement-dingsss {
402
-			width: 686rpx;
403
-			height: 216rpx;
404
-			display: flex;
405
-			flex-direction: column;
406
-			justify-content: space-between;
407
-			align-items: flex-start;
462
+  .ordermanagement-dingsss {
463
+    width:calc(100% - 52rpx);
464
+    height: 216rpx;
465
+    display: flex;
466
+    flex-direction: column;
467
+    justify-content: space-between;
468
+    align-items: flex-start;
408 469
 
409
-			.ordermanagement-ding-text {
410
-				font-size: 30rpx;
411
-				font-weight: 600;
412
-				color: #333333;
413
-			}
470
+    .ordermanagement-ding-text {
471
+      font-size: 30rpx;
472
+      font-weight: 600;
473
+      color: #333333;
474
+    }
414 475
 
415
-			.ordermanagement-ding-nei {
416
-				width: 100%;
417
-				height: 160rpx;
418
-				background: #FFFFFF;
419
-				border-radius: 16rpx;
420
-				display: flex;
421
-				justify-content: space-around;
422
-				align-items: center;
476
+    .ordermanagement-ding-nei {
477
+      width: 100%;
478
+      height: 160rpx;
479
+      background: #ffffff;
480
+      border-radius: 16rpx;
481
+      display: flex;
482
+      justify-content: space-around;
483
+      align-items: center;
423 484
 
424
-				.ordermanagement-yisdf {
425
-					height: 96rpx;
426
-					display: flex;
427
-					flex-direction: column;
428
-					justify-content: space-between;
429
-					align-items: center;
430
-					font-size: 24rpx;
431
-					font-weight: 400;
432
-					color: #5F6060;
485
+      .ordermanagement-yisdf {
486
+        height: 96rpx;
487
+        display: flex;
488
+        flex-direction: column;
489
+        justify-content: space-between;
490
+        align-items: center;
491
+        font-size: 24rpx;
492
+        font-weight: 400;
493
+        color: #5f6060;
433 494
 
434
-					.ordermanagement-img {
435
-						width: 48rpx;
436
-						height: 48rpx;
495
+        .ordermanagement-img {
496
+          width: 48rpx;
497
+          height: 48rpx;
437 498
 
438
-						image {
439
-							width: 100%;
440
-							height: 100%;
441
-						}
442
-					}
443
-				}
444
-			}
445
-		}
446
-	
447
-	    .custom_pick-up{
448
-			width: calc(100% - 54rpx);
449
-			margin:0 26rpx;
450
-		}
451
-	}
499
+          image {
500
+            width: 100%;
501
+            height: 100%;
502
+          }
503
+        }
504
+      }
505
+    }
506
+  }
507
+
508
+  .custom_pick-up {
509
+    width: calc(100% - 54rpx);
510
+    margin: 0 26rpx;
511
+  }
512
+}
452 513
 </style>

+ 50 - 0
pages/supplychainon/emptyData/emptyData.vue

@@ -0,0 +1,50 @@
1
+<template>
2
+	    <view class="flex-col">
3
+	      <image
4
+	        class="image_wrapper"
5
+	        src="/static/images/new_ui/empty_data.png"
6
+	      />
7
+	      <view class="text_tilte">{{title}}</view>
8
+	    </view>
9
+</template>
10
+
11
+<script>
12
+	export default {
13
+		props:{
14
+			title:{
15
+				type:String,
16
+				default:"暂无数据"
17
+			}
18
+		},
19
+		data() {
20
+			return {
21
+				
22
+			};
23
+		}
24
+	}
25
+</script>
26
+
27
+<style lang="scss">
28
+.flex-col{
29
+	user-select: none;
30
+	text-align: center;
31
+	width:100%;
32
+	position: absolute;
33
+	top:30%;
34
+	.text_tilte{
35
+		font-family: PingFangSC, PingFang SC;
36
+		font-weight: 400;
37
+		font-size: 30rpx;
38
+		color: #333333;
39
+		line-height: 30rpx;
40
+		text-align: center;
41
+		font-style: normal;
42
+	}
43
+	.image_wrapper{
44
+		     width: 327px;
45
+		      height: 257px;
46
+			  
47
+		
48
+	}
49
+}
50
+</style>

+ 96 - 0
pages/supplychainon/search/search.vue

@@ -0,0 +1,96 @@
1
+<template>
2
+	<view class="search-wrapper">
3
+		      <view class=" flex-row justify-end">
4
+		        <image
5
+		          class="search__image"
6
+		          referrerpolicy="no-referrer"
7
+		          src="/static/images/new_ui/search_icon_blod.png"
8
+		        />
9
+				<input class="search__input" v-model="searchValue" type="text" :placeholder="placeholder" />
10
+		        <button class="search__btn" @click="haandleSearch">
11
+		          搜索
12
+		        </button>
13
+		      </view>
14
+	</view>
15
+</template>
16
+
17
+<script>
18
+	export default {
19
+		props:{
20
+			placeholder:{
21
+				type:String,
22
+				default:"请输入搜索内容"
23
+			}
24
+		},
25
+
26
+		data() {
27
+			return {
28
+				searchValue:""
29
+			};
30
+		},
31
+		methods:{
32
+			haandleSearch(){
33
+				this.$emit("search",this.searchValue)
34
+			}
35
+		}
36
+	}
37
+</script>
38
+
39
+<style lang="scss">
40
+.search-wrapper{
41
+	background: #FFFFFF;
42
+	height: 110rpx;
43
+	display: flex;
44
+	align-items: center;
45
+	width: 100%;
46
+	
47
+	.search__image{
48
+		position: absolute;
49
+		  width: 32rpx;
50
+		  height: 32rpx;
51
+		  left:40rpx;
52
+		  top:18rpx;
53
+	}
54
+	.search__input{
55
+		border:2rpx solid #000;
56
+		flex:1;
57
+		height: 60rpx;
58
+		margin-left:26rpx;
59
+		padding: 0 120rpx 0 55rpx;
60
+		border-radius: 30rpx;
61
+		margin-right: 20rpx;
62
+		border: none;
63
+			background: #F8F8F8;
64
+			font-size: 26rpx;
65
+			color: #333333;
66
+	}
67
+	.flex-row{
68
+		display: flex;
69
+		flex-direction: row;
70
+		align-items: center;
71
+		
72
+	}
73
+	.justify-end{
74
+		position: relative;
75
+		border-radius: 30rpx;
76
+		    flex: 1;
77
+		
78
+		
79
+	}
80
+	.search__btn{
81
+		position: absolute;
82
+		right:20rpx;
83
+		width: 108rpx;
84
+		height: 60rpx;
85
+		white-space: nowrap;
86
+		 background-color: rgba(31, 124, 255, 1);
87
+		border-radius: 30rpx;
88
+		   text-align: center;
89
+		    font-size: 28rpx;
90
+			 line-height:60rpx;
91
+			 color: rgba(255, 255, 255, 1);
92
+			 
93
+	}
94
+	     
95
+}
96
+</style>

+ 75 - 10
pages/supplychainon/supplychainon.vue

@@ -1,19 +1,84 @@
1 1
 <template>
2
-	<view>
3
-		供应链列表
2
+  <view class="supplychainon-wrapper">
3
+	 <headerCom headerTitle="供应链列表" @headerJump="headerJump"></headerCom>
4
+    <view class="headers-box">
5
+      <searchVue  placeholder="请输入商品名称" @search="onHandleSearch"></searchVue>
6
+      <tablist :category="category"></tablist>
7
+    </view>
8
+	<view class="content-wrapper">
9
+
4 10
 	</view>
11
+  </view>
5 12
 </template>
6 13
 
7 14
 <script>
8
-	export default {
9
-		data() {
10
-			return {
11
-				
12
-			};
13
-		}
15
+import headerCom from "../../shop/components/headers/headers.vue";
16
+import searchVue from "./search/search.vue";
17
+import tablist from './tablist.vue'
18
+export default {
19
+  components: {
20
+    headerCom,
21
+    searchVue,
22
+	tablist
23
+  },
24
+  data() {
25
+    return {
26
+		category:[
27
+    {
28
+        "type": 1,
29
+        "name": "出售中商品",
30
+        "count": 0
31
+    },
32
+    {
33
+        "type": 2,
34
+        "name": "仓库中商品",
35
+        "count": 0
36
+    },
37
+	 {
38
+        "type": 2,
39
+        "name": "仓库中商品",
40
+        "count": 0
41
+    },
42
+	 {
43
+        "type": 2,
44
+        "name": "仓库中商品",
45
+        "count": 0
46
+    },
47
+	 {
48
+        "type": 2,
49
+        "name": "仓库中商品",
50
+        "count": 0
51
+    }
52
+],	
53
+	};
54
+  },
55
+  methods: {
56
+    headerJump() {
57
+      uni.switchTab({ url: "/shop/productManagementModule/index" });
58
+    },
59
+	onHandleSearch(val) {
60
+		console.log(val)
14 61
 	}
62
+  },
63
+};
15 64
 </script>
65
+<style>
66
+page {
67
+  background-color: #f7f8fc;
68
+  height: 100%;
69
+}
70
+</style>
71
+<style lang="scss" scoped>
72
+.supplychainon-wrapper {
73
+	.headers-box{
74
+		position: fixed;
75
+		top: 88rpx;
76
+		left: 0;
77
+		width: 100%;
78
+		// z-index: 999;
79
+	}
80
+	.content-wrapper{
16 81
 
17
-<style lang="scss">
18
-
82
+	}
83
+}
19 84
 </style>

+ 205 - 0
pages/supplychainon/tablist.vue

@@ -0,0 +1,205 @@
1
+<template>
2
+  <view class="content">
3
+    <view class="nav">
4
+      <!-- 选项卡水平方向滑动,scroll-with-animation是滑动到下一个选项时,有一个延时效果 -->
5
+      <scroll-view
6
+        class="tab-scroll"
7
+        scroll-x="true"
8
+        scroll-with-animation
9
+        :scroll-left="scrollLeft"
10
+      >
11
+        <view class="tab-scroll_box" :style="{'justify-content': category.length <= 3 ? 'space-around' : 'flex-start'}">
12
+          <!-- 选项卡类别列表 -->
13
+          <view
14
+            class="tab-scroll_item"
15
+            v-for="(item, index) in category"
16
+            :key="index"
17
+            :class="{ active: isActive == index }"
18
+            @click="chenked(index, item)"
19
+          >
20
+            <view class="tile-box">
21
+              <text class="name-box">{{ item.name }}</text>
22
+              <text class="count">
23
+                {{ item.count || 0 }}
24
+              </text>
25
+            </view>
26
+          </view>
27
+        </view>
28
+      </scroll-view>
29
+    </view>
30
+  </view>
31
+</template>
32
+<script>
33
+export default {
34
+  props: {
35
+    category: {
36
+      type: Array,
37
+      default: () => []
38
+    },
39
+    isShowNumber: {
40
+      type: Boolean,
41
+      default: true
42
+    },
43
+    curruntActive: {
44
+      type: [Number, String],
45
+      default: 0
46
+    }
47
+  },
48
+  watch: {
49
+    // swiper与上面选项卡联动
50
+    currentindex(newval) {
51
+      this.isActive = newval;
52
+      this.scrollLeft = 0;
53
+      // 滑动swiper后,每个选项距离其父元素最左侧的距离
54
+      for (let i = 0; i < newval - 1; i++) {
55
+        this.scrollLeft += this.category[i].width;
56
+      }
57
+    }
58
+  },
59
+  data() {
60
+    return {
61
+      isActive: 0,
62
+      index: 0,
63
+      currentindex: 0,
64
+
65
+      contentScrollW: 0, // 导航区宽度
66
+      scrollLeft: 0, // 横向滚动条位置
67
+      fullHeight: ""
68
+    };
69
+  },
70
+  mounted() {
71
+    var that = this;
72
+    this.isActive = this.curruntActive;
73
+    //获取手机屏幕的高度,让其等于swiper的高度,从而使屏幕充满
74
+    uni.getSystemInfo({
75
+      success: function (res) {
76
+        that.fullHeight = "height:" + res.windowHeight + "px";
77
+      }
78
+    });
79
+    // 获取标题区域宽度,和每个子元素节点的宽度
80
+    this.getScrollW();
81
+  },
82
+  methods: {
83
+    // 获取标题区域宽度,和每个子元素节点的宽度以及元素距离左边栏的距离
84
+    getScrollW() {
85
+      const query = uni.createSelectorQuery().in(this);
86
+      query
87
+        .select(".tab-scroll")
88
+        .boundingClientRect((data) => {
89
+          this.contentScrollW = data.width;
90
+        })
91
+        .exec();
92
+      query
93
+        .selectAll(".tab-scroll_item")
94
+        .boundingClientRect((data) => {
95
+          let dataLen = data.length;
96
+          for (let i = 0; i < dataLen; i++) {
97
+            this.category[i].left = data[i].left;
98
+            this.category[i].width = data[i].width;
99
+          }
100
+        })
101
+        .exec();
102
+    },
103
+    // 当前点击子元素靠左留一个选项展示,子元素宽度不相同也可实现
104
+    chenked(index, item) {
105
+      this.isActive = index;
106
+      this.scrollLeft = 0;
107
+      for (let i = 0; i < index - 1; i++) {
108
+        this.scrollLeft += this.category[i].width;
109
+      }
110
+      this.$emit("tabs", { index, item });
111
+    },
112
+    // swiper滑动时,获取其索引,也就是第几个
113
+    change(e) {
114
+      const { current } = e.detail;
115
+      this.currentindex = current;
116
+    }
117
+  }
118
+};
119
+</script>
120
+<style lang="scss">
121
+.content {
122
+  display: flex;
123
+  flex-direction: column;
124
+  width: 100%;
125
+  flex: 1;
126
+  .nav {
127
+    background-color: #fff;
128
+    // position: fixed;
129
+    z-index: 99;
130
+    width: 100%;
131
+    align-items: center;
132
+    // min-height: 40rpx;
133
+    .tab-scroll {
134
+      flex: 1;
135
+      overflow: hidden;
136
+      box-sizing: border-box;
137
+      padding-left: 30rpx;
138
+      padding-right: 30rpx;
139
+      .tab-scroll_box {
140
+        display: flex;
141
+        align-items: center;
142
+        flex-wrap: nowrap;
143
+        box-sizing: border-box;
144
+        // height: 100rpx;
145
+        .tab-scroll_item {
146
+          // line-height: 60rpx;
147
+          margin-right: 35rpx;
148
+          flex-shrink: 0;
149
+          display: flex;
150
+          justify-content: center;
151
+          font-size: 30rpx;
152
+          padding-top: 10rpx;
153
+          color: #333;
154
+          .tile-box {
155
+            display: flex;
156
+            align-items: center;
157
+            flex-direction: column;
158
+			.name-box{
159
+				
160
+			}
161
+            .count {
162
+               padding: 13rpx 0;
163
+			 
164
+            }
165
+          }
166
+        }
167
+      }
168
+    }
169
+  }
170
+  .swiper-content {
171
+    padding-top: 120rpx;
172
+    // flex: 1;
173
+    .swiperitem-content {
174
+      background-color: #ffffff;
175
+      .nav_item {
176
+        background-color: #ffffff;
177
+        padding: 20rpx 40rpx 0rpx 40rpx;
178
+      }
179
+    }
180
+  }
181
+}
182
+.active {
183
+  position: relative;
184
+  color: #1f7cff !important;
185
+  font-weight: 600;
186
+}
187
+.active::after {
188
+  content: "";
189
+  position: absolute;
190
+  width: 50rpx;
191
+  height: 8rpx;
192
+  background-color: #1f7cff;
193
+  left: 0px;
194
+  right: 0px;
195
+  bottom: 0px;
196
+  margin: auto;
197
+  border-radius: 8rpx;
198
+  margin-top: 10rpx;
199
+  transition: all 0.3s;
200
+}
201
+/* 隐藏滚动条,但依旧具备可以滚动的功能 */
202
+/deep/.uni-scroll-view::-webkit-scrollbar {
203
+  display: none;
204
+}
205
+</style>

+ 408 - 0
shop/afterSalesManagement/afterCardDetail.vue

@@ -0,0 +1,408 @@
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
+    
12
+      </view> -->
13
+      <view class="details-xiangqingt-yi-top-right"> 退款中 </view>
14
+    </view>
15
+    <view class="details-xiangqing-niri">
16
+      <view
17
+        class="order-list-yi-in-neibu"
18
+        v-for="(item, index) in orderProduct.procductList"
19
+        :key="index"
20
+      >
21
+        <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>
25
+          <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>
29
+            <view class="order-list-yi-in-neibu-left-url-bottom">
30
+              8盒/箱,30ML*8袋/盒
31
+            </view>
32
+          </view>
33
+        </view>
34
+        <view class="order-list-yi-in-neibu-right">
35
+          <view class="order-list-yi-in-neibu-right-im">
36
+            ¥{{ item.pay_price }}
37
+          </view>
38
+          <view class="order-list-yi-in-neibu-right-in">
39
+            共{{ item.cart_num }}件
40
+          </view>
41
+        </view>
42
+      </view>
43
+      <view class="details-xiangqing-shujussss">
44
+        <template v-for="(orItem, idex) in cardListData">
45
+          <view
46
+            class="details-xiangqing-shujussss-yis"
47
+            :key="orItem.props + idex"
48
+          >
49
+            <view class="label-box"> {{ orItem.name }} </view>
50
+            <view class="value-box">
51
+              {{ detaulData[orItem.props] || "--" }}
52
+            </view>
53
+          </view>
54
+          <view class="tips-mdex" v-if="orItem.isTips"
55
+            >含邮费 ¥0.00,买家实收退款 ¥99含邮费 ¥0.00,买家实收退款 ¥99</view
56
+          >
57
+        </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> -->
93
+      </view>
94
+    </view>
95
+  </view>
96
+</template>
97
+
98
+<script>
99
+//订单详情 卡片详细信息
100
+import { copy } from "@/utils/index.js";
101
+export default {
102
+  data() {
103
+    return {
104
+      cardListData: [
105
+        {
106
+          name: "售后类型",
107
+          props: "type",
108
+          isTips: false,
109
+        },
110
+        {
111
+          name: "售后原因",
112
+          props: "resonse",
113
+          isTips: false,
114
+        },
115
+        {
116
+          name: "售后类型",
117
+          props: "type1",
118
+          isTips: false,
119
+        },
120
+        {
121
+          name: "售后件数",
122
+          props: "unit",
123
+          isTips: false,
124
+        },
125
+        {
126
+          name: "买家应退",
127
+          props: "yingtui",
128
+          isTips: false,
129
+        },
130
+        {
131
+          name: "退款金额",
132
+          props: "jine",
133
+          isTips: true,
134
+        },
135
+        {
136
+          name: "售后地址",
137
+          props: "address",
138
+          isTips: false,
139
+        },
140
+        {
141
+          name: "申请时间",
142
+          props: "time",
143
+          isTips: false,
144
+        },
145
+        {
146
+          name: "订单编号",
147
+          props: "order_id",
148
+          isTips: false,
149
+        },
150
+        {
151
+          name: "售后编号",
152
+          props: "order_sn",
153
+          isTips: false,
154
+        },
155
+      ],
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
+      },
187
+    };
188
+  },
189
+
190
+  methods: {
191
+    handleCopy(val) {
192
+      copy(val);
193
+    },
194
+    sendGoods() {},
195
+  },
196
+};
197
+</script>
198
+
199
+<style lang="scss" scoped>
200
+.brn-ligd {
201
+  display: flex;
202
+  justify-content: flex-end;
203
+  gap: 15rpx;
204
+  padding-bottom: 15rpx;
205
+}
206
+.btn-cls {
207
+  margin-top: 26rpx;
208
+  width: 142rpx;
209
+  height: 58rpx;
210
+  border-radius: 30rpx;
211
+  border: 1rpx solid #999999;
212
+  font-size: 24rpx;
213
+  font-weight: 400;
214
+  color: #333333;
215
+  text-align: center;
216
+  line-height: 58rpx;
217
+}
218
+.details-xiangqing {
219
+  // width: 686rpx;
220
+  min-height: 220rpx;
221
+  background: #ffffff;
222
+  border-radius: 16px;
223
+  padding: 0 20rpx;
224
+  display: flex;
225
+  flex-direction: column;
226
+  align-items: center;
227
+
228
+  .details-xiangqing-top {
229
+    width: 100%;
230
+    // height: 90rpx;
231
+    padding: 16rpx;
232
+    border-bottom: 1rpx solid #e5e5e5;
233
+    display: flex;
234
+    align-items: center;
235
+    color: #333333;
236
+
237
+    .details-xiangqing-top-let {
238
+      width: 32rpx;
239
+      height: 32rpx;
240
+      font-size: 11rpx;
241
+      font-weight: 400;
242
+
243
+      image {
244
+        width: 100%;
245
+        height: 100%;
246
+      }
247
+    }
248
+
249
+    .details-xiangqing-top-in {
250
+      width: 364rpx;
251
+      font-size: 28rpx;
252
+      font-weight: 600;
253
+      overflow: hidden;
254
+      text-overflow: ellipsis;
255
+      white-space: nowrap;
256
+      margin-left: 6rpx;
257
+    }
258
+    .details-xiangqingt-yi-top-right {
259
+      text-align: right;
260
+      flex: 1;
261
+      font-weight: 400;
262
+      color: #1f7cff;
263
+    }
264
+    .details-xiangqing-top-rigt {
265
+      //   width: 36rpx;
266
+      //   height: 36rpx;
267
+      margin-left: 8rpx;
268
+      .arrow_right_log {
269
+      }
270
+    }
271
+  }
272
+
273
+  .details-xiangqing-niri {
274
+    // width: 634rpx;
275
+    // height: 548rpx;
276
+    width: 100%;
277
+    margin: 26rpx 0 0rpx 0;
278
+    display: flex;
279
+    flex-direction: column;
280
+
281
+    // background-color: orangered;
282
+    .order-list-yi-in-neibu {
283
+      // width: 634rpx;
284
+      height: 158rpx;
285
+      display: flex;
286
+      justify-content: space-between;
287
+      align-items: flex-start;
288
+      // background-color: aqua;
289
+      margin: 10rpx 0 10rpx 0;
290
+
291
+      .order-list-yi-in-neibu-left {
292
+        // width: 474rpx;
293
+        height: 100%;
294
+        display: flex;
295
+        align-items: flex-start;
296
+        justify-content: space-between;
297
+        // gap:20rpx;
298
+        .order-list-yi-in-neibu-left-img {
299
+          width: 158rpx;
300
+          height: 158rpx;
301
+          overflow: hidden;
302
+          flex-shrink: 0;
303
+          image {
304
+            width: 100%;
305
+            height: 100%;
306
+          }
307
+        }
308
+
309
+        .order-list-yi-in-neibu-left-url {
310
+          // width: 290rpx;
311
+          //   display: flex;
312
+          padding: 0 20rpx;
313
+          .order-list-yi-in-neibu-left-url-bottom {
314
+            width: 100%;
315
+            font-weight: 400;
316
+            font-size: 24rpx;
317
+            color: #666666;
318
+            display: -webkit-box;
319
+            -webkit-box-orient: vertical;
320
+            -webkit-line-clamp: 2;
321
+            overflow: hidden;
322
+            justify-content: space-between;
323
+            padding-top: 10rpx;
324
+          }
325
+          .order-list-yi-in-neibu-left-url-top {
326
+            width: 100%;
327
+            font-weight: 400;
328
+            color: #333333;
329
+            font-size: 28rpx;
330
+            display: -webkit-box;
331
+            -webkit-box-orient: vertical;
332
+            -webkit-line-clamp: 2;
333
+            overflow: hidden;
334
+            justify-content: space-between;
335
+          }
336
+
337
+          .order-list-yi-in-neibu-left-url-top-bot {
338
+            width: 100%;
339
+            font-size: 24rpx;
340
+            font-weight: 400;
341
+            color: #666666;
342
+            display: inline-block;
343
+            overflow: hidden;
344
+            text-overflow: ellipsis;
345
+            white-space: nowrap;
346
+          }
347
+        }
348
+      }
349
+
350
+      .order-list-yi-in-neibu-right {
351
+        height: 73rpx;
352
+        font-size: 28rpx;
353
+        font-weight: 500;
354
+        color: #333333;
355
+        display: flex;
356
+        flex-direction: column;
357
+        justify-content: space-between;
358
+        align-items: flex-end;
359
+
360
+        .order-list-yi-in-neibu-right-im {
361
+          font-size: 28rpx;
362
+          font-weight: 500;
363
+          color: #333333;
364
+        }
365
+
366
+        .order-list-yi-in-neibu-right-in {
367
+          font-size: 24rpx;
368
+          font-weight: 400;
369
+          color: #666666;
370
+        }
371
+      }
372
+    }
373
+
374
+    .details-xiangqing-shujussss {
375
+      // width: 634rpx;
376
+      //   height: 340rpx;
377
+      margin-top: 50rpx;
378
+      display: flex;
379
+      flex-direction: column;
380
+      justify-content: space-between;
381
+      padding-bottom: 15rpx;
382
+      .label-box {
383
+        flex-shrink: 0;
384
+        width: 50%;
385
+      }
386
+      .value-box {
387
+        text-align: right;
388
+      }
389
+      .tips-mdex {
390
+        // padding-top: 5rpx;
391
+        font-weight: 400;
392
+        font-size: 24rpx;
393
+        color: #999999;
394
+      }
395
+      .details-xiangqing-shujussss-yis {
396
+        width: 100%;
397
+        padding: 20rpx 20rpx 20rpx 0;
398
+        display: flex;
399
+        align-items: center;
400
+        justify-content: space-between;
401
+        font-size: 28rpx;
402
+        font-weight: 400;
403
+        color: #333333;
404
+      }
405
+    }
406
+  }
407
+}
408
+</style>

+ 287 - 0
shop/afterSalesManagement/afterCardListInfo.vue

@@ -0,0 +1,287 @@
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
12
+          type="right"
13
+          size="26"
14
+          color="#999999"
15
+          class="arrow_right_log"
16
+        ></uni-icons>
17
+      </view>
18
+      <view class="details-xiangqingt-yi-top-right"> 退款中 </view>
19
+    </view>
20
+    <view class="details-xiangqing-niri">
21
+      <view
22
+        class="order-list-yi-in-neibu"
23
+        v-for="(item, index) in orderProduct.procductList"
24
+        :key="index"
25
+      >
26
+        <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>
29
+          </view>
30
+          <view class="order-list-yi-in-neibu-left-url">
31
+            <view class="order-list-yi-in-neibu-left-url-top">
32
+              {{ item.store_name }}
33
+            </view>
34
+            <view class="order-list-yi-in-neibu-left-url-top">
35
+              {{ item.store_name }}
36
+            </view>
37
+          </view>
38
+        </view>
39
+        <view class="order-list-yi-in-neibu-right">
40
+          <view class="order-list-yi-in-neibu-right-im">
41
+            ¥{{ item.pay_price }}
42
+          </view>
43
+          <view class="order-list-yi-in-neibu-right-in">
44
+            共{{ item.cart_num }}件
45
+          </view>
46
+        </view>
47
+      </view>
48
+
49
+      <view class="brn-ligd">
50
+        <view class="btn-cls" @click="viewWuLiu('xxx')"> 查看物流 </view>
51
+        <view class="btn-cls" @click="viewDetail('xxx')"> 查看详情 </view>
52
+      </view>
53
+
54
+    </view>
55
+  </view>
56
+</template>
57
+
58
+<script>
59
+//订单详情 卡片详细信息
60
+import { copy } from "@/utils/index.js";
61
+export default {
62
+  data() {
63
+    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
+    };
84
+  },
85
+
86
+  methods: {
87
+    handleCopy(val) {
88
+      copy(val);
89
+    },
90
+    sendGoods() {},
91
+    //查看物流
92
+    viewWuLiu(val) {
93
+     this.$emit("viewWuLiu", val);
94
+    },
95
+    viewDetail(val) {
96
+      this.$emit("viewDetail", val);
97
+    }
98
+  
99
+  },
100
+};
101
+</script>
102
+
103
+<style lang="scss" scoped>
104
+.brn-ligd {
105
+  display: flex;
106
+  justify-content: flex-end;
107
+  gap: 15rpx;
108
+  padding-bottom: 15rpx;
109
+}
110
+.btn-cls {
111
+  margin-top: 26rpx;
112
+  width: 142rpx;
113
+  height: 58rpx;
114
+  border-radius: 30rpx;
115
+  border: 1rpx solid #999999;
116
+  font-size: 24rpx;
117
+  font-weight: 400;
118
+  color: #333333;
119
+  text-align: center;
120
+  line-height: 58rpx;
121
+}
122
+.details-xiangqing {
123
+  // width: 686rpx;
124
+  min-height: 220rpx;
125
+  background: #ffffff;
126
+  border-radius: 16px;
127
+  padding: 0 20rpx;
128
+  display: flex;
129
+  flex-direction: column;
130
+  align-items: center;
131
+
132
+  .details-xiangqing-top {
133
+    width: 100%;
134
+    // height: 90rpx;
135
+    padding: 16rpx;
136
+    border-bottom: 1rpx solid #e5e5e5;
137
+    display: flex;
138
+    align-items: center;
139
+    color: #333333;
140
+
141
+    .details-xiangqing-top-let {
142
+      width: 32rpx;
143
+      height: 32rpx;
144
+      font-size: 11rpx;
145
+      font-weight: 400;
146
+
147
+      image {
148
+        width: 100%;
149
+        height: 100%;
150
+      }
151
+    }
152
+
153
+    .details-xiangqing-top-in {
154
+      width: 364rpx;
155
+      font-size: 28rpx;
156
+      font-weight: 600;
157
+      overflow: hidden;
158
+      text-overflow: ellipsis;
159
+      white-space: nowrap;
160
+      margin-left: 6rpx;
161
+    }
162
+    .details-xiangqingt-yi-top-right {
163
+      text-align: right;
164
+      flex: 1;
165
+      font-weight: 400;
166
+      color: #1f7cff;
167
+    }
168
+    .details-xiangqing-top-rigt {
169
+      //   width: 36rpx;
170
+      //   height: 36rpx;
171
+      margin-left: 8rpx;
172
+      .arrow_right_log {
173
+      }
174
+    }
175
+  }
176
+
177
+  .details-xiangqing-niri {
178
+    // width: 634rpx;
179
+    // height: 548rpx;
180
+    width: 100%;
181
+    margin: 26rpx 0 0rpx 0;
182
+    display: flex;
183
+    flex-direction: column;
184
+
185
+    // background-color: orangered;
186
+    .order-list-yi-in-neibu {
187
+      // width: 634rpx;
188
+      height: 158rpx;
189
+      display: flex;
190
+      justify-content: space-between;
191
+      align-items: flex-start;
192
+      // background-color: aqua;
193
+      margin: 10rpx 0 10rpx 0;
194
+
195
+      .order-list-yi-in-neibu-left {
196
+        // width: 474rpx;
197
+        height: 100%;
198
+        display: flex;
199
+        align-items: flex-start;
200
+        justify-content: space-between;
201
+        // gap:20rpx;
202
+        .order-list-yi-in-neibu-left-img {
203
+          width: 158rpx;
204
+          height: 158rpx;
205
+          overflow: hidden;
206
+          flex-shrink: 0;
207
+          image {
208
+            width: 100%;
209
+            height: 100%;
210
+          }
211
+        }
212
+
213
+        .order-list-yi-in-neibu-left-url {
214
+          // width: 290rpx;
215
+          display: flex;
216
+          padding: 0 20rpx;
217
+
218
+          .order-list-yi-in-neibu-left-url-top {
219
+            width: 100%;
220
+            font-weight: 400;
221
+            color: #333333;
222
+            font-size: 28rpx;
223
+            display: -webkit-box;
224
+            -webkit-box-orient: vertical;
225
+            -webkit-line-clamp: 2;
226
+            overflow: hidden;
227
+            justify-content: space-between;
228
+          }
229
+
230
+          .order-list-yi-in-neibu-left-url-top-bot {
231
+            width: 100%;
232
+            font-size: 24rpx;
233
+            font-weight: 400;
234
+            color: #666666;
235
+            display: inline-block;
236
+            overflow: hidden;
237
+            text-overflow: ellipsis;
238
+            white-space: nowrap;
239
+          }
240
+        }
241
+      }
242
+
243
+      .order-list-yi-in-neibu-right {
244
+        height: 73rpx;
245
+        font-size: 28rpx;
246
+        font-weight: 500;
247
+        color: #333333;
248
+        display: flex;
249
+        flex-direction: column;
250
+        justify-content: space-between;
251
+        align-items: flex-end;
252
+
253
+        .order-list-yi-in-neibu-right-im {
254
+          font-size: 28rpx;
255
+          font-weight: 500;
256
+          color: #333333;
257
+        }
258
+
259
+        .order-list-yi-in-neibu-right-in {
260
+          font-size: 24rpx;
261
+          font-weight: 400;
262
+          color: #666666;
263
+        }
264
+      }
265
+    }
266
+
267
+    .details-xiangqing-shujussss {
268
+      // width: 634rpx;
269
+      height: 340rpx;
270
+      margin-top: 50rpx;
271
+      display: flex;
272
+      flex-direction: column;
273
+      justify-content: space-between;
274
+
275
+      .details-xiangqing-shujussss-yis {
276
+        width: 100%;
277
+        display: flex;
278
+        align-items: center;
279
+        justify-content: space-between;
280
+        font-size: 28rpx;
281
+        font-weight: 400;
282
+        color: #333333;
283
+      }
284
+    }
285
+  }
286
+}
287
+</style>

+ 299 - 0
shop/afterSalesManagement/afterSalesDetail.vue

@@ -0,0 +1,299 @@
1
+<template>
2
+  <view class="afterdetails">
3
+    <headersVue headerTitle="售后详情" @headerJump="headerJump"></headersVue>
4
+    <view class="after-contents">
5
+      <!-- 退货信息卡片 -->
6
+      <view class="afterdetails-tuihuo mb-26">
7
+        <view class="afterdetails-tuihuo-top">
8
+          <view class="tuihuo-title">退货审核中</view>
9
+          <!-- 退货审核中 退货中 -->
10
+          <view class="tuihuo-tab">未发货仅退款</view>
11
+        </view>
12
+        <view class="afterdetails-tuihuo-bottom">
13
+          <!-- 退货退款成功 、退货退款失败 退货审核中 已发货仅退款成功 字体颜色 color: #1F7CFF; -->
14
+          <!-- 退货中 退货审核中 字体颜色color: #999999; -->
15
+          <!-- 文案:
16
+			  1、退货审核中:48小时未审核,系统将自动通过该申请
17
+			  2、已发货仅退款成功:已发货仅退款成功,查看具体退款金额
18
+			  3、审核中:未发货仅退款已完成,查看具体退款金额
19
+			  4、退货审核中:48小时未审核,系统将自动通过该申请
20
+			  5、退货中:买家已寄出
21
+			  6、退货退款失败:退货退款失败,请查看失败原因
22
+			  7、退货退款成功:退货退款已完成,查看具体退款金额
23
+			  -->
24
+          <view class="no-cs-tuihuo ">已发货仅退款成功,查看具体退款金额</view>
25
+          <!-- 退货退款成功 已发货仅退款成功-->
26
+          <view class="content--tuihuo-icon">
27
+            <uni-icons
28
+              type="right"
29
+              size="26"
30
+              color="#999999"
31
+              class="arrow_right_log"
32
+            ></uni-icons>
33
+          </view>
34
+        </view>
35
+      </view>
36
+      <!-- 物流信息卡片  1、退货退款成功   2、退货退款失败 3、退货中 -->
37
+      <view class="afterdetails-back mb-26" @click="handleWUliu">
38
+        <view class="back-tile">买家退货物流</view>
39
+        <view class="back-bttom">
40
+          <view class="image-box">
41
+            <image src="/static/images/new_ui/kuaidi.png" mode="scaleToFill"
42
+          /></view>
43
+          <view class="content-back">
44
+            <view class="content-back-title">圆通快递</view>
45
+            <view class="content-back-text">
46
+              <view class="no-cs">ZT3456789098765</view>
47
+              <view class="content-icon">
48
+                <uni-icons
49
+                  type="right"
50
+                  size="26"
51
+                  color="#999999"
52
+                  class="arrow_right_log"
53
+                ></uni-icons>
54
+              </view>
55
+            </view>
56
+          </view>
57
+        </view>
58
+      </view>
59
+      <view class="afterdetails-card">
60
+        <afterCardDetail class="mb-26"></afterCardDetail>
61
+      </view>
62
+      <view class="record-content">
63
+        <view class="record-title">协商记录</view>
64
+        <view class="record-icon">
65
+          <uni-icons
66
+            type="right"
67
+            size="26"
68
+            color="#999999"
69
+            class="arrow_right_log"
70
+          ></uni-icons>
71
+        </view>
72
+      </view>
73
+    </view>
74
+    <!-- 1、未发货仅退款  3、退货退款【退货中、退货审核中】 -->
75
+    <view class="btn-list" v-if="true">
76
+      <view class="btn quxiao"> 拒绝退款 </view>
77
+      <view class="btn primary"> 同意退款 </view>
78
+    </view>
79
+  </view>
80
+</template>
81
+
82
+<script>
83
+import headersVue from "../components/headers/headers.vue";
84
+import afterCardDetail from "./afterCardDetail.vue";
85
+import { toQueryString } from "@/utils/index.js";
86
+export default {
87
+  components: {
88
+    headersVue,
89
+    afterCardDetail,
90
+  },
91
+  data() {
92
+    return {
93
+      indexs: 0,
94
+      order_id: "",
95
+    };
96
+  },
97
+  onLoad(options) {
98
+    this.indexs = options.indexs;
99
+    this.order_id = options.order_id;
100
+  },
101
+  methods: {
102
+    headerJump() {
103
+      const params = {
104
+        indexs: this.indexs,
105
+      };
106
+      const urlParams = toQueryString(params);
107
+      uni.redirectTo({ url: "./index?" + urlParams });
108
+    },
109
+	handleWUliu(item){
110
+		const params = {
111
+        status: 0,
112
+        indexs: this.indexs,
113
+        formType: "shouhouDetail",
114
+        order_id: this.order_id  || "1212",
115
+      };
116
+      const urlParams = toQueryString(params);
117
+      uni.redirectTo({
118
+        url: `../commodity/logisticsInformationDetail?${urlParams}`,
119
+      });
120
+	}
121
+  },
122
+};
123
+</script>
124
+<style>
125
+page {
126
+  background-color: #f7f8fc;
127
+  /* height: 100%; */
128
+}
129
+</style>
130
+<style lang="scss" scoped>
131
+.afterdetails {
132
+  padding: 26rpx 20rpx 0;
133
+  height: 100%;
134
+  display: flex;
135
+  flex-direction: column;
136
+  align-items: center;
137
+  overflow: hidden;
138
+  .afterdetails-back {
139
+    background: #ffffff;
140
+    border-radius: 16rpx;
141
+    padding: 15rpx 26rpx 26rpx;
142
+    .back-tile {
143
+      font-family: PingFangSC, PingFang SC;
144
+      font-weight: 400;
145
+      font-size: 30rpx;
146
+      color: #333333;
147
+      padding: 15rpx 0;
148
+    }
149
+    .back-bttom {
150
+      display: flex;
151
+      //   align-items: center;
152
+      gap: 14rpx;
153
+      //   height: 60rpx;
154
+      .image-box {
155
+        height: 66rpx;
156
+        width: 66rpx;
157
+        border-radius: 50%;
158
+        flex-shrink: 0;
159
+        image {
160
+          width: 100%;
161
+          height: 100%;
162
+        }
163
+      }
164
+      .content-back {
165
+        flex: 1;
166
+        .content-back-title,
167
+        .content-back-text {
168
+          display: flex;
169
+          align-items: center;
170
+          font-family: PingFangSC, PingFang SC;
171
+          font-weight: 400;
172
+          font-size: 26rpx;
173
+          color: #333333;
174
+          word-break: break-all;
175
+          padding-bottom: 6rpx;
176
+
177
+          .no-cs {
178
+            flex: 1;
179
+          }
180
+        }
181
+      }
182
+      .content-icon {
183
+        width: 26rpx;
184
+        height: 100%;
185
+        flex-shrink: 0;
186
+      }
187
+    }
188
+  }
189
+  .afterdetails-tuihuo {
190
+    // width: 100%;
191
+    // height: 158rpx;
192
+    background: #ffffff;
193
+    border-radius: 16rpx;
194
+    padding: 32rpx 26rpx 20rpx;
195
+    .afterdetails-tuihuo-top {
196
+      display: flex;
197
+      gap: 26rpx;
198
+      padding-bottom: 20rpx;
199
+      .tuihuo-title {
200
+        font-weight: 500;
201
+        font-size: 36rpx;
202
+        color: #333333;
203
+      }
204
+      .tuihuo-tab {
205
+        display: flex;
206
+        align-items: center;
207
+        justify-content: center;
208
+        font-weight: 400;
209
+        font-size: 24rpx;
210
+        padding: 0 10rpx;
211
+        color: #999999;
212
+        border: 2rpx solid #999999;
213
+		border-radius: 4rpx;
214
+      }
215
+    }
216
+    .afterdetails-tuihuo-bottom {
217
+      display: flex;
218
+      align-items: center;
219
+      justify-content: space-between;
220
+      .no-cs-tuihuo {
221
+        font-family: PingFangSC, PingFang SC;
222
+        font-weight: 400;
223
+        font-size: 28rpx;
224
+        color: #1f7cff;
225
+		&.colorTav{
226
+			color: #999999;
227
+		}
228
+      }
229
+      .content--tuihuo-icon {
230
+        width: 30rpx;
231
+        flex-shrink: 0;
232
+      }
233
+    }
234
+  }
235
+  .afterdetails-card {
236
+    width: 100%;
237
+    // margin-top: 220rpx;
238
+    margin-bottom: 50rpx;
239
+  }
240
+}
241
+.mb-26 {
242
+  margin-bottom: 26rpx;
243
+}
244
+.after-contents {
245
+  margin-top: 90rpx;
246
+  overflow-y: auto;
247
+  width: 100%;
248
+  padding-bottom: 200rpx;
249
+  //   border:2rpx solid #d00;
250
+}
251
+.btn-list {
252
+  position: fixed;
253
+  background-color: #fff;
254
+  display: flex;
255
+  gap: 26rpx;
256
+  user-select: none;
257
+  padding: 15rpx 26rpx;
258
+  height: 110rpx;
259
+  width: 100%;
260
+  flex-shrink: 0;
261
+  bottom: 0;
262
+  .btn {
263
+    flex-shrink: 0;
264
+    height: 78rpx;
265
+    border-radius: 8rpx;
266
+    font-weight: 400;
267
+    font-size: 30rpx;
268
+    display: flex;
269
+    align-items: center;
270
+    justify-content: center;
271
+  }
272
+  .quxiao {
273
+    border: 1rpx solid #999999;
274
+    color: #333333;
275
+    width: 45%;
276
+    margin-left: 26rpx;
277
+  }
278
+  .primary {
279
+    color: #ffffff;
280
+    background: #1f7cff;
281
+    width: 45%;
282
+  }
283
+}
284
+.record-content {
285
+  display: flex;
286
+  justify-content: space-between;
287
+  align-items: center;
288
+  padding: 0 26rpx;
289
+  //   margin-top: 26rpx;
290
+  height: 92rpx;
291
+  background: #ffffff;
292
+  border-radius: 16rpx;
293
+  .record-title {
294
+    font-weight: 500;
295
+    font-size: 28rpx;
296
+    color: #333333;
297
+  }
298
+}
299
+</style>

+ 50 - 0
shop/afterSalesManagement/components/emptyData/emptyData.vue

@@ -0,0 +1,50 @@
1
+<template>
2
+	    <view class="flex-col">
3
+	      <image
4
+	        class="image_wrapper"
5
+	        src="/static/images/new_ui/empty_data.png"
6
+	      />
7
+	      <view class="text_tilte">{{title}}</view>
8
+	    </view>
9
+</template>
10
+
11
+<script>
12
+	export default {
13
+		props:{
14
+			title:{
15
+				type:String,
16
+				default:"暂无数据"
17
+			}
18
+		},
19
+		data() {
20
+			return {
21
+				
22
+			};
23
+		}
24
+	}
25
+</script>
26
+
27
+<style lang="scss">
28
+.flex-col{
29
+	user-select: none;
30
+	text-align: center;
31
+	width:100%;
32
+	position: absolute;
33
+	top:30%;
34
+	.text_tilte{
35
+		font-family: PingFangSC, PingFang SC;
36
+		font-weight: 400;
37
+		font-size: 30rpx;
38
+		color: #333333;
39
+		line-height: 30rpx;
40
+		text-align: center;
41
+		font-style: normal;
42
+	}
43
+	.image_wrapper{
44
+		     width: 327px;
45
+		      height: 257px;
46
+			  
47
+		
48
+	}
49
+}
50
+</style>

+ 87 - 0
shop/afterSalesManagement/components/search/search.vue

@@ -0,0 +1,87 @@
1
+<template>
2
+  <view class="search-wrapper">
3
+    <view class="flex-row justify-end">
4
+      <image
5
+        class="search__image"
6
+        referrerpolicy="no-referrer"
7
+        src="/static/images/new_ui/search_icon_blod.png"
8
+      />
9
+      <input
10
+        class="search__input"
11
+        v-model="searchValue"
12
+        type="text"
13
+        placeholder="输入商品名称/商品ID"
14
+      />
15
+      <button class="search__btn" @click="haandleSearch">搜索</button>
16
+    </view>
17
+  </view>
18
+</template>
19
+
20
+<script>
21
+export default {
22
+  data() {
23
+    return {
24
+      searchValue: ""
25
+    };
26
+  },
27
+  methods: {
28
+    haandleSearch() {
29
+      this.$emit("search", this.searchValue);
30
+    }
31
+  }
32
+};
33
+</script>
34
+
35
+<style lang="scss">
36
+.search-wrapper {
37
+  background: #ffffff;
38
+  height: 110rpx;
39
+  display: flex;
40
+  align-items: center;
41
+  width: 100%;
42
+
43
+  .search__image {
44
+    position: absolute;
45
+    width: 32rpx;
46
+    height: 32rpx;
47
+    left: 40rpx;
48
+    top: 18rpx;
49
+  }
50
+  .search__input {
51
+    border: 2rpx solid #000;
52
+    flex: 1;
53
+    height: 60rpx;
54
+    margin-left: 26rpx;
55
+    padding: 0 120rpx 0 55rpx;
56
+    border-radius: 30rpx;
57
+    margin-right: 20rpx;
58
+    border: none;
59
+    background: #f8f8f8;
60
+    font-size: 26rpx;
61
+    color: #333333;
62
+  }
63
+  .flex-row {
64
+    display: flex;
65
+    flex-direction: row;
66
+    align-items: center;
67
+  }
68
+  .justify-end {
69
+    position: relative;
70
+    border-radius: 30rpx;
71
+    flex: 1;
72
+  }
73
+  .search__btn {
74
+    position: absolute;
75
+    right: 20rpx;
76
+    width: 108rpx;
77
+    height: 60rpx;
78
+    white-space: nowrap;
79
+    background-color: rgba(31, 124, 255, 1);
80
+    border-radius: 30rpx;
81
+    text-align: center;
82
+    font-size: 28rpx;
83
+    line-height: 60rpx;
84
+    color: rgba(255, 255, 255, 1);
85
+  }
86
+}
87
+</style>

+ 206 - 0
shop/afterSalesManagement/components/tablist.vue

@@ -0,0 +1,206 @@
1
+<template>
2
+  <view class="content">
3
+    <view class="nav">
4
+      <!-- 选项卡水平方向滑动,scroll-with-animation是滑动到下一个选项时,有一个延时效果 -->
5
+      <scroll-view
6
+        class="tab-scroll"
7
+        scroll-x="true"
8
+        scroll-with-animation
9
+        :scroll-left="scrollLeft"
10
+      >
11
+        <view class="tab-scroll_box">
12
+          <!-- 选项卡类别列表 -->
13
+          <view
14
+            class="tab-scroll_item"
15
+            v-for="(item, index) in category"
16
+            :key="index"
17
+            :class="{ active: isActive == index }"
18
+            @click="chenked(index, item)"
19
+          >
20
+            <view class="tile-box">
21
+              <text class="name-box">{{ item.name }}</text>
22
+              <!-- <text class="count">
23
+                {{ item.count || 0 }}
24
+              </text> -->
25
+            </view>
26
+          </view>
27
+        </view>
28
+      </scroll-view>
29
+    </view>
30
+  </view>
31
+</template>
32
+<script>
33
+export default {
34
+  props: {
35
+    category: {
36
+      type: Array,
37
+      default: () => [],
38
+    },
39
+    isShowNumber: {
40
+      type: Boolean,
41
+      default: true,
42
+    },
43
+    currentActive: {
44
+      type: [Number, String],
45
+      default: 0,
46
+    },
47
+  },
48
+  watch: {
49
+    // swiper与上面选项卡联动
50
+    currentindex(newval) {
51
+      this.isActive = newval;
52
+      this.scrollLeft = 0;
53
+      // 滑动swiper后,每个选项距离其父元素最左侧的距离
54
+      for (let i = 0; i < newval - 1; i++) {
55
+        this.scrollLeft += this.category[i].width;
56
+      }
57
+    },
58
+  },
59
+  data() {
60
+    return {
61
+      isActive: 0,
62
+      index: 0,
63
+      currentindex: 0,
64
+
65
+      contentScrollW: 0, // 导航区宽度
66
+      scrollLeft: 0, // 横向滚动条位置
67
+      fullHeight: "",
68
+    };
69
+  },
70
+  mounted() {
71
+    var that = this;
72
+    this.isActive = this.currentActive;
73
+    //获取手机屏幕的高度,让其等于swiper的高度,从而使屏幕充满
74
+    uni.getSystemInfo({
75
+      success: function (res) {
76
+        that.fullHeight = "height:" + res.windowHeight + "px";
77
+      },
78
+    });
79
+    // 获取标题区域宽度,和每个子元素节点的宽度
80
+    this.getScrollW();
81
+  },
82
+  methods: {
83
+    // 获取标题区域宽度,和每个子元素节点的宽度以及元素距离左边栏的距离
84
+    getScrollW() {
85
+      const query = uni.createSelectorQuery().in(this);
86
+      query
87
+        .select(".tab-scroll")
88
+        .boundingClientRect((data) => {
89
+          this.contentScrollW = data.width;
90
+        })
91
+        .exec();
92
+      query
93
+        .selectAll(".tab-scroll_item")
94
+        .boundingClientRect((data) => {
95
+          let dataLen = data.length;
96
+          for (let i = 0; i < dataLen; i++) {
97
+            this.category[i].left = data[i].left;
98
+            this.category[i].width = data[i].width;
99
+          }
100
+        })
101
+        .exec();
102
+    },
103
+    // 当前点击子元素靠左留一个选项展示,子元素宽度不相同也可实现
104
+    chenked(index, item) {
105
+      this.isActive = index;
106
+      this.scrollLeft = 0;
107
+      for (let i = 0; i < index - 1; i++) {
108
+        this.scrollLeft += this.category[i].width;
109
+      }
110
+      this.$emit("tabs", { index, item });
111
+    },
112
+    // swiper滑动时,获取其索引,也就是第几个
113
+    change(e) {
114
+      const { current } = e.detail;
115
+      this.currentindex = current;
116
+      this.$emit("change", e.detail);
117
+    },
118
+  },
119
+};
120
+</script>
121
+<style lang="scss">
122
+.content {
123
+  display: flex;
124
+  flex-direction: column;
125
+  width: 100%;
126
+  flex: 1;
127
+  .nav {
128
+    background-color: #fff;
129
+    // position: fixed;
130
+    z-index: 99;
131
+    width: 100%;
132
+    align-items: center;
133
+    // min-height: 40rpx;
134
+    .tab-scroll {
135
+      flex: 1;
136
+      overflow: hidden;
137
+      box-sizing: border-box;
138
+      padding-left: 30rpx;
139
+      padding-right: 30rpx;
140
+      .tab-scroll_box {
141
+        display: flex;
142
+        align-items: center;
143
+        flex-wrap: nowrap;
144
+        box-sizing: border-box;
145
+        // height: 100rpx;
146
+        .tab-scroll_item {
147
+          // line-height: 60rpx;
148
+          margin-right: 35rpx;
149
+          flex-shrink: 0;
150
+          display: flex;
151
+          justify-content: center;
152
+          font-size: 30rpx;
153
+          padding-top: 10rpx;
154
+          color: #333;
155
+          min-width:145rpx;
156
+          .tile-box {
157
+            display: flex;
158
+            align-items: center;
159
+            flex-direction: column;
160
+            .name-box {
161
+              padding-bottom: 13rpx;
162
+            }
163
+            .count {
164
+              padding-bottom: 13rpx;
165
+            }
166
+          }
167
+        }
168
+      }
169
+    }
170
+  }
171
+  .swiper-content {
172
+    padding-top: 120rpx;
173
+    // flex: 1;
174
+    .swiperitem-content {
175
+      background-color: #ffffff;
176
+      .nav_item {
177
+        background-color: #ffffff;
178
+        padding: 20rpx 40rpx 0rpx 40rpx;
179
+      }
180
+    }
181
+  }
182
+}
183
+.active {
184
+  position: relative;
185
+  color: #1f7cff !important;
186
+  font-weight: 600;
187
+}
188
+.active::after {
189
+  content: "";
190
+  position: absolute;
191
+  width: 50rpx;
192
+  height: 8rpx;
193
+  background-color: #1f7cff;
194
+  left: 0px;
195
+  right: 0px;
196
+  bottom: 0px;
197
+  margin: auto;
198
+  border-radius: 8rpx;
199
+  margin-top: 10rpx;
200
+  transition: all 0.3s;
201
+}
202
+/* 隐藏滚动条,但依旧具备可以滚动的功能 */
203
+/deep/.uni-scroll-view::-webkit-scrollbar {
204
+  display: none;
205
+}
206
+</style>

+ 154 - 0
shop/afterSalesManagement/index.vue

@@ -0,0 +1,154 @@
1
+<template>
2
+  <view class="afterSalesManagement-wrapper">
3
+    <headersVue headerTitle="售后管理" @headerJump="headerJump"></headersVue>
4
+    <view class="afterSalesManagement-content">
5
+      <view class="afterSalesManagement-content--top">
6
+        <searchVue
7
+          @search="search"
8
+          class="search-box"
9
+          placeholder="订单号/退货快递单号/收货人姓名、手机号"
10
+        ></searchVue>
11
+      </view>
12
+      <view class="afterSalesManagement-content--tab">
13
+        <tabsVue :category="dataList" :currentActive="currentActive" @tabs="tabsHandleClick" />
14
+      </view>
15
+    </view>
16
+    <view class="afterSalesManagement-list">
17
+      <template v-for="item in 10">
18
+        <afterCardListInfo
19
+          :key="item"
20
+          class="afterSalesManagement-list__card"
21
+          @viewWuLiu="viewWuLiu"
22
+		  @viewDetail="viewDetail"
23
+        ></afterCardListInfo>
24
+      </template>
25
+    </view>
26
+    <view
27
+      class=""
28
+      style="margin: 60rpx 0 30rpx 0; color: #999999; font-size: 26rpx"
29
+    >
30
+      —— 已经到最底部了哦 ——
31
+    </view>
32
+  </view>
33
+</template>
34
+
35
+<script>
36
+import headersVue from "../components/headers/headers.vue";
37
+import tabsVue from "./components/tablist.vue";
38
+import searchVue from "./components/search/search.vue";
39
+import afterCardListInfo from "./afterCardListInfo.vue";
40
+import { toQueryString } from "@/utils/index.js";
41
+
42
+export default {
43
+  components: {
44
+    headersVue,
45
+    tabsVue,
46
+    searchVue,
47
+    afterCardListInfo,
48
+  },
49
+  data() {
50
+    return {
51
+      tihsi: 0,
52
+      currentActive: 0,
53
+      dataList: [
54
+        {
55
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154904247.png",
56
+          name: "全部",
57
+        },
58
+        {
59
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154932244.png",
60
+          name: "审核中",
61
+        },
62
+        {
63
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812154949118.png",
64
+          name: "处理中",
65
+        },
66
+        {
67
+          img: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812155008586.png",
68
+          name: "已完成",
69
+        },
70
+      ],
71
+    };
72
+  },
73
+  onPullDownRefresh() {},
74
+  onReachBottom() {
75
+    console.log("onReachBottom");
76
+  },
77
+
78
+  onLoad(options) {
79
+	// console.log(options,"tabsHandleClicktabsHandleClicktabsHandleClicktabsHandleClick");
80
+    this.currentActive = options.tabIndex ||  options.index || "0";
81
+  },
82
+  methods: {
83
+    headerJump() {
84
+      uni.switchTab({ url: "/pages/ordermanagement/index" });
85
+    },
86
+    search(val) {},
87
+    viewWuLiu(item) {
88
+      const params = {
89
+        status: 0,
90
+        indexs: this.currentActive,
91
+        formType: "shouhou",
92
+        order_id: item.order_id || "1212",
93
+      };
94
+      const urlParams = toQueryString(params);
95
+      uni.redirectTo({
96
+        url: `../commodity/logisticsInformationDetail?${urlParams}`,
97
+      });
98
+    },
99
+	viewDetail(item){
100
+		  const params = {
101
+        indexs: this.currentActive,
102
+        order_id: item.order_id || "1212",
103
+      };
104
+      const urlParams = toQueryString(params);
105
+	   uni.redirectTo({
106
+        url: `./afterSalesDetail?${urlParams}`,
107
+      });
108
+	},
109
+	tabsHandleClick(obj){
110
+		this.currentActive = obj.index;
111
+	}
112
+  },
113
+};
114
+</script>
115
+<style>
116
+page {
117
+  background-color: #f7f8fc;
118
+}
119
+</style>
120
+<style lang="scss" scoped>
121
+.afterSalesManagement-wrapper {
122
+  width: 100%;
123
+  height: 100%;
124
+  display: flex;
125
+  flex-direction: column;
126
+  align-items: center;
127
+  .afterSalesManagement-content {
128
+    background: #fff;
129
+    position: fixed;
130
+    top: 80rpx;
131
+    width: 100%;
132
+    z-index: 666;
133
+    &--top {
134
+      display: flex;
135
+      .search-box {
136
+        flex: 1;
137
+      }
138
+    }
139
+  }
140
+}
141
+.afterSalesManagement-list {
142
+  width: 100%;
143
+  height: 100%;
144
+  display: flex;
145
+  flex-direction: column;
146
+  align-items: center;
147
+  margin-top: 280rpx;
148
+  .afterSalesManagement-list__card {
149
+    width: calc(100% - 100rpx);
150
+    // border: 2rpx solid #f00;
151
+    margin-bottom: 26rpx;
152
+  }
153
+}
154
+</style>

+ 75 - 51
shop/commodity/logisticsInformationDetail.vue

@@ -39,43 +39,49 @@
39 39
         </view>
40 40
       </view>
41 41
     </view>
42
-    <view class="logistics-info-card-wrapper">
43
-      <view class="logistics-info-card-wrapper__logicistics">
44
-        <view class="logistics-info-card-wrapper__logicistics-title">
45
-          <view class="order-list-yi-bot-xiangxi">
46
-            <view class="order-list-yi-bot-xiangxier">
47
-              <view class="shou-icon">收</view>
48
-            </view>
49
-            <view class="order-list-yi-bot-xadasrfe">
50
-              <view class="order-list-yi-bot-xadasrfe-top">
51
-                <text
52
-                  >北京市北京市朝阳区北京市北京市朝阳区北京市北京市朝阳</text
53
-                >
54
-                <text> 郭女士</text>
55
-                <text>185****4736</text>
42
+    <template v-if="true">
43
+      <view class="logistics-info-card-wrapper">
44
+        <view class="logistics-info-card-wrapper__logicistics">
45
+          <view class="logistics-info-card-wrapper__logicistics-title">
46
+            <view class="order-list-yi-bot-xiangxi">
47
+              <view class="order-list-yi-bot-xiangxier">
48
+                <view class="shou-icon">收</view>
49
+              </view>
50
+              <view class="order-list-yi-bot-xadasrfe">
51
+                <view class="order-list-yi-bot-xadasrfe-top">
52
+                  <text
53
+                    >北京市北京市朝阳区北京市北京市朝阳区北京市北京市朝阳</text
54
+                  >
55
+                  <text> 郭女士</text>
56
+                  <text>185****4736</text>
57
+                </view>
56 58
               </view>
57 59
             </view>
58 60
           </view>
59
-        </view>
60
-        <view class="logicistis">
61
-          <view
62
-            class="logicistis-bot-xiangxi"
63
-            v-for="(items, index) in logisticsData"
64
-            :key="index + '_index_'"
65
-          >
66
-            <view class="logicistis-bot-xiangxier">
67
-              <view class="shou-icon " :class="[index===0?'ativedata':'']"></view>
68
-            </view>
69
-            <view class="logicistis-bot-xadasrfe">
70
-              <view class="logicistis-bot-xadasrfe-top">
71
-                <view class="title-cs">{{ items.status }}</view>
72
-                <view class="title-time">{{ items.time }}</view>
61
+          <view class="logicistis">
62
+            <view
63
+              class="logicistis-bot-xiangxi"
64
+              v-for="(items, index) in logisticsData"
65
+              :key="index + '_index_'"
66
+            >
67
+              <view class="logicistis-bot-xiangxier">
68
+                <view
69
+                  class="shou-icon"
70
+                  :class="[index === 0 ? 'ativedata' : '']"
71
+                ></view>
72
+              </view>
73
+              <view class="logicistis-bot-xadasrfe">
74
+                <view class="logicistis-bot-xadasrfe-top">
75
+                  <view class="title-cs">{{ items.status }}</view>
76
+                  <view class="title-time">{{ items.time }}</view>
77
+                </view>
73 78
               </view>
74 79
             </view>
75 80
           </view>
76 81
         </view>
77 82
       </view>
78
-    </view>
83
+    </template>
84
+    <emptyData v-else></emptyData>
79 85
     <ItemsInsidePackageVue ref="refsPackage" />
80 86
   </view>
81 87
 </template>
@@ -85,8 +91,9 @@ import headersVue from "../components/headers/headers.vue";
85 91
 import { toQueryString, copy } from "@/utils/index.js";
86 92
 import ItemsInsidePackageVue from "./components/changeDetailInfo/ItemsInsidePackage.vue";
87 93
 import { mockDataLogistics } from "./mockData.js";
94
+import emptyData from "../components/emptyData/emptyData.vue";
88 95
 export default {
89
-  components: { headersVue, ItemsInsidePackageVue },
96
+  components: { headersVue, ItemsInsidePackageVue, emptyData },
90 97
   data() {
91 98
     return {
92 99
       indexs: "",
@@ -100,37 +107,37 @@ export default {
100 107
           cart_num: "10",
101 108
           image:
102 109
             "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
103
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…"
110
+          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
104 111
         },
105 112
         {
106 113
           pay_price: "88888",
107 114
           cart_num: "10",
108 115
           image:
109 116
             "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
110
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…"
117
+          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
111 118
         },
112 119
         {
113 120
           pay_price: "88888",
114 121
           cart_num: "10",
115 122
           image:
116 123
             "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
117
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…"
124
+          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
118 125
         },
119 126
         {
120 127
           pay_price: "88888",
121 128
           cart_num: "10",
122 129
           image:
123 130
             "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
124
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…"
131
+          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
125 132
         },
126 133
         {
127 134
           pay_price: "88888",
128 135
           cart_num: "10",
129 136
           image:
130 137
             "https://cdn.bjtdba.com/chuxubao/images/2025-02-10/8198d202502101042344757.png",
131
-          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…"
132
-        }
133
-      ]
138
+          store_name: "三个苹果 纯天然浓缩果蔬汁清汁苹果汁…",
139
+        },
140
+      ],
134 141
     };
135 142
   },
136 143
   onLoad(e) {
@@ -147,7 +154,7 @@ export default {
147 154
         copy("98765432345678");
148 155
       } else {
149 156
         uni.makePhoneCall({
150
-          phoneNumber: "98765432345678"
157
+          phoneNumber: "98765432345678",
151 158
         });
152 159
       }
153 160
     },
@@ -155,21 +162,38 @@ export default {
155 162
       this.$refs.refsPackage.open();
156 163
     },
157 164
     topgi() {
158
-      const obj = {
159
-        status: this.status,
160
-        index: this.indexs,
161
-        formType: this.formType,
162
-        order_id: this.order_id
165
+      let obj = {
166
+        // status: this.status,
167
+        // index: this.indexs,
168
+        // formType: this.formType,
169
+        // order_id: this.order_id
163 170
       };
171
+      if (["oldInfo", "shouhou"].includes(this.formType)) {
172
+        obj = {
173
+          status: this.status,
174
+          index: this.indexs,
175
+        };
176
+      } else {
177
+        obj = {
178
+          status: this.status,
179
+          index: this.indexs,
180
+          formType: this.formType,
181
+          order_id: this.order_id,
182
+        };
183
+      }
164 184
       const params = toQueryString(obj);
165
-      const redirectUrl =
166
-        this.formType === "detail" ? `./details?` : `./order?`;
185
+      const redirectUrl = {
186
+        detail: `./details?`,
187
+        oldInfo: `./order?`,
188
+        shouhou: `../afterSalesManagement/index?`,
189
+        shouhouDetail: "../afterSalesManagement/afterSalesDetail?",
190
+      }[this.formType];
167 191
       uni.redirectTo({
168
-        url: `${redirectUrl}${params}`
192
+        url: `${redirectUrl}${params}`,
169 193
         // url: './order'
170 194
       });
171
-    }
172
-  }
195
+    },
196
+  },
173 197
 };
174 198
 </script>
175 199
 <style>
@@ -357,8 +381,8 @@ page {
357 381
       position: relative;
358 382
       display: flex;
359 383
       padding-bottom: 35rpx;
360
-      &::before{
361
-        content: '';
384
+      &::before {
385
+        content: "";
362 386
         width: 2rpx;
363 387
         background: #bdafaf;
364 388
         height: calc(100% - 2rpx);
@@ -380,7 +404,7 @@ page {
380 404
           background: #999999;
381 405
           flex-shrink: 0;
382 406
           border-radius: 50%;
383
-          &:not(.ativedata){
407
+          &:not(.ativedata) {
384 408
             margin-left: 5rpx;
385 409
           }
386 410
           &.ativedata {

+ 275 - 264
shop/commodity/order.vue

@@ -13,8 +13,8 @@
13 13
 		 <view class="order-list">
14 14
 			
15 15
 			<template v-if="listMock.length>0">
16
-				<template v-for="(item,index) in listMock">
17
-					 <orderListCardVue class="order-list__card" @handleSendOutGoods="handleSendOutGoods" :item="item" :key="index+'index'"/>
16
+				<template v-for="(item,index) in listMock" >
17
+					 <orderListCardVue class="order-list__card" :key="index+'index'" @handleSendOutGoods="handleSendOutGoods" :item="item" />
18 18
 				</template>
19 19
 			</template>
20 20
 			<template v-else>
@@ -25,275 +25,286 @@
25 25
 			<view class="" v-if="tihsi==0&&listMock.length>0" style="margin: 60rpx 0 30rpx 0; color: #999999; font-size: 26rpx;">
26 26
 				—— 已经到最底部了哦 ——
27 27
 			</view>
28
-		</view>
29 28
 	</view>
30 29
 </template>
31 30
 
32 31
 <script>
33
-	import {
34
-		orderList
35
-	} from '@/commit/order.js'
36
-	import emptyDataVue from '../components/emptyData/emptyData.vue'
37
-	import tabsVue from '../components/tabs/tabs/tabs.vue'
38
-	import orderListCardVue from './components/orderList/orderListCard.vue'
39
-	import searchVue from './components/search/search.vue'
40
-	import headersVue from '../components/headers/headers.vue'
41
-	import {listData} from "./mockData.js"
42
-	import {toQueryString} from "@/utils/index.js"
43
-	export default {
44
-		components:{emptyDataVue,tabsVue,orderListCardVue,searchVue,headersVue},
45
-		data() {
46
-			return {
47
-				listMock:[],
48
-				page: 1,
49
-				limit: 10,
50
-				tihsi: '',
51
-				is_panudn: true,
52
-				//uid: 11, //	用户ID 查询用户订单列表需要传
53
-				mer_id: '', //商户ID    查询商户订单列表的时候需要传
54
-				status: '', //0:待发货;1:待收货;2:待评价;3:已完成;4已申请退款;-1:已退款)5未支付WADDW
55
-				indexs: 0,
56
-				// sty: true,
57
-				list: [],
58
-				num: [{
59
-						name: "全部",
60
-						status: null,
61
-						totalNum:0,
62
-						show:true
63
-					},{
64
-						name: "待付款",
65
-						status: 1,
66
-						totalNum:0,
67
-						show:true
68
-					},
69
-					{
70
-						name: "待发货",
71
-						status: 2,
72
-						totalNum:0,
73
-						show:true
74
-					},
75
-					{
76
-						name: "待收货",
77
-						status: 3,
78
-						totalNum:0,
79
-						show:true
80
-					},
81
-					{
82
-						name: "待评价",//售后中
83
-						status: 4,
84
-						totalNum:0,
85
-						show:true
86
-					},
87
-					{
88
-						name: "已完成",
89
-						status: 5,
90
-						totalNum:0,
91
-						show:true
92
-					},
93
-					{
94
-						name: "已退款",
95
-						status: 6,
96
-						totalNum:0,
97
-						show:true
98
-					},
99
-					{
100
-						name: "已删除",
101
-						status: 7,
102
-						totalNum:0,
103
-						show:true
104
-					}
105
-				]
106
-				// num: [{
107
-				// 		name: "待付款",
108
-				// 		status: 5
109
-				// 	},
110
-				// 	{
111
-				// 		name: "待发货",
112
-				// 		status: 0
113
-				// 	},
114
-				// 	{
115
-				// 		name: "待收货",
116
-				// 		status: 1
117
-				// 	},
118
-				// 	{
119
-				// 		name: "待评价",
120
-				// 		status: 2
121
-				// 	},
122
-				// 	// {
123
-				// 	// 	name: "已完成"
124
-				// 	// }
125
-				// ]
126
-			}
127
-		},
128
-		onLoad(e) {
129
-			let selectmerchant = uni.getStorageSync('selectmerchant')
130
-			this.mer_id = selectmerchant.merId
131
-			this.status = e.status //进入状态
132
-			this.indexs = e.index==null?0:e.index
133
-			this.listMock = listData || []
134
-			// this.orderList()
135
-		},
136
-		onPullDownRefresh() {
137
-			uni.showLoading({
138
-				title: '加载中',
139
-			});
140
-			this.page = 1
141
-			this.is_panudn = true
142
-			this.list = []
143
-			// this.orderList();
144
-		},
145
-		onReachBottom() {
146
-			if (this.is_panudn == true) {
147
-				this.page++;
148
-				this.orderList();
149
-			} else {
150
-				return
151
-			}
152
-		},
153
-		methods: {
154
-			search(val){
155
-				console.log(val,"搜索")
156
-			},
157
-			handleSendOutGoods(v,type){
158
-				console.log("發貨",v,this.indexs)
159
-				const urlParams = {
160
-					order_id:v.order_id,
161
-					status:v.status,
162
-					indexs:this.indexs,
163
-					goodsCustomType:type==='delivered'?'deliverGoods':type,
164
-					formType:'oldInfo'
165
-				}
166
-				console.log(urlParams,"urlParams")
167
-				let url = toQueryString(urlParams)
168
-				const newUrl = {
169
-					"sendGoods":`./sendoutgoods?${url}`,//立即发货
170
-					"delivered":`./sendoutgoods?${url}`,//已送达
171
-					"logistics":`./logisticsInformationDetail?${url}`,//查看物流
172
-					"deliverGoods":`./sendoutgoods?${url}`,//送貨
173
-					"pickup":`./sendoutgoods?${url}`,//立即自提
174
-					"detail":`./details?${url}`
175
-				}
176
-				let redirectToUrl = newUrl[type] || newUrl["logistics"]
177
-				console.log(redirectToUrl,"redirectToUrl")
178
-				console.log(type,"type")
179
-				uni.redirectTo({
180
-					url: redirectToUrl
181
-				});
182
-			},
183
-			// 正向订单列表
184
-			orderList() {
185
-				return fasle;
186
-				uni.showLoading({
187
-					title: '加载中',
188
-				});
189
-				orderList({
190
-					pageNum: this.page,
191
-					pageSize: this.limit,
192
-					mer_id: this.mer_id,
193
-					status: this.status
194
-				}).then(res => {
195
-					uni.stopPullDownRefresh();
196
-					if (res.data.status == 200) {
197
-						this.tihsi = res.data.data.pageInfo.list.length
198
-						if (res.data.data.pageInfo.list.length > 0) {
199
-							if (this.page == 1) {
200
-								this.list = res.data.data.pageInfo.list
201
-							} else {
202
-								this.list = this.list.concat(res.data.data.pageInfo.list)
203
-							}
204
-						} else {
205
-							if (this.page == 1) {
206
-								this.list = []
207
-							}
208
-							this.is_panudn = false
209
-						}
210
-						uni.hideLoading();
211
-					}
212
-				}, fail => {
213
-					console.log(fail)
214
-					uni.hideLoading();
215
-				})
216
-			},
217
-			details(e) {
218
-				uni.redirectTo({
219
-					// + "&status=" + this.status + "&indexs=" + this.indexs
220
-					url: './details?order_id=' + e + "&status=" + this.status + "&indexs=" + this.indexs
221
-				});
222
-			},
223
-			tabsHandleClick({index,item}){
224
-				this.ysne(index,item.status)
225
-				
226
-			},
227
-			ysne(index, status) {
228
-				this.status = status
229
-				this.indexs = index
230
-				this.page = 1
231
-				this.is_panudn = true
232
-				
233
-				console.log(index,this.indexs,"---tabsHandleClick")
234
-				console.log(status,this.status ,"---tabsHandleClickitem")
235
-				// this.orderList()
236
-			},
237
-			topgi() {
238
-				uni.switchTab({
239
-					url: '../../pages/ordermanagement/index'
240
-				});
241
-			},
242
-		}
243
-	}
32
+import { orderList } from "@/commit/order.js";
33
+import emptyDataVue from "../components/emptyData/emptyData.vue";
34
+import tabsVue from "../components/tabs/tabs/tabs.vue";
35
+import orderListCardVue from "./components/orderList/orderListCard.vue";
36
+import searchVue from "./components/search/search.vue";
37
+import headersVue from "../components/headers/headers.vue";
38
+import { listData } from "./mockData.js";
39
+import { toQueryString } from "@/utils/index.js";
40
+export default {
41
+  components: {
42
+    emptyDataVue,
43
+    tabsVue,
44
+    orderListCardVue,
45
+    searchVue,
46
+    headersVue,
47
+  },
48
+  data() {
49
+    return {
50
+      listMock: [],
51
+      page: 1,
52
+      limit: 10,
53
+      tihsi: "",
54
+      is_panudn: true,
55
+      //uid: 11, //	用户ID 查询用户订单列表需要传
56
+      mer_id: "", //商户ID    查询商户订单列表的时候需要传
57
+      status: "", //0:待发货;1:待收货;2:待评价;3:已完成;4已申请退款;-1:已退款)5未支付WADDW
58
+      indexs: 0,
59
+      // sty: true,
60
+      list: [],
61
+      num: [
62
+        {
63
+          name: "全部",
64
+          status: null,
65
+          totalNum: 0,
66
+          show: true,
67
+        },
68
+        {
69
+          name: "待付款",
70
+          status: 1,
71
+          totalNum: 0,
72
+          show: true,
73
+        },
74
+        {
75
+          name: "待发货",
76
+          status: 2,
77
+          totalNum: 0,
78
+          show: true,
79
+        },
80
+        {
81
+          name: "待收货",
82
+          status: 3,
83
+          totalNum: 0,
84
+          show: true,
85
+        },
86
+        {
87
+          name: "待评价", //售后中
88
+          status: 4,
89
+          totalNum: 0,
90
+          show: true,
91
+        },
92
+        {
93
+          name: "已完成",
94
+          status: 5,
95
+          totalNum: 0,
96
+          show: true,
97
+        },
98
+        {
99
+          name: "已退款",
100
+          status: 6,
101
+          totalNum: 0,
102
+          show: true,
103
+        },
104
+        {
105
+          name: "已删除",
106
+          status: 7,
107
+          totalNum: 0,
108
+          show: true,
109
+        },
110
+      ],
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
+    };
132
+  },
133
+  onLoad(e) {
134
+    let selectmerchant = uni.getStorageSync("selectmerchant");
135
+    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()
140
+  },
141
+  onPullDownRefresh() {
142
+    uni.showLoading({
143
+      title: "加载中",
144
+    });
145
+    this.page = 1;
146
+    this.is_panudn = true;
147
+    this.list = [];
148
+    // this.orderList();
149
+  },
150
+  onReachBottom() {
151
+    if (this.is_panudn == true) {
152
+      this.page++;
153
+      this.orderList();
154
+    } else {
155
+      return;
156
+    }
157
+  },
158
+  methods: {
159
+    search(val) {
160
+      console.log(val, "搜索");
161
+    },
162
+    handleSendOutGoods(v, type) {
163
+      console.log("發貨", v, this.indexs);
164
+      const urlParams = {
165
+        order_id: v.order_id,
166
+        status: v.status,
167
+        indexs: this.indexs,
168
+        goodsCustomType: type === "delivered" ? "deliverGoods" : type,
169
+        formType: "oldInfo",
170
+      };
171
+      console.log(urlParams, "urlParams");
172
+      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");
184
+      uni.redirectTo({
185
+        url: redirectToUrl,
186
+      });
187
+    },
188
+    // 正向订单列表
189
+    orderList() {
190
+      return false;
191
+      uni.showLoading({
192
+        title: "加载中",
193
+      });
194
+      orderList({
195
+        pageNum: this.page,
196
+        pageSize: this.limit,
197
+        mer_id: this.mer_id,
198
+        status: this.status,
199
+      }).then(
200
+        (res) => {
201
+          uni.stopPullDownRefresh();
202
+          if (res.data.status == 200) {
203
+            this.tihsi = res.data.data.pageInfo.list.length;
204
+            if (res.data.data.pageInfo.list.length > 0) {
205
+              if (this.page == 1) {
206
+                this.list = res.data.data.pageInfo.list;
207
+              } else {
208
+                this.list = this.list.concat(res.data.data.pageInfo.list);
209
+              }
210
+            } else {
211
+              if (this.page == 1) {
212
+                this.list = [];
213
+              }
214
+              this.is_panudn = false;
215
+            }
216
+            uni.hideLoading();
217
+          }
218
+        },
219
+        (fail) => {
220
+          console.log(fail);
221
+          uni.hideLoading();
222
+        }
223
+      );
224
+    },
225
+    details(e) {
226
+      uni.redirectTo({
227
+        // + "&status=" + this.status + "&indexs=" + this.indexs
228
+        url:
229
+          "./details?order_id=" +
230
+          e +
231
+          "&status=" +
232
+          this.status +
233
+          "&indexs=" +
234
+          this.indexs,
235
+      });
236
+    },
237
+    tabsHandleClick({ index, item }) {
238
+      this.ysne(index, item.status);
239
+    },
240
+    ysne(index, status) {
241
+      this.status = status;
242
+      this.indexs = index;
243
+      this.page = 1;
244
+      this.is_panudn = true;
245
+
246
+      console.log(index, this.indexs, "---tabsHandleClick");
247
+      console.log(status, this.status, "---tabsHandleClickitem");
248
+      // this.orderList()
249
+    },
250
+    topgi() {
251
+      uni.switchTab({
252
+        url: "../../pages/ordermanagement/index",
253
+      });
254
+    },
255
+  },
256
+};
244 257
 </script>
245 258
 
246 259
 <style>
247
-	page {
248
-		background-color: #F7F8FC;
249
-		/* padding-top: 90rpx; */
250
-	}
260
+page {
261
+  background-color: #f7f8fc;
262
+  /* padding-top: 90rpx; */
263
+}
251 264
 </style>
252 265
 <style lang="scss" scoped>
253
-	.order {
254
-		width: 100%;
255
-		height: 100%;
256
-		display: flex;
257
-		flex-direction: column;
258
-		align-items: center;
259
-		.order-nbeirong {
260
-			width: 686rpx;
261
-			height: 30rpx;
262
-			margin: 204rpx 0 38rpx 0;
263
-			display: flex;
264
-			justify-content: space-around;
265
-			align-items: center;
266
-		}
267
-		.order-list-filter-wrapper{
268
-			margin: 96rpx 0rpx 0rpx;
269
-			width: 100%;
270
-			position: fixed;
271
-			top:0rpx;
272
-			z-index:99;
273
-			.order-nbeirong_customs{
274
-				width: 100%;
275
-				min-height: 30rpx;
276
-				
277
-				margin: 0rpx 0 26rpx 0;
278
-			}
279
-			.order-search_customs{
280
-			width: 100%;
281
-			min-height: 30rpx;
282
-			
283
-				}
284
-			
285
-		}
286
-		.order-list {
287
-			width: 100%;
288
-			height: 100%;
289
-			display: flex;
290
-			flex-direction: column;
291
-			align-items: center;
292
-			margin-top: 340rpx;
293
-            .order-list__card{
294
-				width: calc(100% - 40rpx);
295
-				margin:0 20rpx 26rpx;
296
-			}
297
-		}
298
-	}
266
+.order {
267
+  width: 100%;
268
+  height: 100%;
269
+  display: flex;
270
+  flex-direction: column;
271
+  align-items: center;
272
+  .order-nbeirong {
273
+    width: 686rpx;
274
+    height: 30rpx;
275
+    margin: 204rpx 0 38rpx 0;
276
+    display: flex;
277
+    justify-content: space-around;
278
+    align-items: center;
279
+  }
280
+  .order-list-filter-wrapper {
281
+    margin: 90rpx 0rpx 0rpx;
282
+    width: 100%;
283
+    position: fixed;
284
+    top: 0rpx;
285
+    z-index: 99;
286
+    .order-nbeirong_customs {
287
+      width: 100%;
288
+      min-height: 30rpx;
289
+
290
+      margin: 0rpx 0 26rpx 0;
291
+    }
292
+    .order-search_customs {
293
+      width: 100%;
294
+      min-height: 30rpx;
295
+    }
296
+  }
297
+  .order-list {
298
+    width: 100%;
299
+    height: 100%;
300
+    display: flex;
301
+    flex-direction: column;
302
+    align-items: center;
303
+    margin-top: 340rpx;
304
+    .order-list__card {
305
+      width: calc(100% - 40rpx);
306
+      margin: 0 20rpx 26rpx;
307
+    }
308
+  }
309
+}
299 310
 </style>

+ 562 - 0
shop/components/cascade-picker.vue

@@ -0,0 +1,562 @@
1
+<template name="cascade-picker">
2
+  <view class="aui-picker" v-if="SHOW" :class="{'aui-picker-in': FADE==1,'aui-picker-out': FADE==0}">
3
+    <view class="aui-mask" @click.stop="close"></view>
4
+    <view class="aui-picker-main">
5
+      <view class="aui-picker-header">
6
+        <view class="aui-picker-header-icon" @click.stop="close">取消</view>
7
+        <view class="aui-picker-title" v-if="title">{{ title }}</view>
8
+        <view class="aui-picker-header-icon aui-picker-confirm" @click.stop="_confirm">确认</view>
9
+      </view>
10
+      <view class="aui-picker-nav">
11
+        <view class="aui-picker-navitem"
12
+              v-if="nav.length>0"
13
+              v-for="(item, index) in nav"
14
+              :key="index"
15
+              :data-index="index"
16
+              :class="[index==navCurrentIndex ? 'active' : '', 'aui-picker-navitem-'+index]"
17
+              :style="{margin: nav.length>2 ? '0 25rpx 0 0' : '0 45rpx 0 0'}"
18
+              @click.stop="_changeNav($event)"
19
+        >{{ item.name }}
20
+        </view>
21
+        <view class="aui-picker-navitem"
22
+              :key="nav.length"
23
+              :data-index="nav.length"
24
+              :class="[nav.length==navCurrentIndex ? 'active' : '', 'aui-picker-navitem-'+nav.length]"
25
+              :style="{margin: nav.length>2 ? '0 25rpx 0 0' : '0 45rpx 0 0'}"
26
+              @click.stop="_changeNav($event)">请选择
27
+        </view>
28
+        <view class="aui-picker-navborder" :style="{left: navBorderLeft+'px'}"></view>
29
+      </view>
30
+      <view class="aui-picker-content">
31
+        <view class="aui-picker-lists">
32
+          <view class="aui-picker-list"
33
+                v-for="(list, index) in queryItems.length + 1"
34
+                :key="index"
35
+                :data-index="index"
36
+                :class="[index==navCurrentIndex ? 'active' : '']"
37
+          >
38
+            <view class="aui-picker-list-warp" v-if="index == 0">
39
+              <view class="aui-picker-item"
40
+                    v-for="(item, key) in items"
41
+                    v-if="item.pid=='0'"
42
+                    :key="key"
43
+                    :data-pindex="index"
44
+                    :data-index="key"
45
+                    :data-id="item.id"
46
+                    :data-pid="item.pid"
47
+                    :data-name="item.name"
48
+                    :data-type="item.type"
49
+                    :class="{'active': result.length>index && result[index].id==item.id}"
50
+                    :style="{'background': touchConfig.index==key && touchConfig.pindex==index ? touchConfig.style.background : ''}"
51
+                    @click.stop="_chooseItem($event)"
52
+                    @touchstart="_btnTouchStart($event)"
53
+                    @touchmove="_btnTouchEnd($event)"
54
+                    @touchend="_btnTouchEnd($event)"
55
+              >{{ item.name }}
56
+              </view>
57
+            </view>
58
+            <view class="aui-picker-list-warp" v-else>
59
+              <view class="aui-picker-item"
60
+                    v-for="(item, key) in queryItems[index-1]"
61
+                    :key="key"
62
+                    :data-pindex="index"
63
+                    :data-index="key"
64
+                    :data-id="item.id"
65
+                    :data-pid="item.pid"
66
+                    :data-name="item.name"
67
+                    :data-type="item.type"
68
+                    :class="{'active': result.length>index && result[index].id==item.id}"
69
+                    :style="{'background': touchConfig.index==key && touchConfig.pindex==index ? touchConfig.style.background : ''}"
70
+                    @click.stop="_chooseItem($event)"
71
+                    @touchstart="_btnTouchStart($event)"
72
+                    @touchmove="_btnTouchEnd($event)"
73
+                    @touchend="_btnTouchEnd($event)"
74
+              >{{ item.name }}
75
+              </view>
76
+            </view>
77
+          </view>
78
+        </view>
79
+      </view>
80
+    </view>
81
+  </view>
82
+</template>
83
+
84
+<script>
85
+export default {
86
+  name: 'cascade-picker',
87
+  props: {
88
+    title: { //标题
89
+      type: String,
90
+      default: ''
91
+    },
92
+    layer: { //控制几级联动,默认无限级(跟随数据有无下级)
93
+      type: Number,
94
+      default: null
95
+    },
96
+    data: { //数据 如:[{id: '', name: '', children: [{id: '', name: ''}]}]
97
+      type: Array,
98
+      default() {
99
+        return [
100
+          // [{id: '', name: '', children: [{id: '', name: ''}]}]
101
+        ]
102
+      }
103
+    }
104
+  },
105
+  data() {
106
+    return {
107
+      SHOW: false,
108
+      FADE: -1,
109
+      nav: [],
110
+      items: [], // 第一级数据列表
111
+      queryItems: [], // 各级数据列表
112
+      navCurrentIndex: 0, // 当前选中的导航项索引
113
+      navBorderLeft: 26, // 导航栏的边框左侧位置
114
+      result: [],
115
+      touchConfig: {
116
+        index: -1,
117
+        pindex: -1,
118
+        style: {
119
+          color: '#214579',
120
+          background: '#EFEFEF'
121
+        }
122
+      },
123
+      selectedData: [] // 用于回显数据的属性
124
+    }
125
+  },
126
+  watch: {
127
+    data() {
128
+      const _this = this;
129
+      const data = _this.data;
130
+      _this.items = _this._flatten(data, '0')
131
+      console.log(_this.items,"_this.items")
132
+    }
133
+  },
134
+  methods: {
135
+    // 打开
136
+    open() {
137
+      const _this = this;
138
+      _this.reset(); //打开时重置picker
139
+    //   _this._restoreSelectedData()
140
+      return new Promise(function (resolve, reject) {
141
+        _this.SHOW = true;
142
+        _this.FADE = 1;
143
+        resolve();
144
+      });
145
+    },
146
+    // 关闭
147
+    close() {
148
+      const _this = this;
149
+      return new Promise(function (resolve, reject) {
150
+        _this.FADE = 0;
151
+        const _hidetimer = setTimeout(() => {
152
+          _this.SHOW = false;
153
+          _this.FADE = -1;
154
+          clearTimeout(_hidetimer);
155
+          resolve();
156
+        }, 100)
157
+      });
158
+    },
159
+    //重置
160
+    reset() {
161
+      const _this = this;
162
+      _this.queryItems = [];
163
+      _this.nav = [];
164
+      _this.navBorderLeft = 26;
165
+      _this.navCurrentIndex = 0;
166
+      _this.result = [];
167
+    },
168
+    //导航栏切换
169
+    _changeNav(e) {
170
+      const _this = this;
171
+      const index = Number(e.currentTarget.dataset.index);
172
+      _this.navCurrentIndex = index;
173
+      const _el = uni.createSelectorQuery().in(this).select(".aui-picker-navitem-" + index);
174
+      _el.boundingClientRect(data => {
175
+        _this.navBorderLeft = data.left + 10;
176
+      }).exec();
177
+    },
178
+    //数据选择
179
+    _chooseItem(e) {
180
+      const _this = this;
181
+      const id = e.currentTarget.dataset.id;
182
+      const name = e.currentTarget.dataset.name;
183
+      const pid = e.currentTarget.dataset.pid;
184
+      const type = e.currentTarget.dataset.type;
185
+      const _arr = [];
186
+      _this.result[_this.navCurrentIndex] = {id: id, name: name, pid: pid, type: type};
187
+      if (
188
+        (!_this._isDefine(_this.layer) && _this._isDefine(_this._deepQuery(_this.data, id).children))
189
+        ||
190
+        (_this.navCurrentIndex < (Number(_this.layer) - 1) && _this._isDefine(_this._deepQuery(_this.data, id).children))
191
+      ) { //有下级数据
192
+        _this._deepQuery(_this.data, id).children.forEach(function (item, index) {
193
+          _arr.push({id: item.id, name: item.name, pid: id, type: item.type});
194
+        });
195
+        if (_this.navCurrentIndex == _this.queryItems.length) { //选择数据
196
+          _this.queryItems.push(_arr);
197
+          _this.nav.push({name: name});
198
+        } else { //重新选择数据
199
+          _this.queryItems.splice(_this.navCurrentIndex + 1, 1);
200
+          _this.nav.splice(_this.navCurrentIndex + 1, 1);
201
+          _this.queryItems.splice(_this.navCurrentIndex, 1, _arr);
202
+          _this.nav.splice(_this.navCurrentIndex, 1, {name: name});
203
+        }
204
+        _this.navCurrentIndex = _this.navCurrentIndex + 1;
205
+        const _el = uni.createSelectorQuery().in(this).select(".aui-picker-navitem-" + _this.navCurrentIndex);
206
+        setTimeout(() => {
207
+          _el.boundingClientRect(data => {
208
+            _this.navBorderLeft = data.left + 10;
209
+          }).exec();
210
+        }, 100)
211
+      } else { //无下级数据且最后一级数据的type为1时,则可以确认关闭
212
+    //   console.log(_this.result,type,"typetypetypetypetype",e.currentTarget.dataset)
213
+        _this._confirm();
214
+      }
215
+    },
216
+    _confirm() {
217
+      const _this = this;
218
+      const lastItem = _this.result[_this.result.length - 1];
219
+      console.log(lastItem)
220
+      console.log(_this.result)
221
+      if (lastItem && lastItem.type === 1) {
222
+        _this.close().then(() => {
223
+            _this.selectedData = [..._this.result]; // 保存选择的数据
224
+          _this.$emit("callback", {status: 0, data: _this.result});
225
+        });
226
+      } else {
227
+        uni.$u.toast('请选择最后一级分类')
228
+      }
229
+    },
230
+    //递归遍历——将树形结构数据转化为数组格式
231
+    _flatten(tree, pid) {
232
+      return tree.reduce((arr, {id, name, type, children = []}) =>
233
+        arr.concat([{id, name, pid, type}], this._flatten(children, id)), [])
234
+    },
235
+    //根据id查询对应的数据(如查询id=10100对应的对象)
236
+    _deepQuery(tree, id) {
237
+      let isGet = false;
238
+      let retNode = null;
239
+
240
+      function deepSearch(tree, id) {
241
+        for (let i = 0; i < tree.length; i++) {
242
+          if (tree[i].children && tree[i].children.length > 0) {
243
+            deepSearch(tree[i].children, id);
244
+          }
245
+          if (id === tree[i].id || isGet) {
246
+            isGet || (retNode = tree[i]);
247
+            isGet = true;
248
+            break;
249
+          }
250
+        }
251
+      }
252
+
253
+      deepSearch(tree, id);
254
+      return retNode;
255
+    },
256
+    /***判断字符串是否为空
257
+     @param {string} str 变量
258
+     @example: aui.isDefine("变量");
259
+     */
260
+    _isDefine(str) {
261
+      if (str == null || str == "" || str == "undefined" || str == undefined || str == "null" || str == "(null)" || str == 'NULL' || typeof (str) == 'undefined') {
262
+        return false;
263
+      } else {
264
+        str = str + "";
265
+        str = str.replace(/\s/g, "");
266
+        if (str == "") {
267
+          return false;
268
+        }
269
+        return true;
270
+      }
271
+    },
272
+    _btnTouchStart(e) {
273
+      const _this = this,
274
+        index = Number(e.currentTarget.dataset.index),
275
+        pindex = Number(e.currentTarget.dataset.pindex);
276
+      _this.touchConfig.index = index;
277
+      _this.touchConfig.pindex = pindex;
278
+    },
279
+    _btnTouchEnd(e) {
280
+      const _this = this,
281
+        index = Number(e.currentTarget.dataset.index),
282
+        pindex = Number(e.currentTarget.dataset.pindex);
283
+      _this.touchConfig.index = -1;
284
+      _this.touchConfig.pindex = -1;
285
+    },
286
+     // 恢复选择的数据
287
+    _restoreSelectedData() {
288
+      const _this = this;
289
+      console.log(_this.selectedData, "selectedData")
290
+      if (_this.selectedData.length > 0) {
291
+        _this.result = [..._this.selectedData];
292
+        _this.queryItems = [];
293
+        _this.nav = [];
294
+        _this.navCurrentIndex = 0;
295
+        _this.selectedData.forEach((item, index) => {
296
+          _this.result[index] = item;
297
+          if (index > 0) {
298
+            const parent = _this._deepQuery(_this.data, item.pid);
299
+            if (parent && parent.children) {
300
+              _this.queryItems[index - 1] = parent.children.map(child => ({
301
+                id: child.id,
302
+                name: child.name,
303
+                pid: child.pid,
304
+                type: child.type
305
+              }));
306
+              _this.nav[index - 1] = {name: parent.name};
307
+            }
308
+          }
309
+        });
310
+        _this.navCurrentIndex = _this.selectedData.length - 1;
311
+        const lastItem = _this.selectedData[_this.selectedData.length - 1];
312
+        if (lastItem) {
313
+          const _el = uni.createSelectorQuery().in(_this).select(".aui-picker-navitem-" + _this.navCurrentIndex);
314
+        setTimeout(() => {
315
+              _el.boundingClientRect(data => {
316
+            // _this.navBorderLeft = data?.left + 10;
317
+            console.log(data, "data")
318
+          }).exec();
319
+        },50)
320
+            _this.$emit("callback", {status: 1, data: _this.result});
321
+        }
322
+      }
323
+    
324
+    },
325
+  }
326
+}
327
+</script>
328
+
329
+<style lang="scss" scoped>
330
+$custom-content-color: #1f7cff;
331
+/* ====================
332
+  多级联动弹窗
333
+ =====================*/
334
+.aui-picker {
335
+  width: 100vw;
336
+  height: 100vh;
337
+  //opacity: 0;
338
+  position: fixed;
339
+  top: 0;
340
+  left: 0;
341
+  z-index: 999;
342
+  /* display: none; */
343
+}
344
+
345
+// 遮罩层
346
+.aui-mask {
347
+  width: 100%;
348
+  height: 100%;
349
+  background: rgba(0, 0, 0, .3);
350
+  position: absolute;
351
+  left: 0;
352
+  top: 0;
353
+  z-index: 999;
354
+}
355
+
356
+.aui-picker.aui-picker-in {
357
+  -moz-animation: aui-fade-in .1s ease-out forwards;
358
+  -ms-animation: aui-fade-in .1s ease-out forwards;
359
+  -webkit-animation: aui-fade-in .1s ease-out forwards;
360
+  animation: aui-fade-in .1s ease-out forwards;
361
+}
362
+
363
+.aui-picker.aui-picker-out {
364
+  -moz-animation: aui-fade-out .1s ease-out forwards;
365
+  -ms-animation: aui-fade-out .1s ease-out forwards;
366
+  -webkit-animation: aui-fade-out .1s ease-out forwards;
367
+  animation: aui-fade-out .1s ease-out forwards;
368
+}
369
+
370
+.aui-picker-main {
371
+  width: 100vw;
372
+  height: 50vh;
373
+  background: #FFF;
374
+  position: absolute;
375
+  left: 0rpx;
376
+  bottom: 0;
377
+  z-index: 999;
378
+}
379
+
380
+.aui-picker.aui-picker-in .aui-picker-main {
381
+  -moz-animation: aui-slide-up-screen .2s ease-out forwards;
382
+  -ms-animation: aui-slide-up-screen .2s ease-out forwards;
383
+  -webkit-animation: aui-slide-up-screen .2s ease-out forwards;
384
+  animation: aui-slide-up-screen .2s ease-out forwards;
385
+}
386
+
387
+.aui-picker.aui-picker-out .aui-picker-main {
388
+  -moz-animation: aui-slide-down-screen .2s ease-out forwards;
389
+  -ms-animation: aui-slide-down-screen .2s ease-out forwards;
390
+  -webkit-animation: aui-slide-down-screen .2s ease-out forwards;
391
+  animation: aui-slide-down-screen .2s ease-out forwards;
392
+}
393
+
394
+.aui-picker-header {
395
+  width: 100%;
396
+  min-height: 70rpx;
397
+  position: relative;
398
+  z-index: 999;
399
+  display: flex;
400
+  justify-content: space-between;
401
+  align-items: center;
402
+
403
+  &-icon {
404
+    font-size: 26rpx;
405
+    color: #aaa;
406
+    padding: 0 26rpx;
407
+  }
408
+
409
+  .aui-picker-confirm {
410
+    height: 70rpx;
411
+    line-height: 70rpx;
412
+    text-align: center;
413
+    font-size: 26rpx;
414
+    color: $custom-content-color;
415
+    padding: 0 25rpx;
416
+  }
417
+}
418
+
419
+.aui-picker-header::after {
420
+  content: '';
421
+  width: 100%;
422
+  height:2rpx;
423
+  background: rgba(100, 100, 100, .3);
424
+  -moz-transform: scaleY(.3);
425
+  -ms-transform: scaleY(.3);
426
+  -webkit-transform: scaleY(.3);
427
+  transform: scaleY(.3);
428
+  position: absolute;
429
+  left: 0;
430
+  bottom: 0;
431
+  z-index: 999;
432
+}
433
+
434
+.aui-picker-title {
435
+  line-height: 45rpx;
436
+  text-align: center;
437
+  font-size: 26rpx;
438
+  color: #333;
439
+  padding: 15rpx;
440
+  font-weight: bold;
441
+  box-sizing: border-box;
442
+  position: absolute;
443
+  left: 60rpx;
444
+  right: 60rpx;
445
+  top: 0;
446
+}
447
+
448
+.aui-picker-content {
449
+  width: 100%;
450
+  height: -webkit-calc(100% - 110rpx);
451
+  height: calc(100% - 110rpx);
452
+}
453
+
454
+.aui-picker-nav {
455
+  width: 100%;
456
+  height: 60rpx;
457
+  text-align: left;
458
+  padding: 0 26rpx;
459
+  margin: 0 0 2rpx 0;
460
+  justify-content: flex-start;
461
+  white-space: nowrap;
462
+  box-sizing: border-box;
463
+  position: relative;
464
+  overflow-x: scroll;
465
+  overflow-y: hidden;
466
+}
467
+
468
+.aui-picker-nav::after {
469
+  content: '';
470
+  width: 100%;
471
+  height: 2rpx;
472
+  background: rgba(100, 100, 100, .3);
473
+  -moz-transform: scaleY(.3);
474
+  -ms-transform: scaleY(.3);
475
+  -webkit-transform: scaleY(.3);
476
+  transform: scaleY(.3);
477
+  position: absolute;
478
+  left: 0;
479
+  bottom: 0;
480
+  z-index: 999;
481
+}
482
+
483
+.aui-picker-navitem {
484
+  width: 110rpx;
485
+  line-height: 50rpx;
486
+  font-size: 25rpx;
487
+  margin: 0 70rpx 0 0;
488
+  text-align: center;
489
+  display: inline-block;
490
+  overflow: hidden;
491
+  white-space: nowrap;
492
+  text-overflow: ellipsis;
493
+}
494
+
495
+.aui-picker-navitem.active {
496
+  color: $custom-content-color;
497
+}
498
+
499
+.aui-picker-navborder {
500
+  width: 90rpx;
501
+  height: 6rpx;
502
+  background: $custom-content-color;
503
+  border-radius: 10rpx;
504
+  transition: left .15s;
505
+  position: absolute;
506
+  left: 60rpx;
507
+  bottom: 0;
508
+}
509
+
510
+.aui-picker-lists {
511
+  width: 100%;
512
+  height: 100%;
513
+  justify-content: space-around;
514
+  white-space: nowrap;
515
+}
516
+
517
+.aui-picker-list {
518
+  width: 100%;
519
+  height: 100%;
520
+  overflow: hidden;
521
+  overflow-y: scroll;
522
+  display: none;
523
+  vertical-align: top;
524
+}
525
+
526
+.aui-picker-list.active {
527
+  display: inline-block;
528
+}
529
+
530
+.aui-picker-list-warp {
531
+  width: 100%;
532
+  height: auto;
533
+  box-sizing: border-box;
534
+  padding: 20rpx 0;
535
+  display: inline-block;
536
+}
537
+
538
+.aui-picker-item {
539
+  width: 100%;
540
+  height: 70rpx;
541
+  line-height: 70rpx;
542
+  padding: 0 30rpx;
543
+  box-sizing: border-box;
544
+  font-size: 25rpx;
545
+  color: #333;
546
+  position: relative;
547
+}
548
+
549
+.aui-picker-item.active {
550
+  color: $custom-content-color;
551
+}
552
+
553
+.aui-picker-item.active::after {
554
+  content: '✔';
555
+  font-size: 25rpx;
556
+  color: $custom-content-color;
557
+  position: absolute;
558
+  top: 0rpx;
559
+  right: 20rpx;
560
+}
561
+
562
+</style>

+ 142 - 25
shop/productManagementModule/addProduct.vue

@@ -24,12 +24,65 @@
24 24
       <view class="form-box">
25 25
         <view class="form-item-box">
26 26
           <view class="form-box-txt mustBox">商户商品分类</view>
27
-          <view class="form-box--arae"> 選擇 </view>
28
-		  <uni-icons type="right" size="30" class="icon-boxx"></uni-icons>
27
+          <view
28
+            class="form-box--arae"
29
+            @click="handleClick"
30
+            :class="[classification.name == '' ? 'classification' : '']"
31
+          >
32
+            {{ classification.name || "请选择商品分类" }}
33
+          </view>
34
+          <uni-icons
35
+            type="right"
36
+            size="30"
37
+            class="icon-boxx"
38
+            color="#333"
39
+          ></uni-icons>
29 40
         </view>
30
-		 <view class="form-item-box">
31
-          <view class="form-box-txt mustBox">商户商品分类</view>
32
-          <view class="form-box--arae"> 選擇 </view>
41
+        <view class="form-item-box">
42
+          <view class="form-box-txt mustBox">商品名称</view>
43
+          <view class="form-box--arae">
44
+            <input
45
+              type="text"
46
+              v-model="formData.businessName"
47
+              placeholder="请输入商品名称"
48
+              class="placeholder-class"
49
+            />
50
+          </view>
51
+        </view>
52
+      </view>
53
+      <view class="form-box mr-t">
54
+        <view class="form-item-box">
55
+          <view class="form-box-txt mustBox">商品售价</view>
56
+          <view class="form-box--arae">
57
+            <input
58
+              type="text"
59
+              v-model="formData.businessPrice"
60
+              placeholder="请输入商品售价"
61
+              class="placeholder-class"
62
+            />
63
+          </view>
64
+        </view>
65
+        <view class="form-item-box">
66
+          <view class="form-box-txt mustBox">商品原价</view>
67
+          <view class="form-box--arae">
68
+            <input
69
+              type="text"
70
+              v-model="formData.businessOriginalPrice"
71
+              placeholder="请输入商品原价"
72
+              class="placeholder-class"
73
+            />
74
+          </view>
75
+        </view>
76
+        <view class="form-item-box">
77
+          <view class="form-box-txt mustBox">商品库存</view>
78
+          <view class="form-box--arae">
79
+            <input
80
+              type="text"
81
+              v-model="formData.businessStock"
82
+              placeholder="请输入商品库存"
83
+              class="placeholder-class"
84
+            />
85
+          </view>
33 86
         </view>
34 87
       </view>
35 88
     </view>
@@ -37,6 +90,13 @@
37 90
       <view class="btn quxiao"> 保存草稿 </view>
38 91
       <view class="btn primary"> 发布商品 </view>
39 92
     </view>
93
+    <cascadePicker
94
+      ref="picker"
95
+      :title="cascadePicker.title"
96
+      :layer="cascadePicker.layer"
97
+      :data="cascadePicker.data"
98
+      @callback="pickerCallback"
99
+    />
40 100
   </view>
41 101
 </template>
42 102
 
@@ -44,13 +104,39 @@
44 104
 //添加商品
45 105
 import headersVue from "../components/headers/headers.vue";
46 106
 import uploadVue from "./components/upload.vue";
107
+import cascadePicker from "../components/cascade-picker.vue";
108
+import { reNameKeys } from "@/utils/index";
109
+import { handleData } from "./mockDataPro";
47 110
 export default {
48 111
   components: {
49 112
     headersVue,
50 113
     uploadVue,
114
+    cascadePicker,
51 115
   },
52 116
   data() {
53
-    return {};
117
+    return {
118
+      cascadeData: [],
119
+      cascadePicker: {
120
+        title: "选择分类",
121
+        layer: null,
122
+        data: [],
123
+      },
124
+      classification: {
125
+        name: "",
126
+        id: "",
127
+      },
128
+      formData: {
129
+        businessName: "", //商品名称
130
+        businessPrice: "", //商品售价
131
+        businessOriginalPrice: "", //商品原价
132
+        businessStock: "", //商品库存
133
+      },
134
+	  selectData:[]
135
+    };
136
+  },
137
+  onLoad() {},
138
+  onShow() {
139
+    this.cascadeData = reNameKeys(handleData);
54 140
   },
55 141
   methods: {
56 142
     headerJump() {
@@ -58,6 +144,21 @@ export default {
58 144
         url: "/shop/productManagementModule/productManagement",
59 145
       });
60 146
     },
147
+    // picker多级联动回调
148
+    pickerCallback(e) {
149
+      const { data } = e;
150
+      const lastItem = data[data.length - 1];
151
+	  this.selectData = data || [];
152
+      console.log(lastItem, "pickerCallback回調");
153
+      this.classification = lastItem || {};
154
+    },
155
+    handleClick() {
156
+      const _this = this;
157
+      _this.cascadePicker.data = _this.cascadeData;
158
+      _this.$refs.picker.open().then(function () {
159
+        console.log("打开成功");
160
+      });
161
+    },
61 162
     bindTextAreaBlur(e) {
62 163
       console.log(e.detail.value);
63 164
     },
@@ -165,45 +266,47 @@ page {
165 266
   }
166 267
 }
167 268
 .form-box {
168
-  min-height: 217rpx;
269
+  min-height: 158rpx;
169 270
   background: #ffffff;
170
-  border: 2rpx solid #f00;
271
+  //   border: 2rpx solid #f00;
171 272
   padding: 0 32rpx;
172 273
   .form-item-box {
173
-	display: flex;
274
+    display: flex;
174 275
     align-items: center;
175
-    padding: 26rpx 0;
276
+    padding: 26rpx 0 18rpx;
176 277
     border-bottom: 2rpx solid #f8f8f8;
177
-	position: relative;
278
+    position: relative;
178 279
     &:last-child {
179 280
       border-bottom: none;
180 281
     }
181
-	.icon-boxx{
182
-		position: absolute;
183
-		right: -26rpx;
184
-		top: 28rpx;
185
-	}
282
+    .icon-boxx {
283
+      position: absolute;
284
+      right: -26rpx;
285
+      top: 28rpx;
286
+    }
186 287
     .form-box-txt {
187 288
       font-family: PingFangSC, PingFang SC;
188 289
       font-weight: 400;
189 290
       font-size: 30rpx;
190 291
       color: #333333;
191
-	//   height: 100%;
292
+      //   height: 100%;
192 293
       line-height: 42rpx;
193 294
 
194
-
195
-	  width: 230rpx;
196
-	  flex-shrink: 0;
295
+      width: 230rpx;
296
+      flex-shrink: 0;
197 297
     }
198 298
     .form-box--arae {
199
-		display: flex;
200
-    align-items: center;
201
-	justify-content: flex-end;
299
+      display: flex;
300
+      align-items: center;
301
+      justify-content: flex-end;
202 302
       font-weight: 400;
203 303
       font-size: 30rpx;
204 304
       color: #333333;
205
-	  flex: 1;
206
-	  padding-right: 20rpx;
305
+      flex: 1;
306
+      padding-right: 20rpx;
307
+      &.classification {
308
+        color: #999;
309
+      }
207 310
     }
208 311
   }
209 312
 }
@@ -214,4 +317,18 @@ page {
214 317
     padding-left: 10rpx;
215 318
   }
216 319
 }
320
+.placeholder-class {
321
+  width: 100%;
322
+  font-weight: 400;
323
+  font-size: 30rpx;
324
+  color: #333333;
325
+  text-align: right;
326
+  padding: 0rpx 0rpx 0rpx 15rpx;
327
+  /deep/.uni-input-placeholder {
328
+    color: #999;
329
+  }
330
+}
331
+.mr-t {
332
+  margin-top: 26rpx;
333
+}
217 334
 </style>

+ 191 - 0
shop/productManagementModule/components/listCardInfo.vue

@@ -0,0 +1,191 @@
1
+<template>
2
+  <view class="listCardInfo_management">
3
+    <view class="management-dingsss">
4
+      <view class="view-wrapper">
5
+        <view class="management-ding-text"> {{ headerTitle }} </view>
6
+        <view class="view-all" v-if="isShowAll" @click="jiru('all', 0)">
7
+          <text>查看全部</text>
8
+          <image
9
+            src="/static/images/new_ui/arrow-right.png"
10
+            class="icon-img"
11
+          ></image>
12
+        </view>
13
+      </view>
14
+      <view class="management-ding-nei">
15
+        <view class="fullSreen" v-if="fullSreen">
16
+          {{fullSreenTitle}}
17
+        </view>
18
+        <template v-else>
19
+          <view
20
+            class="management-yisdf"
21
+            v-for="(item, index) in cardData"
22
+            :key="index + 'pp' + '__index__'"
23
+            @click="onHandleClick(item, index)"
24
+          >
25
+            <view class="management-img">
26
+              <image :src="item.img" mode="widthFix"></image>
27
+              <view class="management-img-biao" v-if="item.count">
28
+                {{ item.count }}
29
+              </view>
30
+            </view>
31
+            <view class="">
32
+              {{ item.name }}
33
+            </view>
34
+          </view>
35
+        </template>
36
+      </view>
37
+    </view>
38
+  </view>
39
+</template>
40
+<script>
41
+export default {
42
+  props: {
43
+    cardData: {
44
+      type: Array,
45
+      default: () => [],
46
+    },
47
+    headerTitle: {
48
+      type: String,
49
+      default: "商品列表",
50
+    },
51
+    isShowAll: {
52
+      type: Boolean,
53
+      default: false,
54
+    },
55
+    fullSreen: {
56
+      type: Boolean,
57
+      default: false,
58
+    },
59
+    fullSreenTitle:{
60
+      type: String,
61
+      default: "全部商品"
62
+    }
63
+  },
64
+  data() {
65
+    return {};
66
+  },
67
+  methods: {
68
+    jiru(type, index) {},
69
+    onHandleClick(item,index){
70
+      this.$emit('custom-handle-click',item,index)
71
+    }
72
+  },
73
+};
74
+</script>
75
+<style>
76
+page {
77
+  background-color: #f7f8fc;
78
+}
79
+</style>
80
+<style lang="scss" scoped>
81
+.listCardInfo_management {
82
+  width: 100%;
83
+  height: 100%;
84
+  display: flex;
85
+  flex-direction: column;
86
+  align-items: center;
87
+  padding-bottom: 50rpx;
88
+  box-sizing: border-box;
89
+  .management-dingsss {
90
+    width: 100%;
91
+    height: 216rpx;
92
+    display: flex;
93
+    flex-direction: column;
94
+    justify-content: space-between;
95
+    align-items: flex-start;
96
+
97
+    .management-ding-text {
98
+      font-size: 30rpx;
99
+      font-weight: 600;
100
+      color: #333333;
101
+    }
102
+
103
+    .management-ding-nei {
104
+      width: 100%;
105
+      height: 160rpx;
106
+      background: #ffffff;
107
+      border-radius: 16rpx;
108
+      display: flex;
109
+      justify-content: space-around;
110
+      align-items: center;
111
+
112
+      .management-yisdf {
113
+        height: 96rpx;
114
+        display: flex;
115
+        flex-direction: column;
116
+        justify-content: space-between;
117
+        align-items: center;
118
+        font-size: 24rpx;
119
+        font-weight: 400;
120
+        color: #5f6060;
121
+
122
+        .management-img {
123
+          width: 48rpx;
124
+          height: 48rpx;
125
+          position: relative;
126
+          image {
127
+            width: 100%;
128
+            height: 100%;
129
+          }
130
+          .management-img-biao {
131
+            position: absolute;
132
+            left: 40rpx;
133
+            bottom: 31rpx;
134
+            width: 30rpx;
135
+            height: 30rpx;
136
+            border-radius: 50%;
137
+            // padding: 5rpx 8rpx;
138
+            background: #fe0032;
139
+            // word-break: break-all;
140
+            font-size: 20rpx;
141
+            font-weight: 400;
142
+            color: #ffffff;
143
+            display: flex;
144
+            justify-content: center;
145
+            align-items: center;
146
+          }
147
+        }
148
+      }
149
+    }
150
+  }
151
+
152
+  .custom_pick-up {
153
+    width: calc(100% - 54rpx);
154
+    margin: 0 26rpx;
155
+  }
156
+}
157
+.view-wrapper {
158
+  display: flex;
159
+  justify-content: space-between;
160
+  align-items: center;
161
+  width: 100%;
162
+}
163
+.view-all {
164
+  display: flex;
165
+  justify-content: center;
166
+  align-items: center;
167
+  font-family: PingFangSC, PingFang SC;
168
+  font-weight: 400;
169
+  font-size: 24rpx;
170
+  > text:first-child {
171
+    padding-right: 8rpx;
172
+    color: #999999;
173
+  }
174
+  .icon-img {
175
+    width: 26rpx;
176
+    height: 26rpx;
177
+  }
178
+}
179
+.fullSreen{
180
+    display: flex;
181
+  justify-content: center;
182
+  align-items: center;
183
+  width: 90%;
184
+  height: 80%;
185
+  background: #f8f8f8;
186
+  border-radius: 16rpx;
187
+  cursor: pointer;
188
+  user-select: none;
189
+
190
+}
191
+</style>

+ 2 - 2
shop/productManagementModule/components/tablist.vue

@@ -40,7 +40,7 @@ export default {
40 40
       type: Boolean,
41 41
       default: true
42 42
     },
43
-    curruntActive: {
43
+    currentActive: {
44 44
       type: [Number, String],
45 45
       default: 0
46 46
     }
@@ -69,7 +69,7 @@ export default {
69 69
   },
70 70
   mounted() {
71 71
     var that = this;
72
-    this.isActive = this.curruntActive;
72
+    this.isActive = this.currentActive;
73 73
     //获取手机屏幕的高度,让其等于swiper的高度,从而使屏幕充满
74 74
     uni.getSystemInfo({
75 75
       success: function (res) {

+ 333 - 303
shop/productManagementModule/index.vue

@@ -1,316 +1,346 @@
1 1
 <template>
2
-	<view class="storemanagement">
3
-		<view class="storemanagement-header">
4
-			<view class="storemanagement-header-text">
5
-				商品管理
6
-			</view>
7
-			<view class="storemanagement-list">
8
-				<view class="storemanagement-list-yi" v-for="(item,index) in mnu" :key="index" @click="jinru(item.pages,item.name)" v-if="item.show">
9
-					<view class="storemanagement-list-yi-text">
10
-						{{item.name}}
11
-					</view>
12
-					<view class="storemanagement-list-yi-image">
13
-						<image :src="item.url" mode="widthFix"></image>
14
-					</view>
15
-				</view>
16
-			</view>
17
-		</view>
18
-	</view>
2
+  <view class="storemanagement">
3
+    <view class="storemanagement-header">
4
+      <view class="storemanagement-header-text"> 商品管理 </view>
5
+    </view>
6
+    <view class="card-list">
7
+      <listCardInfo
8
+        headerTitle="商品列表"
9
+        class="mb-t1"
10
+        :cardData="dataBuss"
11
+		@custom-handle-click="businessHandleClick"
12
+      ></listCardInfo>
13
+      <listCardInfo
14
+        headerTitle="供应链"
15
+        class="mb-t1"
16
+        :cardData="onlineData"
17
+      ></listCardInfo>
18
+      <!-- <listCardInfo headerTitle="在线选品" class="mb-t1"></listCardInfo> -->
19
+      <listCardInfo headerTitle="商品分类" class="mb-t1" :fullSreen="true" fullSreenTitle="商品分类列表" ></listCardInfo>
20
+      <listCardInfo headerTitle="商品规格" class="mb-t1" :fullSreen="true" fullSreenTitle="商品规格列表"></listCardInfo>
21
+      <listCardInfo headerTitle="商品评价" class="mb-t1" :fullSreen="true" fullSreenTitle="商品评价列表"></listCardInfo>
22
+      <!-- <listCardInfo headerTitle="在线选品" class="mb-t1"></listCardInfo> -->
23
+      <!-- <listCardInfo headerTitle="在线选品" class="mb-t1"></listCardInfo> -->
24
+      <!-- <listCardInfo headerTitle="在线选品" class="mb-t1"></listCardInfo> -->
25
+    </view>
26
+  </view>
19 27
 </template>
20 28
 
21 29
 <script>
22
-	import readAppInfo from '@/utils/readAppInfo.js';
23
-	export default {
24
-		data() {
25
-			return {
26
-				mnu: [
27
-					// {
28
-					// 	name: "分润设置",
29
-					// 	url: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812161807687.png",
30
-					// 	pages:"/shop/services/setting",
31
-					// 	show:true,
32
-					// 	id: "3",
33
-					// },
34
-					// {
35
-					// 	name: "我的音响",
36
-					// 	url: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812161749139.png",
37
-					// 	pages:"/shop/services/mystereo",
38
-					// 	show:true,
39
-					// 	id: "0",
40
-					// },
41
-					// {
42
-					// 	name: "锁定用户",
43
-					// 	url: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812161733260.png",
44
-					// 	pages:"/shop/services/lockuser",
45
-					// 	show:true,
46
-					// 	id: "0",
47
-					// },
48
-					// {
49
-					// 	name: "商品管理",
50
-					// 	url: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812161733260.png",
51
-					// 	pages:"/shop/productManagementModule/productManagement",
52
-					// 	show:true,
53
-					// 	id: "0",
54
-					// }
55
-					{
56
-						name: "在线选品",
57
-						url: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812161733260.png",
58
-						pages:"/pages/onlineproductselection/onlineproductselection",
59
-						show:true,
60
-						id: "0",
61
-					},
62
-					{
63
-						name: "商品列表",
64
-						url: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812161733260.png",
65
-						pages:"/shop/productManagementModule/productManagement",
66
-						show:true,
67
-						id: "0",
68
-					}
69
-				],
70
-				uid: '',
71
-				authorization: ''
72
-			}
73
-		},
74
-		async onLoad() {
75
-			console.log('进了我的页面了')
76
-			// uni.showLoading({
77
-			// 	title: '加载中',
78
-			// 	mask: true
79
-			// });
80
-			
81
-			await readAppInfo();
82
-			
83
-			let jurisdiction = uni.getStorageSync('jurisdiction')
84
-			console.log('jurisdiction', jurisdiction)
85
-			let mnuList = this.mnu
86
-			if (jurisdiction) {
87
-				jurisdiction.forEach((res, index) => {
88
-					mnuList.forEach((result, i) => {
89
-						if (res == result.id) {
90
-							result.show = true
91
-						}
92
-						return result
93
-					})
94
-					return res
95
-				})
96
-				this.mnu = mnuList
97
-			}
98
-			
99
-			console.log(this.mnu)
100
-			
101
-			setTimeout(function() {
102
-				uni.hideLoading();
103
-			}, 700);
104
-			
105
-			
106
-			console.log('我的show===>>>>>>')
107
-			
108
-			
109
-			this.authorization = uni.getStorageSync('authorization')
110
-			let userinfo = uni.getStorageSync('userinfo')
111
-			this.uid = userinfo.uid
112
-			console.log('onshow')
113
-			
114
-			let authorization = uni.getStorageSync('authorization')
115
-			// let userinfo = uni.getStorageSync('userinfo')
116
-			let selectmerchant = uni.getStorageSync('selectmerchant')
117
-			let uid = userinfo.uid
118
-			console.log(selectmerchant, authorization, userinfo)
119
-			if (authorization && uid) {
120
-				if (selectmerchant.merId >= 0 && selectmerchant.status == -1) {
121
-					uni.redirectTo({
122
-						url: "/openmerchant/guide/index" //有或者没有商户 没有金额支付and激活码支付
123
-					});
124
-					return
125
-				} else if (selectmerchant.merId > 0 && (selectmerchant.status == 1 || selectmerchant.status == 5)) {
126
-					
127
-					return
128
-				} else if (selectmerchant.merId >= 0 && (selectmerchant.status == 3 || selectmerchant.status == 4)) {
129
-					uni.redirectTo({
130
-						url: '/openmerchant/shopentry/process?mer_id=' + selectmerchant.merId //已开通商户未填写资料
131
-					});
132
-					return
133
-				} else if (selectmerchant.merId > 0 && selectmerchant.status == 0) {
134
-					uni.redirectTo({
135
-						url: '/openmerchant/shopentry/processaudit?submitCode=' + 3 //已开通商户待审核
136
-					});
137
-					return
138
-				} else if (selectmerchant.merId > 0 && selectmerchant.status == 2) {
139
-					uni.redirectTo({
140
-						url: '/openmerchant/shopentry/processaudit?submitCode=' + 2 //已开通商户审核拒绝
141
-					});
142
-					return
143
-				}
144
-			
145
-			} 
146
-		},
147
-		onShow() {
148
-			return;
149
-			
150
-			// 以下逻辑在onload处理
151
-			
152
-			this.authorization = uni.getStorageSync('authorization')
153
-			let userinfo = uni.getStorageSync('userinfo')
154
-			this.uid = userinfo.uid
155
-			
156
-			let authorization = uni.getStorageSync('authorization')
157
-			// let userinfo = uni.getStorageSync('userinfo')
158
-			let selectmerchant = uni.getStorageSync('selectmerchant')
159
-			let uid = userinfo.uid
160
-			console.log(selectmerchant, authorization, userinfo)
161
-			if (authorization && uid) {
162
-				if (selectmerchant.merId >= 0 && selectmerchant.status == -1) {
163
-					uni.redirectTo({
164
-						url: "/openmerchant/guide/index" //有或者没有商户 没有金额支付and激活码支付
165
-					});
166
-					return
167
-				} else if (selectmerchant.merId > 0 && (selectmerchant.status == 1 || selectmerchant.status == 5)) {
168
-					
169
-					return
170
-				} else if (selectmerchant.merId >= 0 && (selectmerchant.status == 3 || selectmerchant.status == 4)) {
171
-					uni.redirectTo({
172
-						url: '/openmerchant/shopentry/process?mer_id=' + selectmerchant.merId //已开通商户未填写资料
173
-					});
174
-					return
175
-				} else if (selectmerchant.merId > 0 && selectmerchant.status == 0) {
176
-					uni.redirectTo({
177
-						url: '/openmerchant/shopentry/processaudit?submitCode=' + 3 //已开通商户待审核
178
-					});
179
-					return
180
-				} else if (selectmerchant.merId > 0 && selectmerchant.status == 2) {
181
-					uni.redirectTo({
182
-						url: '/openmerchant/shopentry/processaudit?submitCode=' + 2 //已开通商户审核拒绝
183
-					});
184
-					return
185
-				}
186
-			
187
-			} 
188
-			
189
-			
190
-		},
191
-		methods: {
192
-			jinru(n,p){
193
-				let name = p
194
-				let page = n
195
-				if(name=="分润设置") {
196
-					let authorization = uni.getStorageSync('authorization')
197
-					let userinfo = uni.getStorageSync('userinfo')
198
-					let selectmerchant = uni.getStorageSync('selectmerchant')
199
-					let uid = userinfo.uid
200
-					if (authorization && uid) {
201
-						if (selectmerchant.merId >= 0 && selectmerchant.status == -1) {
202
-							uni.redirectTo({
203
-								url: "/openmerchant/guide/index" //有或者没有商户 没有金额支付and激活码支付
204
-							});
205
-							return
206
-						} else if (selectmerchant.merId > 0 && (selectmerchant.status == 1 || selectmerchant.status == 5)) {
207
-							uni.redirectTo({
208
-								url:page
209
-							})
210
-							return
211
-						} else if (selectmerchant.merId >= 0 && (selectmerchant.status == 3 || selectmerchant.status == 4)) {
212
-							uni.redirectTo({
213
-								url: '/openmerchant/shopentry/process?mer_id=' + selectmerchant.merId //已开通商户未填写资料
214
-							});
215
-							return
216
-						} else if (selectmerchant.merId > 0 && selectmerchant.status == 0) {
217
-							uni.redirectTo({
218
-								url: '/openmerchant/shopentry/processaudit?submitCode=' + 3 //已开通商户待审核
219
-							});
220
-							return
221
-						} else if (selectmerchant.merId > 0 && selectmerchant.status == 2) {
222
-							uni.redirectTo({
223
-								url: '/openmerchant/shopentry/processaudit?submitCode=' + 2 //已开通商户审核拒绝
224
-							});
225
-							return
226
-						}
227
-					
228
-					} else {
229
-						uni.navigateTo({
230
-							url: "/pages/user/login/index?type=1"
231
-						});
232
-						return
233
-					}
234
-					
235
-				}else if(name=="锁定用户"){
236
-					uni.redirectTo({
237
-						url:page
238
-					})
239
-				}else{
240
-					uni.redirectTo({
241
-						url:page
242
-					})
243
-				}
244
-			}
245
-		}
246
-	}
247
-</script>
248
-<style>
249
-	page {
250
-		background-color: #F7F8FC;
251
-	}
252
-</style>
253
-<style lang="scss" scoped>
254
-	.storemanagement {
255
-		width: 100%;
256
-		height: 100%;
257
-		display: flex;
258
-		flex-direction: column;
259
-		align-items: center;
30
+import readAppInfo from "@/utils/readAppInfo.js";
31
+import listCardInfo from "./components/listCardInfo.vue";
32
+import {toQueryString} from "@/utils/index.js"
33
+export default {
34
+  components: { listCardInfo },
35
+  data() {
36
+    return {
37
+      dataBuss: [
38
+        {
39
+          type: 1,
40
+          name: "出售中商品",
41
+          count: 10,
42
+          img: "/static/images/new_ui/yijingchushou.png",
43
+        },
44
+        {
45
+          type: 2,
46
+          name: "仓库中商品",
47
+          count: 31,
48
+          img: "/static/images/new_ui/cangku.png",
49
+        },
50
+        {
51
+          type: 3,
52
+          name: "已售罄商品",
53
+          count: 0,
54
+          img: "/static/images/new_ui/yijingshouqing.png",
55
+        },
56
+        {
57
+          type: 4,
58
+          name: "警戒库存",
59
+          count: 0,
60
+          img: "/static/images/new_ui/jingjiekucun.png",
61
+        },
62
+      ],
63
+      onlineData: [
64
+        {
65
+          type: 1,
66
+          name: "出售中商品",
67
+          count: 10,
68
+          img: "/static/images/new_ui/yijingchushou.png",
69
+        },
70
+        {
71
+          type: 2,
72
+          name: "仓库中商品",
73
+          count: 31,
74
+          img: "/static/images/new_ui/cangku.png",
75
+        },
76
+      ],
77
+
78
+      // mnu: [
79
+      // 	{
80
+      // 		name: "在线选品",
81
+      // 		url: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812161733260.png",
82
+      // 		pages:"/pages/onlineproductselection/onlineproductselection",
83
+      // 		show:true,
84
+      // 		id: "0",
85
+      // 	},
86
+      // 	{
87
+      // 		name: "商品列表",
88
+      // 		url: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812161733260.png",
89
+      // 		pages:"/shop/productManagementModule/productManagement",
90
+      // 		show:true,
91
+      // 		id: "0",
92
+      // 	},
93
+      // 	{
94
+      // 		name: "供应链列表",
95
+      // 		url: "https://cdn.bjtdba.com/vod/image/2022-08-12/20220812161733260.png",
96
+      // 		pages:"/pages/supplychainon/supplychainon",
97
+      // 		show:true,
98
+      // 		id: "0",
99
+      // 	}
100
+      // ],
101
+      uid: "",
102
+      authorization: "",
103
+    };
104
+  },
105
+  async onLoad() {
106
+    console.log("进了我的页面了");
107
+    // uni.showLoading({
108
+    // 	title: '加载中',
109
+    // 	mask: true
110
+    // });
111
+
112
+    await readAppInfo();
113
+
114
+    let jurisdiction = uni.getStorageSync("jurisdiction");
115
+    console.log("jurisdiction", jurisdiction);
116
+    let mnuList = this.mnu;
117
+    if (jurisdiction) {
118
+      jurisdiction.forEach((res, index) => {
119
+        mnuList.forEach((result, i) => {
120
+          if (res == result.id) {
121
+            result.show = true;
122
+          }
123
+          return result;
124
+        });
125
+        return res;
126
+      });
127
+      this.mnu = mnuList;
128
+    }
260 129
 
261
-		.storemanagement-header {
262
-			width: 100%;
263
-			height: 328rpx;
264
-			background: linear-gradient(180deg, rgba(31, 124, 255, 0.2200) 0%, rgba(255, 255, 255, 0.1500) 100%);
265
-			position: relative;
266
-			display: flex;
267
-			justify-content: center;
130
+    console.log(this.mnu);
268 131
 
269
-			.storemanagement-header-text {
270
-				position: absolute;
271
-				font-size: 46rpx;
272
-				font-weight: 500;
273
-				color: #333333;
274
-				top: 60rpx;
275
-				left: 64rpx;
276
-			}
132
+    setTimeout(function () {
133
+      uni.hideLoading();
134
+    }, 700);
277 135
 
278
-			.storemanagement-list {
279
-				width: 690rpx;
280
-				height: 262rpx;
281
-				position: absolute;
282
-				top: 298rpx;
283
-				display: flex;
284
-				flex-flow: wrap;
285
-				justify-content: space-between;
136
+    console.log("我的show===>>>>>>");
286 137
 
287
-				.storemanagement-list-yi {
288
-					margin-bottom: 26rpx;
289
-					width: 330rpx;
290
-					height: 118rpx;
291
-					background: #FFFFFF;
292
-					border-radius: 8rpx;
293
-					display: flex;
294
-					justify-content: space-around;
295
-					align-items: center;
138
+    this.authorization = uni.getStorageSync("authorization");
139
+    let userinfo = uni.getStorageSync("userinfo");
140
+    this.uid = userinfo.uid;
141
+    console.log("onshow");
296 142
 
297
-					.storemanagement-list-yi-text {
298
-						font-size: 26rpx;
299
-						font-weight: 500;
300
-						color: #333333;
301
-					}
143
+    let authorization = uni.getStorageSync("authorization");
144
+    // let userinfo = uni.getStorageSync('userinfo')
145
+    let selectmerchant = uni.getStorageSync("selectmerchant");
146
+    let uid = userinfo.uid;
147
+    console.log(selectmerchant, authorization, userinfo);
148
+    if (authorization && uid) {
149
+      if (selectmerchant.merId >= 0 && selectmerchant.status == -1) {
150
+        uni.redirectTo({
151
+          url: "/openmerchant/guide/index", //有或者没有商户 没有金额支付and激活码支付
152
+        });
153
+        return;
154
+      } else if (
155
+        selectmerchant.merId > 0 &&
156
+        (selectmerchant.status == 1 || selectmerchant.status == 5)
157
+      ) {
158
+        return;
159
+      } else if (
160
+        selectmerchant.merId >= 0 &&
161
+        (selectmerchant.status == 3 || selectmerchant.status == 4)
162
+      ) {
163
+        uni.redirectTo({
164
+          url: "/openmerchant/shopentry/process?mer_id=" + selectmerchant.merId, //已开通商户未填写资料
165
+        });
166
+        return;
167
+      } else if (selectmerchant.merId > 0 && selectmerchant.status == 0) {
168
+        uni.redirectTo({
169
+          url: "/openmerchant/shopentry/processaudit?submitCode=" + 3, //已开通商户待审核
170
+        });
171
+        return;
172
+      } else if (selectmerchant.merId > 0 && selectmerchant.status == 2) {
173
+        uni.redirectTo({
174
+          url: "/openmerchant/shopentry/processaudit?submitCode=" + 2, //已开通商户审核拒绝
175
+        });
176
+        return;
177
+      }
178
+    }
179
+  },
180
+  onShow() {
181
+    return;
302 182
 
303
-					.storemanagement-list-yi-image {
304
-						width: 92rpx;
305
-						height: 92rpx;
183
+    // 以下逻辑在onload处理
306 184
 
307
-						image {
308
-							width: 100%;
309
-							height: 100%;
310
-						}
311
-					}
312
-				}
313
-			}
185
+    this.authorization = uni.getStorageSync("authorization");
186
+    let userinfo = uni.getStorageSync("userinfo");
187
+    this.uid = userinfo.uid;
188
+
189
+    let authorization = uni.getStorageSync("authorization");
190
+    // let userinfo = uni.getStorageSync('userinfo')
191
+    let selectmerchant = uni.getStorageSync("selectmerchant");
192
+    let uid = userinfo.uid;
193
+    console.log(selectmerchant, authorization, userinfo);
194
+    if (authorization && uid) {
195
+      if (selectmerchant.merId >= 0 && selectmerchant.status == -1) {
196
+        uni.redirectTo({
197
+          url: "/openmerchant/guide/index", //有或者没有商户 没有金额支付and激活码支付
198
+        });
199
+        return;
200
+      } else if (
201
+        selectmerchant.merId > 0 &&
202
+        (selectmerchant.status == 1 || selectmerchant.status == 5)
203
+      ) {
204
+        return;
205
+      } else if (
206
+        selectmerchant.merId >= 0 &&
207
+        (selectmerchant.status == 3 || selectmerchant.status == 4)
208
+      ) {
209
+        uni.redirectTo({
210
+          url: "/openmerchant/shopentry/process?mer_id=" + selectmerchant.merId, //已开通商户未填写资料
211
+        });
212
+        return;
213
+      } else if (selectmerchant.merId > 0 && selectmerchant.status == 0) {
214
+        uni.redirectTo({
215
+          url: "/openmerchant/shopentry/processaudit?submitCode=" + 3, //已开通商户待审核
216
+        });
217
+        return;
218
+      } else if (selectmerchant.merId > 0 && selectmerchant.status == 2) {
219
+        uni.redirectTo({
220
+          url: "/openmerchant/shopentry/processaudit?submitCode=" + 2, //已开通商户审核拒绝
221
+        });
222
+        return;
223
+      }
224
+    }
225
+  },
226
+  methods: {
227
+	//商品列表
228
+	businessHandleClick(item,index){
229
+		const obj = {
230
+			tabIndex: index,
231
+			type: item.type,
314 232
 		}
315
-	}
233
+      uni.redirectTo({
234
+        url:`./productManagement?${toQueryString(obj)}` ,
235
+      });
236
+	},
237
+    jinru(n, p) {
238
+      let name = p;
239
+      let page = n;
240
+      if (name == "分润设置") {
241
+        let authorization = uni.getStorageSync("authorization");
242
+        let userinfo = uni.getStorageSync("userinfo");
243
+        let selectmerchant = uni.getStorageSync("selectmerchant");
244
+        let uid = userinfo.uid;
245
+        if (authorization && uid) {
246
+          if (selectmerchant.merId >= 0 && selectmerchant.status == -1) {
247
+            uni.redirectTo({
248
+              url: "/openmerchant/guide/index", //有或者没有商户 没有金额支付and激活码支付
249
+            });
250
+            return;
251
+          } else if (
252
+            selectmerchant.merId > 0 &&
253
+            (selectmerchant.status == 1 || selectmerchant.status == 5)
254
+          ) {
255
+            uni.redirectTo({
256
+              url: page,
257
+            });
258
+            return;
259
+          } else if (
260
+            selectmerchant.merId >= 0 &&
261
+            (selectmerchant.status == 3 || selectmerchant.status == 4)
262
+          ) {
263
+            uni.redirectTo({
264
+              url:
265
+                "/openmerchant/shopentry/process?mer_id=" +
266
+                selectmerchant.merId, //已开通商户未填写资料
267
+            });
268
+            return;
269
+          } else if (selectmerchant.merId > 0 && selectmerchant.status == 0) {
270
+            uni.redirectTo({
271
+              url: "/openmerchant/shopentry/processaudit?submitCode=" + 3, //已开通商户待审核
272
+            });
273
+            return;
274
+          } else if (selectmerchant.merId > 0 && selectmerchant.status == 2) {
275
+            uni.redirectTo({
276
+              url: "/openmerchant/shopentry/processaudit?submitCode=" + 2, //已开通商户审核拒绝
277
+            });
278
+            return;
279
+          }
280
+        } else {
281
+          uni.navigateTo({
282
+            url: "/pages/user/login/index?type=1",
283
+          });
284
+          return;
285
+        }
286
+      } else if (name == "锁定用户") {
287
+        uni.redirectTo({
288
+          url: page,
289
+        });
290
+      } else {
291
+        uni.redirectTo({
292
+          url: page,
293
+        });
294
+      }
295
+    },
296
+  },
297
+};
298
+</script>
299
+<style>
300
+page {
301
+  background-color: #f7f8fc;
302
+}
303
+</style>
304
+<style lang="scss" scoped>
305
+.storemanagement {
306
+  position: relative;
307
+  width: 100%;
308
+  height: 100%;
309
+  display: flex;
310
+  flex-direction: column;
311
+  align-items: center;
312
+  padding-bottom: 40rpx;
313
+  box-sizing: border-box;
314
+
315
+  .storemanagement-header {
316
+    width: 100%;
317
+    height: 328rpx;
318
+    background: linear-gradient(
319
+      180deg,
320
+      rgba(31, 124, 255, 0.22) 0%,
321
+      rgba(255, 255, 255, 0.15) 100%
322
+    );
323
+    position: relative;
324
+    display: flex;
325
+    justify-content: center;
326
+
327
+    .storemanagement-header-text {
328
+      position: absolute;
329
+      font-size: 46rpx;
330
+      font-weight: 500;
331
+      color: #333333;
332
+      top: 60rpx;
333
+      left: 64rpx;
334
+    }
335
+  }
336
+  .card-list {
337
+    position: relative;
338
+    top: -160rpx;
339
+    width: calc(100% - 52px);
340
+    padding: 0 26px;
341
+  }
342
+  .mb-t {
343
+    margin-bottom: 26rpx;
344
+  }
345
+}
316 346
 </style>

+ 608 - 0
shop/productManagementModule/mockDataPro.js

@@ -0,0 +1,608 @@
1
+export const handleData = [
2
+    {
3
+        "value": 186,
4
+        "label": "精品服装",
5
+        "children": [
6
+            {
7
+                "value": 162,
8
+                "label": "男士上衣",
9
+                "children": [
10
+                    {
11
+                        "value": 172,
12
+                        "label": "T恤/POLO"
13
+                    },
14
+                    {
15
+                        "value": 265,
16
+                        "label": "夹克/风衣"
17
+                    },
18
+                    {
19
+                        "value": 267,
20
+                        "label": "卫衣"
21
+                    },
22
+                    {
23
+                        "value": 175,
24
+                        "label": "商务衬衫"
25
+                    },
26
+                    {
27
+                        "value": 176,
28
+                        "label": "休闲衬衫"
29
+                    },
30
+                    {
31
+                        "value": 266,
32
+                        "label": "西服西裤"
33
+                    }
34
+                ]
35
+            },
36
+            {
37
+                "value": 238,
38
+                "label": "男士裤装/背包",
39
+                "children": [
40
+                    {
41
+                        "value": 260,
42
+                        "label": "背包/休闲裤"
43
+                    },
44
+                    {
45
+                        "value": 244,
46
+                        "label": "牛仔裤"
47
+                    },
48
+                    {
49
+                        "value": 245,
50
+                        "label": "短裤"
51
+                    }
52
+                ]
53
+            },
54
+            {
55
+                "value": 239,
56
+                "label": "女装",
57
+                "children": [
58
+                    {
59
+                        "value": 247,
60
+                        "label": "T恤/卫衣"
61
+                    },
62
+                    {
63
+                        "value": 248,
64
+                        "label": "毛衫/针织衫"
65
+                    },
66
+                    {
67
+                        "value": 249,
68
+                        "label": "衬衫"
69
+                    },
70
+                    {
71
+                        "value": 268,
72
+                        "label": "西服/夹克"
73
+                    },
74
+                    {
75
+                        "value": 269,
76
+                        "label": "连衣裙"
77
+                    },
78
+                    {
79
+                        "value": 270,
80
+                        "label": " 半身裙"
81
+                    }
82
+                ]
83
+            },
84
+            {
85
+                "value": 240,
86
+                "label": "首饰",
87
+                "children": [
88
+                    {
89
+                        "value": 253,
90
+                        "label": "项链"
91
+                    },
92
+                    {
93
+                        "value": 254,
94
+                        "label": "戒指"
95
+                    },
96
+                    {
97
+                        "value": 255,
98
+                        "label": "耳饰"
99
+                    },
100
+                    {
101
+                        "value": 271,
102
+                        "label": "手链"
103
+                    },
104
+                    {
105
+                        "value": 272,
106
+                        "label": "轻定制"
107
+                    },
108
+                    {
109
+                        "value": 300,
110
+                        "label": "珠宝首饰"
111
+                    }
112
+                ]
113
+            },
114
+            {
115
+                "value": 241,
116
+                "label": "配饰",
117
+                "children": [
118
+                    {
119
+                        "value": 250,
120
+                        "label": "皮带"
121
+                    },
122
+                    {
123
+                        "value": 251,
124
+                        "label": "帽子"
125
+                    },
126
+                    {
127
+                        "value": 252,
128
+                        "label": "围巾手套"
129
+                    }
130
+                ]
131
+            },
132
+            {
133
+                "value": 264,
134
+                "label": "反季清仓",
135
+                "children": [
136
+                    {
137
+                        "value": 273,
138
+                        "label": "羽绒服/棉服"
139
+                    },
140
+                    {
141
+                        "value": 274,
142
+                        "label": "毛衫/针织衫"
143
+                    }
144
+                ]
145
+            }
146
+        ]
147
+    },
148
+    {
149
+        "value": 179,
150
+        "label": "美容美发",
151
+        "children": [
152
+            {
153
+                "value": 193,
154
+                "label": "实体店铺",
155
+                "children": [
156
+                    {
157
+                        "value": 231,
158
+                        "label": "宝鸡周边"
159
+                    },
160
+                    {
161
+                        "value": 232,
162
+                        "label": "天水周边"
163
+                    },
164
+                    {
165
+                        "value": 233,
166
+                        "label": "陇西周边"
167
+                    }
168
+                ]
169
+            },
170
+            {
171
+                "value": 236,
172
+                "label": "周边店铺",
173
+                "children": [
174
+                    {
175
+                        "value": 194,
176
+                        "label": "西安周边"
177
+                    },
178
+                    {
179
+                        "value": 195,
180
+                        "label": "北京周边"
181
+                    },
182
+                    {
183
+                        "value": 196,
184
+                        "label": "上海周边"
185
+                    }
186
+                ]
187
+            },
188
+            {
189
+                "value": 237,
190
+                "label": "品牌美发",
191
+                "children": [
192
+                    {
193
+                        "value": 228,
194
+                        "label": "兰州周边"
195
+                    },
196
+                    {
197
+                        "value": 229,
198
+                        "label": "榆林周边"
199
+                    },
200
+                    {
201
+                        "value": 230,
202
+                        "label": "咸阳周边"
203
+                    }
204
+                ]
205
+            },
206
+            {
207
+                "value": 256,
208
+                "label": "高级美容",
209
+                "children": [
210
+                    {
211
+                        "value": 257,
212
+                        "label": "洗面奶"
213
+                    },
214
+                    {
215
+                        "value": 258,
216
+                        "label": "美白霜"
217
+                    },
218
+                    {
219
+                        "value": 259,
220
+                        "label": "防晒霜"
221
+                    }
222
+                ]
223
+            }
224
+        ]
225
+    },
226
+    {
227
+        "value": 181,
228
+        "label": "美容彩妆",
229
+        "children": [
230
+            {
231
+                "value": 171,
232
+                "label": "普通化妆",
233
+                "children": [
234
+                    {
235
+                        "value": 165,
236
+                        "label": "祛斑祛痘"
237
+                    },
238
+                    {
239
+                        "value": 177,
240
+                        "label": "补水保湿"
241
+                    },
242
+                    {
243
+                        "value": 178,
244
+                        "label": "防晒保湿"
245
+                    }
246
+                ]
247
+            }
248
+        ]
249
+    },
250
+    {
251
+        "value": 182,
252
+        "label": "母婴专区",
253
+        "children": [
254
+            {
255
+                "value": 202,
256
+                "label": "母婴产品",
257
+                "children": [
258
+                    {
259
+                        "value": 203,
260
+                        "label": "优质奶粉"
261
+                    },
262
+                    {
263
+                        "value": 204,
264
+                        "label": "高档奶嘴"
265
+                    },
266
+                    {
267
+                        "value": 205,
268
+                        "label": "精品奶壶"
269
+                    }
270
+                ]
271
+            }
272
+        ]
273
+    },
274
+    {
275
+        "value": 180,
276
+        "label": "生鲜食品",
277
+        "children": [
278
+            {
279
+                "value": 198,
280
+                "label": "新鲜蔬菜",
281
+                "children": [
282
+                    {
283
+                        "value": 199,
284
+                        "label": "新鲜辣椒"
285
+                    },
286
+                    {
287
+                        "value": 200,
288
+                        "label": "新鲜青菜"
289
+                    },
290
+                    {
291
+                        "value": 201,
292
+                        "label": "新鲜茄子"
293
+                    }
294
+                ]
295
+            }
296
+        ]
297
+    },
298
+    {
299
+        "value": 183,
300
+        "label": "食品饮料",
301
+        "children": [
302
+            {
303
+                "value": 206,
304
+                "label": "碳酸饮料",
305
+                "children": [
306
+                    {
307
+                        "value": 207,
308
+                        "label": "可口可乐"
309
+                    },
310
+                    {
311
+                        "value": 208,
312
+                        "label": "大瓶雪碧"
313
+                    },
314
+                    {
315
+                        "value": 209,
316
+                        "label": "健力宝"
317
+                    }
318
+                ]
319
+            },
320
+            {
321
+                "value": 357,
322
+                "label": "名酒",
323
+                "children": [
324
+                    {
325
+                        "value": 358,
326
+                        "label": "名酒礼盒"
327
+                    },
328
+                    {
329
+                        "value": 359,
330
+                        "label": "名优白酒"
331
+                    },
332
+                    {
333
+                        "value": 360,
334
+                        "label": "微醺红酒"
335
+                    },
336
+                    {
337
+                        "value": 361,
338
+                        "label": "果酒"
339
+                    },
340
+                    {
341
+                        "value": 362,
342
+                        "label": "清爽啤酒"
343
+                    },
344
+                    {
345
+                        "value": 363,
346
+                        "label": "格调洋酒"
347
+                    },
348
+                    {
349
+                        "value": 364,
350
+                        "label": "新锐网红酒"
351
+                    },
352
+                    {
353
+                        "value": 365,
354
+                        "label": "养生黄酒"
355
+                    },
356
+                    {
357
+                        "value": 366,
358
+                        "label": "保健食品酒"
359
+                    }
360
+                ]
361
+            }
362
+        ]
363
+    },
364
+    {
365
+        "value": 184,
366
+        "label": "数码家电",
367
+        "children": [
368
+            {
369
+                "value": 210,
370
+                "label": "家用电器",
371
+                "children": [
372
+                    {
373
+                        "value": 211,
374
+                        "label": "液晶电视"
375
+                    },
376
+                    {
377
+                        "value": 212,
378
+                        "label": "洗衣机"
379
+                    },
380
+                    {
381
+                        "value": 213,
382
+                        "label": "电冰箱"
383
+                    }
384
+                ]
385
+            },
386
+            {
387
+                "value": 302,
388
+                "label": "手机",
389
+                "children": [
390
+                    {
391
+                        "value": 303,
392
+                        "label": "手机"
393
+                    },
394
+                    {
395
+                        "value": 304,
396
+                        "label": "手机配件"
397
+                    }
398
+                ]
399
+            }
400
+        ]
401
+    },
402
+    {
403
+        "value": 185,
404
+        "label": "营养保健",
405
+        "children": [
406
+            {
407
+                "value": 214,
408
+                "label": "营养食品",
409
+                "children": [
410
+                    {
411
+                        "value": 215,
412
+                        "label": "东北人参"
413
+                    },
414
+                    {
415
+                        "value": 216,
416
+                        "label": "百年灵芝"
417
+                    },
418
+                    {
419
+                        "value": 217,
420
+                        "label": "土鸡蛋"
421
+                    },
422
+                    {
423
+                        "value": 600,
424
+                        "label": "关节修复"
425
+                    }
426
+                ]
427
+            }
428
+        ]
429
+    },
430
+    {
431
+        "value": 187,
432
+        "label": "鲜花预定",
433
+        "children": [
434
+            {
435
+                "value": 218,
436
+                "label": "各类鲜花",
437
+                "children": [
438
+                    {
439
+                        "value": 219,
440
+                        "label": "玫瑰花"
441
+                    },
442
+                    {
443
+                        "value": 220,
444
+                        "label": "满天星"
445
+                    },
446
+                    {
447
+                        "value": 221,
448
+                        "label": "仙人掌"
449
+                    }
450
+                ]
451
+            }
452
+        ]
453
+    },
454
+    {
455
+        "value": 188,
456
+        "label": "教育培训",
457
+        "children": [
458
+            {
459
+                "value": 189,
460
+                "label": "网上课程",
461
+                "children": [
462
+                    {
463
+                        "value": 191,
464
+                        "label": "相关书籍"
465
+                    },
466
+                    {
467
+                        "value": 192,
468
+                        "label": "视频教程"
469
+                    },
470
+                    {
471
+                        "value": 197,
472
+                        "label": "在线教学"
473
+                    }
474
+                ]
475
+            },
476
+            {
477
+                "value": 190,
478
+                "label": "线下课程",
479
+                "children": [
480
+                    {
481
+                        "value": 225,
482
+                        "label": "线下书籍"
483
+                    },
484
+                    {
485
+                        "value": 226,
486
+                        "label": "线下课堂"
487
+                    },
488
+                    {
489
+                        "value": 227,
490
+                        "label": "视频教材"
491
+                    }
492
+                ]
493
+            }
494
+        ]
495
+    },
496
+    {
497
+        "value": 306,
498
+        "label": "工程机械",
499
+        "children": [
500
+            {
501
+                "value": 307,
502
+                "label": "公路施工",
503
+                "children": [
504
+                    {
505
+                        "value": 308,
506
+                        "label": "挖掘机"
507
+                    }
508
+                ]
509
+            }
510
+        ]
511
+    },
512
+    {
513
+        "value": 457,
514
+        "label": "医疗健康",
515
+        "children": [
516
+            {
517
+                "value": 458,
518
+                "label": "中医理疗"
519
+            },
520
+            {
521
+                "value": 459,
522
+                "label": "医疗器材"
523
+            },
524
+            {
525
+                "value": 460,
526
+                "label": "医疗服务"
527
+            },
528
+            {
529
+                "value": 461,
530
+                "label": "精制饮片"
531
+            },
532
+            {
533
+                "value": 462,
534
+                "label": "计生成人"
535
+            },
536
+            {
537
+                "value": 463,
538
+                "label": "隐形眼镜"
539
+            }
540
+        ]
541
+    },
542
+    {
543
+        "value": 464,
544
+        "label": "其他商品",
545
+        "children": [
546
+            {
547
+                "value": 465,
548
+                "label": "众筹"
549
+            },
550
+            {
551
+                "value": 466,
552
+                "label": "公益"
553
+            },
554
+            {
555
+                "value": 467,
556
+                "label": "其他"
557
+            }
558
+        ]
559
+    },
560
+    {
561
+        "value": 563,
562
+        "label": "大仓分类",
563
+        "children": [
564
+            {
565
+                "value": 564,
566
+                "label": "大仓分类",
567
+                "children": [
568
+                    {
569
+                        "value": 567,
570
+                        "label": "家居日用"
571
+                    },
572
+                    {
573
+                        "value": 569,
574
+                        "label": "珠宝首饰"
575
+                    },
576
+                    {
577
+                        "value": 573,
578
+                        "label": "美妆护肤"
579
+                    },
580
+                    {
581
+                        "value": 570,
582
+                        "label": "家用电器"
583
+                    },
584
+                    {
585
+                        "value": 566,
586
+                        "label": "服饰内衣"
587
+                    },
588
+                    {
589
+                        "value": 576,
590
+                        "label": "食品饮料"
591
+                    },
592
+                    {
593
+                        "value": 571,
594
+                        "label": "营养保健"
595
+                    },
596
+                    {
597
+                        "value": 565,
598
+                        "label": "家纺"
599
+                    },
600
+                    {
601
+                        "value": 629,
602
+                        "label": "酒类"
603
+                    }
604
+                ]
605
+            }
606
+        ]
607
+    }
608
+]

+ 22 - 0
shop/productManagementModule/productClassification.vue

@@ -0,0 +1,22 @@
1
+<template>
2
+	<view>
3
+		
4
+	</view>
5
+</template>
6
+
7
+<script>
8
+	export default {
9
+		data() {
10
+			return {
11
+				
12
+			}
13
+		},
14
+		methods: {
15
+			
16
+		}
17
+	}
18
+</script>
19
+
20
+<style>
21
+
22
+</style>

+ 5 - 1
shop/productManagementModule/productManagement.vue

@@ -13,7 +13,7 @@
13 13
         </view>
14 14
       </view>
15 15
       <view class="product-manger-content--tab">
16
-        <tabsVue :category="dataList" />
16
+        <tabsVue :category="dataList" :currentActive="currentActive"/>
17 17
       </view>
18 18
     </view>
19 19
     <view class="product-manger-content--list">
@@ -108,8 +108,12 @@ export default {
108 108
       });
109 109
     },
110 110
   },
111
+  onLoad(options) {
112
+    this.currentActive = options.tabIndex || "0";
113
+  },
111 114
   data() {
112 115
     return {
116
+      currentActive:'0',
113 117
       tihsi: 0,
114 118
       dataList: [
115 119
         {

BIN
static/images/new_ui/Apifox-windows-latest.zip


BIN
static/images/new_ui/cangku.png


BIN
static/images/new_ui/jingjiekucun.png


BIN
static/images/new_ui/kuaidi.png


BIN
static/images/new_ui/yijingchushou.png


BIN
static/images/new_ui/yijingshouqing.png


+ 43 - 0
utils/index.js

@@ -138,4 +138,47 @@ export  function toQueryString(params, encode = true) {
138 138
         `${key}=${processed}`
139 139
     })
140 140
     .join('&')
141
+}
142
+
143
+
144
+
145
+/**
146
+ * 构造树型结构数据
147
+ * @param {*} data 数据源
148
+ * @param {*} id id字段 默认 'id'
149
+ * @param {*} parentId 父节点字段 默认 'parentId'
150
+ * @param {*} children 孩子节点字段 默认 'children'
151
+ * @param {*} rootId 根Id 默认 0
152
+ */
153
+export  function handleTree(data, id = 'id', parentId = 'parentId', children = 'children', rootId = 0) {
154
+  rootId = rootId || Math.min.apply(Math, data.map(item => {
155
+    return item[parentId]
156
+  })) || 0
157
+  //对源数据深度克隆
158
+  const cloneData = JSON.parse(JSON.stringify(data))
159
+  //循环所有项
160
+  const treeData = cloneData.filter(father => {
161
+    let branchArr = cloneData.filter(child => {
162
+      //返回每一项的子级数组
163
+      return father[id] === child[parentId]
164
+    });
165
+    branchArr.length > 0 ? father.children = branchArr : '';
166
+    //返回第一层
167
+    return father[parentId] === rootId;
168
+  });
169
+  return treeData !== '' ? treeData : data;
170
+}
171
+
172
+export function reNameKeys(data=[]) {
173
+  return data.map(item => {
174
+    const newItem = {
175
+      name: item.label,
176
+      id: item.value,
177
+	  type: item.children ? 0 : 1
178
+    };
179
+    if (item.children && Array.isArray(item.children)) {
180
+      newItem.children = reNameKeys(item.children);
181
+    }
182
+    return newItem;
183
+  });
141 184
 }