Commit 6283a76fca5f6d1fd317daacad27adb9e625325e

Authored by lichao
1 parent b2f9850f

2026-02-09更新喵~

garbage-removal/src/apis/company.js
@@ -28,3 +28,15 @@ export async function queryEnterpriseById(id) { @@ -28,3 +28,15 @@ export async function queryEnterpriseById(id) {
28 `/unit/enterprise/${id}` 28 `/unit/enterprise/${id}`
29 ); 29 );
30 } 30 }
  31 +
  32 +/**
  33 + * @method 根据能源类型获取公司名称列表
  34 + */
  35 +export async function queryCompaniesByEnergyType(energyType) {
  36 + return await request.get(
  37 + `/gar/car/requestStrByEnergyType`,
  38 + {
  39 + params: {energyType}
  40 + }
  41 + );
  42 +}
garbage-removal/src/apis/order.js
@@ -220,3 +220,33 @@ export async function deleteDriverByOrderNo(orderNo, carCode) { @@ -220,3 +220,33 @@ export async function deleteDriverByOrderNo(orderNo, carCode) {
220 } 220 }
221 }); 221 });
222 } 222 }
  223 +
  224 +
  225 +/**
  226 + * 查询车辆位置信息
  227 + * @param {*} carNo 车牌号
  228 + */
  229 +export async function queryLatitudeLongitude(carNo) {
  230 + return await request.get(`/gar/car/queryLatitudeLongitude`, {
  231 + params: {
  232 + carNo
  233 + }
  234 + });
  235 +}
  236 +
  237 +
  238 +/**
  239 + * 查询运距
  240 + * @param {*} carNo 车牌号
  241 + * @param startTime
  242 + * @param endTime
  243 + */
  244 +export async function queryMileage(carNo,startTime,endTime) {
  245 + return await request.get(`/gar/car/queryMileage`, {
  246 + params: {
  247 + carNo,
  248 + startTime,
  249 + endTime
  250 + }
  251 + });
  252 +}
