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 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 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 0 \ No newline at end of file
garbage-removal/src/components/next-tree/style.css
... ... @@ -15,15 +15,14 @@
15 15 opacity: 1;
16 16 }
17 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 27 .next-tree-cnt.next-tree-cnt-page {
29 28 transition: none;
... ... @@ -62,21 +61,17 @@
62 61 color: #f9ae3d;
63 62 }
64 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 72 .next-tree-view-sc {
78   - height: 100%;
79   - overflow: hidden;
  73 + height: calc(100% - 40rpx); /* 减去内边距 */
  74 + overflow-y: auto; /* 确保垂直滚动 */
80 75 }
81 76 .next-tree-view-sc .empty {
82 77 text-align: center;
... ...
garbage-removal/src/pages/home-info/address/addSite.vue
... ... @@ -170,7 +170,7 @@ const chooseAddressDetail = () => {
170 170  
171 171 // 先获取当前位置的经纬度
172 172 uni.getLocation({
173   - type: 'gcj02', // 使用国测局坐标系,与地图选择器的坐标系一致
  173 + type: 'gcj02',
174 174 altitude: false,
175 175 success: (locationRes) => {
176 176 console.log('获取当前位置成功', locationRes);
... ...
garbage-removal/src/pages/home-info/address/citySelect/u-city-select.vue
  1 +
1 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 57 </template>
54 58  
55   -<script>
56   -import areas from "@/common/area.js";
  59 +<script>import areas from "@/common/area.js";
57 60 import citys from "@/common/city.js";
58 61 import provinces from "@/common/province.js";
59 62 /**
... ... @@ -64,176 +67,138 @@ import provinces from &quot;@/common/province.js&quot;;
64 67 * @property {String} default-code 默认选中的地区,编号形式
65 68 */
66 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 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 204 </style>
... ...
garbage-removal/src/pages/home-info/clean/company-detail/index.vue
... ... @@ -133,25 +133,43 @@ const handleContactClick = (val) =&gt; {
133 133 }
134 134 onLoad((options) => {
135 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 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 163 if (options.companyId) {
144   - companyId = options.companyId
  164 + companyId = options.companyId;
145 165 queryEnterpriseById(companyId).then(res => {
146   - companyInfo.value = res.data.data
  166 + companyInfo.value = res.data.data;
147 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 174 const handleCleanGarbage = (companyObj, tel, userAddress) => {
157 175 uni.$u.route({
... ...
garbage-removal/src/pages/home-info/clean/index.vue
... ... @@ -50,7 +50,7 @@
50 50 <view>
51 51 <image :src="combinationImagePath(car)" mode="widthFix"></image>
52 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 54 </swiper-item>
55 55 </swiper>
56 56 </view>
... ... @@ -59,13 +59,14 @@
59 59 <view class="company-clean-container-car-main-content-type-price-area">
60 60 <text style="color: red;">*</text>车辆容积:
61 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 63 <myPiker
64 64 :parentValue="containerVolume"
65 65 :title="'车辆容积'"
66 66 @change="handleContainerVolumeChange"
67 67 :array="containerVolumeList">
68 68 </myPiker>
  69 + 方
69 70 </view>
70 71 </view>
71 72  
... ... @@ -134,7 +135,7 @@
134 135 <!-- </view>-->
135 136 <!-- </view>-->
136 137  
137   -
  138 +
138 139 <view v-if="paramFrom.garInCarStore" class="company-in-car-store-box-info">
139 140 <view class="company-clean-container-site-image-info-input-remark-box">
140 141 <u--textarea v-model="paramFrom.remark" placeholder="请填写限制高度(米)"></u--textarea>
... ... @@ -145,6 +146,7 @@
145 146 </view>
146 147 <view class="company-clean-container-car-main-content-prompt">
147 148 温馨提示:垃圾类型不符合,企业有权拒绝清运。
  149 + 车辆能否进入地下车库请与运输企业确认。
148 150 </view>
149 151 </view>
150 152 </view>
... ... @@ -368,6 +370,7 @@
368 370  
369 371 garCarNumberCount.value = va;
370 372 }
  373 +
371 374 /**
372 375 * 初始化信息
373 376 */
... ... @@ -409,13 +412,13 @@
409 412 garCarInfoList.value = res.data.rows;
410 413 if (garCarInfoList.value[0]) {
411 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 418 const volumeSet = new Set();
416 419 garCarInfoList.value.forEach(car => {
417 420 if (car.containerVolume) {
418   - volumeSet.add(car.containerVolume +"方");
  421 + volumeSet.add(car.containerVolume);
419 422 }
420 423 });
421 424 containerVolumeList.value = Array.from(volumeSet);
... ... @@ -454,7 +457,7 @@
454 457 fileList.value = [];
455 458 }
456 459  
457   -
  460 +
458 461 console.log("1",fileList.value);
459 462 let fileListLen = fileList.value.length;
460 463  
... ... @@ -466,8 +469,8 @@
466 469 });
467 470 });
468 471  
469   -
470   -
  472 +
  473 +
471 474 // 将blob转为file对象的方法
472 475 function blobToFile(blob, fileName) {
473 476 return new File([blob], fileName, {
... ... @@ -484,6 +487,7 @@
484 487 // 上传file对象
485 488 let requestPath = import.meta.env.VITE_BASE_URL + import.meta.env
486 489 .VITE_BASE_FILE_UPLOAD_PREFIX;
  490 + console.log(requestPath+"原神");
487 491 uploadFilePromise(requestPath, fileN).then(result => {
488 492 let item = fileList.value[fileListLen];
489 493 fileList.value.splice(fileListLen, 1, {
... ... @@ -779,7 +783,7 @@
779 783 }
780 784  
781 785 .swiperHeight1 {
782   - height: 280px;
  786 + height: 300px;
783 787 text-align: center;
784 788 justify-content: center;
785 789 }
... ... @@ -791,7 +795,7 @@
791 795 }
792 796  
793 797 .swiperHeight3 {
794   - height: 310px;
  798 + height: 300px;
795 799 text-align: center;
796 800 justify-content: center;
797 801 }
... ... @@ -918,24 +922,26 @@
918 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 946 .company-clean-container-car-main-content-number {
941 947 display: flex;
... ...
garbage-removal/src/pages/home/index.vue
... ... @@ -131,7 +131,7 @@
131 131  
132 132 <script setup>
133 133 import { queryAddress } from '@/apis/address.js';
134   -import { queryEnterpriseList } from '@/apis/company.js';
  134 +import { queryEnterpriseList ,queryCompaniesByEnergyType } from '@/apis/company.js';
135 135 import { queryRole } from "@/apis/user";
136 136 import { useMainStore } from "@/stores/index.js";
137 137 import { onLoad, onShow } from '@dcloudio/uni-app';
... ... @@ -163,7 +163,7 @@ const addressInfo = ref()
163 163 const sortValue = ref(0)
164 164 const registrationAreaValue = ref('')
165 165 const registrationAreaLabel = ref('所属区域')
166   -const sortLabel = ref('排序')
  166 +const sortLabel = ref('距离优先')
167 167 const carTypeValue = ref('')
168 168 const carTypeRealValue = ref('')
169 169 const dropdownOptions = ref([
... ... @@ -208,9 +208,15 @@ const dropdownOptions = ref([
208 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 221 label: '距离优先',
216 222 value: 0,
... ... @@ -279,7 +285,7 @@ const handleDropdownSortChange = (val) =&gt; {
279 285 if (selectedItem) {
280 286 sortLabel.value = selectedItem.label;
281 287 } else {
282   - sortLabel.value = '排序'; // 默认标签
  288 + sortLabel.value = '距离优先'; // 默认标签
283 289 }
284 290  
285 291 sortValue.value = val;
... ... @@ -313,6 +319,11 @@ const handleDropdownCarChange = (val) =&gt; {
313 319 loadCompanyList()
314 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 327 carTypeRealValue.value = val;
317 328 // 清除缓存
318 329 companyListCache.value.clear();
... ... @@ -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 539 if (companyListCache.value.has(cacheKey)) {
... ... @@ -532,13 +543,14 @@ const loadCompanyList = () =&gt; {
532 543 }
533 544  
534 545 let userTypeValue=0;
535   - if(userType == '用户'){
  546 + if(userType.value == '用户') { // 修复:使用userType.value而不是userType
536 547 userTypeValue=1;
537   - }else if(userType.value == '清运车辆驾驶员'){
  548 + } else if(userType.value == '清运车辆驾驶员') {
538 549 userTypeValue=2;
539   - }else if(userType.value == '运输企业负责人'){
  550 + } else if(userType.value == '运输企业负责人') {
540 551 userTypeValue=3;
541 552 }
  553 +
542 554 let query = {
543 555 companyType: 1,
544 556 pageNum: 1,
... ... @@ -546,25 +558,45 @@ const loadCompanyList = () =&gt; {
546 558 orderByColumn: sortValue.value,
547 559 registrationArea: registrationAreaValue.value,
548 560 searchValue: carTypeValue.value,
549   - userTypeValue:userTypeValue,
550   - userType:userType.value,
  561 + userTypeValue: userTypeValue,
  562 + userType: userType.value,
551 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 597 console.error('查询公司列表失败:', err);
566 598 companyList.value = [];
567   - })
  599 + }
568 600 }
569 601  
570 602 // 删除原有的queryList方法
... ... @@ -812,6 +844,9 @@ const loadCompanyList = () =&gt; {
812 844 .company-list-header-left {
813 845 text-align: center;
814 846 margin-bottom: 15rpx;
  847 + .sort-default-text {
  848 + text-align: left;
  849 + }
815 850 }
816 851  
817 852 .company-list-header-right {
... ...
garbage-removal/src/pages/login/code.vue
1   -
2 1 <template>
3 2 <view class="wrap">
4 3 <view class="key-input">
... ... @@ -6,28 +5,17 @@
6 5  
7 6 <!-- 登录方式切换 -->
8 7 <view class="login-type-switch">
9   - <text
10   - :class="{ active: loginType === 'code' }"
11   - @click="switchLoginType('code')"
12   - >
13   - 验证码登录
14   - </text>
  8 + <!-- 隐藏验证码登录选项 -->
15 9 <text
16 10 :class="{ active: loginType === 'password' }"
17 11 @click="switchLoginType('password')"
18 12 >
19 13 账号密码登录
20 14 </text>
21   -<!-- <text-->
22   -<!-- :class="{ active: loginType === 'nickname' }"-->
23   -<!-- @click="switchLoginType('nickname')"-->
24   -<!-- >-->
25   -<!-- 账号密码登录-->
26   -<!-- </text>-->
27 15 </view>
28 16  
29 17 <!-- 手机号输入 -->
30   - <view class="input-wrapper" v-if="loginType !== 'nickname'">
  18 + <view class="input-wrapper">
31 19 <u-icon name="account" size="36" color="#909399" class="input-icon"></u-icon>
32 20 <input
33 21 class="login-input"
... ... @@ -38,24 +26,22 @@
38 26 />
39 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 40 </view>
  41 + <button @tap="loginWithPassword" class="login-btn">登录</button>
57 42 </view>
58 43  
  44 + <!-- 昵称登录(如果需要保留) -->
59 45 <view v-else-if="loginType === 'nickname'">
60 46 <view class="input-wrapper">
61 47 <u-icon name="account" size="36" color="#909399" class="input-icon"></u-icon>
... ... @@ -80,23 +66,8 @@
80 66 <button @tap="loginWithUsername" class="login-btn">登录</button>
81 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 69 <view class="alternative">
99   -<!-- <text class="link" @click="toRegister">立即注册</text>-->
  70 + <!-- <text class="link" @click="toRegister">立即注册</text>-->
100 71 </view>
101 72 </view>
102 73 </view>
... ... @@ -112,7 +83,8 @@ const { proxy } = getCurrentInstance();
112 83 const store = useMainStore();
113 84  
114 85 // 登录方式:code-验证码登录,password-密码登录
115   -const loginType = ref('code');
  86 +// 将默认登录方式改为密码登录
  87 +const loginType = ref('password');
116 88  
117 89 // 验证码登录相关
118 90 const verifyFlag = ref(false);
... ...
garbage-removal/src/pages/order-info/order-disposal/scan-detail/index.vue
... ... @@ -63,7 +63,7 @@
63 63 运距
64 64 </view>
65 65 <view class="scan-car-num-content">
66   - {{ details.transportDistance }}
  66 + {{ details.transportDistance || "0 公里" }}
67 67 </view>
68 68 </view>
69 69 <!-- <view class="scan-upload-fill-image-box">
... ... @@ -96,7 +96,8 @@
96 96 } from '@/apis/common.js';
97 97 import {
98 98 askTransport,
99   - scanDetail
  99 + scanDetail,
  100 + queryMileage
100 101 } from '@/apis/order.js';
101 102 import {
102 103 onLoad
... ... @@ -127,59 +128,90 @@
127 128 longitude: ll[0],
128 129 latitude: ll[1]
129 130 };
130   - // 获取定位后计算运距
131   - calculateDistance();
132 131 }
133   -
  132 +
134 133 // 生命周期处理
135 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 217 const isNew = ref(false)
... ... @@ -289,8 +321,7 @@
289 321 // }
290 322  
291 323 if (typeof(location.value.latitude) === 'undefined') {
292   - console.log('定位获取失败', );
293   - uni.$u.toast("需要位置权限才能提交");
  324 + uni.$u.toast("没有获取到车辆定位信息!");
294 325 return;
295 326 }
296 327  
... ...
garbage-removal/src/pages/order-info/order-disposal/transport-detail/index.vue
... ... @@ -47,7 +47,7 @@
47 47 收运清单
48 48 </view>
49 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 51 <view class="transport-process-item" style="display: flex; width: 100%; margin: 20rpx 0; flex-wrap: nowrap; align-items: center;">
52 52 <view style="width: 80rpx; flex-shrink: 0; margin-right: 10rpx;">
53 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 473  
474 474 const driverHandleOrder = (orderId) => {
475 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 479 updateOrder({ garOrderId: orderId, handleType: 0 }).then(res => {
480 480 if (res.data.success) {
481 481 uni.$u.toast(res.data.data)
482 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 32 import {
33 33 uploadFilePromise
34 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 39 import {
39 40 onLoad
40 41 } from '@dcloudio/uni-app';
... ... @@ -90,13 +91,24 @@
90 91 }
91 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 110 clearTimeout(timer);
98   - uni.$u.toast("当前环境不支持定位功能");
99   - }
  111 + });
100 112 }
101 113 // 新增图片
102 114 const afterRead = async (event) => {
... ... @@ -189,11 +201,6 @@
189 201 return
190 202 }
191 203  
192   - if(typeof(location.value.latitude) === 'undefined'){
193   - uni.$u.toast("需要位置权限才能提交");
194   - return;
195   - }
196   -
197 204 const userPhone = store.userPhone;
198 205 let params = {
199 206 garOrderId: id,
... ...
garbage-removal/src/pages/order-info/order-other/detail/index.vue
... ... @@ -220,7 +220,7 @@
220 220 size="mini"
221 221 class="assign-button"
222 222 @click="assignTripToHandler(item)">
223   - {{ item.garCarCount && item.garCarCount > 0 ? '修改' : '分配' }}
  223 + {{ item.garCarCount && item.garCarCount > 0 ? '保存' : '分配' }}
224 224 </u-button>
225 225 <u-button
226 226 type="error"
... ... @@ -525,6 +525,7 @@ const disposalAssigned = ref(false); // 添加这行,跟踪处置场所是否
525 525 const selectedDisposalSites = ref([]);
526 526 // 新增:用于存储待分配的驾驶员列表
527 527 const pendingDriverAssignments = ref({})
  528 +const pendingDisposalAssignments = ref({})
528 529  
529 530  
530 531 const isInTransit = (index) => {
... ... @@ -633,7 +634,7 @@ const isDriverAssigned = computed(() =&gt; {
633 634 const isDriverAndDisposalAssigned = () => {
634 635 // 直接使用已有的响应式变量来判断分配状态
635 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 639 return hasDrivers && hasDisposalSites;
639 640 };
... ... @@ -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 1119 const handleOderCancelClick = () => {
1119 1120 cancelShow.value = true;
... ... @@ -1172,72 +1173,162 @@ const handleEvaluate = (orderId, userType) =&gt; {
1172 1173 }
1173 1174  
1174 1175 // 接收订单
  1176 +// 接收订单
1175 1177 const handleOrder = (orderId) => {
1176 1178 // 在开始运输前先分配驾驶员(如果有待分配的驾驶员)
1177 1179 if (pendingDriverAssignments.value && Object.keys(pendingDriverAssignments.value).length > 0) {
1178   - let data = {
  1180 + let driverData = {
1179 1181 garOrderId: orderId,
1180 1182 dispatchList: []
1181 1183 }
1182 1184 for (const key in pendingDriverAssignments.value) {
1183   - data.dispatchList.push({
  1185 + driverData.dispatchList.push({
1184 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 1193 pendingDriverAssignments.value = {};
1192 1194 // 标记驾驶员已分配
1193 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 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 1260 } else {
1215 1261 uni.$u.toast("指定人员失败,请重试");
1216 1262 }
1217 1263 })
1218 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 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 1332 const currentStep = (step) => {
1242 1333 if (step > 2) {
1243 1334 return step - 1;
... ... @@ -1266,42 +1357,70 @@ const cleanStatus = (status) =&gt; {
1266 1357 const handleDisposalDispatchConfirm = (val) => {
1267 1358 console.log(val);
1268 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 159 const element = loginInfo[index];
160 160 element.userName = userName;
161 161 unitInfo.value[element.userType] = element
162   - console.log(unitInfo.value);
163   -
164   -
165 162 }
166 163 let order = 999;
167 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 71 // 对于匿名访问的页面,不处理401和403错误
72 72 const url = response.config?.url || '';
73 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 77 if (response.data.code == 401 || response.data.code == 403) {
77 78 if (!isGuestAccess) {
... ... @@ -89,7 +90,8 @@ instance.interceptors.response.use((response) =&gt; {
89 90 // 对于匿名访问的页面,不处理401和403错误
90 91 const url = error.config?.url || '';
91 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 96 if (error.response.status) {
95 97 switch (error.response.status) {
... ... @@ -167,7 +169,8 @@ const handleGet = (config) =&gt; {
167 169 config.params = "";
168 170 // 对于匿名访问的页面,移除Authorization头
169 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 174 config.headers["Authorization"] = "";
172 175 }
173 176 }
... ...
garbage-removal/src/uview-plus/components/u-icon/u-icon.vue
... ... @@ -38,7 +38,7 @@
38 38 // #ifdef APP-NVUE
39 39 // nvue通过weex的dom模块引入字体,相关文档地址如下:
40 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 42 const domModule = weex.requireModule('dom')
43 43 domModule.addRule('fontFace', {
44 44 'fontFamily': "uicon-iconfont",
... ... @@ -163,7 +163,7 @@
163 163 // 非nvue下加载字体
164 164 @font-face {
165 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 169 /* #endif */
... ...