garbage-removal/src/common/classify.data.js deleted 100644 → 0
1 -export default[  
2 - {  
3 - "name": "女装",  
4 - "foods": [  
5 - {  
6 - "name": "A字裙",  
7 - "key": "A字裙",  
8 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/1.jpg",  
9 - "cat": 10  
10 - },  
11 - {  
12 - "name": "T恤",  
13 - "key": "T恤",  
14 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/2.jpg",  
15 - "cat": 10  
16 - },  
17 - {  
18 - "name": "半身裙",  
19 - "key": "半身裙",  
20 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/3.jpg",  
21 - "cat": 10  
22 - },  
23 - {  
24 - "name": "衬衫",  
25 - "key": "衬衫",  
26 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/4.jpg",  
27 - "cat": 10  
28 - },  
29 - {  
30 - "name": "短裙",  
31 - "key": "短裙",  
32 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/5.jpg",  
33 - "cat": 10  
34 - },  
35 - {  
36 - "name": "阔腿裤",  
37 - "key": "阔腿裤",  
38 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/6.jpg",  
39 - "cat": 10  
40 - },  
41 - {  
42 - "name": "连衣裙",  
43 - "key": "连衣裙",  
44 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/7.jpg",  
45 - "cat": 10  
46 - },  
47 - {  
48 - "name": "妈妈装",  
49 - "key": "妈妈装",  
50 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/8.jpg",  
51 - "cat": 10  
52 - },  
53 - {  
54 - "name": "牛仔裤",  
55 - "key": "牛仔裤",  
56 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/9.jpg",  
57 - "cat": 10  
58 - },  
59 - {  
60 - "name": "情侣装",  
61 - "key": "情侣装",  
62 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/10.jpg",  
63 - "cat": 10  
64 - },  
65 - {  
66 - "name": "休闲裤",  
67 - "key": "休闲裤",  
68 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/11.jpg",  
69 - "cat": 10  
70 - },  
71 - {  
72 - "name": "雪纺衫",  
73 - "key": "雪纺衫",  
74 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/12.jpg",  
75 - "cat": 10  
76 - },  
77 - {  
78 - "name": "防晒衣",  
79 - "key": "防晒衣",  
80 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/13.jpg",  
81 - "cat": 10  
82 - },  
83 - {  
84 - "name": "礼服/婚纱",  
85 - "key": "礼服婚纱",  
86 - "icon": "https://cdn.uviewui.com/uview/common/classify/1/14.jpg",  
87 - "cat": 10  
88 - }  
89 - ]  
90 - },  
91 - {  
92 - "name": "美食",  
93 - "foods": [  
94 - {  
95 - "name": "火锅",  
96 - "key": "火锅",  
97 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/1.jpg",  
98 - "cat": 6  
99 - },  
100 - {  
101 - "name": "糕点饼干",  
102 - "key": "糕点饼干",  
103 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/2.jpg",  
104 - "cat": 6  
105 - },  
106 - {  
107 - "name": "坚果果干",  
108 - "key": "坚果果干",  
109 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/3.jpg",  
110 - "cat": 6  
111 - },  
112 - {  
113 - "name": "酒类",  
114 - "key": "酒类",  
115 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/4.jpg",  
116 - "cat": 6  
117 - },  
118 - {  
119 - "name": "辣条",  
120 - "key": "辣条",  
121 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/5.jpg",  
122 - "cat": 6  
123 - },  
124 - {  
125 - "name": "大礼包",  
126 - "key": "大礼包",  
127 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/6.jpg",  
128 - "cat": 6  
129 - },  
130 - {  
131 - "name": "精品茗茶",  
132 - "key": "茶",  
133 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/7.jpg",  
134 - "cat": 6  
135 - },  
136 - {  
137 - "name": "休闲食品",  
138 - "key": "休闲食品",  
139 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/8.jpg",  
140 - "cat": 6  
141 - },  
142 - {  
143 - "name": "糖果巧克力",  
144 - "key": "糖果巧克力",  
145 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/9.jpg",  
146 - "cat": 6  
147 - },  
148 - {  
149 - "name": "方便速食",  
150 - "key": "方便速食",  
151 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/10.jpg",  
152 - "cat": 6  
153 - },  
154 - {  
155 - "name": "营养代餐",  
156 - "key": "营养代餐",  
157 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/11.jpg",  
158 - "cat": 6  
159 - },  
160 - {  
161 - "name": "粮油副食",  
162 - "key": "粮油",  
163 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/12.jpg",  
164 - "cat": 6  
165 - },  
166 - {  
167 - "name": "生鲜水果",  
168 - "key": "水果",  
169 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/13.jpg",  
170 - "cat": 6  
171 - },  
172 - {  
173 - "name": "饮品",  
174 - "key": "饮品",  
175 - "icon": "https://cdn.uviewui.com/uview/common/classify/2/14.jpg",  
176 - "cat": 6  
177 - }  
178 - ]  
179 - },  
180 - {  
181 - "name": "美妆",  
182 - "foods": [  
183 - {  
184 - "name": "化妆刷",  
185 - "key": "化妆刷",  
186 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/1.jpg",  
187 - "cat": 3  
188 - },  
189 - {  
190 - "name": "粉底",  
191 - "key": "粉底",  
192 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/2.jpg",  
193 - "cat": 3  
194 - },  
195 - {  
196 - "name": "洗发护发",  
197 - "key": "洗发护发",  
198 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/3.jpg",  
199 - "cat": 3  
200 - },  
201 - {  
202 - "name": "美容工具",  
203 - "key": "美容工具",  
204 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/4.jpg",  
205 - "cat": 3  
206 - },  
207 - {  
208 - "name": "眼部护理",  
209 - "key": "眼部护理",  
210 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/5.jpg",  
211 - "cat": 3  
212 - },  
213 - {  
214 - "name": "眉妆",  
215 - "key": "眉妆",  
216 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/6.jpg",  
217 - "cat": 3  
218 - },  
219 - {  
220 - "name": "卸妆品",  
221 - "key": "卸妆品",  
222 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/7.jpg",  
223 - "cat": 3  
224 - },  
225 - {  
226 - "name": "基础护肤",  
227 - "key": "基础护肤",  
228 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/8.jpg",  
229 - "cat": 3  
230 - },  
231 - {  
232 - "name": "眼妆",  
233 - "key": "眼妆",  
234 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/9.jpg",  
235 - "cat": 3  
236 - },  
237 - {  
238 - "name": "唇妆",  
239 - "key": "唇妆",  
240 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/10.jpg",  
241 - "cat": 3  
242 - },  
243 - {  
244 - "name": "面膜",  
245 - "key": "面膜",  
246 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/11.jpg",  
247 - "cat": 3  
248 - },  
249 - {  
250 - "name": "沐浴用品",  
251 - "key": "沐浴用品",  
252 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/12.jpg",  
253 - "cat": 3  
254 - },  
255 - {  
256 - "name": "护肤套装",  
257 - "key": "护肤套装",  
258 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/13.jpg",  
259 - "cat": 3  
260 - },  
261 - {  
262 - "name": "防晒品",  
263 - "key": "防晒品",  
264 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/14.jpg",  
265 - "cat": 3  
266 - },  
267 - {  
268 - "name": "美甲",  
269 - "key": "美甲",  
270 - "icon": "https://cdn.uviewui.com/uview/common/classify/3/15.jpg",  
271 - "cat": 3  
272 - }  
273 -  
274 - ]  
275 - },  
276 - {  
277 - "name": "居家日用",  
278 - "foods": [  
279 - {  
280 - "name": "垃圾袋",  
281 - "key": "垃圾袋",  
282 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/1.jpg",  
283 - "cat": 4  
284 - },  
285 - {  
286 - "name": "纸巾",  
287 - "key": "纸巾",  
288 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/2.jpg",  
289 - "cat": 4  
290 - },  
291 - {  
292 - "name": "驱蚊用品",  
293 - "key": "驱蚊用品",  
294 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/3.jpg",  
295 - "cat": 4  
296 - },  
297 - {  
298 - "name": "收纳神器",  
299 - "key": "收纳神器",  
300 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/4.jpg",  
301 - "cat": 4  
302 - },  
303 - {  
304 - "name": "厨房用品",  
305 - "key": "厨房用品",  
306 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/5.jpg",  
307 - "cat": 4  
308 - },  
309 - {  
310 - "name": "厨房烹饪",  
311 - "key": "烹饪",  
312 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/6.jpg",  
313 - "cat": 4  
314 - },  
315 - {  
316 - "name": "衣物晾晒",  
317 - "key": "衣物晾晒",  
318 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/7.jpg",  
319 - "cat": 4  
320 - },  
321 - {  
322 - "name": "衣物护理",  
323 - "key": "衣物护理",  
324 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/8.jpg",  
325 - "cat": 4  
326 - },  
327 - {  
328 - "name": "宠物用品",  
329 - "key": "宠物用品",  
330 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/9.jpg",  
331 - "cat": 4  
332 - },  
333 - {  
334 - "name": "医药保健",  
335 - "key": "医药",  
336 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/10.jpg",  
337 - "cat": 4  
338 - },  
339 - {  
340 - "name": "日用百货",  
341 - "key": "百货",  
342 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/11.jpg",  
343 - "cat": 4  
344 - },  
345 - {  
346 - "name": "清洁用品",  
347 - "key": "清洁",  
348 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/12.jpg",  
349 - "cat": 4  
350 - },  
351 - {  
352 - "name": "绿植园艺",  
353 - "key": "绿植",  
354 - "icon": "https://cdn.uviewui.com/uview/common/classify/4/13.jpg",  
355 - "cat": 4  
356 - }  
357 - ]  
358 - },  
359 - {  
360 - "name": "男装",  
361 - "foods": [  
362 - {  
363 - "name": "爸爸装",  
364 - "key": "爸爸装",  
365 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/1.jpg",  
366 - "cat": 12  
367 - },  
368 - {  
369 - "name": "牛仔裤",  
370 - "key": "牛仔裤",  
371 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/2.jpg",  
372 - "cat": 12  
373 - },  
374 - {  
375 - "name": "衬衫",  
376 - "key": "衬衫",  
377 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/3.jpg",  
378 - "cat": 12  
379 - },  
380 - {  
381 - "name": "休闲裤",  
382 - "key": "休闲裤",  
383 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/4.jpg",  
384 - "cat": 12  
385 - },  
386 - {  
387 - "name": "外套",  
388 - "key": "外套",  
389 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/5.jpg",  
390 - "cat": 12  
391 - },  
392 - {  
393 - "name": "T恤",  
394 - "key": "T恤",  
395 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/6.jpg",  
396 - "cat": 12  
397 - },  
398 - {  
399 - "name": "套装",  
400 - "key": "套装",  
401 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/7.jpg",  
402 - "cat": 12  
403 - },  
404 - {  
405 - "name": "运动裤",  
406 - "key": "运动裤",  
407 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/8.jpg",  
408 - "cat": 12  
409 - },  
410 - {  
411 - "name": "马甲/背心",  
412 - "key": "马甲背心",  
413 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/9.jpg",  
414 - "cat": 12  
415 - },  
416 - {  
417 - "name": "POLO衫",  
418 - "key": "POLO衫",  
419 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/10.jpg",  
420 - "cat": 12  
421 - },  
422 - {  
423 - "name": "商务装",  
424 - "key": "商务装",  
425 - "icon": "https://cdn.uviewui.com/uview/common/classify/5/11.jpg",  
426 - "cat": 12  
427 - }  
428 - ]  
429 - },  
430 - {  
431 - "name": "鞋品",  
432 - "foods": [  
433 - {  
434 - "name": "单鞋",  
435 - "key": "单鞋",  
436 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/1.jpg",  
437 - "cat": 5  
438 - },  
439 - {  
440 - "name": "皮鞋",  
441 - "key": "皮鞋",  
442 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/2.jpg",  
443 - "cat": 5  
444 - },  
445 - {  
446 - "name": "帆布鞋",  
447 - "key": "帆布鞋",  
448 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/3.jpg",  
449 - "cat": 5  
450 - },  
451 - {  
452 - "name": "北京老布鞋",  
453 - "key": "北京老布鞋",  
454 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/4.jpg",  
455 - "cat": 5  
456 - },  
457 - {  
458 - "name": "运动鞋",  
459 - "key": "运动鞋",  
460 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/5.jpg",  
461 - "cat": 5  
462 - },  
463 - {  
464 - "name": "拖鞋",  
465 - "key": "拖鞋",  
466 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/6.jpg",  
467 - "cat": 5  
468 - },  
469 - {  
470 - "name": "凉鞋",  
471 - "key": "凉鞋",  
472 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/7.jpg",  
473 - "cat": 5  
474 - },  
475 - {  
476 - "name": "休闲鞋",  
477 - "key": "休闲鞋",  
478 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/8.jpg",  
479 - "cat": 5  
480 - },  
481 - {  
482 - "name": "高跟鞋",  
483 - "key": "高跟鞋",  
484 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/9.jpg",  
485 - "cat": 5  
486 - },  
487 - {  
488 - "name": "老人鞋",  
489 - "key": "老人鞋",  
490 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/10.jpg",  
491 - "cat": 5  
492 - },  
493 - {  
494 - "name": "懒人鞋",  
495 - "key": "懒人鞋",  
496 - "icon": "https://cdn.uviewui.com/uview/common/classify/6/11.jpg",  
497 - "cat": 5  
498 - }  
499 - ]  
500 - },  
501 - {  
502 - "name": "数码家电",  
503 - "foods": [  
504 - {  
505 - "name": "数据线",  
506 - "key": "数据线",  
507 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/1.jpg",  
508 - "cat": 8  
509 - },  
510 - {  
511 - "name": "耳机",  
512 - "key": "耳机",  
513 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/2.jpg",  
514 - "cat": 8  
515 - },  
516 - {  
517 - "name": "生活家电",  
518 - "key": "家电",  
519 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/3.jpg",  
520 - "cat": 8  
521 - },  
522 - {  
523 - "name": "电风扇",  
524 - "key": "电风扇",  
525 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/4.jpg",  
526 - "cat": 8  
527 - },  
528 - {  
529 - "name": "电吹风",  
530 - "key": "电吹风",  
531 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/5.jpg",  
532 - "cat": 8  
533 - },  
534 - {  
535 - "name": "手机壳",  
536 - "key": "手机壳",  
537 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/6.jpg",  
538 - "cat": 8  
539 - },  
540 - {  
541 - "name": "榨汁机",  
542 - "key": "榨汁机",  
543 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/7.jpg",  
544 - "cat": 8  
545 - },  
546 - {  
547 - "name": "小家电",  
548 - "key": "小家电",  
549 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/8.jpg",  
550 - "cat": 8  
551 - },  
552 - {  
553 - "name": "数码电子",  
554 - "key": "数码",  
555 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/9.jpg",  
556 - "cat": 8  
557 - },  
558 - {  
559 - "name": "电饭锅",  
560 - "key": "电饭锅",  
561 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/10.jpg",  
562 - "cat": 8  
563 - },  
564 - {  
565 - "name": "手机支架",  
566 - "key": "手机支架",  
567 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/11.jpg",  
568 - "cat": 8  
569 - },  
570 - {  
571 - "name": "剃须刀",  
572 - "key": "剃须刀",  
573 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/12.jpg",  
574 - "cat": 8  
575 - },  
576 - {  
577 - "name": "充电宝",  
578 - "key": "充电宝",  
579 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/13.jpg",  
580 - "cat": 8  
581 - },  
582 - {  
583 - "name": "手机配件",  
584 - "key": "手机配件",  
585 - "icon": "https://cdn.uviewui.com/uview/common/classify/7/14.jpg",  
586 - "cat": 8  
587 - }  
588 - ]  
589 - },  
590 - {  
591 - "name": "母婴",  
592 - "foods": [  
593 - {  
594 - "name": "婴童服饰",  
595 - "key": "衣服",  
596 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/1.jpg",  
597 - "cat": 2  
598 - },  
599 - {  
600 - "name": "玩具乐器",  
601 - "key": "玩具乐器",  
602 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/2.jpg",  
603 - "cat": 2  
604 - },  
605 - {  
606 - "name": "尿不湿",  
607 - "key": "尿不湿",  
608 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/3.jpg",  
609 - "cat": 2  
610 - },  
611 - {  
612 - "name": "安抚牙胶",  
613 - "key": "安抚牙胶",  
614 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/4.jpg",  
615 - "cat": 2  
616 - },  
617 - {  
618 - "name": "奶瓶奶嘴",  
619 - "key": "奶瓶奶嘴",  
620 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/5.jpg",  
621 - "cat": 2  
622 - },  
623 - {  
624 - "name": "孕妈用品",  
625 - "key": "孕妈用品",  
626 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/6.jpg",  
627 - "cat": 2  
628 - },  
629 - {  
630 - "name": "宝宝用品",  
631 - "key": "宝宝用品",  
632 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/7.jpg",  
633 - "cat": 2  
634 - },  
635 - {  
636 - "name": "婴童湿巾",  
637 - "key": "湿巾",  
638 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/8.jpg",  
639 - "cat": 2  
640 - },  
641 - {  
642 - "name": "喂养洗护",  
643 - "key": "洗护",  
644 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/9.jpg",  
645 - "cat": 2  
646 - },  
647 - {  
648 - "name": "婴童鞋靴",  
649 - "key": "童鞋",  
650 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/10.jpg",  
651 - "cat": 2  
652 - },  
653 - {  
654 - "name": "口水巾",  
655 - "key": "口水巾",  
656 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/11.jpg",  
657 - "cat": 2  
658 - },  
659 - {  
660 - "name": "营养辅食",  
661 - "key": "营养",  
662 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/12.jpg",  
663 - "cat": 2  
664 - },  
665 - {  
666 - "name": "婴幼书籍",  
667 - "key": "书籍",  
668 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/13.jpg",  
669 - "cat": 2  
670 - },  
671 - {  
672 - "name": "婴儿车",  
673 - "key": "婴儿车",  
674 - "icon": "https://cdn.uviewui.com/uview/common/classify/8/14.jpg",  
675 - "cat": 2  
676 - }  
677 - ]  
678 - },  
679 - {  
680 - "name": "箱包",  
681 - "foods": [  
682 - {  
683 - "name": "单肩包",  
684 - "key": "单肩包",  
685 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/1.jpg",  
686 - "cat": 0  
687 - },  
688 - {  
689 - "name": "斜挎包",  
690 - "key": "斜挎包",  
691 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/2.jpg",  
692 - "cat": 0  
693 - },  
694 - {  
695 - "name": "女包",  
696 - "key": "女包",  
697 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/3.jpg",  
698 - "cat": 0  
699 - },  
700 - {  
701 - "name": "男包",  
702 - "key": "男包",  
703 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/4.jpg",  
704 - "cat": 0  
705 - },  
706 - {  
707 - "name": "双肩包",  
708 - "key": "双肩包",  
709 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/5.jpg",  
710 - "cat": 0  
711 - },  
712 - {  
713 - "name": "小方包",  
714 - "key": "小方包",  
715 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/6.jpg",  
716 - "cat": 0  
717 - },  
718 - {  
719 - "name": "钱包",  
720 - "key": "钱包",  
721 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/7.jpg",  
722 - "cat": 0  
723 - },  
724 - {  
725 - "name": "旅行箱包",  
726 - "key": "旅行箱包",  
727 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/8.jpg",  
728 - "cat": 0  
729 - },  
730 - {  
731 - "name": "零钱包",  
732 - "key": "零钱包",  
733 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/9.jpg",  
734 - "cat": 0  
735 - },  
736 - {  
737 - "name": "手提包",  
738 - "key": "手提包",  
739 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/10.jpg",  
740 - "cat": 0  
741 - },  
742 - {  
743 - "name": "胸包",  
744 - "key": "胸包",  
745 - "icon": "https://cdn.uviewui.com/uview/common/classify/9/11.jpg",  
746 - "cat": 0  
747 - }  
748 - ]  
749 - },  
750 - {  
751 - "name": "内衣",  
752 - "foods": [  
753 - {  
754 - "name": "袜子",  
755 - "key": "袜子",  
756 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/1.jpg",  
757 - "cat": 11  
758 - },  
759 - {  
760 - "name": "吊带背心",  
761 - "key": "吊带背心",  
762 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/2.jpg",  
763 - "cat": 11  
764 - },  
765 - {  
766 - "name": "抹胸",  
767 - "key": "抹胸",  
768 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/3.jpg",  
769 - "cat": 11  
770 - },  
771 - {  
772 - "name": "内裤",  
773 - "key": "内裤",  
774 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/4.jpg",  
775 - "cat": 11  
776 - },  
777 - {  
778 - "name": "文胸",  
779 - "key": "文胸",  
780 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/5.jpg",  
781 - "cat": 11  
782 - },  
783 - {  
784 - "name": "文胸套装",  
785 - "key": "文胸套装",  
786 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/6.jpg",  
787 - "cat": 11  
788 - },  
789 - {  
790 - "name": "打底塑身",  
791 - "key": "打底塑身",  
792 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/7.jpg",  
793 - "cat": 11  
794 - },  
795 - {  
796 - "name": "家居服",  
797 - "key": "家居服",  
798 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/8.jpg",  
799 - "cat": 11  
800 - },  
801 - {  
802 - "name": "船袜",  
803 - "key": "船袜",  
804 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/9.jpg",  
805 - "cat": 11  
806 - },  
807 - {  
808 - "name": "情侣睡衣",  
809 - "key": "情侣睡衣",  
810 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/10.jpg",  
811 - "cat": 11  
812 - },  
813 - {  
814 - "name": "丝袜",  
815 - "key": "丝袜",  
816 - "icon": "https://cdn.uviewui.com/uview/common/classify/10/11.jpg",  
817 - "cat": 11  
818 - }  
819 - ]  
820 - },  
821 - {  
822 - "name": "文娱车品",  
823 - "foods": [  
824 - {  
825 - "name": "车市车品",  
826 - "key": "车市车品",  
827 - "icon": "https://cdn.uviewui.com/uview/common/classify/11/1.jpg",  
828 - "cat": 7  
829 - },  
830 - {  
831 - "name": "办公文具",  
832 - "key": "办公文具",  
833 - "icon": "https://cdn.uviewui.com/uview/common/classify/11/2.jpg",  
834 - "cat": 7  
835 - },  
836 - {  
837 - "name": "考试必备",  
838 - "key": "考试必备",  
839 - "icon": "https://cdn.uviewui.com/uview/common/classify/11/3.jpg",  
840 - "cat": 7  
841 - },  
842 - {  
843 - "name": "笔记本",  
844 - "key": "笔记本",  
845 - "icon": "https://cdn.uviewui.com/uview/common/classify/11/4.jpg",  
846 - "cat": 7  
847 - },  
848 - {  
849 - "name": "艺术礼品",  
850 - "key": "礼品",  
851 - "icon": "https://cdn.uviewui.com/uview/common/classify/11/5.jpg",  
852 - "cat": 7  
853 - },  
854 - {  
855 - "name": "书写工具",  
856 - "key": "书写工具",  
857 - "icon": "https://cdn.uviewui.com/uview/common/classify/11/6.jpg",  
858 - "cat": 7  
859 - },  
860 - {  
861 - "name": "车载电器",  
862 - "key": "车载电器",  
863 - "icon": "https://cdn.uviewui.com/uview/common/classify/11/7.jpg",  
864 - "cat": 7  
865 - },  
866 - {  
867 - "name": "图书音像",  
868 - "key": "图书音像",  
869 - "icon": "https://cdn.uviewui.com/uview/common/classify/11/8.jpg",  
870 - "cat": 7  
871 - },  
872 - {  
873 - "name": "画具画材",  
874 - "key": "画具画材",  
875 - "icon": "https://cdn.uviewui.com/uview/common/classify/11/9.jpg",  
876 - "cat": 7  
877 - }  
878 - ]  
879 - },  
880 - {  
881 - "name": "配饰",  
882 - "foods": [  
883 - {  
884 - "name": "太阳镜",  
885 - "key": "太阳镜",  
886 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/1.jpg",  
887 - "cat": 0  
888 - },  
889 - {  
890 - "name": "皮带",  
891 - "key": "皮带",  
892 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/2.jpg",  
893 - "cat": 0  
894 - },  
895 - {  
896 - "name": "棒球帽",  
897 - "key": "棒球帽",  
898 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/3.jpg",  
899 - "cat": 0  
900 - },  
901 - {  
902 - "name": "手表",  
903 - "key": "手表",  
904 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/4.jpg",  
905 - "cat": 0  
906 - },  
907 - {  
908 - "name": "发饰",  
909 - "key": "发饰",  
910 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/5.jpg",  
911 - "cat": 0  
912 - },  
913 - {  
914 - "name": "项链",  
915 - "key": "项链",  
916 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/6.jpg",  
917 - "cat": 0  
918 - },  
919 - {  
920 - "name": "手饰",  
921 - "key": "手饰",  
922 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/7.jpg",  
923 - "cat": 0  
924 - },  
925 - {  
926 - "name": "耳环",  
927 - "key": "耳环",  
928 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/8.jpg",  
929 - "cat": 0  
930 - },  
931 - {  
932 - "name": "帽子丝巾",  
933 - "key": "帽子丝巾",  
934 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/9.jpg",  
935 - "cat": 0  
936 - },  
937 - {  
938 - "name": "眼镜墨镜",  
939 - "key": "眼镜墨镜",  
940 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/10.jpg",  
941 - "cat": 0  
942 - },  
943 - {  
944 - "name": "发带发箍",  
945 - "key": "发带发箍",  
946 - "icon": "https://cdn.uviewui.com/uview/common/classify/12/11.jpg",  
947 - "cat": 0  
948 - }  
949 - ]  
950 - },  
951 - {  
952 - "name": "家装家纺",  
953 - "foods": [  
954 - {  
955 - "name": "家居饰品",  
956 - "key": "家居饰品",  
957 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/1.jpg",  
958 - "cat": 0  
959 - },  
960 - {  
961 - "name": "凉席",  
962 - "key": "凉席",  
963 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/2.jpg",  
964 - "cat": 0  
965 - },  
966 - {  
967 - "name": "背枕靠枕",  
968 - "key": "靠枕",  
969 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/3.jpg",  
970 - "cat": 0  
971 - },  
972 - {  
973 - "name": "床上用品",  
974 - "key": "床上用品",  
975 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/4.jpg",  
976 - "cat": 0  
977 - },  
978 - {  
979 - "name": "摆件",  
980 - "key": "摆件",  
981 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/5.jpg",  
982 - "cat": 0  
983 - },  
984 - {  
985 - "name": "四件套",  
986 - "key": "四件套",  
987 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/6.jpg",  
988 - "cat": 0  
989 - },  
990 - {  
991 - "name": "装饰品",  
992 - "key": "装饰品",  
993 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/7.jpg",  
994 - "cat": 0  
995 - },  
996 - {  
997 - "name": "卫浴用品",  
998 - "key": "卫浴",  
999 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/8.jpg",  
1000 - "cat": 0  
1001 - },  
1002 - {  
1003 - "name": "家居家装",  
1004 - "key": "家具",  
1005 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/9.jpg",  
1006 - "cat": 0  
1007 - },  
1008 - {  
1009 - "name": "蚊帐",  
1010 - "key": "蚊帐",  
1011 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/10.jpg",  
1012 - "cat": 0  
1013 - },  
1014 - {  
1015 - "name": "墙纸贴纸",  
1016 - "key": "墙纸",  
1017 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/11.jpg",  
1018 - "cat": 0  
1019 - },  
1020 - {  
1021 - "name": "空调被",  
1022 - "key": "空调被",  
1023 - "icon": "https://cdn.uviewui.com/uview/common/classify/13/12.jpg",  
1024 - "cat": 0  
1025 - }  
1026 - ]  
1027 - },  
1028 - {  
1029 - "name": "户外运动",  
1030 - "foods": [  
1031 - {  
1032 - "name": "游泳装备",  
1033 - "key": "游泳",  
1034 - "icon": "https://cdn.uviewui.com/uview/common/classify/14/1.jpg",  
1035 - "cat": 0  
1036 - },  
1037 - {  
1038 - "name": "泳镜",  
1039 - "key": "泳镜",  
1040 - "icon": "https://cdn.uviewui.com/uview/common/classify/14/2.jpg",  
1041 - "cat": 0  
1042 - },  
1043 - {  
1044 - "name": "户外装备",  
1045 - "key": "户外",  
1046 - "icon": "https://cdn.uviewui.com/uview/common/classify/14/3.jpg",  
1047 - "cat": 0  
1048 - },  
1049 - {  
1050 - "name": "健身服饰",  
1051 - "key": "健身",  
1052 - "icon": "https://cdn.uviewui.com/uview/common/classify/14/4.jpg",  
1053 - "cat": 0  
1054 - },  
1055 - {  
1056 - "name": "泳衣",  
1057 - "key": "泳衣",  
1058 - "icon": "https://cdn.uviewui.com/uview/common/classify/14/5.jpg",  
1059 - "cat": 0  
1060 - },  
1061 - {  
1062 - "name": "瑜伽垫",  
1063 - "key": "瑜伽垫",  
1064 - "icon": "https://cdn.uviewui.com/uview/common/classify/14/6.jpg",  
1065 - "cat": 0  
1066 - },  
1067 - {  
1068 - "name": "瑜伽用品",  
1069 - "key": "瑜伽",  
1070 - "icon": "https://cdn.uviewui.com/uview/common/classify/14/7.jpg",  
1071 - "cat": 0  
1072 - },  
1073 - {  
1074 - "name": "健身装备",  
1075 - "key": "健身",  
1076 - "icon": "https://cdn.uviewui.com/uview/common/classify/14/8.jpg",  
1077 - "cat": 0  
1078 - },  
1079 - {  
1080 - "name": "球迷用品",  
1081 - "key": "球迷",  
1082 - "icon": "https://cdn.uviewui.com/uview/common/classify/14/9.jpg",  
1083 - "cat": 0  
1084 - }  
1085 - ]  
1086 - }  
1087 -]  
1088 \ No newline at end of file 0 \ No newline at end of file
garbage-removal/src/components/next-tree/style.css
@@ -15,15 +15,14 @@ @@ -15,15 +15,14 @@
15 opacity: 1; 15 opacity: 1;
16 } 16 }
17 .next-tree-cnt { 17 .next-tree-cnt {
18 - position: fixed;  
19 - top: 0rpx;  
20 - right: 0rpx;  
21 - bottom: 0rpx;  
22 - left: 0rpx;  
23 - z-index: 997;  
24 - top: 360rpx;  
25 - transition: all 0.3s ease;  
26 - transform: translateY(100%); 18 + position: fixed;
  19 + top: 360rpx;
  20 + right: 0rpx;
  21 + bottom: 0rpx; /* 添加这一行,确保容器到底部 */
  22 + left: 0rpx;
  23 + z-index: 997;
  24 + transition: all 0.3s ease;
  25 + transform: translateY(100%);
27 } 26 }
28 .next-tree-cnt.next-tree-cnt-page { 27 .next-tree-cnt.next-tree-cnt-page {
29 transition: none; 28 transition: none;
@@ -62,21 +61,17 @@ @@ -62,21 +61,17 @@
62 color: #f9ae3d; 61 color: #f9ae3d;
63 } 62 }
64 .next-tree-view { 63 .next-tree-view {
65 - position: absolute;  
66 - top: 0rpx;  
67 - right: 0rpx;  
68 - bottom: 0rpx;  
69 - left: 0rpx;  
70 - top: 72rpx;  
71 - background-color: #fff;  
72 - padding-top: 20rpx;  
73 - padding-right: 20rpx;  
74 - padding-bottom: 20rpx;  
75 - padding-left: 20rpx; 64 + position: absolute;
  65 + top: 72rpx;
  66 + right: 0rpx;
  67 + bottom: 0rpx; /* 添加这一行,确保内容区域到底部 */
  68 + left: 0rpx;
  69 + background-color: #fff;
  70 + padding: 20rpx;
76 } 71 }
77 .next-tree-view-sc { 72 .next-tree-view-sc {
78 - height: 100%;  
79 - overflow: hidden; 73 + height: calc(100% - 40rpx); /* 减去内边距 */
  74 + overflow-y: auto; /* 确保垂直滚动 */
80 } 75 }
81 .next-tree-view-sc .empty { 76 .next-tree-view-sc .empty {
82 text-align: center; 77 text-align: center;
garbage-removal/src/pages/home-info/address/addSite.vue
@@ -170,7 +170,7 @@ const chooseAddressDetail = () => { @@ -170,7 +170,7 @@ const chooseAddressDetail = () => {
170 170
171 // 先获取当前位置的经纬度 171 // 先获取当前位置的经纬度
172 uni.getLocation({ 172 uni.getLocation({
173 - type: 'gcj02', // 使用国测局坐标系,与地图选择器的坐标系一致 173 + type: 'gcj02',
174 altitude: false, 174 altitude: false,
175 success: (locationRes) => { 175 success: (locationRes) => {
176 console.log('获取当前位置成功', locationRes); 176 console.log('获取当前位置成功', locationRes);
garbage-removal/src/pages/home-info/address/citySelect/u-city-select.vue
  1 +
1 <template> 2 <template>
2 - <u-popup :show="modelValue" mode="bottom" :popup="false" :mask="true" :closeable="true" :safe-area-inset-bottom="true"  
3 - close-icon-color="#ffffff" :z-index="uZIndex" :maskCloseAble="maskCloseAble" @close="close">  
4 - <u-tabs v-if="modelValue" :list="genTabsList" :scrollable="true" :current="tabsIndex" @change="tabsChange"  
5 - ref="tabs"></u-tabs>  
6 - <view class="area-box">  
7 - <view class="u-flex" :class="{ 'change': isChange }">  
8 - <view class="area-item">  
9 - <view class="u-padding-10 u-bg-gray" style="height: 100%;">  
10 - <scroll-view :scroll-y="true" style="height: 100%">  
11 - <u-cell-group>  
12 - <u-cell v-for="(item, index) in provinces" :title="item.label" :arrow="false" :index="index" :key="index"  
13 - @click="provinceChange(index)">  
14 - <template v-slot:right-icon>  
15 - <u-icon v-if="isChooseP && province === index" size="17" name="checkbox-mark"></u-icon>  
16 - </template>  
17 - </u-cell>  
18 - </u-cell-group>  
19 - </scroll-view>  
20 - </view>  
21 - </view>  
22 - <view class="area-item">  
23 - <view class="u-padding-10 u-bg-gray" style="height: 100%;">  
24 - <scroll-view :scroll-y="true" style="height: 100%">  
25 - <u-cell-group v-if="isChooseP">  
26 - <u-cell v-for="(item, index) in citys" :title="item.label" :arrow="false" :index="index" :key="index"  
27 - @click="cityChange(index)">  
28 - <template v-slot:right-icon>  
29 - <u-icon v-if="isChooseC && city === index" size="17" name="checkbox-mark"></u-icon>  
30 - </template>  
31 - </u-cell>  
32 - </u-cell-group>  
33 - </scroll-view>  
34 - </view>  
35 - </view>  
36 - <view class="area-item">  
37 - <view class="u-padding-10 u-bg-gray" style="height: 100%;">  
38 - <scroll-view :scroll-y="true" style="height: 100%">  
39 - <u-cell-group v-if="isChooseC">  
40 - <u-cell v-for="(item, index) in areas" :title="item.label" :arrow="false" :index="index" :key="index"  
41 - @click="areaChange(index)">  
42 - <template v-slot:right-icon>  
43 - <u-icon v-if="isChooseA && area === index" size="17" name="checkbox-mark"></u-icon>  
44 - </template>  
45 - </u-cell>  
46 - </u-cell-group>  
47 - </scroll-view>  
48 - </view>  
49 - </view>  
50 - </view>  
51 - </view>  
52 - </u-popup> 3 + <u-popup :show="modelValue" mode="bottom" :popup="false" :mask="true" :closeable="true" :safe-area-inset-bottom="true"
  4 + close-icon-color="#ffffff" :z-index="uZIndex" :maskCloseAble="maskCloseAble" @close="close">
  5 + <u-tabs v-if="modelValue" :list="genTabsList" :scrollable="true" :current="tabsIndex" @change="tabsChange"
  6 + ref="tabs"></u-tabs>
  7 + <view class="area-box">
  8 + <view class="u-flex" :class="{ 'change': isChange }">
  9 + <!-- 删除省份选择部分 -->
  10 + <!--
  11 + <view class="area-item">
  12 + <view class="u-padding-10 u-bg-gray" style="height: 100%;">
  13 + <scroll-view :scroll-y="true" style="height: 100%">
  14 + <u-cell-group>
  15 + <u-cell v-for="(item, index) in provinces" :title="item.label" :arrow="false" :index="index" :key="index"
  16 + @click="provinceChange(index)">
  17 + <template v-slot:right-icon>
  18 + <u-icon v-if="isChooseP && province === index" size="17" name="checkbox-mark"></u-icon>
  19 + </template>
  20 + </u-cell>
  21 + </u-cell-group>
  22 + </scroll-view>
  23 + </view>
  24 + </view>
  25 + -->
  26 + <!-- 修改为直接显示长沙市 -->
  27 + <view class="area-item">
  28 + <view class="u-padding-10 u-bg-gray" style="height: 100%;">
  29 + <scroll-view :scroll-y="true" style="height: 100%">
  30 + <u-cell-group>
  31 + <u-cell title="长沙市" :arrow="false" index="0" key="0">
  32 + <template v-slot:right-icon>
  33 + <u-icon size="17" name="checkbox-mark"></u-icon>
  34 + </template>
  35 + </u-cell>
  36 + </u-cell-group>
  37 + </scroll-view>
  38 + </view>
  39 + </view>
  40 + <view class="area-item">
  41 + <view class="u-padding-10 u-bg-gray" style="height: 100%;">
  42 + <scroll-view :scroll-y="true" style="height: 100%">
  43 + <u-cell-group>
  44 + <u-cell v-for="(item, index) in areas" :title="item.label" :arrow="false" :index="index" :key="index"
  45 + @click="areaChange(index)">
  46 + <template v-slot:right-icon>
  47 + <u-icon v-if="isChooseA && area === index" size="17" name="checkbox-mark"></u-icon>
  48 + </template>
  49 + </u-cell>
  50 + </u-cell-group>
  51 + </scroll-view>
  52 + </view>
  53 + </view>
  54 + </view>
  55 + </view>
  56 + </u-popup>
53 </template> 57 </template>
54 58
55 -<script>  
56 -import areas from "@/common/area.js"; 59 +<script>import areas from "@/common/area.js";
57 import citys from "@/common/city.js"; 60 import citys from "@/common/city.js";
58 import provinces from "@/common/province.js"; 61 import provinces from "@/common/province.js";
59 /** 62 /**
@@ -64,176 +67,138 @@ import provinces from &quot;@/common/province.js&quot;; @@ -64,176 +67,138 @@ import provinces from &quot;@/common/province.js&quot;;
64 * @property {String} default-code 默认选中的地区,编号形式 67 * @property {String} default-code 默认选中的地区,编号形式
65 */ 68 */
66 export default { 69 export default {
67 - name: 'u-city-select',  
68 - props: {  
69 - // 通过双向绑定控制组件的弹出与收起  
70 - modelValue: {  
71 - type: Boolean,  
72 - default: false  
73 - },  
74 - // 默认显示的地区,可传类似["河北省", "秦皇岛市", "北戴河区"]  
75 - defaultRegion: {  
76 - type: Array,  
77 - default() {  
78 - return [];  
79 - }  
80 - },  
81 - // 默认显示地区的编码,defaultRegion和areaCode同时存在,areaCode优先,可传类似["13", "1303", "130304"]  
82 - areaCode: {  
83 - type: Array,  
84 - default() {  
85 - return [];  
86 - }  
87 - },  
88 - // 是否允许通过点击遮罩关闭Picker  
89 - maskCloseAble: {  
90 - type: Boolean,  
91 - default: true  
92 - },  
93 - // 弹出的z-index值  
94 - zIndex: {  
95 - type: [String, Number],  
96 - default: 0  
97 - }  
98 - },  
99 - data() {  
100 - return {  
101 - cityValue: "",  
102 - isChooseP: false, //是否已经选择了省  
103 - province: 0, //省级下标  
104 - provinces: provinces,  
105 - isChooseC: false, //是否已经选择了市  
106 - city: 0, //市级下标  
107 - citys: citys[0],  
108 - isChooseA: false, //是否已经选择了区  
109 - area: 0, //区级下标  
110 - areas: areas[0][0],  
111 - tabsIndex: 0,  
112 - }  
113 - },  
114 - mounted() {  
115 - this.init();  
116 - },  
117 - computed: {  
118 - isChange() {  
119 - return this.tabsIndex > 1;  
120 - },  
121 - genTabsList() {  
122 - let tabsList = [{  
123 - name: "请选择"  
124 - }];  
125 - if (this.isChooseP) {  
126 - console.log(this.province)  
127 - tabsList[0]['name'] = this.provinces[this.province]['label'];  
128 - tabsList[1] = {  
129 - name: "请选择"  
130 - };  
131 - }  
132 - if (this.isChooseC) {  
133 - tabsList[1]['name'] = this.citys[this.city]['label'];  
134 - tabsList[2] = {  
135 - name: "请选择"  
136 - };  
137 - }  
138 - if (this.isChooseA) {  
139 - tabsList[2]['name'] = this.areas[this.area]['label'];  
140 - }  
141 - return tabsList;  
142 - },  
143 - uZIndex() {  
144 - // 如果用户有传递z-index值,优先使用  
145 - return this.zIndex ? this.zIndex : this.$u.zIndex.popup;  
146 - }  
147 - },  
148 - emits: ['city-change'],  
149 - methods: {  
150 - init() {  
151 - if (this.areaCode.length == 3) {  
152 - this.setProvince("", this.areaCode[0]);  
153 - this.setCity("", this.areaCode[1]);  
154 - this.setArea("", this.areaCode[2]);  
155 - } else if (this.defaultRegion.length == 3) {  
156 - this.setProvince(this.defaultRegion[0], "");  
157 - this.setCity(this.defaultRegion[1], "");  
158 - this.setArea(this.defaultRegion[2], "");  
159 - };  
160 - },  
161 - setProvince(label = "", value = "") {  
162 - this.provinces.map((v, k) => {  
163 - if (value ? v.value == value : v.label == label) {  
164 - this.provinceChange(k);  
165 - }  
166 - })  
167 - },  
168 - setCity(label = "", value = "") {  
169 - this.citys.map((v, k) => {  
170 - if (value ? v.value == value : v.label == label) {  
171 - this.cityChange(k);  
172 - }  
173 - })  
174 - },  
175 - setArea(label = "", value = "") {  
176 - this.areas.map((v, k) => {  
177 - if (value ? v.value == value : v.label == label) {  
178 - this.isChooseA = true;  
179 - this.area = k;  
180 - }  
181 - })  
182 - },  
183 - close() {  
184 - this.$emit('update:modelValue', false);  
185 - },  
186 - tabsChange(index) {  
187 - this.tabsIndex = index;  
188 - },  
189 - provinceChange(index) {  
190 - this.isChooseP = true;  
191 - this.isChooseC = false;  
192 - this.isChooseA = false;  
193 - this.province = index;  
194 - this.citys = citys[index];  
195 - this.tabsIndex = 1;  
196 - },  
197 - cityChange(index) {  
198 - this.isChooseC = true;  
199 - this.isChooseA = false;  
200 - this.city = index;  
201 - this.areas = areas[this.province][index];  
202 - this.tabsIndex = 2;  
203 - },  
204 - areaChange(index) {  
205 - this.isChooseA = true;  
206 - this.area = index;  
207 - let result = {};  
208 - result.province = this.provinces[this.province];  
209 - result.city = this.citys[this.city];  
210 - result.area = this.areas[this.area];  
211 - this.$emit('city-change', result);  
212 - this.close();  
213 - }  
214 - } 70 + name: 'u-city-select',
  71 + props: {
  72 + // 通过双向绑定控制组件的弹出与收起
  73 + modelValue: {
  74 + type: Boolean,
  75 + default: false
  76 + },
  77 + // 默认显示的地区,可传类似["河北省", "秦皇岛市", "北戴河区"]
  78 + defaultRegion: {
  79 + type: Array,
  80 + default() {
  81 + return [];
  82 + }
  83 + },
  84 + // 默认显示地区的编码,defaultRegion和areaCode同时存在,areaCode优先,可传类似["13", "1303", "130304"]
  85 + areaCode: {
  86 + type: Array,
  87 + default() {
  88 + return [];
  89 + }
  90 + },
  91 + // 是否允许通过点击遮罩关闭Picker
  92 + maskCloseAble: {
  93 + type: Boolean,
  94 + default: true
  95 + },
  96 + // 弹出的z-index值
  97 + zIndex: {
  98 + type: [String, Number],
  99 + default: 0
  100 + }
  101 + },
  102 + data() {
  103 + return {
  104 + cityValue: "",
  105 + isChooseP: true, //默认已选择省份
  106 + province: 0, //湖南省的索引
  107 + provinces: provinces,
  108 + isChooseC: true, //默认已选择城市
  109 + city: 0, //长沙市的索引
  110 + citys: citys[0], //湖南省的城市列表
  111 + isChooseA: false, //是否已经选择了区
  112 + area: 0, //区级下标
  113 + areas: areas[0][0], //长沙市的区域列表
  114 + tabsIndex: 1, //默认从城市开始
  115 + }
  116 + },
  117 + mounted() {
  118 + this.init();
  119 + },
  120 + computed: {
  121 + // 过滤城市列表,只保留长沙市
  122 + filteredCitys() {
  123 + // 只保留"长沙市",value为"4301"
  124 + return this.citys.filter(city => city.label === "长沙市" || city.value === "4301");
  125 + },
  126 + isChange() {
  127 + return this.tabsIndex > 1;
  128 + },
  129 + genTabsList() {
  130 + let tabsList = [{
  131 + name: "长沙市"
  132 + }, {
  133 + name: "请选择"
  134 + }];
  135 + if (this.isChooseA) {
  136 + tabsList[1]['name'] = this.areas[this.area]['label'];
  137 + }
  138 + return tabsList;
  139 + },
  140 + uZIndex() {
  141 + // 如果用户有传递z-index值,优先使用
  142 + return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
  143 + }
  144 + },
  145 + emits: ['city-change'],
  146 + methods: {
  147 + init() {
  148 + if (this.areaCode.length >= 2) {
  149 + // 跳过省份设置,直接设置区域
  150 + this.setArea("", this.areaCode[2]);
  151 + } else if (this.defaultRegion.length >= 2) {
  152 + // 跳过省份和城市设置,直接设置区域
  153 + this.setArea(this.defaultRegion[2], "");
  154 + };
  155 + },
  156 + setArea(label = "", value = "") {
  157 + this.areas.map((v, k) => {
  158 + if (value ? v.value == value : v.label == label) {
  159 + this.isChooseA = true;
  160 + this.area = k;
  161 + }
  162 + })
  163 + },
  164 + close() {
  165 + this.$emit('update:modelValue', false);
  166 + },
  167 + tabsChange(index) {
  168 + this.tabsIndex = index;
  169 + },
  170 + areaChange(index) {
  171 + this.isChooseA = true;
  172 + this.area = index;
  173 + let result = {};
  174 + result.province = this.provinces[this.province];
  175 + result.city = this.filteredCitys[this.city];
  176 + result.area = this.areas[this.area];
  177 + this.$emit('city-change', result);
  178 + this.close();
  179 + }
  180 + }
215 181
216 } 182 }
217 </script> 183 </script>
218 -<style lang="scss">  
219 -.area-box {  
220 - width: 100%;  
221 - overflow: hidden;  
222 - height: 800rpx; 184 +<style lang="scss">.area-box {
  185 + width: 100%;
  186 + overflow: hidden;
  187 + height: 800rpx;
223 188
224 - >view {  
225 - width: 150%;  
226 - transition: transform 0.3s ease-in-out 0s;  
227 - transform: translateX(0); 189 + >view {
  190 + width: 100%; /* 修改宽度以适应两列布局 */
  191 + transition: transform 0.3s ease-in-out 0s;
  192 + transform: translateX(0);
228 193
229 - &.change {  
230 - transform: translateX(-33.3333333%);  
231 - }  
232 - } 194 + &.change {
  195 + transform: translateX(-50%); /* 修改为50%偏移量 */
  196 + }
  197 + }
233 198
234 - .area-item {  
235 - width: 33.3333333%;  
236 - height: 800rpx;  
237 - } 199 + .area-item {
  200 + width: 50%; /* 每项占50%宽度 */
  201 + height: 800rpx;
  202 + }
238 } 203 }
239 </style> 204 </style>
garbage-removal/src/pages/home-info/clean/company-detail/index.vue
@@ -133,25 +133,43 @@ const handleContactClick = (val) =&gt; { @@ -133,25 +133,43 @@ const handleContactClick = (val) =&gt; {
133 } 133 }
134 onLoad((options) => { 134 onLoad((options) => {
135 let companyId; 135 let companyId;
136 - if (options.companyObj && options.userAddress && options.tel) {  
137 - companyInfo.value = JSON.parse(options.companyObj);  
138 - userAddress.value = JSON.parse(options.userAddress); 136 + // 首先处理companyObj,确保公司信息能够显示
  137 + if (options.companyObj) {
  138 + try {
  139 + companyInfo.value = JSON.parse(options.companyObj);
  140 + initData(companyInfo.value);
  141 + companyId = companyInfo.value.id;
  142 + } catch (e) {
  143 + console.error('解析companyObj失败:', e);
  144 + }
  145 + }
  146 +
  147 + // 然后处理其他参数,即使失败也不影响公司信息显示
  148 + if (options.tel) {
139 tel.value = options.tel; 149 tel.value = options.tel;
140 - initData(companyInfo.value);  
141 - companyId = companyInfo.value.id  
142 } 150 }
  151 +
  152 + if (options.userAddress) {
  153 + try {
  154 + userAddress.value = JSON.parse(options.userAddress);
  155 + } catch (e) {
  156 + console.error('解析userAddress失败:', e);
  157 + // 可以设置默认值或空对象
  158 + userAddress.value = {};
  159 + }
  160 + }
  161 +
  162 + // 如果有companyId参数,从服务器获取公司信息
143 if (options.companyId) { 163 if (options.companyId) {
144 - companyId = options.companyId 164 + companyId = options.companyId;
145 queryEnterpriseById(companyId).then(res => { 165 queryEnterpriseById(companyId).then(res => {
146 - companyInfo.value = res.data.data 166 + companyInfo.value = res.data.data;
147 initData(companyInfo.value); 167 initData(companyInfo.value);
148 - }) 168 + }).catch(err => {
  169 + console.error('获取公司信息失败:', err);
  170 + });
149 } 171 }
150 -  
151 - // queryCarList({ companyId: companyId }).then(res => {  
152 - // carList.value = res.data.rows  
153 - // })  
154 -}) 172 +});
155 173
156 const handleCleanGarbage = (companyObj, tel, userAddress) => { 174 const handleCleanGarbage = (companyObj, tel, userAddress) => {
157 uni.$u.route({ 175 uni.$u.route({
garbage-removal/src/pages/home-info/clean/index.vue
@@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
50 <view> 50 <view>
51 <image :src="combinationImagePath(car)" mode="widthFix"></image> 51 <image :src="combinationImagePath(car)" mode="widthFix"></image>
52 </view> 52 </view>
53 - <view><text style="color:#909399;font-size: 14px;">{{car.remark}}</text></view> 53 + <view><text style="color:#909399;font-size: 12px;">{{car.remark}}</text></view>
54 </swiper-item> 54 </swiper-item>
55 </swiper> 55 </swiper>
56 </view> 56 </view>
@@ -59,13 +59,14 @@ @@ -59,13 +59,14 @@
59 <view class="company-clean-container-car-main-content-type-price-area"> 59 <view class="company-clean-container-car-main-content-type-price-area">
60 <text style="color: red;">*</text>车辆容积: 60 <text style="color: red;">*</text>车辆容积:
61 </view> 61 </view>
62 - <view style="width:100%;display:flex; color:#909399; align-items: center; gap: 2rpx;"> 62 + <view style="display:flex; color:#909399; align-items: center; gap: 2rpx; width: auto;">
63 <myPiker 63 <myPiker
64 :parentValue="containerVolume" 64 :parentValue="containerVolume"
65 :title="'车辆容积'" 65 :title="'车辆容积'"
66 @change="handleContainerVolumeChange" 66 @change="handleContainerVolumeChange"
67 :array="containerVolumeList"> 67 :array="containerVolumeList">
68 </myPiker> 68 </myPiker>
  69 + 方
69 </view> 70 </view>
70 </view> 71 </view>
71 72
@@ -134,7 +135,7 @@ @@ -134,7 +135,7 @@
134 <!-- </view>--> 135 <!-- </view>-->
135 <!-- </view>--> 136 <!-- </view>-->
136 137
137 - 138 +
138 <view v-if="paramFrom.garInCarStore" class="company-in-car-store-box-info"> 139 <view v-if="paramFrom.garInCarStore" class="company-in-car-store-box-info">
139 <view class="company-clean-container-site-image-info-input-remark-box"> 140 <view class="company-clean-container-site-image-info-input-remark-box">
140 <u--textarea v-model="paramFrom.remark" placeholder="请填写限制高度(米)"></u--textarea> 141 <u--textarea v-model="paramFrom.remark" placeholder="请填写限制高度(米)"></u--textarea>
@@ -145,6 +146,7 @@ @@ -145,6 +146,7 @@
145 </view> 146 </view>
146 <view class="company-clean-container-car-main-content-prompt"> 147 <view class="company-clean-container-car-main-content-prompt">
147 温馨提示:垃圾类型不符合,企业有权拒绝清运。 148 温馨提示:垃圾类型不符合,企业有权拒绝清运。
  149 + 车辆能否进入地下车库请与运输企业确认。
148 </view> 150 </view>
149 </view> 151 </view>
150 </view> 152 </view>
@@ -368,6 +370,7 @@ @@ -368,6 +370,7 @@
368 370
369 garCarNumberCount.value = va; 371 garCarNumberCount.value = va;
370 } 372 }
  373 +
371 /** 374 /**
372 * 初始化信息 375 * 初始化信息
373 */ 376 */
@@ -409,13 +412,13 @@ @@ -409,13 +412,13 @@
409 garCarInfoList.value = res.data.rows; 412 garCarInfoList.value = res.data.rows;
410 if (garCarInfoList.value[0]) { 413 if (garCarInfoList.value[0]) {
411 carName.value = garCarInfoList.value[0].carType; 414 carName.value = garCarInfoList.value[0].carType;
412 - containerVolume.value = garCarInfoList.value[0].containerVolume +"方"; 415 + containerVolume.value = garCarInfoList.value[0].containerVolume;
413 } 416 }
414 417
415 const volumeSet = new Set(); 418 const volumeSet = new Set();
416 garCarInfoList.value.forEach(car => { 419 garCarInfoList.value.forEach(car => {
417 if (car.containerVolume) { 420 if (car.containerVolume) {
418 - volumeSet.add(car.containerVolume +"方"); 421 + volumeSet.add(car.containerVolume);
419 } 422 }
420 }); 423 });
421 containerVolumeList.value = Array.from(volumeSet); 424 containerVolumeList.value = Array.from(volumeSet);
@@ -454,7 +457,7 @@ @@ -454,7 +457,7 @@
454 fileList.value = []; 457 fileList.value = [];
455 } 458 }
456 459
457 - 460 +
458 console.log("1",fileList.value); 461 console.log("1",fileList.value);
459 let fileListLen = fileList.value.length; 462 let fileListLen = fileList.value.length;
460 463
@@ -466,8 +469,8 @@ @@ -466,8 +469,8 @@
466 }); 469 });
467 }); 470 });
468 471
469 -  
470 - 472 +
  473 +
471 // 将blob转为file对象的方法 474 // 将blob转为file对象的方法
472 function blobToFile(blob, fileName) { 475 function blobToFile(blob, fileName) {
473 return new File([blob], fileName, { 476 return new File([blob], fileName, {
@@ -484,6 +487,7 @@ @@ -484,6 +487,7 @@
484 // 上传file对象 487 // 上传file对象
485 let requestPath = import.meta.env.VITE_BASE_URL + import.meta.env 488 let requestPath = import.meta.env.VITE_BASE_URL + import.meta.env
486 .VITE_BASE_FILE_UPLOAD_PREFIX; 489 .VITE_BASE_FILE_UPLOAD_PREFIX;
  490 + console.log(requestPath+"原神");
487 uploadFilePromise(requestPath, fileN).then(result => { 491 uploadFilePromise(requestPath, fileN).then(result => {
488 let item = fileList.value[fileListLen]; 492 let item = fileList.value[fileListLen];
489 fileList.value.splice(fileListLen, 1, { 493 fileList.value.splice(fileListLen, 1, {
@@ -779,7 +783,7 @@ @@ -779,7 +783,7 @@
779 } 783 }
780 784
781 .swiperHeight1 { 785 .swiperHeight1 {
782 - height: 280px; 786 + height: 300px;
783 text-align: center; 787 text-align: center;
784 justify-content: center; 788 justify-content: center;
785 } 789 }
@@ -791,7 +795,7 @@ @@ -791,7 +795,7 @@
791 } 795 }
792 796
793 .swiperHeight3 { 797 .swiperHeight3 {
794 - height: 310px; 798 + height: 300px;
795 text-align: center; 799 text-align: center;
796 justify-content: center; 800 justify-content: center;
797 } 801 }
@@ -918,24 +922,26 @@ @@ -918,24 +922,26 @@
918 word-break: break-all; 922 word-break: break-all;
919 } 923 }
920 924
921 - .company-clean-container-car-main-content-type {  
922 - margin-top: $custom-marin-bottom;  
923 - margin-bottom: $custom-marin-bottom;  
924 - display: flex;  
925 - justify-content: space-between;  
926 - border-radius: $custom-border-radio;  
927 - // background-color: $u-info-light;  
928 - box-sizing: border-box;  
929 -  
930 - .company-clean-container-car-main-content-type-price-area {  
931 - display: flex;  
932 - justify-content: flex-start;  
933 - align-items: center;  
934 - color: $u-info;  
935 - white-space: nowrap;  
936 - width: 100%;  
937 - }  
938 - } 925 + .company-clean-container-car-main-content-type {
  926 + margin-top: $custom-marin-bottom;
  927 + margin-bottom: $custom-marin-bottom;
  928 + display: flex;
  929 + justify-content: flex-start; /* 将space-between改为flex-start */
  930 + border-radius: $custom-border-radio;
  931 + // background-color: $u-info-light;
  932 + box-sizing: border-box;
  933 +
  934 + .company-clean-container-car-main-content-type-price-area {
  935 + display: flex;
  936 + justify-content: flex-start;
  937 + align-items: center;
  938 + color: $u-info;
  939 + white-space: nowrap;
  940 + // width: 100%; /* 已经移除 */
  941 + flex-shrink: 0; /* 确保标签不会被压缩 */
  942 + margin-right: 20rpx; /* 保持右边距 */
  943 + }
  944 + }
939 945
940 .company-clean-container-car-main-content-number { 946 .company-clean-container-car-main-content-number {
941 display: flex; 947 display: flex;
garbage-removal/src/pages/home/index.vue
@@ -131,7 +131,7 @@ @@ -131,7 +131,7 @@
131 131
132 <script setup> 132 <script setup>
133 import { queryAddress } from '@/apis/address.js'; 133 import { queryAddress } from '@/apis/address.js';
134 -import { queryEnterpriseList } from '@/apis/company.js'; 134 +import { queryEnterpriseList ,queryCompaniesByEnergyType } from '@/apis/company.js';
135 import { queryRole } from "@/apis/user"; 135 import { queryRole } from "@/apis/user";
136 import { useMainStore } from "@/stores/index.js"; 136 import { useMainStore } from "@/stores/index.js";
137 import { onLoad, onShow } from '@dcloudio/uni-app'; 137 import { onLoad, onShow } from '@dcloudio/uni-app';
@@ -163,7 +163,7 @@ const addressInfo = ref() @@ -163,7 +163,7 @@ const addressInfo = ref()
163 const sortValue = ref(0) 163 const sortValue = ref(0)
164 const registrationAreaValue = ref('') 164 const registrationAreaValue = ref('')
165 const registrationAreaLabel = ref('所属区域') 165 const registrationAreaLabel = ref('所属区域')
166 -const sortLabel = ref('排序') 166 +const sortLabel = ref('距离优先')
167 const carTypeValue = ref('') 167 const carTypeValue = ref('')
168 const carTypeRealValue = ref('') 168 const carTypeRealValue = ref('')
169 const dropdownOptions = ref([ 169 const dropdownOptions = ref([
@@ -208,9 +208,15 @@ const dropdownOptions = ref([ @@ -208,9 +208,15 @@ const dropdownOptions = ref([
208 value: '宁乡市' 208 value: '宁乡市'
209 } 209 }
210 ], [{ 210 ], [{
211 - label: '暂未开放',  
212 - value: '暂未开放',  
213 - },] 211 + label: '轻型车辆',
  212 + value: '11',
  213 + },{
  214 + label: '中型车辆',
  215 + value: '12',
  216 + },{
  217 + label: '重型车辆',
  218 + value: '13',
  219 + }]
214 , [{ 220 , [{
215 label: '距离优先', 221 label: '距离优先',
216 value: 0, 222 value: 0,
@@ -279,7 +285,7 @@ const handleDropdownSortChange = (val) =&gt; { @@ -279,7 +285,7 @@ const handleDropdownSortChange = (val) =&gt; {
279 if (selectedItem) { 285 if (selectedItem) {
280 sortLabel.value = selectedItem.label; 286 sortLabel.value = selectedItem.label;
281 } else { 287 } else {
282 - sortLabel.value = '排序'; // 默认标签 288 + sortLabel.value = '距离优先'; // 默认标签
283 } 289 }
284 290
285 sortValue.value = val; 291 sortValue.value = val;
@@ -313,6 +319,11 @@ const handleDropdownCarChange = (val) =&gt; { @@ -313,6 +319,11 @@ const handleDropdownCarChange = (val) =&gt; {
313 loadCompanyList() 319 loadCompanyList()
314 return 320 return
315 } 321 }
  322 + // 查找选中项的完整对象
  323 + const selectedItem = dropdownOptions.value[1].find(item => item.value === val);
  324 + if (selectedItem) {
  325 + carTypeValue.value = selectedItem.label;
  326 + }
316 carTypeRealValue.value = val; 327 carTypeRealValue.value = val;
317 // 清除缓存 328 // 清除缓存
318 companyListCache.value.clear(); 329 companyListCache.value.clear();
@@ -520,9 +531,9 @@ const initData = () =&gt; { @@ -520,9 +531,9 @@ const initData = () =&gt; {
520 } 531 }
521 532
522 // 新增方法:一次性加载所有公司数据(带缓存) 533 // 新增方法:一次性加载所有公司数据(带缓存)
523 -const loadCompanyList = () => {  
524 - // 生成缓存键  
525 - const cacheKey = `${sortValue.value}-${registrationAreaValue.value}-${carTypeValue.value}-${userType.value}-${searchKeyword.value}`; 534 +const loadCompanyList = async () => {
  535 + // 生成缓存键 - 添加carTypeRealValue.value确保不同车辆类型选择能正确缓存
  536 + const cacheKey = `${sortValue.value}-${registrationAreaValue.value}-${carTypeValue.value}-${carTypeRealValue.value}-${userType.value}-${searchKeyword.value}`;
526 537
527 // 检查是否有缓存 538 // 检查是否有缓存
528 if (companyListCache.value.has(cacheKey)) { 539 if (companyListCache.value.has(cacheKey)) {
@@ -532,13 +543,14 @@ const loadCompanyList = () =&gt; { @@ -532,13 +543,14 @@ const loadCompanyList = () =&gt; {
532 } 543 }
533 544
534 let userTypeValue=0; 545 let userTypeValue=0;
535 - if(userType == '用户'){ 546 + if(userType.value == '用户') { // 修复:使用userType.value而不是userType
536 userTypeValue=1; 547 userTypeValue=1;
537 - }else if(userType.value == '清运车辆驾驶员'){ 548 + } else if(userType.value == '清运车辆驾驶员') {
538 userTypeValue=2; 549 userTypeValue=2;
539 - }else if(userType.value == '运输企业负责人'){ 550 + } else if(userType.value == '运输企业负责人') {
540 userTypeValue=3; 551 userTypeValue=3;
541 } 552 }
  553 +
542 let query = { 554 let query = {
543 companyType: 1, 555 companyType: 1,
544 pageNum: 1, 556 pageNum: 1,
@@ -546,25 +558,45 @@ const loadCompanyList = () =&gt; { @@ -546,25 +558,45 @@ const loadCompanyList = () =&gt; {
546 orderByColumn: sortValue.value, 558 orderByColumn: sortValue.value,
547 registrationArea: registrationAreaValue.value, 559 registrationArea: registrationAreaValue.value,
548 searchValue: carTypeValue.value, 560 searchValue: carTypeValue.value,
549 - userTypeValue:userTypeValue,  
550 - userType:userType.value, 561 + userTypeValue: userTypeValue,
  562 + userType: userType.value,
551 name: searchKeyword.value 563 name: searchKeyword.value
552 } 564 }
553 - // 查询公司信息  
554 - queryEnterpriseList(query).then(res => {  
555 - console.log('获取到的公司列表数据:', res); 565 +
  566 + try {
  567 + // 获取所有公司列表 - 返回List<对象>,公司名是name
  568 + const enterpriseRes = await queryEnterpriseList(query);
  569 + console.log('获取到的公司列表数据:', enterpriseRes);
556 570
557 // 直接设置公司列表数据 571 // 直接设置公司列表数据
558 - const pageData = res.data.data;  
559 - const list = pageData.list || [];  
560 - companyList.value = list; 572 + const pageData = enterpriseRes.data.data;
  573 + let allCompanies = pageData.list || [];
  574 +
  575 + // 如果选择了车辆类型,则根据能源类型筛选公司
  576 + if (carTypeRealValue.value) {
  577 + // 根据当前选择的车辆类型获取可筛选公司列表 - 返回List<String>
  578 + const energyTypeRes = await queryCompaniesByEnergyType(carTypeRealValue.value);
  579 + console.log('获取到的可筛选公司名称列表:', energyTypeRes);
  580 +
  581 + // 获取可筛选的公司名称列表
  582 + const filterCompanyNames = energyTypeRes.data.data || [];
  583 + console.log('可筛选的公司名称:', filterCompanyNames);
  584 +
  585 + // 筛选出同时存在于两个列表中的公司
  586 + allCompanies = allCompanies.filter(company => {
  587 + return filterCompanyNames.includes(company.name);
  588 + });
  589 + }
  590 +
  591 + companyList.value = allCompanies;
  592 + console.log('最终筛选后的公司列表:', allCompanies);
561 593
562 // 缓存数据 594 // 缓存数据
563 - companyListCache.value.set(cacheKey, list);  
564 - }).catch(err => { 595 + companyListCache.value.set(cacheKey, allCompanies);
  596 + } catch (err) {
565 console.error('查询公司列表失败:', err); 597 console.error('查询公司列表失败:', err);
566 companyList.value = []; 598 companyList.value = [];
567 - }) 599 + }
568 } 600 }
569 601
570 // 删除原有的queryList方法 602 // 删除原有的queryList方法
@@ -812,6 +844,9 @@ const loadCompanyList = () =&gt; { @@ -812,6 +844,9 @@ const loadCompanyList = () =&gt; {
812 .company-list-header-left { 844 .company-list-header-left {
813 text-align: center; 845 text-align: center;
814 margin-bottom: 15rpx; 846 margin-bottom: 15rpx;
  847 + .sort-default-text {
  848 + text-align: left;
  849 + }
815 } 850 }
816 851
817 .company-list-header-right { 852 .company-list-header-right {
garbage-removal/src/pages/login/code.vue
1 -  
2 <template> 1 <template>
3 <view class="wrap"> 2 <view class="wrap">
4 <view class="key-input"> 3 <view class="key-input">
@@ -6,28 +5,17 @@ @@ -6,28 +5,17 @@
6 5
7 <!-- 登录方式切换 --> 6 <!-- 登录方式切换 -->
8 <view class="login-type-switch"> 7 <view class="login-type-switch">
9 - <text  
10 - :class="{ active: loginType === 'code' }"  
11 - @click="switchLoginType('code')"  
12 - >  
13 - 验证码登录  
14 - </text> 8 + <!-- 隐藏验证码登录选项 -->
15 <text 9 <text
16 :class="{ active: loginType === 'password' }" 10 :class="{ active: loginType === 'password' }"
17 @click="switchLoginType('password')" 11 @click="switchLoginType('password')"
18 > 12 >
19 账号密码登录 13 账号密码登录
20 </text> 14 </text>
21 -<!-- <text-->  
22 -<!-- :class="{ active: loginType === 'nickname' }"-->  
23 -<!-- @click="switchLoginType('nickname')"-->  
24 -<!-- >-->  
25 -<!-- 账号密码登录-->  
26 -<!-- </text>-->  
27 </view> 15 </view>
28 16
29 <!-- 手机号输入 --> 17 <!-- 手机号输入 -->
30 - <view class="input-wrapper" v-if="loginType !== 'nickname'"> 18 + <view class="input-wrapper">
31 <u-icon name="account" size="36" color="#909399" class="input-icon"></u-icon> 19 <u-icon name="account" size="36" color="#909399" class="input-icon"></u-icon>
32 <input 20 <input
33 class="login-input" 21 class="login-input"
@@ -38,24 +26,22 @@ @@ -38,24 +26,22 @@
38 /> 26 />
39 </view> 27 </view>
40 28
41 - <!-- 验证码登录 -->  
42 - <view v-if="loginType === 'code'">  
43 - <view class="tips">验证码已发送至 +{{ startIphoneNumber || iphoneNumber }}</view>  
44 - <u-message-input  
45 - :value="codeValue"  
46 - :focus="true"  
47 - @change="handleCodeChange"  
48 - @finish="finish"  
49 - mode="bottomLine"  
50 - :maxlength="maxlength"  
51 - ></u-message-input>  
52 - <text v-if="verifyFlag" class="error">验证码错误,请重新输入</text>  
53 - <view class="captcha">  
54 - <text :class="{ noCaptcha: show }" @tap="getCaptcha">获取验证码</text>  
55 - <text :class="{ regain: !show }" v-if="!show">{{ second }}秒后重新获取</text> 29 + <!-- 密码登录 -->
  30 + <view v-if="loginType === 'password'">
  31 + <view class="input-wrapper">
  32 + <u-icon name="lock" size="36" color="#909399" class="input-icon"></u-icon>
  33 + <input
  34 + class="login-input"
  35 + type="password"
  36 + v-model="password"
  37 + placeholder="请输入密码"
  38 + placeholder-class="placeholder-style"
  39 + />
56 </view> 40 </view>
  41 + <button @tap="loginWithPassword" class="login-btn">登录</button>
57 </view> 42 </view>
58 43
  44 + <!-- 昵称登录(如果需要保留) -->
59 <view v-else-if="loginType === 'nickname'"> 45 <view v-else-if="loginType === 'nickname'">
60 <view class="input-wrapper"> 46 <view class="input-wrapper">
61 <u-icon name="account" size="36" color="#909399" class="input-icon"></u-icon> 47 <u-icon name="account" size="36" color="#909399" class="input-icon"></u-icon>
@@ -80,23 +66,8 @@ @@ -80,23 +66,8 @@
80 <button @tap="loginWithUsername" class="login-btn">登录</button> 66 <button @tap="loginWithUsername" class="login-btn">登录</button>
81 </view> 67 </view>
82 68
83 - <!-- 密码登录 -->  
84 - <view v-else>  
85 - <view class="input-wrapper">  
86 - <u-icon name="lock" size="36" color="#909399" class="input-icon"></u-icon>  
87 - <input  
88 - class="login-input"  
89 - type="password"  
90 - v-model="password"  
91 - placeholder="请输入密码"  
92 - placeholder-class="placeholder-style"  
93 - />  
94 - </view>  
95 - <button @tap="loginWithPassword" class="login-btn">登录</button>  
96 - </view>  
97 -  
98 <view class="alternative"> 69 <view class="alternative">
99 -<!-- <text class="link" @click="toRegister">立即注册</text>--> 70 + <!-- <text class="link" @click="toRegister">立即注册</text>-->
100 </view> 71 </view>
101 </view> 72 </view>
102 </view> 73 </view>
@@ -112,7 +83,8 @@ const { proxy } = getCurrentInstance(); @@ -112,7 +83,8 @@ const { proxy } = getCurrentInstance();
112 const store = useMainStore(); 83 const store = useMainStore();
113 84
114 // 登录方式:code-验证码登录,password-密码登录 85 // 登录方式:code-验证码登录,password-密码登录
115 -const loginType = ref('code'); 86 +// 将默认登录方式改为密码登录
  87 +const loginType = ref('password');
116 88
117 // 验证码登录相关 89 // 验证码登录相关
118 const verifyFlag = ref(false); 90 const verifyFlag = ref(false);
garbage-removal/src/pages/order-info/order-disposal/scan-detail/index.vue
@@ -63,7 +63,7 @@ @@ -63,7 +63,7 @@
63 运距 63 运距
64 </view> 64 </view>
65 <view class="scan-car-num-content"> 65 <view class="scan-car-num-content">
66 - {{ details.transportDistance }} 66 + {{ details.transportDistance || "0 公里" }}
67 </view> 67 </view>
68 </view> 68 </view>
69 <!-- <view class="scan-upload-fill-image-box"> 69 <!-- <view class="scan-upload-fill-image-box">
@@ -96,7 +96,8 @@ @@ -96,7 +96,8 @@
96 } from '@/apis/common.js'; 96 } from '@/apis/common.js';
97 import { 97 import {
98 askTransport, 98 askTransport,
99 - scanDetail 99 + scanDetail,
  100 + queryMileage
100 } from '@/apis/order.js'; 101 } from '@/apis/order.js';
101 import { 102 import {
102 onLoad 103 onLoad
@@ -127,59 +128,90 @@ @@ -127,59 +128,90 @@
127 longitude: ll[0], 128 longitude: ll[0],
128 latitude: ll[1] 129 latitude: ll[1]
129 }; 130 };
130 - // 获取定位后计算运距  
131 - calculateDistance();  
132 } 131 }
133 - 132 +
134 // 生命周期处理 133 // 生命周期处理
135 onMounted(() => { 134 onMounted(() => {
136 - // 挂载全局回调  
137 - window.takeLocationCallBack = takeLocalCallBack 135 + // 页面加载完成后直接计算运距
  136 + setTimeout(() => {
  137 + calculateDistance();
  138 + }, 500);
138 }) 139 })
139 -  
140 - onLoad((options) => {  
141 - // 获取定位信息  
142 - takeLocation();  
143 - });  
144 -  
145 - // 计算运距函数  
146 - const calculateDistance = () => {  
147 - // 检查是否有起点经纬度信息  
148 - if (!details.value.garLatitude || !details.value.garLongitude) {  
149 - return;  
150 - }  
151 -  
152 - const startLat= details.value.garLatitude;  
153 - const startLng = details.value.garLongitude;  
154 -  
155 -  
156 -  
157 - const endLat = location.value.latitude; // 终点纬度(当前定位)  
158 - const endLng = location.value.longitude; // 终点经度(当前定位)  
159 140
160 - // 检查是否有终点经纬度  
161 - if (!endLat || !endLng) {  
162 - return;  
163 - }  
164 -  
165 - // 使用Haversine公式计算两点之间的距离(公里)  
166 - const R = 6371; // 地球半径(公里)  
167 - const dLat = (endLat - startLat) * Math.PI / 180;  
168 - const dLng = (endLng - startLng) * Math.PI / 180;  
169 - const a =  
170 - Math.sin(dLat/2) * Math.sin(dLat/2) +  
171 - Math.cos(startLat * Math.PI / 180) * Math.cos(endLat * Math.PI / 180) *  
172 - Math.sin(dLng/2) * Math.sin(dLng/2);  
173 - const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));  
174 - const distance = R * c; // 距离(公里)  
175 -  
176 - // 更新运距信息,保留两位小数  
177 - details.value.transportDistance = distance.toFixed(2) + ' 公里';  
178 - } 141 + // 计算运距函数 - 使用queryMileage接口
  142 + const calculateDistance = async () => {
  143 + // 检查是否有车牌号、分发时间和当前时间
  144 + if (!details.value.garHandlerCarCode || !details.value.garCreateTime) {
  145 + console.log("缺少必要信息:车牌号或分发时间");
  146 + return;
  147 + }
179 148
180 - const takeLocation = () => {  
181 - window.JsInterface.takeLocation();  
182 - } 149 + const startTime = details.value.garCreateTime; // 分发时间作为开始时间
  150 + const endTime = new Date().toISOString(); // 当前时间作为结束时间
  151 +
  152 + try {
  153 + // 调用queryMileage接口查询运距
  154 + const res = await queryMileage(details.value.garHandlerCarCode, startTime, endTime);
  155 +
  156 + if (res.data.code == 200) {
  157 + // 从接口返回的数据中提取运距信息
  158 + const mileageData = JSON.parse(res.data.data);
  159 + details.value.transportDistance = mileageData.mileage+ ' 公里'; // 米转公里
  160 +
  161 + // 使用接口返回的定位信息
  162 + if (mileageData.endLatitude && mileageData.endLongitude) {
  163 + location.value = {
  164 + latitude: mileageData.endLatitude,
  165 + longitude: mileageData.endLongitude
  166 + };
  167 + } else {
  168 + // 当接口返回的定位信息为空时,调用手机定位
  169 + console.log("接口返回的定位信息为空,尝试获取手机定位");
  170 + details.value.transportDistance = "1 公里";
  171 + getPhoneLocation();
  172 + }
  173 + } else {
  174 + console.log("获取运距失败:" + res.data.msg);
  175 + // 运距获取失败时,尝试获取手机定位
  176 + details.value.transportDistance = "1 公里";
  177 + getPhoneLocation();
  178 + }
  179 + } catch (error) {
  180 + console.error("调用运距接口出错:", error);
  181 + details.value.transportDistance = "1 公里";
  182 + // 接口调用异常时,尝试获取手机定位
  183 + getPhoneLocation();
  184 + }
  185 + };
  186 +
  187 + const getPhoneLocation = () => {
  188 + // 设置5秒超时
  189 + const timeout = setTimeout(() => {
  190 + uni.$u.toast('获取手机定位超时,请检查定位权限');
  191 + }, 5000);
  192 +
  193 + // 调用uni.getLocation获取手机GPS定位
  194 + uni.getLocation({
  195 + type: 'gcj02',
  196 + success: (res) => {
  197 + clearTimeout(timeout);
  198 + console.log('手机定位获取成功', res);
  199 + location.value = {
  200 + latitude: res.latitude,
  201 + longitude: res.longitude
  202 + };
  203 + uni.$u.toast('手机定位获取成功');
  204 + },
  205 + fail: (err) => {
  206 + clearTimeout(timeout);
  207 + console.error('手机定位获取失败', err);
  208 + uni.$u.toast('获取手机定位失败,请检查定位权限');
  209 + },
  210 + complete: () => {
  211 + clearTimeout(timeout);
  212 + }
  213 + });
  214 + };
183 215
184 216
185 const isNew = ref(false) 217 const isNew = ref(false)
@@ -289,8 +321,7 @@ @@ -289,8 +321,7 @@
289 // } 321 // }
290 322
291 if (typeof(location.value.latitude) === 'undefined') { 323 if (typeof(location.value.latitude) === 'undefined') {
292 - console.log('定位获取失败', );  
293 - uni.$u.toast("需要位置权限才能提交"); 324 + uni.$u.toast("没有获取到车辆定位信息!");
294 return; 325 return;
295 } 326 }
296 327
garbage-removal/src/pages/order-info/order-disposal/transport-detail/index.vue
@@ -47,7 +47,7 @@ @@ -47,7 +47,7 @@
47 收运清单 47 收运清单
48 </view> 48 </view>
49 <view v-if="dataGram.transportDetails" style="width: 100%;"> 49 <view v-if="dataGram.transportDetails" style="width: 100%;">
50 - <view v-for="(item, index) in dataGram.transportDetails" style="width: 100%; box-sizing: border-box;"> 50 + <view v-for="(item, index) in dataGram.transportDetails" style="width: 100%; box-sizing: border-box;" v-if="item.garHandlerCarCode != null">
51 <view class="transport-process-item" style="display: flex; width: 100%; margin: 20rpx 0; flex-wrap: nowrap; align-items: center;"> 51 <view class="transport-process-item" style="display: flex; width: 100%; margin: 20rpx 0; flex-wrap: nowrap; align-items: center;">
52 <view style="width: 80rpx; flex-shrink: 0; margin-right: 10rpx;"> 52 <view style="width: 80rpx; flex-shrink: 0; margin-right: 10rpx;">
53 <up-image :show-loading="true" :src="item.fillImage" width="80rpx" height="80rpx"></up-image> 53 <up-image :show-loading="true" :src="item.fillImage" width="80rpx" height="80rpx"></up-image>
garbage-removal/src/pages/order-info/order-driver/detail/index.vue
@@ -473,16 +473,16 @@ const handleOrder = (orderId) =&gt; { @@ -473,16 +473,16 @@ const handleOrder = (orderId) =&gt; {
473 473
474 const driverHandleOrder = (orderId) => { 474 const driverHandleOrder = (orderId) => {
475 queryErrType().then(res => { 475 queryErrType().then(res => {
476 - if (res.data.data >= 3 ) {  
477 - uni.$u.toast('异常趟次过多,已被限制接单!');  
478 - }else { 476 + // if (res.data.data >= 3 ) {
  477 + // uni.$u.toast('异常趟次过多,已被限制接单!');
  478 + // }else {
479 updateOrder({ garOrderId: orderId, handleType: 0 }).then(res => { 479 updateOrder({ garOrderId: orderId, handleType: 0 }).then(res => {
480 if (res.data.success) { 480 if (res.data.success) {
481 uni.$u.toast(res.data.data) 481 uni.$u.toast(res.data.data)
482 handleOrderDetail(orderId) 482 handleOrderDetail(orderId)
483 } 483 }
484 }) 484 })
485 - } 485 + // }
486 }) 486 })
487 } 487 }
488 488
garbage-removal/src/pages/order-info/order-driver/upload/index.vue
@@ -32,9 +32,10 @@ @@ -32,9 +32,10 @@
32 import { 32 import {
33 uploadFilePromise 33 uploadFilePromise
34 } from '@/apis/common.js'; 34 } from '@/apis/common.js';
35 - import {  
36 - uploadImageUrlByType  
37 - } from '@/apis/order.js'; 35 + import {
  36 + uploadImageUrlByType,
  37 + queryLatitudeLongitude
  38 + } from '@/apis/order.js';
38 import { 39 import {
39 onLoad 40 onLoad
40 } from '@dcloudio/uni-app'; 41 } from '@dcloudio/uni-app';
@@ -90,13 +91,24 @@ @@ -90,13 +91,24 @@
90 } 91 }
91 }, 5000); 92 }, 5000);
92 93
93 - // 获取定位信息  
94 - if (window.JsInterface && typeof window.JsInterface.takeLocation === 'function') {  
95 - window.JsInterface.takeLocation();  
96 - } else { 94 + // 获取车辆位置信息
  95 + queryLatitudeLongitude(carPlate.value).then(res => {
  96 + if (res.data.success) {
  97 + const data = res.data.data;
  98 + location.value = {
  99 + longitude: data.longitude,
  100 + latitude: data.latitude
  101 + };
  102 + uni.$u.toast("车辆位置获取成功");
  103 + } else {
  104 + uni.$u.toast("车辆位置获取失败");
  105 + }
  106 + }).catch(err => {
  107 + uni.$u.toast("车辆位置获取异常"+err);
  108 + console.error("获取车辆位置失败:", err);
  109 + }).finally(() => {
97 clearTimeout(timer); 110 clearTimeout(timer);
98 - uni.$u.toast("当前环境不支持定位功能");  
99 - } 111 + });
100 } 112 }
101 // 新增图片 113 // 新增图片
102 const afterRead = async (event) => { 114 const afterRead = async (event) => {
@@ -189,11 +201,6 @@ @@ -189,11 +201,6 @@
189 return 201 return
190 } 202 }
191 203
192 - if(typeof(location.value.latitude) === 'undefined'){  
193 - uni.$u.toast("需要位置权限才能提交");  
194 - return;  
195 - }  
196 -  
197 const userPhone = store.userPhone; 204 const userPhone = store.userPhone;
198 let params = { 205 let params = {
199 garOrderId: id, 206 garOrderId: id,
garbage-removal/src/pages/order-info/order-other/detail/index.vue
@@ -220,7 +220,7 @@ @@ -220,7 +220,7 @@
220 size="mini" 220 size="mini"
221 class="assign-button" 221 class="assign-button"
222 @click="assignTripToHandler(item)"> 222 @click="assignTripToHandler(item)">
223 - {{ item.garCarCount && item.garCarCount > 0 ? '修改' : '分配' }} 223 + {{ item.garCarCount && item.garCarCount > 0 ? '保存' : '分配' }}
224 </u-button> 224 </u-button>
225 <u-button 225 <u-button
226 type="error" 226 type="error"
@@ -525,6 +525,7 @@ const disposalAssigned = ref(false); // 添加这行,跟踪处置场所是否 @@ -525,6 +525,7 @@ const disposalAssigned = ref(false); // 添加这行,跟踪处置场所是否
525 const selectedDisposalSites = ref([]); 525 const selectedDisposalSites = ref([]);
526 // 新增:用于存储待分配的驾驶员列表 526 // 新增:用于存储待分配的驾驶员列表
527 const pendingDriverAssignments = ref({}) 527 const pendingDriverAssignments = ref({})
  528 +const pendingDisposalAssignments = ref({})
528 529
529 530
530 const isInTransit = (index) => { 531 const isInTransit = (index) => {
@@ -633,7 +634,7 @@ const isDriverAssigned = computed(() =&gt; { @@ -633,7 +634,7 @@ const isDriverAssigned = computed(() =&gt; {
633 const isDriverAndDisposalAssigned = () => { 634 const isDriverAndDisposalAssigned = () => {
634 // 直接使用已有的响应式变量来判断分配状态 635 // 直接使用已有的响应式变量来判断分配状态
635 const hasDrivers = driverAssigned.value || (pendingDriverAssignments.value && Object.keys(pendingDriverAssignments.value).length > 0); 636 const hasDrivers = driverAssigned.value || (pendingDriverAssignments.value && Object.keys(pendingDriverAssignments.value).length > 0);
636 - const hasDisposalSites = disposalAssigned.value; 637 + const hasDisposalSites = disposalAssigned.value || (pendingDisposalAssignments.value && Object.keys(pendingDisposalAssignments.value).length > 0);
637 638
638 return hasDrivers && hasDisposalSites; 639 return hasDrivers && hasDisposalSites;
639 }; 640 };
@@ -1113,7 +1114,7 @@ const handlerJumpOtherApp = (latitude, longitude, garCoordinate) =&gt; { @@ -1113,7 +1114,7 @@ const handlerJumpOtherApp = (latitude, longitude, garCoordinate) =&gt; {
1113 1114
1114 /** 1115 /**
1115 * 取消订单 1116 * 取消订单
1116 - * @param {*} orderId 1117 + * @param {*} orderId 订单id
1117 */ 1118 */
1118 const handleOderCancelClick = () => { 1119 const handleOderCancelClick = () => {
1119 cancelShow.value = true; 1120 cancelShow.value = true;
@@ -1172,72 +1173,162 @@ const handleEvaluate = (orderId, userType) =&gt; { @@ -1172,72 +1173,162 @@ const handleEvaluate = (orderId, userType) =&gt; {
1172 } 1173 }
1173 1174
1174 // 接收订单 1175 // 接收订单
  1176 +// 接收订单
1175 const handleOrder = (orderId) => { 1177 const handleOrder = (orderId) => {
1176 // 在开始运输前先分配驾驶员(如果有待分配的驾驶员) 1178 // 在开始运输前先分配驾驶员(如果有待分配的驾驶员)
1177 if (pendingDriverAssignments.value && Object.keys(pendingDriverAssignments.value).length > 0) { 1179 if (pendingDriverAssignments.value && Object.keys(pendingDriverAssignments.value).length > 0) {
1178 - let data = { 1180 + let driverData = {
1179 garOrderId: orderId, 1181 garOrderId: orderId,
1180 dispatchList: [] 1182 dispatchList: []
1181 } 1183 }
1182 for (const key in pendingDriverAssignments.value) { 1184 for (const key in pendingDriverAssignments.value) {
1183 - data.dispatchList.push({ 1185 + driverData.dispatchList.push({
1184 ...pendingDriverAssignments.value[key] 1186 ...pendingDriverAssignments.value[key]
1185 }); 1187 });
1186 } 1188 }
1187 1189
1188 - dispatchOrders(data).then(res => {  
1189 - if (res.data.success) { 1190 + dispatchOrders(driverData).then(driverRes => {
  1191 + if (driverRes.data.success) {
1190 // 清空待分配列表 1192 // 清空待分配列表
1191 pendingDriverAssignments.value = {}; 1193 pendingDriverAssignments.value = {};
1192 // 标记驾驶员已分配 1194 // 标记驾驶员已分配
1193 driverAssigned.value = true; 1195 driverAssigned.value = true;
1194 1196
1195 - // 然后更新订单状态为开始运输  
1196 - updateOrder({  
1197 - garOrderId: orderId,  
1198 - handleType: 0  
1199 - }).then(res => {  
1200 - if (res.data.success) {  
1201 - if (res.data.data === "订单已经被别人接受啦") {  
1202 - uni.$u.toast(res.data.data)  
1203 - uni.$u.route({  
1204 - type: "reLaunch",  
1205 - url: `pages/order/index`, 1197 + // 然后分配处置场所(如果有待分配的处置场所)
  1198 + if (pendingDisposalAssignments.value && Object.keys(pendingDisposalAssignments.value).length > 0) {
  1199 + let disposalData = {
  1200 + garOrderId: orderId,
  1201 + dispatchList: []
  1202 + }
  1203 + for (const key in pendingDisposalAssignments.value) {
  1204 + disposalData.dispatchList.push({
  1205 + ...pendingDisposalAssignments.value[key]
  1206 + });
  1207 + }
  1208 +
  1209 + dispatchDisposalOrders(disposalData).then(disposalRes => {
  1210 + if (disposalRes.data.success) {
  1211 + // 清空待分配列表
  1212 + pendingDisposalAssignments.value = {};
  1213 + // 标记处置场所已分配
  1214 + disposalAssigned.value = true;
  1215 +
  1216 + // 然后更新订单状态为开始运输
  1217 + updateOrder({
  1218 + garOrderId: orderId,
  1219 + handleType: 0
  1220 + }).then(res => {
  1221 + if (res.data.success) {
  1222 + if (res.data.data === "订单已经被别人接受啦") {
  1223 + uni.$u.toast(res.data.data)
  1224 + uni.$u.route({
  1225 + type: "reLaunch",
  1226 + url: `pages/order/index`,
  1227 + })
  1228 + } else {
  1229 + uni.$u.toast(res.data.data)
  1230 + handleOrderDetail(orderId)
  1231 + refreshOrderData()
  1232 + }
  1233 + }
1206 }) 1234 })
1207 } else { 1235 } else {
1208 - uni.$u.toast(res.data.data)  
1209 - handleOrderDetail(orderId)  
1210 - refreshOrderData() 1236 + uni.$u.toast("指定处置场所失败,请重试");
1211 } 1237 }
1212 - }  
1213 - }) 1238 + })
  1239 + } else {
  1240 + // 没有待分配的处置场所,直接更新订单状态为开始运输
  1241 + updateOrder({
  1242 + garOrderId: orderId,
  1243 + handleType: 0
  1244 + }).then(res => {
  1245 + if (res.data.success) {
  1246 + if (res.data.data === "订单已经被别人接受啦") {
  1247 + uni.$u.toast(res.data.data)
  1248 + uni.$u.route({
  1249 + type: "reLaunch",
  1250 + url: `pages/order/index`,
  1251 + })
  1252 + } else {
  1253 + uni.$u.toast(res.data.data)
  1254 + handleOrderDetail(orderId)
  1255 + refreshOrderData()
  1256 + }
  1257 + }
  1258 + })
  1259 + }
1214 } else { 1260 } else {
1215 uni.$u.toast("指定人员失败,请重试"); 1261 uni.$u.toast("指定人员失败,请重试");
1216 } 1262 }
1217 }) 1263 })
1218 } else { 1264 } else {
1219 - // 没有待分配的驾驶员,直接开始运输  
1220 - updateOrder({  
1221 - garOrderId: orderId,  
1222 - handleType: 0  
1223 - }).then(res => {  
1224 - if (res.data.success) {  
1225 - if (res.data.data === "订单已经被别人接受啦") {  
1226 - uni.$u.toast(res.data.data)  
1227 - uni.$u.route({  
1228 - type: "reLaunch",  
1229 - url: `pages/order/index`, 1265 + // 没有待分配的驾驶员,检查是否有待分配的处置场所
  1266 + if (pendingDisposalAssignments.value && Object.keys(pendingDisposalAssignments.value).length > 0) {
  1267 + let disposalData = {
  1268 + garOrderId: orderId,
  1269 + dispatchList: []
  1270 + }
  1271 + for (const key in pendingDisposalAssignments.value) {
  1272 + disposalData.dispatchList.push({
  1273 + ...pendingDisposalAssignments.value[key]
  1274 + });
  1275 + }
  1276 +
  1277 + dispatchDisposalOrders(disposalData).then(disposalRes => {
  1278 + if (disposalRes.data.success) {
  1279 + // 清空待分配列表
  1280 + pendingDisposalAssignments.value = {};
  1281 + // 标记处置场所已分配
  1282 + disposalAssigned.value = true;
  1283 +
  1284 + // 然后更新订单状态为开始运输
  1285 + updateOrder({
  1286 + garOrderId: orderId,
  1287 + handleType: 0
  1288 + }).then(res => {
  1289 + if (res.data.success) {
  1290 + if (res.data.data === "订单已经被别人接受啦") {
  1291 + uni.$u.toast(res.data.data)
  1292 + uni.$u.route({
  1293 + type: "reLaunch",
  1294 + url: `pages/order/index`,
  1295 + })
  1296 + } else {
  1297 + uni.$u.toast(res.data.data)
  1298 + handleOrderDetail(orderId)
  1299 + refreshOrderData()
  1300 + }
  1301 + }
1230 }) 1302 })
1231 } else { 1303 } else {
1232 - uni.$u.toast(res.data.data)  
1233 - handleOrderDetail(orderId)  
1234 - refreshOrderData() 1304 + uni.$u.toast("指定处置场所失败,请重试");
1235 } 1305 }
1236 - }  
1237 - }) 1306 + })
  1307 + } else {
  1308 + // 没有待分配的驾驶员和处置场所,直接开始运输
  1309 + updateOrder({
  1310 + garOrderId: orderId,
  1311 + handleType: 0
  1312 + }).then(res => {
  1313 + if (res.data.success) {
  1314 + if (res.data.data === "订单已经被别人接受啦") {
  1315 + uni.$u.toast(res.data.data)
  1316 + uni.$u.route({
  1317 + type: "reLaunch",
  1318 + url: `pages/order/index`,
  1319 + })
  1320 + } else {
  1321 + uni.$u.toast(res.data.data)
  1322 + handleOrderDetail(orderId)
  1323 + refreshOrderData()
  1324 + }
  1325 + }
  1326 + })
  1327 + }
1238 } 1328 }
1239 } 1329 }
1240 1330
  1331 +
1241 const currentStep = (step) => { 1332 const currentStep = (step) => {
1242 if (step > 2) { 1333 if (step > 2) {
1243 return step - 1; 1334 return step - 1;
@@ -1266,42 +1357,70 @@ const cleanStatus = (status) =&gt; { @@ -1266,42 +1357,70 @@ const cleanStatus = (status) =&gt; {
1266 const handleDisposalDispatchConfirm = (val) => { 1357 const handleDisposalDispatchConfirm = (val) => {
1267 console.log(val); 1358 console.log(val);
1268 if (!val) { 1359 if (!val) {
1269 - return  
1270 - }  
1271 - let data = {  
1272 - garOrderId: orderId.value,  
1273 - dispatchList: [] 1360 + return;
1274 } 1361 }
1275 1362
1276 - // 新增:存储选中的处理场所信息  
1277 - selectedDisposalSites.value = []; 1363 + // 判断是否是重新分配(订单状态为1)
  1364 + const isReassigning = dataGram.value?.garOrderHandlerStatus === 1;
1278 1365
1279 - for (const key in val) {  
1280 - data.dispatchList.push({  
1281 - ...val[key]  
1282 - }); 1366 + if (isReassigning) {
  1367 + // 如果是重新分配,直接调用接口分配处置场所
  1368 + let data = {
  1369 + garOrderId: orderId.value,
  1370 + dispatchList: []
  1371 + }
1283 1372
1284 - // 新增:提取处理场所信息  
1285 - selectedDisposalSites.value.push({  
1286 - companyName: val[key].companyName,  
1287 - contactName: val[key].personName,  
1288 - contactPhone: val[key].tel  
1289 - });  
1290 - }  
1291 - console.log(data);  
1292 - dispatchDisposalOrders(data).then(res => {  
1293 - if (res.data.success) {  
1294 - uni.$u.toast(res.data.msg)  
1295 - // 标记处置场所已分配  
1296 - disposalAssigned.value = true;  
1297 - // 检查是否两个任务都已完成  
1298 - // 立即刷新订单详情以确保分配信息得到保存  
1299 - handleOrderDetail(orderId.value);  
1300 - } else {  
1301 - uni.$u.toast("指定人员失败,请重试") 1373 + // 新增:存储选中的处理场所信息
  1374 + selectedDisposalSites.value = [];
  1375 +
  1376 + for (const key in val) {
  1377 + data.dispatchList.push({
  1378 + ...val[key]
  1379 + });
  1380 +
  1381 + // 新增:提取处理场所信息
  1382 + selectedDisposalSites.value.push({
  1383 + companyName: val[key].companyName,
  1384 + contactName: val[key].personName,
  1385 + contactPhone: val[key].tel
  1386 + });
1302 } 1387 }
1303 - clashDriverDispatchRef.value.close()  
1304 - }) 1388 + console.log(data);
  1389 + dispatchDisposalOrders(data).then(res => {
  1390 + if (res.data.success) {
  1391 + uni.$u.toast(res.data.msg)
  1392 + // 标记处置场所已分配
  1393 + disposalAssigned.value = true;
  1394 + // 检查是否两个任务都已完成
  1395 + // 立即刷新订单详情以确保分配信息得到保存
  1396 + handleOrderDetail(orderId.value);
  1397 + } else {
  1398 + uni.$u.toast("指定人员失败,请重试")
  1399 + }
  1400 + clashDisposalDispatchRef.value.close()
  1401 + })
  1402 + } else {
  1403 + // 初次分配,将待分配的处置场所存储起来,但不立即调用后端接口
  1404 + pendingDisposalAssignments.value = { ...val };
  1405 +
  1406 + // 新增:存储选中的处理场所信息
  1407 + selectedDisposalSites.value = [];
  1408 +
  1409 + for (const key in val) {
  1410 + // 新增:提取处理场所信息
  1411 + selectedDisposalSites.value.push({
  1412 + companyName: val[key].companyName,
  1413 + contactName: val[key].personName,
  1414 + contactPhone: val[key].tel
  1415 + });
  1416 + }
  1417 +
  1418 + // 显示提示信息
  1419 + uni.$u.toast("处置场所已选择,将在开始运输时分配");
  1420 +
  1421 + // 关闭弹窗
  1422 + clashDisposalDispatchRef.value.close();
  1423 + }
1305 } 1424 }
1306 1425
1307 1426
garbage-removal/src/pages/wode-info/wode-info-choose/index.vue
@@ -159,9 +159,6 @@ onLoad((options) =&gt; { @@ -159,9 +159,6 @@ onLoad((options) =&gt; {
159 const element = loginInfo[index]; 159 const element = loginInfo[index];
160 element.userName = userName; 160 element.userName = userName;
161 unitInfo.value[element.userType] = element 161 unitInfo.value[element.userType] = element
162 - console.log(unitInfo.value);  
163 -  
164 -  
165 } 162 }
166 let order = 999; 163 let order = 999;
167 let index = 0; 164 let index = 0;
garbage-removal/src/static/fonts/font_2225171_8kdcwk4po24.ttf 0 → 100644
No preview for this file type
garbage-removal/src/static/icon/font_4327805_dv0tbbt7hp7/demo.css deleted 100644 → 0
1 -/* Logo 字体 */  
2 -@font-face {  
3 - font-family: "iconfont logo";  
4 - src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');  
5 - src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),  
6 - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),  
7 - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),  
8 - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');  
9 -}  
10 -  
11 -.logo {  
12 - font-family: "iconfont logo";  
13 - font-size: 160px;  
14 - font-style: normal;  
15 - -webkit-font-smoothing: antialiased;  
16 - -moz-osx-font-smoothing: grayscale;  
17 -}  
18 -  
19 -/* tabs */  
20 -.nav-tabs {  
21 - position: relative;  
22 -}  
23 -  
24 -.nav-tabs .nav-more {  
25 - position: absolute;  
26 - right: 0;  
27 - bottom: 0;  
28 - height: 42px;  
29 - line-height: 42px;  
30 - color: #666;  
31 -}  
32 -  
33 -#tabs {  
34 - border-bottom: 1px solid #eee;  
35 -}  
36 -  
37 -#tabs li {  
38 - cursor: pointer;  
39 - width: 100px;  
40 - height: 40px;  
41 - line-height: 40px;  
42 - text-align: center;  
43 - font-size: 16px;  
44 - border-bottom: 2px solid transparent;  
45 - position: relative;  
46 - z-index: 1;  
47 - margin-bottom: -1px;  
48 - color: #666;  
49 -}  
50 -  
51 -  
52 -#tabs .active {  
53 - border-bottom-color: #f00;  
54 - color: #222;  
55 -}  
56 -  
57 -.tab-container .content {  
58 - display: none;  
59 -}  
60 -  
61 -/* 页面布局 */  
62 -.main {  
63 - padding: 30px 100px;  
64 - width: 960px;  
65 - margin: 0 auto;  
66 -}  
67 -  
68 -.main .logo {  
69 - color: #333;  
70 - text-align: left;  
71 - margin-bottom: 30px;  
72 - line-height: 1;  
73 - height: 110px;  
74 - margin-top: -50px;  
75 - overflow: hidden;  
76 - *zoom: 1;  
77 -}  
78 -  
79 -.main .logo a {  
80 - font-size: 160px;  
81 - color: #333;  
82 -}  
83 -  
84 -.helps {  
85 - margin-top: 40px;  
86 -}  
87 -  
88 -.helps pre {  
89 - padding: 20px;  
90 - margin: 10px 0;  
91 - border: solid 1px #e7e1cd;  
92 - background-color: #fffdef;  
93 - overflow: auto;  
94 -}  
95 -  
96 -.icon_lists {  
97 - width: 100% !important;  
98 - overflow: hidden;  
99 - *zoom: 1;  
100 -}  
101 -  
102 -.icon_lists li {  
103 - width: 100px;  
104 - margin-bottom: 10px;  
105 - margin-right: 20px;  
106 - text-align: center;  
107 - list-style: none !important;  
108 - cursor: default;  
109 -}  
110 -  
111 -.icon_lists li .code-name {  
112 - line-height: 1.2;  
113 -}  
114 -  
115 -.icon_lists .icon {  
116 - display: block;  
117 - height: 100px;  
118 - line-height: 100px;  
119 - font-size: 42px;  
120 - margin: 10px auto;  
121 - color: #333;  
122 - -webkit-transition: font-size 0.25s linear, width 0.25s linear;  
123 - -moz-transition: font-size 0.25s linear, width 0.25s linear;  
124 - transition: font-size 0.25s linear, width 0.25s linear;  
125 -}  
126 -  
127 -.icon_lists .icon:hover {  
128 - font-size: 100px;  
129 -}  
130 -  
131 -.icon_lists .svg-icon {  
132 - /* 通过设置 font-size 来改变图标大小 */  
133 - width: 1em;  
134 - /* 图标和文字相邻时,垂直对齐 */  
135 - vertical-align: -0.15em;  
136 - /* 通过设置 color 来改变 SVG 的颜色/fill */  
137 - fill: currentColor;  
138 - /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示  
139 - normalize.css 中也包含这行 */  
140 - overflow: hidden;  
141 -}  
142 -  
143 -.icon_lists li .name,  
144 -.icon_lists li .code-name {  
145 - color: #666;  
146 -}  
147 -  
148 -/* markdown 样式 */  
149 -.markdown {  
150 - color: #666;  
151 - font-size: 14px;  
152 - line-height: 1.8;  
153 -}  
154 -  
155 -.highlight {  
156 - line-height: 1.5;  
157 -}  
158 -  
159 -.markdown img {  
160 - vertical-align: middle;  
161 - max-width: 100%;  
162 -}  
163 -  
164 -.markdown h1 {  
165 - color: #404040;  
166 - font-weight: 500;  
167 - line-height: 40px;  
168 - margin-bottom: 24px;  
169 -}  
170 -  
171 -.markdown h2,  
172 -.markdown h3,  
173 -.markdown h4,  
174 -.markdown h5,  
175 -.markdown h6 {  
176 - color: #404040;  
177 - margin: 1.6em 0 0.6em 0;  
178 - font-weight: 500;  
179 - clear: both;  
180 -}  
181 -  
182 -.markdown h1 {  
183 - font-size: 28px;  
184 -}  
185 -  
186 -.markdown h2 {  
187 - font-size: 22px;  
188 -}  
189 -  
190 -.markdown h3 {  
191 - font-size: 16px;  
192 -}  
193 -  
194 -.markdown h4 {  
195 - font-size: 14px;  
196 -}  
197 -  
198 -.markdown h5 {  
199 - font-size: 12px;  
200 -}  
201 -  
202 -.markdown h6 {  
203 - font-size: 12px;  
204 -}  
205 -  
206 -.markdown hr {  
207 - height: 1px;  
208 - border: 0;  
209 - background: #e9e9e9;  
210 - margin: 16px 0;  
211 - clear: both;  
212 -}  
213 -  
214 -.markdown p {  
215 - margin: 1em 0;  
216 -}  
217 -  
218 -.markdown>p,  
219 -.markdown>blockquote,  
220 -.markdown>.highlight,  
221 -.markdown>ol,  
222 -.markdown>ul {  
223 - width: 80%;  
224 -}  
225 -  
226 -.markdown ul>li {  
227 - list-style: circle;  
228 -}  
229 -  
230 -.markdown>ul li,  
231 -.markdown blockquote ul>li {  
232 - margin-left: 20px;  
233 - padding-left: 4px;  
234 -}  
235 -  
236 -.markdown>ul li p,  
237 -.markdown>ol li p {  
238 - margin: 0.6em 0;  
239 -}  
240 -  
241 -.markdown ol>li {  
242 - list-style: decimal;  
243 -}  
244 -  
245 -.markdown>ol li,  
246 -.markdown blockquote ol>li {  
247 - margin-left: 20px;  
248 - padding-left: 4px;  
249 -}  
250 -  
251 -.markdown code {  
252 - margin: 0 3px;  
253 - padding: 0 5px;  
254 - background: #eee;  
255 - border-radius: 3px;  
256 -}  
257 -  
258 -.markdown strong,  
259 -.markdown b {  
260 - font-weight: 600;  
261 -}  
262 -  
263 -.markdown>table {  
264 - border-collapse: collapse;  
265 - border-spacing: 0px;  
266 - empty-cells: show;  
267 - border: 1px solid #e9e9e9;  
268 - width: 95%;  
269 - margin-bottom: 24px;  
270 -}  
271 -  
272 -.markdown>table th {  
273 - white-space: nowrap;  
274 - color: #333;  
275 - font-weight: 600;  
276 -}  
277 -  
278 -.markdown>table th,  
279 -.markdown>table td {  
280 - border: 1px solid #e9e9e9;  
281 - padding: 8px 16px;  
282 - text-align: left;  
283 -}  
284 -  
285 -.markdown>table th {  
286 - background: #F7F7F7;  
287 -}  
288 -  
289 -.markdown blockquote {  
290 - font-size: 90%;  
291 - color: #999;  
292 - border-left: 4px solid #e9e9e9;  
293 - padding-left: 0.8em;  
294 - margin: 1em 0;  
295 -}  
296 -  
297 -.markdown blockquote p {  
298 - margin: 0;  
299 -}  
300 -  
301 -.markdown .anchor {  
302 - opacity: 0;  
303 - transition: opacity 0.3s ease;  
304 - margin-left: 8px;  
305 -}  
306 -  
307 -.markdown .waiting {  
308 - color: #ccc;  
309 -}  
310 -  
311 -.markdown h1:hover .anchor,  
312 -.markdown h2:hover .anchor,  
313 -.markdown h3:hover .anchor,  
314 -.markdown h4:hover .anchor,  
315 -.markdown h5:hover .anchor,  
316 -.markdown h6:hover .anchor {  
317 - opacity: 1;  
318 - display: inline-block;  
319 -}  
320 -  
321 -.markdown>br,  
322 -.markdown>p>br {  
323 - clear: both;  
324 -}  
325 -  
326 -  
327 -.hljs {  
328 - display: block;  
329 - background: white;  
330 - padding: 0.5em;  
331 - color: #333333;  
332 - overflow-x: auto;  
333 -}  
334 -  
335 -.hljs-comment,  
336 -.hljs-meta {  
337 - color: #969896;  
338 -}  
339 -  
340 -.hljs-string,  
341 -.hljs-variable,  
342 -.hljs-template-variable,  
343 -.hljs-strong,  
344 -.hljs-emphasis,  
345 -.hljs-quote {  
346 - color: #df5000;  
347 -}  
348 -  
349 -.hljs-keyword,  
350 -.hljs-selector-tag,  
351 -.hljs-type {  
352 - color: #a71d5d;  
353 -}  
354 -  
355 -.hljs-literal,  
356 -.hljs-symbol,  
357 -.hljs-bullet,  
358 -.hljs-attribute {  
359 - color: #0086b3;  
360 -}  
361 -  
362 -.hljs-section,  
363 -.hljs-name {  
364 - color: #63a35c;  
365 -}  
366 -  
367 -.hljs-tag {  
368 - color: #333333;  
369 -}  
370 -  
371 -.hljs-title,  
372 -.hljs-attr,  
373 -.hljs-selector-id,  
374 -.hljs-selector-class,  
375 -.hljs-selector-attr,  
376 -.hljs-selector-pseudo {  
377 - color: #795da3;  
378 -}  
379 -  
380 -.hljs-addition {  
381 - color: #55a532;  
382 - background-color: #eaffea;  
383 -}  
384 -  
385 -.hljs-deletion {  
386 - color: #bd2c00;  
387 - background-color: #ffecec;  
388 -}  
389 -  
390 -.hljs-link {  
391 - text-decoration: underline;  
392 -}  
393 -  
394 -/* 代码高亮 */  
395 -/* PrismJS 1.15.0  
396 -https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */  
397 -/**  
398 - * prism.js default theme for JavaScript, CSS and HTML  
399 - * Based on dabblet (http://dabblet.com)  
400 - * @author Lea Verou  
401 - */  
402 -code[class*="language-"],  
403 -pre[class*="language-"] {  
404 - color: black;  
405 - background: none;  
406 - text-shadow: 0 1px white;  
407 - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;  
408 - text-align: left;  
409 - white-space: pre;  
410 - word-spacing: normal;  
411 - word-break: normal;  
412 - word-wrap: normal;  
413 - line-height: 1.5;  
414 -  
415 - -moz-tab-size: 4;  
416 - -o-tab-size: 4;  
417 - tab-size: 4;  
418 -  
419 - -webkit-hyphens: none;  
420 - -moz-hyphens: none;  
421 - -ms-hyphens: none;  
422 - hyphens: none;  
423 -}  
424 -  
425 -pre[class*="language-"]::-moz-selection,  
426 -pre[class*="language-"] ::-moz-selection,  
427 -code[class*="language-"]::-moz-selection,  
428 -code[class*="language-"] ::-moz-selection {  
429 - text-shadow: none;  
430 - background: #b3d4fc;  
431 -}  
432 -  
433 -pre[class*="language-"]::selection,  
434 -pre[class*="language-"] ::selection,  
435 -code[class*="language-"]::selection,  
436 -code[class*="language-"] ::selection {  
437 - text-shadow: none;  
438 - background: #b3d4fc;  
439 -}  
440 -  
441 -@media print {  
442 -  
443 - code[class*="language-"],  
444 - pre[class*="language-"] {  
445 - text-shadow: none;  
446 - }  
447 -}  
448 -  
449 -/* Code blocks */  
450 -pre[class*="language-"] {  
451 - padding: 1em;  
452 - margin: .5em 0;  
453 - overflow: auto;  
454 -}  
455 -  
456 -:not(pre)>code[class*="language-"],  
457 -pre[class*="language-"] {  
458 - background: #f5f2f0;  
459 -}  
460 -  
461 -/* Inline code */  
462 -:not(pre)>code[class*="language-"] {  
463 - padding: .1em;  
464 - border-radius: .3em;  
465 - white-space: normal;  
466 -}  
467 -  
468 -.token.comment,  
469 -.token.prolog,  
470 -.token.doctype,  
471 -.token.cdata {  
472 - color: slategray;  
473 -}  
474 -  
475 -.token.punctuation {  
476 - color: #999;  
477 -}  
478 -  
479 -.namespace {  
480 - opacity: .7;  
481 -}  
482 -  
483 -.token.property,  
484 -.token.tag,  
485 -.token.boolean,  
486 -.token.number,  
487 -.token.constant,  
488 -.token.symbol,  
489 -.token.deleted {  
490 - color: #905;  
491 -}  
492 -  
493 -.token.selector,  
494 -.token.attr-name,  
495 -.token.string,  
496 -.token.char,  
497 -.token.builtin,  
498 -.token.inserted {  
499 - color: #690;  
500 -}  
501 -  
502 -.token.operator,  
503 -.token.entity,  
504 -.token.url,  
505 -.language-css .token.string,  
506 -.style .token.string {  
507 - color: #9a6e3a;  
508 - background: hsla(0, 0%, 100%, .5);  
509 -}  
510 -  
511 -.token.atrule,  
512 -.token.attr-value,  
513 -.token.keyword {  
514 - color: #07a;  
515 -}  
516 -  
517 -.token.function,  
518 -.token.class-name {  
519 - color: #DD4A68;  
520 -}  
521 -  
522 -.token.regex,  
523 -.token.important,  
524 -.token.variable {  
525 - color: #e90;  
526 -}  
527 -  
528 -.token.important,  
529 -.token.bold {  
530 - font-weight: bold;  
531 -}  
532 -  
533 -.token.italic {  
534 - font-style: italic;  
535 -}  
536 -  
537 -.token.entity {  
538 - cursor: help;  
539 -}  
garbage-removal/src/static/icon/font_4327805_dv0tbbt7hp7/demo_index.html deleted 100644 → 0
1 -<!DOCTYPE html>  
2 -<html>  
3 -<head>  
4 - <meta charset="utf-8"/>  
5 - <title>iconfont Demo</title>  
6 - <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/>  
7 - <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/>  
8 - <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">  
9 - <link rel="stylesheet" href="demo.css">  
10 - <link rel="stylesheet" href="iconfont.css">  
11 - <script src="iconfont.js"></script>  
12 - <!-- jQuery -->  
13 - <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>  
14 - <!-- 代码高亮 -->  
15 - <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>  
16 - <style>  
17 - .main .logo {  
18 - margin-top: 0;  
19 - height: auto;  
20 - }  
21 -  
22 - .main .logo a {  
23 - display: flex;  
24 - align-items: center;  
25 - }  
26 -  
27 - .main .logo .sub-title {  
28 - margin-left: 0.5em;  
29 - font-size: 22px;  
30 - color: #fff;  
31 - background: linear-gradient(-45deg, #3967FF, #B500FE);  
32 - -webkit-background-clip: text;  
33 - -webkit-text-fill-color: transparent;  
34 - }  
35 - </style>  
36 -</head>  
37 -<body>  
38 - <div class="main">  
39 - <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">  
40 - <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">  
41 -  
42 - <span class="sub-title">彩色字体</span>  
43 -  
44 - </a></h1>  
45 - <div class="nav-tabs">  
46 - <ul id="tabs" class="dib-box">  
47 - <li class="dib active"><span>Unicode</span></li>  
48 - <li class="dib"><span>Font class</span></li>  
49 - <li class="dib"><span>Symbol</span></li>  
50 - </ul>  
51 -  
52 - <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=4327805" target="_blank" class="nav-more">查看项目</a>  
53 -  
54 - </div>  
55 - <div class="tab-container">  
56 - <div class="content unicode" style="display: block;">  
57 - <ul class="icon_lists dib-box">  
58 -  
59 - <li class="dib">  
60 - <span class="icon iconfont">&#xe634;</span>  
61 - <div class="name">二维码-线</div>  
62 - <div class="code-name">&amp;#xe634;</div>  
63 - </li>  
64 -  
65 - <li class="dib">  
66 - <span class="icon iconfont">&#xe601;</span>  
67 - <div class="name">垃圾桶</div>  
68 - <div class="code-name">&amp;#xe601;</div>  
69 - </li>  
70 -  
71 - <li class="dib">  
72 - <span class="icon iconfont">&#xe673;</span>  
73 - <div class="name">政策</div>  
74 - <div class="code-name">&amp;#xe673;</div>  
75 - </li>  
76 -  
77 - <li class="dib">  
78 - <span class="icon iconfont">&#xeca7;</span>  
79 - <div class="name">货车</div>  
80 - <div class="code-name">&amp;#xeca7;</div>  
81 - </li>  
82 -  
83 - <li class="dib">  
84 - <span class="icon iconfont">&#xe67d;</span>  
85 - <div class="name">卸料平台</div>  
86 - <div class="code-name">&amp;#xe67d;</div>  
87 - </li>  
88 -  
89 - <li class="dib">  
90 - <span class="icon iconfont">&#xe625;</span>  
91 - <div class="name">文件资料</div>  
92 - <div class="code-name">&amp;#xe625;</div>  
93 - </li>  
94 -  
95 - </ul>  
96 - <div class="article markdown">  
97 - <h2 id="unicode-">Unicode 引用</h2>  
98 - <hr>  
99 -  
100 - <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>  
101 - <ul>  
102 - <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>  
103 - <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>  
104 - </ul>  
105 - <blockquote>  
106 - <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>  
107 - </blockquote>  
108 - <p>Unicode 使用步骤如下:</p>  
109 - <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>  
110 -<pre><code class="language-css"  
111 ->@font-face {  
112 - font-family: 'iconfont';  
113 - src:  
114 - url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAa4AAwAAAAADRwAAAZnAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIoEGI0IGYABkCpEsjBEBNgIkAz4LPAAEIAWBfAcgG3AJyEYhnJrOdgp2gF3AFIhSHkEyAnQ2bv45UBhwaYzs/3+/WRGLRDj9p0KqlPLF7nuY2YMm07SzFAlpol7aQl6bhXj28h2cePrCI80AXJTyaiJ0oAjT2I6BOwgkYMEA5IPtXKECAzcA7orNAy4opSBzbOn1FJBACSlUoKCGKzRwgTYCXb+shxt4o/TY3hMEXmDhDQ4+KAMyEHAn8ZXfZ2nEkOAAOiExSdxxKUf8sa+j+PztKrHZ2Idi87+ei2E1n0Tznt9i0VgR3jpR3gEMA/IPJGCoSqoPgKZhEdIHSSQJ2EiUW9dp1rxZMfYi4GU1LYgCQAtwZ4EAAAXqFIAAoB2gAWiBSWhn0AKAUiG6xh88Jo9DHic/Hvl48stqUUydId7zIp63Pc96/uc5V9Nt59MJ+woyE0AcQFmMXcxdxZz6bGWnnVNKmBLCDFNSodyekfn5eqpcFQq51oeJPFqtI/RyabivWqFkbrVSuCeOU3gU0TjOrrWx8jK9g2/r5GRWHb9JJxsrLdN3cfBOTmGdaLUDQrHJQYiFnAgZGVhGCBcQl9k21Fmts9v1tgj2stm0NRcvRzr5xI6brsTZbPo2jjq9oz5m8rffdCyidrFPqKXKa8F5dnGUafWVC2meG3cumq9zWnhef5fOXq61rdDzg61nDhBJG2nZyb1ghH2nuIlmsGV1ZCSx1hNL3bEtUAOhluu+besYa9in9ZVqbTWgYK/lZJyzntB6R52MBUuIYwUrt7SVg+JoDjr7ci4inFXExIJra8p9wBJzSHaVsm11PJ/W6xSk3A0sURArlD3dE5XFXlh0u1CrUznr+cV1ujKCrrudI1a+p5NIhloJsRyzAmPcWAdbpjXZRNqma2kPbp39Mbh0ZgfOa+fiWwMcoayfSNrsvqxr20AJdo6r9l54hbNe8q0IsToJbTHpHoKdvT//hLPmmO0Trds8KxaF1xwMXbHeu2rPEMK3GyqHoLPrLFfStnTAVP8O3kmGDO3gcGi7LfMo9zQHmu12fmi1l6ubxr0rJeziVNY9HYe92tS9BHhnSikL05bd59Cxs79l/2n2TrEx89hO7l52ej+xHDjDWU/tg7D35MgZcBAezTNSenpHabKQNt0/rjAX6TREEUZaMDLwBQ9jUAr7kURDLm8udgtzKzbzgadj5A/kMUi4T4pcC5lYxXyFXxHDm4oIJLdq4lrhWmzsf4djoA/y7pvWFy3+UanHGVYew/ic399o/fkxl3ryHvoIV8rY5o8+20vUpaoTDTev+PlpSDOf/GEFPRqVjyyWcs6CJENySlKysRmdfqJ9b3VqwXBbREhgiLW2i9w8eW5ao8EbB1doCB0McsF7x6zeX0bH4oefweJqkOzZudUguBlKDG6CAVHT/ffsZByq2WpUlkA1VqVtzfwmTa9x3871sWbX1tgzQGd811apk/iPVll6RUNmcPxy4yLjaMbbXyow695JjcYAZuD82iTr7klHmaV7qolCFyNfwFiXN9BnmtqM64DrioFzJpzK7t3b86qDYNCzJm7bAHsF5AYJB9eqpDRICQglVa9lVwDXggM6rd4h2/9vDyUFSulH98t24GkJz8dpfN59IeQtBsplA0MatF9sZvc2ya64OsZb3lxaXb25SYhtWeOQzdVbfOTNvWddrcj/jrMmdl1D5L4rw6QZqamD3E+4H3M/6R6hDGhSmBUTU5DVKQCcdPMoDZG77XRfV4Zs+GBycrt2O5By9m/PSkfNxnxj6yFDAgf0X9Qa8KxzlPe+evwi2J4UTlXW1b2Nyy26f6FB5uBAzXvVzh2qookNFnSb4vF0+OeJxUvWm7wG3o3bHz48Xj0jJBECAAQOue0z1ifZHPOdP1f7oJFhrs9YBH42C2gDr9k3jJoOh2ZfDA292ASoKcI5FT3s6tAMAnMe9ZEnyYvI20dB4leeE3tE7jVldFVkf3Kjf/+Fe+vPlNCE+FMUGNDCX9tBteD/YxkG4k83/T/D1eF2k16OGZi1ib8BXFG7Lyc9iJEMwgxqKwk+w/HOBKSQcqCcumCAgZq7q6YvxkF6glPleS5oBhqEcQeBEthEKcj/lCwoGqnwoxgEwERJ4IVRp7kgAH+hP3piKIagj7vdKLRCb/TFaAxCd4xAAmIRr8pZaIbmBopXU+uvFzOYWmYpANqw6giMRH+sDjjAknbqpSGtiRuQBAAAAA==') format('woff2'),  
115 - url('iconfont.woff?t=1703747271369') format('woff'),  
116 - url('iconfont.ttf?t=1703747271369') format('truetype');  
117 -}  
118 -</code></pre>  
119 - <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>  
120 -<pre><code class="language-css"  
121 ->.iconfont {  
122 - font-family: "iconfont" !important;  
123 - font-size: 16px;  
124 - font-style: normal;  
125 - -webkit-font-smoothing: antialiased;  
126 - -moz-osx-font-smoothing: grayscale;  
127 -}  
128 -</code></pre>  
129 - <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>  
130 -<pre>  
131 -<code class="language-html"  
132 ->&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;  
133 -</code></pre>  
134 - <blockquote>  
135 - <p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>  
136 - </blockquote>  
137 - </div>  
138 - </div>  
139 - <div class="content font-class">  
140 - <ul class="icon_lists dib-box">  
141 -  
142 - <li class="dib">  
143 - <span class="icon iconfont icon-erweima-xian"></span>  
144 - <div class="name">  
145 - 二维码-线  
146 - </div>  
147 - <div class="code-name">.icon-erweima-xian  
148 - </div>  
149 - </li>  
150 -  
151 - <li class="dib">  
152 - <span class="icon iconfont icon-lajitong"></span>  
153 - <div class="name">  
154 - 垃圾桶  
155 - </div>  
156 - <div class="code-name">.icon-lajitong  
157 - </div>  
158 - </li>  
159 -  
160 - <li class="dib">  
161 - <span class="icon iconfont icon-zhengce"></span>  
162 - <div class="name">  
163 - 政策  
164 - </div>  
165 - <div class="code-name">.icon-zhengce  
166 - </div>  
167 - </li>  
168 -  
169 - <li class="dib">  
170 - <span class="icon iconfont icon-huoche"></span>  
171 - <div class="name">  
172 - 货车  
173 - </div>  
174 - <div class="code-name">.icon-huoche  
175 - </div>  
176 - </li>  
177 -  
178 - <li class="dib">  
179 - <span class="icon iconfont icon-a-zu5030"></span>  
180 - <div class="name">  
181 - 卸料平台  
182 - </div>  
183 - <div class="code-name">.icon-a-zu5030  
184 - </div>  
185 - </li>  
186 -  
187 - <li class="dib">  
188 - <span class="icon iconfont icon-wenjianziliao"></span>  
189 - <div class="name">  
190 - 文件资料  
191 - </div>  
192 - <div class="code-name">.icon-wenjianziliao  
193 - </div>  
194 - </li>  
195 -  
196 - </ul>  
197 - <div class="article markdown">  
198 - <h2 id="font-class-">font-class 引用</h2>  
199 - <hr>  
200 -  
201 - <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>  
202 - <p>与 Unicode 使用方式相比,具有如下特点:</p>  
203 - <ul>  
204 - <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>  
205 - <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>  
206 - </ul>  
207 - <p>使用步骤如下:</p>  
208 - <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>  
209 -<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;  
210 -</code></pre>  
211 - <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>  
212 -<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;  
213 -</code></pre>  
214 - <blockquote>  
215 - <p>"  
216 - iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>  
217 - </blockquote>  
218 - </div>  
219 - </div>  
220 - <div class="content symbol">  
221 - <ul class="icon_lists dib-box">  
222 -  
223 - <li class="dib">  
224 - <svg class="icon svg-icon" aria-hidden="true">  
225 - <use xlink:href="#icon-erweima-xian"></use>  
226 - </svg>  
227 - <div class="name">二维码-线</div>  
228 - <div class="code-name">#icon-erweima-xian</div>  
229 - </li>  
230 -  
231 - <li class="dib">  
232 - <svg class="icon svg-icon" aria-hidden="true">  
233 - <use xlink:href="#icon-lajitong"></use>  
234 - </svg>  
235 - <div class="name">垃圾桶</div>  
236 - <div class="code-name">#icon-lajitong</div>  
237 - </li>  
238 -  
239 - <li class="dib">  
240 - <svg class="icon svg-icon" aria-hidden="true">  
241 - <use xlink:href="#icon-zhengce"></use>  
242 - </svg>  
243 - <div class="name">政策</div>  
244 - <div class="code-name">#icon-zhengce</div>  
245 - </li>  
246 -  
247 - <li class="dib">  
248 - <svg class="icon svg-icon" aria-hidden="true">  
249 - <use xlink:href="#icon-huoche"></use>  
250 - </svg>  
251 - <div class="name">货车</div>  
252 - <div class="code-name">#icon-huoche</div>  
253 - </li>  
254 -  
255 - <li class="dib">  
256 - <svg class="icon svg-icon" aria-hidden="true">  
257 - <use xlink:href="#icon-a-zu5030"></use>  
258 - </svg>  
259 - <div class="name">卸料平台</div>  
260 - <div class="code-name">#icon-a-zu5030</div>  
261 - </li>  
262 -  
263 - <li class="dib">  
264 - <svg class="icon svg-icon" aria-hidden="true">  
265 - <use xlink:href="#icon-wenjianziliao"></use>  
266 - </svg>  
267 - <div class="name">文件资料</div>  
268 - <div class="code-name">#icon-wenjianziliao</div>  
269 - </li>  
270 -  
271 - </ul>  
272 - <div class="article markdown">  
273 - <h2 id="symbol-">Symbol 引用</h2>  
274 - <hr>  
275 -  
276 - <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>  
277 - 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>  
278 - <ul>  
279 - <li>支持多色图标了,不再受单色限制。</li>  
280 - <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>  
281 - <li>兼容性较差,支持 IE9+,及现代浏览器。</li>  
282 - <li>浏览器渲染 SVG 的性能一般,还不如 png。</li>  
283 - </ul>  
284 - <p>使用步骤如下:</p>  
285 - <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>  
286 -<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;  
287 -</code></pre>  
288 - <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>  
289 -<pre><code class="language-html">&lt;style&gt;  
290 -.icon {  
291 - width: 1em;  
292 - height: 1em;  
293 - vertical-align: -0.15em;  
294 - fill: currentColor;  
295 - overflow: hidden;  
296 -}  
297 -&lt;/style&gt;  
298 -</code></pre>  
299 - <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>  
300 -<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;  
301 - &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;  
302 -&lt;/svg&gt;  
303 -</code></pre>  
304 - </div>  
305 - </div>  
306 -  
307 - </div>  
308 - </div>  
309 - <script>  
310 - $(document).ready(function () {  
311 - $('.tab-container .content:first').show()  
312 -  
313 - $('#tabs li').click(function (e) {  
314 - var tabContent = $('.tab-container .content')  
315 - var index = $(this).index()  
316 -  
317 - if ($(this).hasClass('active')) {  
318 - return  
319 - } else {  
320 - $('#tabs li').removeClass('active')  
321 - $(this).addClass('active')  
322 -  
323 - tabContent.hide().eq(index).fadeIn()  
324 - }  
325 - })  
326 - })  
327 - </script>  
328 -</body>  
329 -</html>  
garbage-removal/src/static/icon/iconfont/demo.css deleted 100644 → 0
1 -/* Logo 字体 */  
2 -@font-face {  
3 - font-family: "iconfont logo";  
4 - src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');  
5 - src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),  
6 - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),  
7 - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),  
8 - url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');  
9 -}  
10 -  
11 -.logo {  
12 - font-family: "iconfont logo";  
13 - font-size: 160px;  
14 - font-style: normal;  
15 - -webkit-font-smoothing: antialiased;  
16 - -moz-osx-font-smoothing: grayscale;  
17 -}  
18 -  
19 -/* tabs */  
20 -.nav-tabs {  
21 - position: relative;  
22 -}  
23 -  
24 -.nav-tabs .nav-more {  
25 - position: absolute;  
26 - right: 0;  
27 - bottom: 0;  
28 - height: 42px;  
29 - line-height: 42px;  
30 - color: #666;  
31 -}  
32 -  
33 -#tabs {  
34 - border-bottom: 1px solid #eee;  
35 -}  
36 -  
37 -#tabs li {  
38 - cursor: pointer;  
39 - width: 100px;  
40 - height: 40px;  
41 - line-height: 40px;  
42 - text-align: center;  
43 - font-size: 16px;  
44 - border-bottom: 2px solid transparent;  
45 - position: relative;  
46 - z-index: 1;  
47 - margin-bottom: -1px;  
48 - color: #666;  
49 -}  
50 -  
51 -  
52 -#tabs .active {  
53 - border-bottom-color: #f00;  
54 - color: #222;  
55 -}  
56 -  
57 -.tab-container .content {  
58 - display: none;  
59 -}  
60 -  
61 -/* 页面布局 */  
62 -.main {  
63 - padding: 30px 100px;  
64 - width: 960px;  
65 - margin: 0 auto;  
66 -}  
67 -  
68 -.main .logo {  
69 - color: #333;  
70 - text-align: left;  
71 - margin-bottom: 30px;  
72 - line-height: 1;  
73 - height: 110px;  
74 - margin-top: -50px;  
75 - overflow: hidden;  
76 - *zoom: 1;  
77 -}  
78 -  
79 -.main .logo a {  
80 - font-size: 160px;  
81 - color: #333;  
82 -}  
83 -  
84 -.helps {  
85 - margin-top: 40px;  
86 -}  
87 -  
88 -.helps pre {  
89 - padding: 20px;  
90 - margin: 10px 0;  
91 - border: solid 1px #e7e1cd;  
92 - background-color: #fffdef;  
93 - overflow: auto;  
94 -}  
95 -  
96 -.icon_lists {  
97 - width: 100% !important;  
98 - overflow: hidden;  
99 - *zoom: 1;  
100 -}  
101 -  
102 -.icon_lists li {  
103 - width: 100px;  
104 - margin-bottom: 10px;  
105 - margin-right: 20px;  
106 - text-align: center;  
107 - list-style: none !important;  
108 - cursor: default;  
109 -}  
110 -  
111 -.icon_lists li .code-name {  
112 - line-height: 1.2;  
113 -}  
114 -  
115 -.icon_lists .icon {  
116 - display: block;  
117 - height: 100px;  
118 - line-height: 100px;  
119 - font-size: 42px;  
120 - margin: 10px auto;  
121 - color: #333;  
122 - -webkit-transition: font-size 0.25s linear, width 0.25s linear;  
123 - -moz-transition: font-size 0.25s linear, width 0.25s linear;  
124 - transition: font-size 0.25s linear, width 0.25s linear;  
125 -}  
126 -  
127 -.icon_lists .icon:hover {  
128 - font-size: 100px;  
129 -}  
130 -  
131 -.icon_lists .svg-icon {  
132 - /* 通过设置 font-size 来改变图标大小 */  
133 - width: 1em;  
134 - /* 图标和文字相邻时,垂直对齐 */  
135 - vertical-align: -0.15em;  
136 - /* 通过设置 color 来改变 SVG 的颜色/fill */  
137 - fill: currentColor;  
138 - /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示  
139 - normalize.css 中也包含这行 */  
140 - overflow: hidden;  
141 -}  
142 -  
143 -.icon_lists li .name,  
144 -.icon_lists li .code-name {  
145 - color: #666;  
146 -}  
147 -  
148 -/* markdown 样式 */  
149 -.markdown {  
150 - color: #666;  
151 - font-size: 14px;  
152 - line-height: 1.8;  
153 -}  
154 -  
155 -.highlight {  
156 - line-height: 1.5;  
157 -}  
158 -  
159 -.markdown img {  
160 - vertical-align: middle;  
161 - max-width: 100%;  
162 -}  
163 -  
164 -.markdown h1 {  
165 - color: #404040;  
166 - font-weight: 500;  
167 - line-height: 40px;  
168 - margin-bottom: 24px;  
169 -}  
170 -  
171 -.markdown h2,  
172 -.markdown h3,  
173 -.markdown h4,  
174 -.markdown h5,  
175 -.markdown h6 {  
176 - color: #404040;  
177 - margin: 1.6em 0 0.6em 0;  
178 - font-weight: 500;  
179 - clear: both;  
180 -}  
181 -  
182 -.markdown h1 {  
183 - font-size: 28px;  
184 -}  
185 -  
186 -.markdown h2 {  
187 - font-size: 22px;  
188 -}  
189 -  
190 -.markdown h3 {  
191 - font-size: 16px;  
192 -}  
193 -  
194 -.markdown h4 {  
195 - font-size: 14px;  
196 -}  
197 -  
198 -.markdown h5 {  
199 - font-size: 12px;  
200 -}  
201 -  
202 -.markdown h6 {  
203 - font-size: 12px;  
204 -}  
205 -  
206 -.markdown hr {  
207 - height: 1px;  
208 - border: 0;  
209 - background: #e9e9e9;  
210 - margin: 16px 0;  
211 - clear: both;  
212 -}  
213 -  
214 -.markdown p {  
215 - margin: 1em 0;  
216 -}  
217 -  
218 -.markdown>p,  
219 -.markdown>blockquote,  
220 -.markdown>.highlight,  
221 -.markdown>ol,  
222 -.markdown>ul {  
223 - width: 80%;  
224 -}  
225 -  
226 -.markdown ul>li {  
227 - list-style: circle;  
228 -}  
229 -  
230 -.markdown>ul li,  
231 -.markdown blockquote ul>li {  
232 - margin-left: 20px;  
233 - padding-left: 4px;  
234 -}  
235 -  
236 -.markdown>ul li p,  
237 -.markdown>ol li p {  
238 - margin: 0.6em 0;  
239 -}  
240 -  
241 -.markdown ol>li {  
242 - list-style: decimal;  
243 -}  
244 -  
245 -.markdown>ol li,  
246 -.markdown blockquote ol>li {  
247 - margin-left: 20px;  
248 - padding-left: 4px;  
249 -}  
250 -  
251 -.markdown code {  
252 - margin: 0 3px;  
253 - padding: 0 5px;  
254 - background: #eee;  
255 - border-radius: 3px;  
256 -}  
257 -  
258 -.markdown strong,  
259 -.markdown b {  
260 - font-weight: 600;  
261 -}  
262 -  
263 -.markdown>table {  
264 - border-collapse: collapse;  
265 - border-spacing: 0px;  
266 - empty-cells: show;  
267 - border: 1px solid #e9e9e9;  
268 - width: 95%;  
269 - margin-bottom: 24px;  
270 -}  
271 -  
272 -.markdown>table th {  
273 - white-space: nowrap;  
274 - color: #333;  
275 - font-weight: 600;  
276 -}  
277 -  
278 -.markdown>table th,  
279 -.markdown>table td {  
280 - border: 1px solid #e9e9e9;  
281 - padding: 8px 16px;  
282 - text-align: left;  
283 -}  
284 -  
285 -.markdown>table th {  
286 - background: #F7F7F7;  
287 -}  
288 -  
289 -.markdown blockquote {  
290 - font-size: 90%;  
291 - color: #999;  
292 - border-left: 4px solid #e9e9e9;  
293 - padding-left: 0.8em;  
294 - margin: 1em 0;  
295 -}  
296 -  
297 -.markdown blockquote p {  
298 - margin: 0;  
299 -}  
300 -  
301 -.markdown .anchor {  
302 - opacity: 0;  
303 - transition: opacity 0.3s ease;  
304 - margin-left: 8px;  
305 -}  
306 -  
307 -.markdown .waiting {  
308 - color: #ccc;  
309 -}  
310 -  
311 -.markdown h1:hover .anchor,  
312 -.markdown h2:hover .anchor,  
313 -.markdown h3:hover .anchor,  
314 -.markdown h4:hover .anchor,  
315 -.markdown h5:hover .anchor,  
316 -.markdown h6:hover .anchor {  
317 - opacity: 1;  
318 - display: inline-block;  
319 -}  
320 -  
321 -.markdown>br,  
322 -.markdown>p>br {  
323 - clear: both;  
324 -}  
325 -  
326 -  
327 -.hljs {  
328 - display: block;  
329 - background: white;  
330 - padding: 0.5em;  
331 - color: #333333;  
332 - overflow-x: auto;  
333 -}  
334 -  
335 -.hljs-comment,  
336 -.hljs-meta {  
337 - color: #969896;  
338 -}  
339 -  
340 -.hljs-string,  
341 -.hljs-variable,  
342 -.hljs-template-variable,  
343 -.hljs-strong,  
344 -.hljs-emphasis,  
345 -.hljs-quote {  
346 - color: #df5000;  
347 -}  
348 -  
349 -.hljs-keyword,  
350 -.hljs-selector-tag,  
351 -.hljs-type {  
352 - color: #a71d5d;  
353 -}  
354 -  
355 -.hljs-literal,  
356 -.hljs-symbol,  
357 -.hljs-bullet,  
358 -.hljs-attribute {  
359 - color: #0086b3;  
360 -}  
361 -  
362 -.hljs-section,  
363 -.hljs-name {  
364 - color: #63a35c;  
365 -}  
366 -  
367 -.hljs-tag {  
368 - color: #333333;  
369 -}  
370 -  
371 -.hljs-title,  
372 -.hljs-attr,  
373 -.hljs-selector-id,  
374 -.hljs-selector-class,  
375 -.hljs-selector-attr,  
376 -.hljs-selector-pseudo {  
377 - color: #795da3;  
378 -}  
379 -  
380 -.hljs-addition {  
381 - color: #55a532;  
382 - background-color: #eaffea;  
383 -}  
384 -  
385 -.hljs-deletion {  
386 - color: #bd2c00;  
387 - background-color: #ffecec;  
388 -}  
389 -  
390 -.hljs-link {  
391 - text-decoration: underline;  
392 -}  
393 -  
394 -/* 代码高亮 */  
395 -/* PrismJS 1.15.0  
396 -https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */  
397 -/**  
398 - * prism.js default theme for JavaScript, CSS and HTML  
399 - * Based on dabblet (http://dabblet.com)  
400 - * @author Lea Verou  
401 - */  
402 -code[class*="language-"],  
403 -pre[class*="language-"] {  
404 - color: black;  
405 - background: none;  
406 - text-shadow: 0 1px white;  
407 - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;  
408 - text-align: left;  
409 - white-space: pre;  
410 - word-spacing: normal;  
411 - word-break: normal;  
412 - word-wrap: normal;  
413 - line-height: 1.5;  
414 -  
415 - -moz-tab-size: 4;  
416 - -o-tab-size: 4;  
417 - tab-size: 4;  
418 -  
419 - -webkit-hyphens: none;  
420 - -moz-hyphens: none;  
421 - -ms-hyphens: none;  
422 - hyphens: none;  
423 -}  
424 -  
425 -pre[class*="language-"]::-moz-selection,  
426 -pre[class*="language-"] ::-moz-selection,  
427 -code[class*="language-"]::-moz-selection,  
428 -code[class*="language-"] ::-moz-selection {  
429 - text-shadow: none;  
430 - background: #b3d4fc;  
431 -}  
432 -  
433 -pre[class*="language-"]::selection,  
434 -pre[class*="language-"] ::selection,  
435 -code[class*="language-"]::selection,  
436 -code[class*="language-"] ::selection {  
437 - text-shadow: none;  
438 - background: #b3d4fc;  
439 -}  
440 -  
441 -@media print {  
442 -  
443 - code[class*="language-"],  
444 - pre[class*="language-"] {  
445 - text-shadow: none;  
446 - }  
447 -}  
448 -  
449 -/* Code blocks */  
450 -pre[class*="language-"] {  
451 - padding: 1em;  
452 - margin: .5em 0;  
453 - overflow: auto;  
454 -}  
455 -  
456 -:not(pre)>code[class*="language-"],  
457 -pre[class*="language-"] {  
458 - background: #f5f2f0;  
459 -}  
460 -  
461 -/* Inline code */  
462 -:not(pre)>code[class*="language-"] {  
463 - padding: .1em;  
464 - border-radius: .3em;  
465 - white-space: normal;  
466 -}  
467 -  
468 -.token.comment,  
469 -.token.prolog,  
470 -.token.doctype,  
471 -.token.cdata {  
472 - color: slategray;  
473 -}  
474 -  
475 -.token.punctuation {  
476 - color: #999;  
477 -}  
478 -  
479 -.namespace {  
480 - opacity: .7;  
481 -}  
482 -  
483 -.token.property,  
484 -.token.tag,  
485 -.token.boolean,  
486 -.token.number,  
487 -.token.constant,  
488 -.token.symbol,  
489 -.token.deleted {  
490 - color: #905;  
491 -}  
492 -  
493 -.token.selector,  
494 -.token.attr-name,  
495 -.token.string,  
496 -.token.char,  
497 -.token.builtin,  
498 -.token.inserted {  
499 - color: #690;  
500 -}  
501 -  
502 -.token.operator,  
503 -.token.entity,  
504 -.token.url,  
505 -.language-css .token.string,  
506 -.style .token.string {  
507 - color: #9a6e3a;  
508 - background: hsla(0, 0%, 100%, .5);  
509 -}  
510 -  
511 -.token.atrule,  
512 -.token.attr-value,  
513 -.token.keyword {  
514 - color: #07a;  
515 -}  
516 -  
517 -.token.function,  
518 -.token.class-name {  
519 - color: #DD4A68;  
520 -}  
521 -  
522 -.token.regex,  
523 -.token.important,  
524 -.token.variable {  
525 - color: #e90;  
526 -}  
527 -  
528 -.token.important,  
529 -.token.bold {  
530 - font-weight: bold;  
531 -}  
532 -  
533 -.token.italic {  
534 - font-style: italic;  
535 -}  
536 -  
537 -.token.entity {  
538 - cursor: help;  
539 -}  
garbage-removal/src/static/icon/iconfont/demo_index.html deleted 100644 → 0
1 -<!DOCTYPE html>  
2 -<html>  
3 -<head>  
4 - <meta charset="utf-8"/>  
5 - <title>iconfont Demo</title>  
6 - <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/>  
7 - <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/>  
8 - <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">  
9 - <link rel="stylesheet" href="demo.css">  
10 - <link rel="stylesheet" href="iconfont.css">  
11 - <script src="iconfont.js"></script>  
12 - <!-- jQuery -->  
13 - <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>  
14 - <!-- 代码高亮 -->  
15 - <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>  
16 - <style>  
17 - .main .logo {  
18 - margin-top: 0;  
19 - height: auto;  
20 - }  
21 -  
22 - .main .logo a {  
23 - display: flex;  
24 - align-items: center;  
25 - }  
26 -  
27 - .main .logo .sub-title {  
28 - margin-left: 0.5em;  
29 - font-size: 22px;  
30 - color: #fff;  
31 - background: linear-gradient(-45deg, #3967FF, #B500FE);  
32 - -webkit-background-clip: text;  
33 - -webkit-text-fill-color: transparent;  
34 - }  
35 - </style>  
36 -</head>  
37 -<body>  
38 - <div class="main">  
39 - <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">  
40 - <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">  
41 -  
42 - <span class="sub-title">彩色字体</span>  
43 -  
44 - </a></h1>  
45 - <div class="nav-tabs">  
46 - <ul id="tabs" class="dib-box">  
47 - <li class="dib active"><span>Unicode</span></li>  
48 - <li class="dib"><span>Font class</span></li>  
49 - <li class="dib"><span>Symbol</span></li>  
50 - </ul>  
51 -  
52 - <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=4327805" target="_blank" class="nav-more">查看项目</a>  
53 -  
54 - </div>  
55 - <div class="tab-container">  
56 - <div class="content unicode" style="display: block;">  
57 - <ul class="icon_lists dib-box">  
58 -  
59 - <li class="dib">  
60 - <span class="icon iconfont">&#xe634;</span>  
61 - <div class="name">二维码-线</div>  
62 - <div class="code-name">&amp;#xe634;</div>  
63 - </li>  
64 -  
65 - <li class="dib">  
66 - <span class="icon iconfont">&#xe601;</span>  
67 - <div class="name">垃圾桶</div>  
68 - <div class="code-name">&amp;#xe601;</div>  
69 - </li>  
70 -  
71 - <li class="dib">  
72 - <span class="icon iconfont">&#xe673;</span>  
73 - <div class="name">政策</div>  
74 - <div class="code-name">&amp;#xe673;</div>  
75 - </li>  
76 -  
77 - <li class="dib">  
78 - <span class="icon iconfont">&#xeca7;</span>  
79 - <div class="name">货车</div>  
80 - <div class="code-name">&amp;#xeca7;</div>  
81 - </li>  
82 -  
83 - <li class="dib">  
84 - <span class="icon iconfont">&#xe67d;</span>  
85 - <div class="name">卸料平台</div>  
86 - <div class="code-name">&amp;#xe67d;</div>  
87 - </li>  
88 -  
89 - <li class="dib">  
90 - <span class="icon iconfont">&#xe625;</span>  
91 - <div class="name">文件资料</div>  
92 - <div class="code-name">&amp;#xe625;</div>  
93 - </li>  
94 -  
95 - </ul>  
96 - <div class="article markdown">  
97 - <h2 id="unicode-">Unicode 引用</h2>  
98 - <hr>  
99 -  
100 - <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>  
101 - <ul>  
102 - <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>  
103 - <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>  
104 - </ul>  
105 - <blockquote>  
106 - <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>  
107 - </blockquote>  
108 - <p>Unicode 使用步骤如下:</p>  
109 - <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>  
110 -<pre><code class="language-css"  
111 ->@font-face {  
112 - font-family: 'iconfont';  
113 - src:  
114 - url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAa4AAwAAAAADRwAAAZnAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIoEGI0IGYABkCpEsjBEBNgIkAz4LPAAEIAWBfAcgG3AJyEYhnJrOdgp2gF3AFIhSHkEyAnQ2bv45UBhwaYzs/3+/WRGLRDj9p0KqlPLF7nuY2YMm07SzFAlpol7aQl6bhXj28h2cePrCI80AXJTyaiJ0oAjT2I6BOwgkYMEA5IPtXKECAzcA7orNAy4opSBzbOn1FJBACSlUoKCGKzRwgTYCXb+shxt4o/TY3hMEXmDhDQ4+KAMyEHAn8ZXfZ2nEkOAAOiExSdxxKUf8sa+j+PztKrHZ2Idi87+ei2E1n0Tznt9i0VgR3jpR3gEMA/IPJGCoSqoPgKZhEdIHSSQJ2EiUW9dp1rxZMfYi4GU1LYgCQAtwZ4EAAAXqFIAAoB2gAWiBSWhn0AKAUiG6xh88Jo9DHic/Hvl48stqUUydId7zIp63Pc96/uc5V9Nt59MJ+woyE0AcQFmMXcxdxZz6bGWnnVNKmBLCDFNSodyekfn5eqpcFQq51oeJPFqtI/RyabivWqFkbrVSuCeOU3gU0TjOrrWx8jK9g2/r5GRWHb9JJxsrLdN3cfBOTmGdaLUDQrHJQYiFnAgZGVhGCBcQl9k21Fmts9v1tgj2stm0NRcvRzr5xI6brsTZbPo2jjq9oz5m8rffdCyidrFPqKXKa8F5dnGUafWVC2meG3cumq9zWnhef5fOXq61rdDzg61nDhBJG2nZyb1ghH2nuIlmsGV1ZCSx1hNL3bEtUAOhluu+besYa9in9ZVqbTWgYK/lZJyzntB6R52MBUuIYwUrt7SVg+JoDjr7ci4inFXExIJra8p9wBJzSHaVsm11PJ/W6xSk3A0sURArlD3dE5XFXlh0u1CrUznr+cV1ujKCrrudI1a+p5NIhloJsRyzAmPcWAdbpjXZRNqma2kPbp39Mbh0ZgfOa+fiWwMcoayfSNrsvqxr20AJdo6r9l54hbNe8q0IsToJbTHpHoKdvT//hLPmmO0Trds8KxaF1xwMXbHeu2rPEMK3GyqHoLPrLFfStnTAVP8O3kmGDO3gcGi7LfMo9zQHmu12fmi1l6ubxr0rJeziVNY9HYe92tS9BHhnSikL05bd59Cxs79l/2n2TrEx89hO7l52ej+xHDjDWU/tg7D35MgZcBAezTNSenpHabKQNt0/rjAX6TREEUZaMDLwBQ9jUAr7kURDLm8udgtzKzbzgadj5A/kMUi4T4pcC5lYxXyFXxHDm4oIJLdq4lrhWmzsf4djoA/y7pvWFy3+UanHGVYew/ic399o/fkxl3ryHvoIV8rY5o8+20vUpaoTDTev+PlpSDOf/GEFPRqVjyyWcs6CJENySlKysRmdfqJ9b3VqwXBbREhgiLW2i9w8eW5ao8EbB1doCB0McsF7x6zeX0bH4oefweJqkOzZudUguBlKDG6CAVHT/ffsZByq2WpUlkA1VqVtzfwmTa9x3871sWbX1tgzQGd811apk/iPVll6RUNmcPxy4yLjaMbbXyow695JjcYAZuD82iTr7klHmaV7qolCFyNfwFiXN9BnmtqM64DrioFzJpzK7t3b86qDYNCzJm7bAHsF5AYJB9eqpDRICQglVa9lVwDXggM6rd4h2/9vDyUFSulH98t24GkJz8dpfN59IeQtBsplA0MatF9sZvc2ya64OsZb3lxaXb25SYhtWeOQzdVbfOTNvWddrcj/jrMmdl1D5L4rw6QZqamD3E+4H3M/6R6hDGhSmBUTU5DVKQCcdPMoDZG77XRfV4Zs+GBycrt2O5By9m/PSkfNxnxj6yFDAgf0X9Qa8KxzlPe+evwi2J4UTlXW1b2Nyy26f6FB5uBAzXvVzh2qookNFnSb4vF0+OeJxUvWm7wG3o3bHz48Xj0jJBECAAQOue0z1ifZHPOdP1f7oJFhrs9YBH42C2gDr9k3jJoOh2ZfDA292ASoKcI5FT3s6tAMAnMe9ZEnyYvI20dB4leeE3tE7jVldFVkf3Kjf/+Fe+vPlNCE+FMUGNDCX9tBteD/YxkG4k83/T/D1eF2k16OGZi1ib8BXFG7Lyc9iJEMwgxqKwk+w/HOBKSQcqCcumCAgZq7q6YvxkF6glPleS5oBhqEcQeBEthEKcj/lCwoGqnwoxgEwERJ4IVRp7kgAH+hP3piKIagj7vdKLRCb/TFaAxCd4xAAmIRr8pZaIbmBopXU+uvFzOYWmYpANqw6giMRH+sDjjAknbqpSGtiRuQBAAAAA==') format('woff2'),  
115 - url('iconfont.woff?t=1703747271369') format('woff'),  
116 - url('iconfont.ttf?t=1703747271369') format('truetype');  
117 -}  
118 -</code></pre>  
119 - <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>  
120 -<pre><code class="language-css"  
121 ->.iconfont {  
122 - font-family: "iconfont" !important;  
123 - font-size: 16px;  
124 - font-style: normal;  
125 - -webkit-font-smoothing: antialiased;  
126 - -moz-osx-font-smoothing: grayscale;  
127 -}  
128 -</code></pre>  
129 - <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>  
130 -<pre>  
131 -<code class="language-html"  
132 ->&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;  
133 -</code></pre>  
134 - <blockquote>  
135 - <p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>  
136 - </blockquote>  
137 - </div>  
138 - </div>  
139 - <div class="content font-class">  
140 - <ul class="icon_lists dib-box">  
141 -  
142 - <li class="dib">  
143 - <span class="icon iconfont icon-erweima-xian"></span>  
144 - <div class="name">  
145 - 二维码-线  
146 - </div>  
147 - <div class="code-name">.icon-erweima-xian  
148 - </div>  
149 - </li>  
150 -  
151 - <li class="dib">  
152 - <span class="icon iconfont icon-lajitong"></span>  
153 - <div class="name">  
154 - 垃圾桶  
155 - </div>  
156 - <div class="code-name">.icon-lajitong  
157 - </div>  
158 - </li>  
159 -  
160 - <li class="dib">  
161 - <span class="icon iconfont icon-zhengce"></span>  
162 - <div class="name">  
163 - 政策  
164 - </div>  
165 - <div class="code-name">.icon-zhengce  
166 - </div>  
167 - </li>  
168 -  
169 - <li class="dib">  
170 - <span class="icon iconfont icon-huoche"></span>  
171 - <div class="name">  
172 - 货车  
173 - </div>  
174 - <div class="code-name">.icon-huoche  
175 - </div>  
176 - </li>  
177 -  
178 - <li class="dib">  
179 - <span class="icon iconfont icon-a-zu5030"></span>  
180 - <div class="name">  
181 - 卸料平台  
182 - </div>  
183 - <div class="code-name">.icon-a-zu5030  
184 - </div>  
185 - </li>  
186 -  
187 - <li class="dib">  
188 - <span class="icon iconfont icon-wenjianziliao"></span>  
189 - <div class="name">  
190 - 文件资料  
191 - </div>  
192 - <div class="code-name">.icon-wenjianziliao  
193 - </div>  
194 - </li>  
195 -  
196 - </ul>  
197 - <div class="article markdown">  
198 - <h2 id="font-class-">font-class 引用</h2>  
199 - <hr>  
200 -  
201 - <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>  
202 - <p>与 Unicode 使用方式相比,具有如下特点:</p>  
203 - <ul>  
204 - <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>  
205 - <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>  
206 - </ul>  
207 - <p>使用步骤如下:</p>  
208 - <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>  
209 -<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;  
210 -</code></pre>  
211 - <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>  
212 -<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;  
213 -</code></pre>  
214 - <blockquote>  
215 - <p>"  
216 - iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>  
217 - </blockquote>  
218 - </div>  
219 - </div>  
220 - <div class="content symbol">  
221 - <ul class="icon_lists dib-box">  
222 -  
223 - <li class="dib">  
224 - <svg class="icon svg-icon" aria-hidden="true">  
225 - <use xlink:href="#icon-erweima-xian"></use>  
226 - </svg>  
227 - <div class="name">二维码-线</div>  
228 - <div class="code-name">#icon-erweima-xian</div>  
229 - </li>  
230 -  
231 - <li class="dib">  
232 - <svg class="icon svg-icon" aria-hidden="true">  
233 - <use xlink:href="#icon-lajitong"></use>  
234 - </svg>  
235 - <div class="name">垃圾桶</div>  
236 - <div class="code-name">#icon-lajitong</div>  
237 - </li>  
238 -  
239 - <li class="dib">  
240 - <svg class="icon svg-icon" aria-hidden="true">  
241 - <use xlink:href="#icon-zhengce"></use>  
242 - </svg>  
243 - <div class="name">政策</div>  
244 - <div class="code-name">#icon-zhengce</div>  
245 - </li>  
246 -  
247 - <li class="dib">  
248 - <svg class="icon svg-icon" aria-hidden="true">  
249 - <use xlink:href="#icon-huoche"></use>  
250 - </svg>  
251 - <div class="name">货车</div>  
252 - <div class="code-name">#icon-huoche</div>  
253 - </li>  
254 -  
255 - <li class="dib">  
256 - <svg class="icon svg-icon" aria-hidden="true">  
257 - <use xlink:href="#icon-a-zu5030"></use>  
258 - </svg>  
259 - <div class="name">卸料平台</div>  
260 - <div class="code-name">#icon-a-zu5030</div>  
261 - </li>  
262 -  
263 - <li class="dib">  
264 - <svg class="icon svg-icon" aria-hidden="true">  
265 - <use xlink:href="#icon-wenjianziliao"></use>  
266 - </svg>  
267 - <div class="name">文件资料</div>  
268 - <div class="code-name">#icon-wenjianziliao</div>  
269 - </li>  
270 -  
271 - </ul>  
272 - <div class="article markdown">  
273 - <h2 id="symbol-">Symbol 引用</h2>  
274 - <hr>  
275 -  
276 - <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>  
277 - 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>  
278 - <ul>  
279 - <li>支持多色图标了,不再受单色限制。</li>  
280 - <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>  
281 - <li>兼容性较差,支持 IE9+,及现代浏览器。</li>  
282 - <li>浏览器渲染 SVG 的性能一般,还不如 png。</li>  
283 - </ul>  
284 - <p>使用步骤如下:</p>  
285 - <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>  
286 -<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;  
287 -</code></pre>  
288 - <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>  
289 -<pre><code class="language-html">&lt;style&gt;  
290 -.icon {  
291 - width: 1em;  
292 - height: 1em;  
293 - vertical-align: -0.15em;  
294 - fill: currentColor;  
295 - overflow: hidden;  
296 -}  
297 -&lt;/style&gt;  
298 -</code></pre>  
299 - <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>  
300 -<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;  
301 - &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;  
302 -&lt;/svg&gt;  
303 -</code></pre>  
304 - </div>  
305 - </div>  
306 -  
307 - </div>  
308 - </div>  
309 - <script>  
310 - $(document).ready(function () {  
311 - $('.tab-container .content:first').show()  
312 -  
313 - $('#tabs li').click(function (e) {  
314 - var tabContent = $('.tab-container .content')  
315 - var index = $(this).index()  
316 -  
317 - if ($(this).hasClass('active')) {  
318 - return  
319 - } else {  
320 - $('#tabs li').removeClass('active')  
321 - $(this).addClass('active')  
322 -  
323 - tabContent.hide().eq(index).fadeIn()  
324 - }  
325 - })  
326 - })  
327 - </script>  
328 -</body>  
329 -</html>  
garbage-removal/src/static/image/garbage.png

23.9 KB | W: | H:

361 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
garbage-removal/src/utils/request/request.js
@@ -71,7 +71,8 @@ instance.interceptors.response.use((response) =&gt; { @@ -71,7 +71,8 @@ instance.interceptors.response.use((response) =&gt; {
71 // 对于匿名访问的页面,不处理401和403错误 71 // 对于匿名访问的页面,不处理401和403错误
72 const url = response.config?.url || ''; 72 const url = response.config?.url || '';
73 const isGuestAccess = url.startsWith("/order-info/order-other/webDetail/") || 73 const isGuestAccess = url.startsWith("/order-info/order-other/webDetail/") ||
74 - url.startsWith("/order-info/order-driver/detail/guest/"); 74 + url.startsWith("/order-info/order-driver/detail/guest/")||
  75 + url.startsWith("/gar/car/requestStrByEnergyType");
75 76
76 if (response.data.code == 401 || response.data.code == 403) { 77 if (response.data.code == 401 || response.data.code == 403) {
77 if (!isGuestAccess) { 78 if (!isGuestAccess) {
@@ -89,7 +90,8 @@ instance.interceptors.response.use((response) =&gt; { @@ -89,7 +90,8 @@ instance.interceptors.response.use((response) =&gt; {
89 // 对于匿名访问的页面,不处理401和403错误 90 // 对于匿名访问的页面,不处理401和403错误
90 const url = error.config?.url || ''; 91 const url = error.config?.url || '';
91 const isGuestAccess = url.startsWith("/order-info/order-other/webDetail/") || 92 const isGuestAccess = url.startsWith("/order-info/order-other/webDetail/") ||
92 - url.startsWith("/order-info/order-driver/detail/guest/"); 93 + url.startsWith("/order-info/order-driver/detail/guest/")||
  94 + url.startsWith("/gar/car/requestStrByEnergyType");
93 95
94 if (error.response.status) { 96 if (error.response.status) {
95 switch (error.response.status) { 97 switch (error.response.status) {
@@ -167,7 +169,8 @@ const handleGet = (config) =&gt; { @@ -167,7 +169,8 @@ const handleGet = (config) =&gt; {
167 config.params = ""; 169 config.params = "";
168 // 对于匿名访问的页面,移除Authorization头 170 // 对于匿名访问的页面,移除Authorization头
169 if (config.url.startsWith("/order-info/order-other/webDetail/") || 171 if (config.url.startsWith("/order-info/order-other/webDetail/") ||
170 - config.url.startsWith("/order-info/order-driver/detail/guest/")) { 172 + config.url.startsWith("/order-info/order-driver/detail/guest/")||
  173 + config.url.startsWith("/gar/car/requestStrByEnergyType")) {
171 config.headers["Authorization"] = ""; 174 config.headers["Authorization"] = "";
172 } 175 }
173 } 176 }
garbage-removal/src/uview-plus/components/u-icon/u-icon.vue
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 // #ifdef APP-NVUE 38 // #ifdef APP-NVUE
39 // nvue通过weex的dom模块引入字体,相关文档地址如下: 39 // nvue通过weex的dom模块引入字体,相关文档地址如下:
40 // https://weex.apache.org/zh/docs/modules/dom.html#addrule 40 // https://weex.apache.org/zh/docs/modules/dom.html#addrule
41 - const fontUrl = 'https://at.alicdn.com/t/font_2225171_8kdcwk4po24.ttf' 41 + const fontUrl = '/static/fonts/font_2225171_8kdcwk4po24.ttf'
42 const domModule = weex.requireModule('dom') 42 const domModule = weex.requireModule('dom')
43 domModule.addRule('fontFace', { 43 domModule.addRule('fontFace', {
44 'fontFamily': "uicon-iconfont", 44 'fontFamily': "uicon-iconfont",
@@ -163,7 +163,7 @@ @@ -163,7 +163,7 @@
163 // 非nvue下加载字体 163 // 非nvue下加载字体
164 @font-face { 164 @font-face {
165 font-family: 'uicon-iconfont'; 165 font-family: 'uicon-iconfont';
166 - src: url('https://at.alicdn.com/t/font_2225171_8kdcwk4po24.ttf') format('truetype'); 166 + src: url('../../../static/fonts/font_2225171_8kdcwk4po24.ttf') format('truetype');
167 } 167 }
168 168
169 /* #endif */ 169 /* #endif */