Commit ea602bf329d44085a9181144bb8937a5af76f208

Authored by guzijian
1 parent f654f8b4

feat: 分包,处理个人信息菜单

Showing 24 changed files with 1448 additions and 312 deletions
garbage-removal/src/apis/order.js
... ... @@ -25,7 +25,7 @@ export async function queryOrderTransportDetail(id) {
25 25 */
26 26 export async function queryOrderList(data) {
27 27 return await request.get(
28   - `/order/query/list?type=${data.type}&pageNo=${data.pageNo}&pageSize=${data.pageSize}`
  28 + `/order/query/list?type=${data.type}${data.evaluateFlag ? '&evaluateFlag='+ data.evaluateFlag : ''}&pageNo=${data.pageNo}&pageSize=${data.pageSize}`
29 29 );
30 30 }
31 31  
... ... @@ -114,3 +114,7 @@ export async function readMessage(data) {
114 114 export async function successOrder(data) {
115 115 return await request.put(`/order/update`,data);
116 116 }
  117 +
  118 +export async function queryBadgeByType(type) {
  119 + return await request.get(`/order/queryBadgeByType/${type}`);
  120 +}
... ...
garbage-removal/src/pages.json
... ... @@ -16,12 +16,6 @@
16 16 }
17 17 },
18 18 {
19   - "path": "pages/wode/choose/index",
20   - "style": {
21   - "navigationBarTitleText": "身份选择"
22   - }
23   - },
24   - {
25 19 "path": "pages/login/index",
26 20 "style": {
27 21 "navigationBarTitleText": "装饰装修垃圾智慧功能模块登录",
... ... @@ -99,7 +93,7 @@
99 93 "pages":[
100 94  
101 95 {
102   - "path": "order-handler/transport-detail/index",
  96 + "path": "order-disposal/transport-detail/index",
103 97 "style": {
104 98 "navigationBarTitleText": "收运单详情",
105 99 "enablePullDownRefresh": false,
... ... @@ -108,7 +102,7 @@
108 102 }
109 103 },
110 104 {
111   - "path": "order-handler/scan-detail/index",
  105 + "path": "order-disposal/scan-detail/index",
112 106 "style": {
113 107 "navigationBarTitleText": "收运单扫描",
114 108 "enablePullDownRefresh": false,
... ... @@ -181,6 +175,42 @@
181 175 }
182 176 }
183 177 ]
  178 + },
  179 + {
  180 + "root": "pages/wode-info",
  181 + "pages" :[{
  182 + "path": "wode-info-other-order/index",
  183 + "style": {
  184 + "navigationBarTitleText": "我的订单",
  185 + "navigationBarTextStyle": "white",
  186 + "navigationBarBackgroundColor": "#19a97c",
  187 + "enablePullDownRefresh": false
  188 + }
  189 + },
  190 + {
  191 + "path": "wode-info-driver-order/index",
  192 + "style": {
  193 + "navigationBarTitleText": "我的订单",
  194 + "navigationBarTextStyle": "white",
  195 + "navigationBarBackgroundColor": "#19a97c",
  196 + "enablePullDownRefresh": false
  197 + }
  198 + },
  199 + {
  200 + "path": "wode-info-disposal-order/index",
  201 + "style": {
  202 + "navigationBarTitleText": "我的订单",
  203 + "navigationBarTextStyle": "white",
  204 + "navigationBarBackgroundColor": "#19a97c",
  205 + "enablePullDownRefresh": false
  206 + }
  207 + },
  208 + {
  209 + "path": "wode-info-choose/index",
  210 + "style": {
  211 + "navigationBarTitleText": "身份选择"
  212 + }
  213 + }]
184 214 }],
185 215 "tabBar": {
186 216 "color": "#7A7E83",
... ...
garbage-removal/src/pages/home/index.vue
... ... @@ -338,7 +338,7 @@ const handleCleanClick = () => {
338 338 if (res.confirm) {
339 339 queryRole().then(res => {
340 340 uni.$u.route({
341   - url: `pages/wode/choose/index?ruleVos= ${encodeURIComponent(JSON.stringify(res.data.data.ruleVos))}`,
  341 + url: `pages/wode-info/wode-info-choose/index?ruleVos= ${encodeURIComponent(JSON.stringify(res.data.data.ruleVos))}`,
342 342 })
343 343 })
344 344 } else if (res.cancel) {
... ...
garbage-removal/src/pages/login/code.vue
... ... @@ -75,7 +75,7 @@ const checkVerifyNum = (code) => {
75 75 verifyFlag.value = false;
76 76 store.tempToken = res.data.data.token
77 77 uni.navigateTo({
78   - url: `/pages/wode/choose/index?ruleVos= ${encodeURIComponent(JSON.stringify(res.data.data.ruleVos))}`
  78 + url: `/pages/wode-info/wode-info-choose/index?ruleVos= ${encodeURIComponent(JSON.stringify(res.data.data.ruleVos))}`
79 79 });
80 80 } else {
81 81 verifyFlag.value = true;
... ...
garbage-removal/src/pages/order-info/order-handler/scan-detail/index.vue renamed to garbage-removal/src/pages/order-info/order-disposal/scan-detail/index.vue
garbage-removal/src/pages/order-info/order-handler/transport-detail/index.vue renamed to garbage-removal/src/pages/order-info/order-disposal/transport-detail/index.vue
... ... @@ -124,7 +124,7 @@ const spaceStr = ref("")
124 124 const transportWeightCount = ref();
125 125 const goTransportDetail = (val) => {
126 126 uni.$u.route({
127   - url: `pages/order-info/order-handler/scan-detail/index`
  127 + url: `pages/order-info/order-disposal/scan-detail/index`
128 128 , params: {
129 129 garAskId: val.garAskId
130 130 }
... ...
garbage-removal/src/pages/order/index.vue
1 1 <template>
2 2 <view class="container" style="width: 100%;height: 100%;">
3 3 <order-driver v-if="userType == '清运车辆驾驶员'"></order-driver>
4   - <order-handler v-else-if="userType == '处置场所负责人'"></order-handler>
  4 + <order-disposal v-else-if="userType == '处置场所负责人'"></order-disposal>
5 5 <order-other v-else></order-other>
6 6 </view>
7 7 </template>
8 8 <script setup>
9 9 import { useMainStore } from "@/stores/index.js";
10 10 import { computed } from 'vue';
  11 +import OrderDisposal from './order-disposal/index.vue';
11 12 import OrderDriver from './order-driver/index.vue';
12   -import OrderHandler from './order-handler/index.vue';
13 13 import OrderOther from './order-other/index.vue';
14 14 const mainStore = useMainStore()
15 15 const userType = computed(() => mainStore.userType)
... ...
garbage-removal/src/pages/order/order-handler/index.vue renamed to garbage-removal/src/pages/order/order-disposal/index.vue
... ... @@ -38,7 +38,7 @@
38 38 <script setup>
39 39 import { checkCode } from '@/apis/order.js';
40 40 import { onShow } from '@dcloudio/uni-app';
41   -import { ref } from 'vue';
  41 +import { nextTick, ref } from 'vue';
42 42 import swiperListItem from './swiper-list-item/index.vue';
43 43 const list = ref([{ name: '处理中' }, { name: '已完成' }])
44 44 const current = ref(0);
... ... @@ -71,7 +71,7 @@ const handleScan = () =&gt; {
71 71 console.log(res);
72 72 if (res.data.code == 200) {
73 73 uni.$u.route({
74   - url: `pages/order-info/order-handler/scan-detail/index`,
  74 + url: `pages/order-info/order-disposal/scan-detail/index`,
75 75 params: {
76 76 data: encodeURIComponent(JSON.stringify(res.data.data))
77 77 }
... ... @@ -90,15 +90,18 @@ const handleScan = () =&gt; {
90 90  
91 91  
92 92 onShow(() => {
93   - try {
94   - const { height, top } = uni.getMenuButtonBoundingClientRect();
95   - topMargin.value = top + 'px';
96   - lightHeight.value = height + 'px';
97   - } catch (error) {
98   - topMargin.value = '60rpx';
99   - lightHeight.value = '60rpx'
100   - console.log('There is no menu because the current app is not a small program');
101   - }
  93 + console.log("处理场所");
  94 + nextTick(() => {
  95 + try {
  96 + const { height, top } = uni.getMenuButtonBoundingClientRect();
  97 + topMargin.value = top + 'px';
  98 + lightHeight.value = height + 'px';
  99 + } catch (error) {
  100 + topMargin.value = '60rpx';
  101 + lightHeight.value = '60rpx';
  102 + console.log('There is no menu because the current app is not a small program');
  103 + }
  104 + })
102 105 })
103 106 </script>
104 107 <style lang="scss" scoped>
... ...
garbage-removal/src/pages/order/order-handler/swiper-list-item/index.vue renamed to garbage-removal/src/pages/order/order-disposal/swiper-list-item/index.vue
... ... @@ -47,7 +47,7 @@ const firstLoaded = ref(false)
47 47  
48 48 const handleClick = (garOrderId) => {
49 49 uni.$u.route({
50   - url: `pages/order-info/order-handler/transport-detail/index`,
  50 + url: `pages/order-info/order-disposal/transport-detail/index`,
51 51 params: {
52 52 garOrderId
53 53 }
... ...
garbage-removal/src/pages/order/order-driver/index.vue
... ... @@ -28,7 +28,7 @@
28 28 </template>
29 29 <script setup>
30 30 import { onShow } from '@dcloudio/uni-app';
31   -import { ref } from 'vue';
  31 +import { nextTick, ref } from 'vue';
32 32 import swiperListItem from './swiper-list-item/index.vue';
33 33 const list = ref([{ name: '待清运' }, { name: '清运中' }, { name: '全部' }, { name: '已完成' }])
34 34 const current = ref(0);
... ... @@ -48,15 +48,18 @@ const translation = (e) =&gt; {
48 48 uTabsElement.value.setDx(e.detail.dx)
49 49 }
50 50 onShow(() => {
51   - try {
52   - const { height, top } = uni.getMenuButtonBoundingClientRect();
53   - topMargin.value = top + 'px';
54   - lightHeight.value = height + 'px';
55   - } catch (error) {
56   - topMargin.value = '60rpx';
57   - lightHeight.value = '80rpx'
58   - console.log('There is no menu because the current app is not a small program');
59   - }
  51 + console.log("驾驶员");
  52 + nextTick(() => {
  53 + try {
  54 + const { height, top } = uni.getMenuButtonBoundingClientRect();
  55 + topMargin.value = top + 'px';
  56 + lightHeight.value = height + 'px';
  57 + } catch (error) {
  58 + topMargin.value = '60rpx';
  59 + lightHeight.value = '80rpx'
  60 + console.log('There is no menu because the current app is not a small program');
  61 + }
  62 + })
60 63 })
61 64 </script>
62 65 <style lang="scss" scoped>
... ...
garbage-removal/src/pages/order/order-driver/swiper-list-item/index.vue
... ... @@ -32,10 +32,10 @@
32 32 </template>
33 33  
34 34 <script setup>
35   -import { queryOrderList, updateOrder } from "@/apis/order.js";
  35 +import { queryOrderList } from "@/apis/order.js";
36 36 import { useMainStore } from '@/stores/index.js';
37 37 import { onShow } from "@dcloudio/uni-app";
38   -import { computed, ref, watch } from 'vue';
  38 +import { ref, watch } from 'vue';
39 39 const props = defineProps({
40 40 tabIndex: {
41 41 type: Number
... ... @@ -46,7 +46,6 @@ const props = defineProps({
46 46 })
47 47  
48 48 const store = useMainStore();
49   -const userType = computed(() => store.userType)
50 49 const currentCancelOrderId = ref("");
51 50 const currentCancelName = ref("");
52 51 const cancelShow = ref(false)
... ... @@ -64,34 +63,6 @@ const goDetail = (val) =&gt; {
64 63 })
65 64 }
66 65  
67   -const selectClick = (index) => {
68   - currentCancelName.value = index.name;
69   -}
70   -/**
71   - * 提交取消订单
72   - */
73   -const submitFunction = (otherReason) => {
74   - let reason = otherReason
75   - if (currentCancelName.value != "其他") {
76   - reason = currentCancelName.value
77   - }
78   - if (!reason) {
79   - uni.$u.toast("请提供取消订单的原因")
80   - return
81   - }
82   - let params = {
83   - garOrderId: currentCancelOrderId.value,
84   - garCancelFlag: 1,
85   - garReason: reason
86   - }
87   - updateOrder(params).then(res => {
88   - if (res.data.success) {
89   - cancelShow.value = false
90   - uni.$u.toast(res.data.data)
91   - paging.value.reload();
92   - }
93   - })
94   -}
95 66 const handleClick = (orderId) => {
96 67 uni.$u.route({
97 68 url: `pages/order-info/order-driver/detail/index`,
... ... @@ -101,13 +72,6 @@ const handleClick = (orderId) =&gt; {
101 72 })
102 73 }
103 74  
104   -/**
105   - * 订单评价
106   - * @param {*} orderId
107   - */
108   -const handleUserEvaluate = (orderId, userType) => {
109   - uni.$u.route(`pages/order-info/order-other/evaluate/index?orderId=${orderId}&userType=${userType}`)
110   -}
111 75 // list集合
112 76 const queryList = (pageNo, pageSize) => {
113 77 //这里的pageNo和pageSize会自动计算好,直接传给服务器即可
... ...
garbage-removal/src/pages/order/order-other/index.vue
... ... @@ -35,7 +35,7 @@
35 35 import { queryOrderMessageCount } from '@/apis/order.js';
36 36 import { useMainStore } from '@/stores/index.js';
37 37 import { onShow } from '@dcloudio/uni-app';
38   -import { computed, ref } from 'vue';
  38 +import { computed, nextTick, ref } from 'vue';
39 39 import swiperListItem from './swiper-list-item/index.vue';
40 40 const store = useMainStore();
41 41 const list = ref([{ name: '待清运' }, { name: '清运中' }, { name: '全部' }, { name: '已完成' }])
... ... @@ -61,15 +61,17 @@ const handlerMessageClick = () =&gt; {
61 61 uni.$u.route("pages/order-info/order-other/user-message/index")
62 62 }
63 63 onShow(() => {
64   - try {
65   - const { height, top } = uni.getMenuButtonBoundingClientRect();
66   - topMargin.value = top + "px";
67   - lightHeight.value = height + 'px';
68   - } catch (error) {
69   - topMargin.value = "60rpx";
70   - lightHeight.value = "60rpx"
71   - console.log("There is no menu because the current app is not a small program");
72   - }
  64 + nextTick(() => {
  65 + try {
  66 + const { height, top } = uni.getMenuButtonBoundingClientRect();
  67 + topMargin.value = top + "px";
  68 + lightHeight.value = height + 'px';
  69 + } catch (error) {
  70 + topMargin.value = "60rpx";
  71 + lightHeight.value = "60rpx"
  72 + console.log("There is no menu because the current app is not a small program");
  73 + }
  74 + })
73 75 })
74 76 onShow(() => {
75 77 if (userType.value == '用户') {
... ...
garbage-removal/src/pages/wode/choose/index.vue renamed to garbage-removal/src/pages/wode-info/wode-info-choose/index.vue
... ... @@ -44,6 +44,10 @@ import { updateUserInfo } from &quot;@/apis/user.js&quot;;
44 44 import driverImage from "@/static/image/driver.png";
45 45 import handleImage from "@/static/image/handler.png";
46 46 import managerImage from "@/static/image/manager.png";
  47 +import companyPngUrl from '@/static/image/role/company.png';
  48 +import disposalPngUrl from '@/static/image/role/disposal.png';
  49 +import handlerPngUrl from '@/static/image/role/handler.png';
  50 +import userPngUrl from '@/static/image/role/user.png';
47 51 import userImage from "@/static/image/user.png";
48 52 import { useMainStore } from '@/stores/index.js';
49 53 import { setRequestToken } from '@/utils/request/request.js';
... ... @@ -59,7 +63,7 @@ const typeList = ref([{
59 63 classStyle: 'choose-type-item-top-back-sky',
60 64 isNow: false,
61 65 isExit: true,
62   - imageUrl: import.meta.env.VITE_BASE_URL + "/role/user.png"
  66 + imageUrl: userPngUrl
63 67 }, {
64 68 label: "运输企业负责人",
65 69 info: '负责订单处理',
... ... @@ -69,7 +73,7 @@ const typeList = ref([{
69 73 classStyle: 'choose-type-item-top-back-sun',
70 74 order: 1,
71 75 isNow: false,
72   - imageUrl: import.meta.env.VITE_BASE_URL + "/role/company.png"
  76 + imageUrl: companyPngUrl
73 77 }, {
74 78 label: "清运车辆驾驶员",
75 79 info: '负责垃圾清运',
... ... @@ -79,7 +83,7 @@ const typeList = ref([{
79 83 classStyle: 'choose-type-item-top-back-blue',
80 84 order: 2,
81 85 isNow: false,
82   - imageUrl: import.meta.env.VITE_BASE_URL + "/role/handler.png"
  86 + imageUrl: handlerPngUrl
83 87 }, {
84 88 label: "处置场所负责人",
85 89 info: '负责现场指导',
... ... @@ -89,7 +93,7 @@ const typeList = ref([{
89 93 classStyle: 'choose-type-item-top-back-pink',
90 94 order: 3,
91 95 isNow: false,
92   - imageUrl: import.meta.env.VITE_BASE_URL + "/role/disposal.png"
  96 + imageUrl: disposalPngUrl
93 97 }])
94 98 const unitInfo = ref([])
95 99 const handlerClick = (val) => {
... ... @@ -184,147 +188,133 @@ onLoad((options) =&gt; {
184 188  
185 189 .choose-type-item {
186 190 width: 100%;
187   - height: 230rpx;
  191 + height: 200rpx;
188 192 // box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.1);
189 193 margin-bottom: 40rpx;
190 194 // border-radius: 15rpx 15rpx 0rpx 0rpx;
191 195  
192 196  
193   - .choose-type-item-top-back-blue {
194   - background: linear-gradient(135deg, #a1c4fd, #c2e9fb) !important;
195   - }
196   -
197   - .choose-type-item-top-back-pink {
198   - background: linear-gradient(135deg, #c7e9fb, #a6defa, #80d4f9, #5bc9f8, #35bef7) !important;
199   - }
200   -
201   - .choose-type-item-top-back-sun {
202   - background: linear-gradient(135deg, #f6d365, #fda085) !important;
203   - }
204   -
205   - .choose-type-item-top-back-sky {
206   - background: linear-gradient(135deg, #c2ef8c, #83e455) !important;
207   - }
208   -
209   - .choose-type-item-top {
210   - height: 235rpx;
211   - display: flex;
212   - align-items: center;
213   - box-sizing: border-box;
214   - padding: 30rpx;
215   - border-radius: 15rpx 15rpx 5rpx 5rpx;
216   - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
217   -
218   - .choose-type-item-image {
219   - width: 160rpx;
220   - height: 180rpx;
221   - border-radius: 50%;
222   - display: flex;
223   - align-items: center;
224   - justify-content: flex-start;
225   - margin-right: 50rpx;
226   -
227   - image {
228   - width: 100%;
229   - height: 100%;
230   - background-size: 100% 100%;
231   - }
232   - }
233   -
234   - .choose-type-item-text {
235   - width: 100%;
236   - height: 100%;
237   -
238   - .choose-type-item-text-right {
239   - width: 100%;
240   - height: 100%;
241   - display: flex;
242   - flex-direction: column;
243   - align-items: flex-start;
244   - justify-content: space-around;
245   - color: white;
246   -
247   - .choose-type-item-text-right-company {
248   - font-weight: bolder;
249   - font-size: 32rpx;
250   - }
251   -
252   - .choose-type-item-text-right-label {
253   - font-size: 30rpx;
254   - padding: 8rpx 15rpx;
255   - border-radius: 5rpx;
256   - color: $u-info-dark;
257   - font-weight: 600;
258   - margin-bottom: 10rpx;
259   - background: #ffffffad;
260   - border: 3rpx solid white;
261   - }
262   - }
263   - }
264   -
265   - }
266   -
267   - .choose-type-item-bottom {
268   - width: 100%;
269   - height: 35rpx;
270   - box-sizing: border-box;
271   - display: flex;
272   - align-items: center;
273   - justify-content: flex-end;
274   - background: #ffffff;
275   -
276   - .choose-type-item-bottom-button {
277   - font-size: 25rpx;
278   - color: #999999;
279   - display: flex;
280   - }
281   -
282   - .choose-type-item-bottom-button-active {
283   - color: #19a97c !important;
284   - }
285   - }
  197 + // .choose-type-item-top-back-blue {
  198 + // background: linear-gradient(135deg, #a1c4fd, #c2e9fb) !important;
  199 + // }
  200 +
  201 + // .choose-type-item-top-back-pink {
  202 + // background: linear-gradient(135deg, #c7e9fb, #a6defa, #80d4f9, #5bc9f8, #35bef7) !important;
  203 + // }
  204 +
  205 + // .choose-type-item-top-back-sun {
  206 + // background: linear-gradient(135deg, #f6d365, #fda085) !important;
  207 + // }
  208 +
  209 + // .choose-type-item-top-back-sky {
  210 + // background: linear-gradient(135deg, #c2ef8c, #83e455) !important;
  211 + // }
  212 +
  213 + // .choose-type-item-top {
  214 + // height: 235rpx;
  215 + // display: flex;
  216 + // align-items: center;
  217 + // box-sizing: border-box;
  218 + // padding: 30rpx;
  219 + // border-radius: 15rpx 15rpx 5rpx 5rpx;
  220 + // box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  221 +
  222 + // .choose-type-item-image {
  223 + // width: 160rpx;
  224 + // height: 180rpx;
  225 + // border-radius: 50%;
  226 + // display: flex;
  227 + // align-items: center;
  228 + // justify-content: flex-start;
  229 + // margin-right: 50rpx;
  230 +
  231 + // image {
  232 + // width: 100%;
  233 + // height: 100%;
  234 + // background-size: 100% 100%;
  235 + // }
  236 + // }
  237 +
  238 + // .choose-type-item-text {
  239 + // width: 100%;
  240 + // height: 100%;
  241 +
  242 + // .choose-type-item-text-right {
  243 + // width: 100%;
  244 + // height: 100%;
  245 + // display: flex;
  246 + // flex-direction: column;
  247 + // align-items: flex-start;
  248 + // justify-content: space-around;
  249 + // color: white;
  250 +
  251 + // .choose-type-item-text-right-company {
  252 + // font-weight: bolder;
  253 + // font-size: 32rpx;
  254 + // }
  255 +
  256 + // .choose-type-item-text-right-label {
  257 + // font-size: 30rpx;
  258 + // padding: 8rpx 15rpx;
  259 + // border-radius: 5rpx;
  260 + // color: $u-info-dark;
  261 + // font-weight: 600;
  262 + // margin-bottom: 10rpx;
  263 + // background: #ffffffad;
  264 + // border: 3rpx solid white;
  265 + // }
  266 + // }
  267 + // }
  268 +
  269 + // }
  270 +
  271 + // .choose-type-item-bottom {
  272 + // width: 100%;
  273 + // height: 35rpx;
  274 + // box-sizing: border-box;
  275 + // display: flex;
  276 + // align-items: center;
  277 + // justify-content: flex-end;
  278 + // background: #ffffff;
  279 +
  280 + // .choose-type-item-bottom-button {
  281 + // font-size: 25rpx;
  282 + // color: #999999;
  283 + // display: flex;
  284 + // }
  285 +
  286 + // .choose-type-item-bottom-button-active {
  287 + // color: #19a97c !important;
  288 + // }
  289 + // }
286 290  
287 291 .choose-type-item-img {
288 292 width: 100%;
289   - height: 200rpx;
  293 + height: 100%;
290 294  
291 295 image {
292 296 width: 100%;
293   - height: 200rpx;
  297 + height: 100%;
  298 + background-size: 100% 100%;
294 299 }
295 300  
296 301 }
  302 +
  303 +
297 304 }
298 305  
299 306 .itemActive {
300   - animation: overScroll 0.8s forwards ease-in-out;
  307 + animation: overScroll 0.2s forwards ease-in-out;
301 308 }
302 309  
303 310 @keyframes overScroll {
304   - 0% {
305   - transform: translateY(6rpx);
306   - }
307   -
308   - 20% {
309   - transform: translateY(-2rpx);
310   - }
311   -
312   - 40% {
313   - transform: translateY(6rpx);
314   - }
315   -
316   - 60% {
317   - transform: translateY(-2rpx);
318   - }
319   -
320   - 80% {
321   - transform: translateY(6rpx);
322   - }
323 311  
324 312 100% {
325   - transform: translateY(0);
  313 + width: 110%;
  314 + height: 210rpx;
326 315 }
327 316 }
  317 +
328 318 }
329 319  
330 320 .choose-user-bottom-button-box {
... ...
garbage-removal/src/pages/wode-info/wode-info-disposal-order/index.vue 0 → 100644
  1 +<template>
  2 + <view class="content-container">
  3 + <z-paging ref="paging" :fixed="false" v-model="dataList" height="100%" @query="queryList">
  4 + <empty-view slot:empty></empty-view>
  5 + <view class="page-box">
  6 + <view class="order" v-for="(item, index) in dataList" :key="index">
  7 + <view class="top">
  8 + <view class="left" @click="goDetail(item)">
  9 + <u-icon name="home" :size="30" color="rgb(94,94,94)"></u-icon>
  10 + <view class="store">{{ item.garOrderCompanyName }}</view>
  11 + <u-icon name="arrow-right" color="rgb(203,203,203)" :size="26"></u-icon>
  12 + </view>
  13 + </view>
  14 + <view class="item" @click="handleClick(item.garOrderId)">
  15 + <view class="content">
  16 + <view class="title u-line-2">{{ item.garOrderAddressDetails }}</view>
  17 + <view class="type">垃圾类型: {{ item.garOrderTrashType }}</view>
  18 + <view class="delivery-time">创建时间 {{ item.garCreateTime }}</view>
  19 + <view class="transport-num">载运量 {{ item.garNowCarCount }} /{{ item.garRealCarCount }}</view>
  20 + </view>
  21 + </view>
  22 + </view>
  23 + </view>
  24 + </z-paging>
  25 + </view>
  26 +</template>
  27 +
  28 +<script setup>
  29 +import { queryOrderList } from "@/apis/order.js";
  30 +import { onLoad } from "@dcloudio/uni-app";
  31 +import { ref } from 'vue';
  32 +const type = ref(0);
  33 +const evaluateFlag = ref();
  34 +
  35 +const dataList = ref([]);
  36 +const paging = ref(null);
  37 +const firstLoaded = ref(false)
  38 +
  39 +const handleClick = (garOrderId) => {
  40 + uni.$u.route({
  41 + url: `pages/order-info/order-disposal/transport-detail/index`,
  42 + params: {
  43 + garOrderId
  44 + }
  45 + })
  46 +}
  47 +
  48 +
  49 +// list集合
  50 +const queryList = (pageNo, pageSize) => {
  51 + //这里的pageNo和pageSize会自动计算好,直接传给服务器即可
  52 + //这里的请求只是演示,请替换成自己的项目的网络请求,并在网络请求回调中通过paging.value.complete(请求回来的数组)将请求结果传给z-paging
  53 + //request.queryList({ pageNo, pageSize }).then(res => {
  54 + //请勿在网络请求回调中给dataList赋值!!只需要调用complete就可以了
  55 + queryOrderList({ type: type.value, pageNo, pageSize }).then((res) => {
  56 + paging.value.complete(res.data.data.list);
  57 + console.log(res);
  58 + firstLoaded.value = true
  59 + }).catch(res => {
  60 + //如果请求失败写paging.value.complete(false),会自动展示错误页面
  61 + //注意,每次都需要在catch中写这句话很麻烦,z-paging提供了方案可以全局统一处理
  62 + //在底层的网络请求抛出异常时,写uni.$emit('z-paging-error-emit');即可
  63 + paging.value.complete(false);
  64 + })
  65 +}
  66 +/**
  67 + * 跳转公司详情
  68 + * @param {*} val
  69 + */
  70 +const goDetail = (val) => {
  71 + uni.$u.route({
  72 + url: `pages/home-info/clean/company-detail/index?companyId=${val.garOrderCompanyId}`,
  73 + })
  74 +}
  75 +onLoad((options) => {
  76 + type.value = options.type;
  77 + if (options.evaluateFlag) {
  78 + evaluateFlag.value = options.evaluateFlag;
  79 + }
  80 +})
  81 +
  82 +</script>
  83 +
  84 +<style lang="scss" scoped>
  85 +.content-container {
  86 + height: 100%;
  87 +
  88 + .order {
  89 + width: 90%;
  90 + background-color: #ffffff;
  91 + margin: 20rpx auto;
  92 + border-radius: 20rpx;
  93 + box-sizing: border-box;
  94 + padding: 20rpx;
  95 + font-size: 28rpx;
  96 +
  97 + &:active {
  98 + background-color: #f3f4f6;
  99 + opacity: 0.8;
  100 + transition: opacity 0.3s;
  101 + -webkit-transition: opacity 0.3s;
  102 + -moz-transition: opacity 0.3s;
  103 + -ms-transition: opacity 0.3s;
  104 + }
  105 +
  106 + .top {
  107 + display: flex;
  108 + justify-content: space-between;
  109 +
  110 + .left {
  111 + display: flex;
  112 + align-items: center;
  113 +
  114 + .store {
  115 + margin: 0 10rpx;
  116 + font-size: 32rpx;
  117 + font-weight: bold;
  118 + }
  119 + }
  120 + }
  121 +
  122 + .item {
  123 + display: flex;
  124 + align-items: center;
  125 + margin: 20rpx 0 0;
  126 +
  127 + .left {
  128 + margin-right: 20rpx;
  129 +
  130 + image {
  131 + width: 100rpx;
  132 + height: 100rpx;
  133 + border-radius: 10rpx;
  134 + }
  135 + }
  136 +
  137 + .content {
  138 + width: 100%;
  139 +
  140 + .title {
  141 + font-size: 28rpx;
  142 + line-height: 50rpx;
  143 + }
  144 +
  145 + .type {
  146 + margin: 10rpx 0;
  147 + font-size: 24rpx;
  148 + color: $u-tips-color;
  149 + }
  150 +
  151 + .delivery-time {
  152 + color: $u-tips-color;
  153 + font-size: 24rpx;
  154 + }
  155 +
  156 + .transport-num {
  157 + font-size: 24rpx;
  158 + color: #19a97c;
  159 + text-align: end;
  160 + }
  161 + }
  162 +
  163 +
  164 + }
  165 +
  166 + .total {
  167 + margin-top: 20rpx;
  168 + text-align: right;
  169 + font-size: 24rpx;
  170 +
  171 + .total-price {
  172 + font-size: 32rpx;
  173 + }
  174 + }
  175 +
  176 + .bottom {
  177 + display: flex;
  178 + margin-top: 20rpx;
  179 + padding: 0 10rpx;
  180 + justify-content: space-between;
  181 + align-items: center;
  182 +
  183 + .btn {
  184 + line-height: 52rpx;
  185 + width: 160rpx;
  186 + border-radius: 26rpx;
  187 + border: 2rpx solid $u-border-color;
  188 + font-size: 26rpx;
  189 + text-align: center;
  190 + color: $u-info-dark;
  191 + }
  192 +
  193 + .btn--hover {
  194 + background-color: $u-success-light;
  195 + }
  196 +
  197 + .evaluate {
  198 + color: $u-warning-dark;
  199 + border-color: $u-warning-dark;
  200 + }
  201 + }
  202 + }
  203 +
  204 + .centre {
  205 + text-align: center;
  206 + margin: 200rpx auto;
  207 + font-size: 32rpx;
  208 +
  209 + image {
  210 + width: 164rpx;
  211 + height: 164rpx;
  212 + border-radius: 50%;
  213 + margin-bottom: 20rpx;
  214 + }
  215 +
  216 + .tips {
  217 + font-size: 24rpx;
  218 + color: #999999;
  219 + margin-top: 20rpx;
  220 + }
  221 +
  222 + .btn {
  223 + margin: 80rpx auto;
  224 + width: 200rpx;
  225 + border-radius: 32rpx;
  226 + line-height: 64rpx;
  227 + color: #ffffff;
  228 + font-size: 26rpx;
  229 + background: linear-gradient(270deg, rgba(249, 116, 90, 1) 0%, rgba(255, 158, 1, 1) 100%);
  230 + }
  231 + }
  232 +
  233 +}
  234 +</style>
... ...
garbage-removal/src/pages/wode-info/wode-info-driver-order/index.vue 0 → 100644
  1 +<template>
  2 + <view class="content-container">
  3 + <z-paging ref="paging" :fixed="false" v-model="dataList" @query="queryList">
  4 + <empty-view slot:empty></empty-view>
  5 + <view class="page-box">
  6 + <view class="order" v-for="(item, index) in dataList" :key="index">
  7 + <view class="top">
  8 + <view class="left" @click="goDetail(item)">
  9 + <u-icon name="home" :size="30" color="rgb(94,94,94)"></u-icon>
  10 + <view class="store">{{ item.garOrderCompanyName }}</view>
  11 + <u-icon name="arrow-right" color="rgb(203,203,203)" :size="26"></u-icon>
  12 + </view>
  13 + <view style="display: flex;align-items: center;">
  14 + <view v-if="item.garOrderHandlerStatus === 0 && item.garCancelFlag === 0" class="right">待清运 </view>
  15 + <view v-if="item.garOrderHandlerStatus === 1 && item.garCancelFlag === 0" class="right">清运中 </view>
  16 + <view v-if="item.garOrderHandlerStatus === 3" class="right">已完成 </view>
  17 + </view>
  18 + </view>
  19 + <view class="item" @click="handleClick(item.garOrderId)">
  20 + <view class="content">
  21 + <view class="title u-line-2">{{ item.garOrderAddress + item.garOrderAddressDetails }}</view>
  22 + <view class="type">垃圾类型: {{ item.garOrderTrashType }}</view>
  23 + <view class="delivery-time">预约时间 {{ item.garOrderAgreementTime }}</view>
  24 + </view>
  25 + </view>
  26 + </view>
  27 + </view>
  28 + </z-paging>
  29 + </view>
  30 +</template>
  31 +
  32 +<script setup>
  33 +import { queryOrderList } from "@/apis/order.js";
  34 +import { onLoad } from '@dcloudio/uni-app';
  35 +import { ref } from 'vue';
  36 +const props = defineProps({
  37 + tabIndex: {
  38 + type: Number
  39 + },
  40 + currentIndex: {
  41 + type: Number
  42 + }
  43 +})
  44 +
  45 +const type = ref(0);
  46 +const currentCancelOrderId = ref("");
  47 +const currentCancelName = ref("");
  48 +const cancelShow = ref(false)
  49 +const dataList = ref([]);
  50 +const paging = ref(null);
  51 +const firstLoaded = ref(false)
  52 +
  53 +/**
  54 + * 跳转公司详情
  55 + * @param {*} val
  56 + */
  57 +const goDetail = (val) => {
  58 + uni.$u.route({
  59 + url: `pages/home-info/clean/company-detail/index?companyId=${val.garOrderCompanyId}`,
  60 + })
  61 +}
  62 +
  63 +const handleClick = (orderId) => {
  64 + uni.$u.route({
  65 + url: `pages/order-info/order-driver/detail/index`,
  66 + params: {
  67 + orderId: orderId
  68 + }
  69 + })
  70 +}
  71 +
  72 +// list集合
  73 +const queryList = (pageNo, pageSize) => {
  74 + //这里的pageNo和pageSize会自动计算好,直接传给服务器即可
  75 + //这里的请求只是演示,请替换成自己的项目的网络请求,并在网络请求回调中通过paging.value.complete(请求回来的数组)将请求结果传给z-paging
  76 + // request.queryList({ pageNo, pageSize }).then(res => {
  77 + // //请勿在网络请求回调中给dataList赋值!!只需要调用complete就可以了
  78 + queryOrderList({ type: type.value, pageNo, pageSize }).then((res) => {
  79 + paging.value.complete(res.data.data.list);
  80 + firstLoaded.value = true
  81 + }).catch(res => {
  82 + //如果请求失败写paging.value.complete(false),会自动展示错误页面
  83 + //注意,每次都需要在catch中写这句话很麻烦,z-paging提供了方案可以全局统一处理
  84 + //在底层的网络请求抛出异常时,写uni.$emit('z-paging-error-emit');即可
  85 + paging.value.complete(false);
  86 + })
  87 +}
  88 +
  89 +onLoad((options) => {
  90 + type.value = options.type;
  91 +})
  92 +
  93 +</script>
  94 +
  95 +<style lang="scss" scoped>
  96 +.content-container {
  97 + height: 100%;
  98 +
  99 + .order {
  100 + width: 90%;
  101 + background-color: #ffffff;
  102 + margin: 20rpx auto;
  103 + border-radius: 20rpx;
  104 + box-sizing: border-box;
  105 + padding: 20rpx;
  106 + font-size: 28rpx;
  107 +
  108 + &:active {
  109 + background-color: #f3f4f6;
  110 + opacity: 0.8;
  111 + transition: opacity 0.3s;
  112 + -webkit-transition: opacity 0.3s;
  113 + -moz-transition: opacity 0.3s;
  114 + -ms-transition: opacity 0.3s;
  115 + }
  116 +
  117 + .top {
  118 + display: flex;
  119 + justify-content: space-between;
  120 +
  121 + .left {
  122 + display: flex;
  123 + align-items: center;
  124 +
  125 + .store {
  126 + margin: 0 10rpx;
  127 + font-size: 32rpx;
  128 + font-weight: bold;
  129 + }
  130 + }
  131 + }
  132 +
  133 + .item {
  134 + display: flex;
  135 + align-items: center;
  136 + margin: 20rpx 0 0;
  137 +
  138 + .left {
  139 + margin-right: 20rpx;
  140 +
  141 + image {
  142 + width: 160rpx;
  143 + height: 160rpx;
  144 + border-radius: 10rpx;
  145 + }
  146 + }
  147 +
  148 + .content {
  149 +
  150 + .title {
  151 + font-size: 28rpx;
  152 + line-height: 50rpx;
  153 + }
  154 +
  155 + .type {
  156 + margin: 10rpx 0;
  157 + font-size: 24rpx;
  158 + color: $u-tips-color;
  159 + }
  160 +
  161 + .delivery-time {
  162 + color: #e5d001;
  163 + font-size: 24rpx;
  164 + }
  165 + }
  166 +
  167 +
  168 + }
  169 +
  170 + .total {
  171 + margin-top: 20rpx;
  172 + text-align: right;
  173 + font-size: 24rpx;
  174 +
  175 + .total-price {
  176 + font-size: 32rpx;
  177 + }
  178 + }
  179 +
  180 + .bottom {
  181 + display: flex;
  182 + margin-top: 20rpx;
  183 + padding: 0 10rpx;
  184 + justify-content: space-between;
  185 + align-items: center;
  186 +
  187 + .btn {
  188 + line-height: 52rpx;
  189 + width: 160rpx;
  190 + border-radius: 26rpx;
  191 + border: 2rpx solid $u-border-color;
  192 + font-size: 26rpx;
  193 + text-align: center;
  194 + color: $u-info-dark;
  195 + }
  196 +
  197 + .btn--hover {
  198 + background-color: $u-success-light;
  199 + }
  200 +
  201 + .evaluate {
  202 + color: $u-warning-dark;
  203 + border-color: $u-warning-dark;
  204 + }
  205 + }
  206 + }
  207 +
  208 + .centre {
  209 + text-align: center;
  210 + margin: 200rpx auto;
  211 + font-size: 32rpx;
  212 +
  213 + image {
  214 + width: 164rpx;
  215 + height: 164rpx;
  216 + border-radius: 50%;
  217 + margin-bottom: 20rpx;
  218 + }
  219 +
  220 + .tips {
  221 + font-size: 24rpx;
  222 + color: #999999;
  223 + margin-top: 20rpx;
  224 + }
  225 +
  226 + .btn {
  227 + margin: 80rpx auto;
  228 + width: 200rpx;
  229 + border-radius: 32rpx;
  230 + line-height: 64rpx;
  231 + color: #ffffff;
  232 + font-size: 26rpx;
  233 + background: linear-gradient(270deg, rgba(249, 116, 90, 1) 0%, rgba(255, 158, 1, 1) 100%);
  234 + }
  235 + }
  236 +}
  237 +</style>
... ...
garbage-removal/src/pages/wode-info/wode-info-other-order/index.vue 0 → 100644
  1 +<template>
  2 + <view class="content-container">
  3 + <z-paging ref="paging" :fixed="false" v-model="dataList" @query="queryList">
  4 + <empty-view slot:empty></empty-view>
  5 + <view class="page-box">
  6 + <view class="order" v-for="(item, index) in dataList" :key="index">
  7 + <view class="top">
  8 + <view class="left" @click="goDetail(item)">
  9 + <u-icon name="home" :size="30" color="rgb(94,94,94)"></u-icon>
  10 + <view class="store">{{ item.garOrderCompanyName }}</view>
  11 + <u-icon name="arrow-right" color="rgb(203,203,203)" :size="26"></u-icon>
  12 + </view>
  13 + <view style="display: flex;align-items: center;">
  14 + <view v-if="item.garOrderHandlerStatus === 0 && item.garCancelFlag === 0" class="right">待清运 </view>
  15 + <view v-if="item.garCancelFlag === 1" class="right">已取消 </view>
  16 + <view v-if="item.garOrderHandlerStatus === 1 && item.garCancelFlag === 0" class="right">清运中 </view>
  17 + </view>
  18 + <view v-if="item.garEvaluateFlag === 0 && userType === '用户'" class="right">待评价
  19 + </view>
  20 + <view v-if="item.garTimeOutFlag === 1" class="right" style="color: red;">超时取消
  21 + </view>
  22 + <view v-if="item.garHandlerEvaluateFlag === 0 && userType === '运输企业负责人'" class="right">待评价
  23 + </view>
  24 + <view v-if="item.garEvaluateFlag === 1 && userType === '用户'" class="right">已评价
  25 + </view>
  26 + <view v-if="item.garHandlerEvaluateFlag === 1 && userType === '运输企业负责人'" class="right">已评价
  27 + </view>
  28 + </view>
  29 + <view class="item" @click="handleClick(item.garOrderId)">
  30 + <view class="content">
  31 + <view class="title u-line-2">{{ item.garOrderAddress + item.garOrderAddressDetails }}</view>
  32 + <view class="type">垃圾类型: {{ item.garOrderTrashType }}</view>
  33 + <view class="delivery-time">预约时间 {{ item.garOrderAgreementTime }}</view>
  34 + </view>
  35 + </view>
  36 + <view class="bottom" v-if="item.garOrderHandlerStatus === 0 && item.garCancelFlag === 0">
  37 + <view class="more">
  38 + <!-- <u-icon name="more-dot-fill" color="rgb(203,203,203)"></u-icon> -->
  39 + </view>
  40 + <view hover-class="btn-hover" class="logistics btn" @click="handleCancelOrder(item.garOrderId)">取消订单</view>
  41 + </view>
  42 + <!-- 用户对公司评价 -->
  43 + <view class="bottom"
  44 + v-if="item.garEvaluateFlag === 0 && item.garOrderHandlerStatus === 3 && userType === '用户'">
  45 + <view class="more">
  46 + <!-- <u-icon name="more-dot-fill" color="rgb(203,203,203)"></u-icon> -->
  47 + </view>
  48 + <view hover-class="btn-hover" class="logistics btn" @click="handleUserEvaluate(item.garOrderId, userType)">
  49 + 去评价
  50 + </view>
  51 + </view>
  52 + <!-- 公司对用户评价 -->
  53 + <view class="bottom"
  54 + v-if="item.garHandlerEvaluateFlag === 0 && item.garOrderHandlerStatus === 3 && userType === '运输企业负责人'">
  55 + <view class="more">
  56 + <!-- <u-icon name="more-dot-fill" color="rgb(203,203,203)"></u-icon> -->
  57 + </view>
  58 + <view hover-class="btn-hover" class="logistics btn" @click="handleUserEvaluate(item.garOrderId, userType)">
  59 + 去评价
  60 + </view>
  61 + </view>
  62 + </view>
  63 + </view>
  64 + </z-paging>
  65 + <u-action-sheet :closeOnClickOverlay="true" :closeOnClickAction="false" @actionSheetClose="handleClose"
  66 + @submitFunction="submitFunction" @select="selectClick" :actions="list" round="15" title="取消订单" :show="cancelShow">
  67 + </u-action-sheet>
  68 + </view>
  69 +</template>
  70 +
  71 +<script setup>
  72 +import { queryOrderList, updateOrder } from "@/apis/order.js";
  73 +import { useMainStore } from '@/stores/index.js';
  74 +import { onLoad } from "@dcloudio/uni-app";
  75 +import { computed, ref } from 'vue';
  76 +const store = useMainStore();
  77 +const userType = computed(() => store.userType)
  78 +const currentCancelOrderId = ref("");
  79 +const currentCancelName = ref("");
  80 +const cancelShow = ref(false);
  81 +const type = ref(0);
  82 +const evaluateFlag = ref();
  83 +const list = computed(() => {
  84 + let reason = [
  85 + {
  86 + name: '订单信息填写有误',
  87 + },
  88 + {
  89 + name: '线下协商有问题',
  90 + },
  91 + {
  92 + name: '不需要清运了',
  93 + },
  94 + {
  95 + name: '其他',
  96 + },
  97 + {
  98 + name: '提交',
  99 + }
  100 + ]
  101 + if (userType.value === '用户') {
  102 + reason.unshift({
  103 + name: '长时间无人接单',
  104 + })
  105 + }
  106 + return reason
  107 +})
  108 +const dataList = ref([]);
  109 +const paging = ref(null);
  110 +const firstLoaded = ref(false)
  111 +/**
  112 + * 取消订单
  113 + * @param {string} orderId
  114 + */
  115 +const handleCancelOrder = (orderId) => {
  116 + currentCancelOrderId.value = orderId
  117 + cancelShow.value = true
  118 +}
  119 +const handleClose = (e) => {
  120 + cancelShow.value = false
  121 +}
  122 +
  123 +/**
  124 + * 跳转公司详情
  125 + * @param {*} val
  126 + */
  127 +const goDetail = (val) => {
  128 + uni.$u.route({
  129 + url: `pages/home-info/clean/company-detail/index?companyId=${val.garOrderCompanyId}`,
  130 + })
  131 +}
  132 +
  133 +const selectClick = (index) => {
  134 + currentCancelName.value = index.name;
  135 +}
  136 +/**
  137 + * 提交取消订单
  138 + */
  139 +const submitFunction = (otherReason) => {
  140 + let reason = otherReason
  141 + if (currentCancelName.value != "其他") {
  142 + reason = currentCancelName.value
  143 + }
  144 + if (!reason) {
  145 + uni.$u.toast("请提供取消订单的原因")
  146 + return
  147 + }
  148 + let params = {
  149 + garOrderId: currentCancelOrderId.value,
  150 + garCancelFlag: 1,
  151 + garReason: reason
  152 + }
  153 + updateOrder(params).then(res => {
  154 + if (res.data.success) {
  155 + cancelShow.value = false
  156 + uni.$u.toast("取消成功")
  157 + paging.value.reload();
  158 + }
  159 + })
  160 +}
  161 +const handleClick = (orderId) => {
  162 + uni.$u.route({
  163 + url: `pages/order-info/order-other/detail/index`,
  164 + params: {
  165 + orderId: orderId
  166 + }
  167 + })
  168 +}
  169 +
  170 +/**
  171 + * 订单评价
  172 + * @param {*} orderId
  173 + */
  174 +const handleUserEvaluate = (orderId, userType) => {
  175 + uni.$u.route(`pages/order-info/order-other/evaluate/index?orderId=${orderId}&userType=${userType}`)
  176 +}
  177 +// list集合
  178 +const queryList = (pageNo, pageSize) => {
  179 + //这里的pageNo和pageSize会自动计算好,直接传给服务器即可
  180 + //这里的请求只是演示,请替换成自己的项目的网络请求,并在网络请求回调中通过paging.value.complete(请求回来的数组)将请求结果传给z-paging
  181 + // request.queryList({ pageNo, pageSize }).then(res => {
  182 + // //请勿在网络请求回调中给dataList赋值!!只需要调用complete就可以了
  183 + queryOrderList({ type: type.value, evaluateFlag: evaluateFlag.value, pageNo, pageSize }).then((res) => {
  184 + paging.value.complete(res.data.data.list);
  185 + firstLoaded.value = true
  186 + }).catch(res => {
  187 + //如果请求失败写paging.value.complete(false),会自动展示错误页面
  188 + //注意,每次都需要在catch中写这句话很麻烦,z-paging提供了方案可以全局统一处理
  189 + //在底层的网络请求抛出异常时,写uni.$emit('z-paging-error-emit');即可
  190 + paging.value.complete(false);
  191 + })
  192 +}
  193 +
  194 +onLoad((options) => {
  195 + type.value = options.type;
  196 + if (options.evaluateFlag) {
  197 + evaluateFlag.value = options.evaluateFlag;
  198 + }
  199 +})
  200 +
  201 +</script>
  202 +
  203 +<style lang="scss" scoped>
  204 +.content-container {
  205 + height: 100%;
  206 + width: 100%;
  207 +
  208 + .order {
  209 + width: 90%;
  210 + background-color: #ffffff;
  211 + margin: 20rpx auto;
  212 + border-radius: 20rpx;
  213 + box-sizing: border-box;
  214 + padding: 20rpx;
  215 + font-size: 28rpx;
  216 +
  217 + &:active {
  218 + background-color: #f3f4f6;
  219 + opacity: 0.8;
  220 + transition: opacity 0.3s;
  221 + -webkit-transition: opacity 0.3s;
  222 + -moz-transition: opacity 0.3s;
  223 + -ms-transition: opacity 0.3s;
  224 + }
  225 +
  226 + .top {
  227 + display: flex;
  228 + justify-content: space-between;
  229 +
  230 + .left {
  231 + display: flex;
  232 + align-items: center;
  233 +
  234 + .store {
  235 + margin: 0 10rpx;
  236 + font-size: 32rpx;
  237 + font-weight: bold;
  238 + }
  239 + }
  240 + }
  241 +
  242 + .item {
  243 + display: flex;
  244 + align-items: center;
  245 + margin: 20rpx 0 0;
  246 +
  247 + .left {
  248 + margin-right: 20rpx;
  249 +
  250 + image {
  251 + width: 160rpx;
  252 + height: 160rpx;
  253 + border-radius: 10rpx;
  254 + }
  255 + }
  256 +
  257 + .content {
  258 +
  259 + .title {
  260 + font-size: 28rpx;
  261 + line-height: 50rpx;
  262 + }
  263 +
  264 + .type {
  265 + margin: 10rpx 0;
  266 + font-size: 24rpx;
  267 + color: $u-tips-color;
  268 + }
  269 +
  270 + .delivery-time {
  271 + color: #e5d001;
  272 + font-size: 24rpx;
  273 + }
  274 + }
  275 +
  276 +
  277 + }
  278 +
  279 + .total {
  280 + margin-top: 20rpx;
  281 + text-align: right;
  282 + font-size: 24rpx;
  283 +
  284 + .total-price {
  285 + font-size: 32rpx;
  286 + }
  287 + }
  288 +
  289 + .bottom {
  290 + display: flex;
  291 + margin-top: 20rpx;
  292 + padding: 0 10rpx;
  293 + justify-content: space-between;
  294 + align-items: center;
  295 +
  296 + .btn {
  297 + line-height: 52rpx;
  298 + width: 160rpx;
  299 + border-radius: 26rpx;
  300 + border: 2rpx solid $u-border-color;
  301 + font-size: 26rpx;
  302 + text-align: center;
  303 + color: $u-info-dark;
  304 + }
  305 +
  306 + .btn--hover {
  307 + background-color: $u-success-light;
  308 + }
  309 +
  310 + .evaluate {
  311 + color: $u-warning-dark;
  312 + border-color: $u-warning-dark;
  313 + }
  314 + }
  315 + }
  316 +
  317 + .centre {
  318 + text-align: center;
  319 + margin: 200rpx auto;
  320 + font-size: 32rpx;
  321 +
  322 + image {
  323 + width: 164rpx;
  324 + height: 164rpx;
  325 + border-radius: 50%;
  326 + margin-bottom: 20rpx;
  327 + }
  328 +
  329 + .tips {
  330 + font-size: 24rpx;
  331 + color: #999999;
  332 + margin-top: 20rpx;
  333 + }
  334 +
  335 + .btn {
  336 + margin: 80rpx auto;
  337 + width: 200rpx;
  338 + border-radius: 32rpx;
  339 + line-height: 64rpx;
  340 + color: #ffffff;
  341 + font-size: 26rpx;
  342 + background: linear-gradient(270deg, rgba(249, 116, 90, 1) 0%, rgba(255, 158, 1, 1) 100%);
  343 + }
  344 + }
  345 +}
  346 +</style>
... ...
garbage-removal/src/pages/wode/index.vue
... ... @@ -14,52 +14,10 @@
14 14 </view>
15 15 </view>
16 16 <view class="order-icon-container">
17   - <view class="order-icon-btn">
18   - <view class="order-icon-btn-box" @click="queryMyOrderList()">
19   - <view class="order-icon-btn-box-img">
20   - <image :src="orderUrl"></image>
21   - <view class="order-icon-btn-box-img-badge">
22   - <up-badge max="99" bgColor="#f3a200" :value="messageCount"></up-badge>
23   - </view>
24   - </view>
25   - <view class="order-icon-btn-box-label">
26   - 我的订单
27   - </view>
28   - </view>
29   - <view class="order-icon-btn-box" @click="queryNoCleanOrderList">
30   - <view class="order-icon-btn-box-img">
31   - <image :src="cleanWaitUrl"></image>
32   - <view class="order-icon-btn-box-img-badge">
33   - <up-badge max="99" bgColor="#f3a200" :value="messageCount"></up-badge>
34   - </view>
35   - </view>
36   - <view class="order-icon-btn-box-label">
37   - 待清运
38   - </view>
39   - </view>
40   - <view class="order-icon-btn-box" @click="queryCleanOrderList">
41   - <view class="order-icon-btn-box-img">
42   - <image :src="cleanActiveUrl"></image>
43   - <view class="order-icon-btn-box-img-badge">
44   - <up-badge max="99" bgColor="#f3a200" :value="messageCount"></up-badge>
45   - </view>
46   - </view>
47   - <view class="order-icon-btn-box-label">
48   - 清运中
49   - </view>
50   - </view>
51   - <view class="order-icon-btn-box" @click="queryEvaluateOrderList">
52   - <view class="order-icon-btn-box-img">
53   - <image :src="evaluateUrl"></image>
54   - <view class="order-icon-btn-box-img-badge">
55   - <up-badge max="99" bgColor="#f3a200" :value="messageCount"></up-badge>
56   - </view>
57   - </view>
58   - <view class="order-icon-btn-box-label">
59   - 待评价
60   - </view>
61   - </view>
62   - </view>
  17 + <!-- TODO -->
  18 + <wode-other v-if="userInfo.userType === '用户' || userInfo.userType === '运输企业负责人'"></wode-other>
  19 + <wode-driver v-else-if="userInfo.userType === '清运车辆驾驶员'"></wode-driver>
  20 + <wode-disposal v-else></wode-disposal>
63 21 </view>
64 22 <view class="more-setting-box">
65 23 <view class="more-setting-title">
... ... @@ -94,18 +52,16 @@
94 52 </template>
95 53  
96 54 <script setup>
97   -import { loginOut, queryRole } from "@/apis/user";
98   -import cleanActiveUrl from '@/static/image/clean-active.png';
99   -import cleanWaitUrl from '@/static/image/clean-wait.png';
100   -import evaluateUrl from '@/static/image/evaluate.png';
101   -import orderUrl from '@/static/image/order.png';
  55 +import { loginOut, queryRole } from '@/apis/user';
102 56 import headImg from "@/static/image/st_pic.png";
103 57 import { useMainStore } from "@/stores/index";
104 58 import { setRequestToken } from '@/utils/request/request.js';
105 59 import { computed, ref } from "vue";
  60 +import wodeDisposal from './wode-disposal/index.vue';
  61 +import wodeDriver from './wode-driver/index.vue';
  62 +import wodeOther from './wode-other/index.vue';
106 63 const store = useMainStore();
107 64 const pic = ref(headImg)
108   -const messageCount = ref(9);
109 65 const userInfo = computed(() => store.userInfo)
110 66 const handleAddressManager = () => {
111 67 uni.$u.route({
... ... @@ -113,22 +69,7 @@ const handleAddressManager = () =&gt; {
113 69 })
114 70 }
115 71  
116   -const queryMyOrderList = () => {
117   - // TODO 查询我的订单
118   - // uni.$u.route({
119   - // url: `pages/order-info/order-other/swiper-list-item/index`,
120   - // })
121   -}
122   -const queryNoCleanOrderList = () => {
123   - // TODO 查询待清运订单
124   -}
125   -const queryCleanOrderList = () => {
126   - // TODO 查询清运中订单
127   -}
128   -const queryEvaluateOrderList = () => {
129   - console.log("queryEvaluateOrderList");
130   - // TODO 查询待评价订单
131   -}
  72 +
132 73 const handlerChangeRole = () => {
133 74 uni.showModal({
134 75 title: '提示',
... ... @@ -138,7 +79,7 @@ const handlerChangeRole = () =&gt; {
138 79 queryRole().then(res => {
139 80 if (res.data.success) {
140 81 uni.$u.route({
141   - url: `pages/wode/choose/index?ruleVos= ${encodeURIComponent(JSON.stringify(res.data.data.ruleVos))}`,
  82 + url: `pages/wode-info/wode-info-choose/index?ruleVos= ${encodeURIComponent(JSON.stringify(res.data.data.ruleVos))}`,
142 83 })
143 84 }
144 85 })
... ... @@ -172,6 +113,8 @@ const handleLoginOut = () =&gt; {
172 113 }
173 114 });
174 115 }
  116 +
  117 +
175 118 </script>
176 119  
177 120 <style lang="scss" scoped>
... ... @@ -203,45 +146,7 @@ const handleLoginOut = () =&gt; {
203 146 padding: 0 30rpx;
204 147 box-sizing: border-box;
205 148  
206   - .order-icon-btn {
207   - display: flex;
208   - align-items: center;
209   - justify-content: space-between;
210   - width: 100%;
211   - height: 150rpx;
212   - box-sizing: border-box;
213   - padding: 0 30rpx;
214   - background-color: white;
215   - border-radius: 15rpx;
216   - margin-top: 20rpx;
217   -
218   - .order-icon-btn-box {
219   - display: flex;
220   - flex-direction: column;
221   - align-items: center;
222   - justify-content: center;
223   - color: $u-main-color;
224   - @include handleClick;
225 149  
226   - .order-icon-btn-box-img {
227   - margin-bottom: 10rpx;
228   - display: flex;
229   -
230   - image {
231   - width: 35rpx;
232   - height: 35rpx;
233   - background-size: 100% 100%;
234   - transform: translate(9rpx, 8rpx)
235   - }
236   -
237   - .order-icon-btn-box-img-badge {
238   - z-index: 9999;
239   - }
240   - }
241   -
242   - .order-icon-btn-box-label {}
243   - }
244   - }
245 150 }
246 151  
247 152 .more-setting-box {
... ...
garbage-removal/src/pages/wode/wode-disposal/index.vue 0 → 100644
  1 +<template>
  2 + <view class="order-icon-btn">
  3 + <view class="order-icon-btn-box" @click="querySuccessOrderList">
  4 + <view class="order-icon-btn-box-img">
  5 + <image :src="orderUrl"></image>
  6 + <view class="order-icon-btn-box-img-badge">
  7 + <!-- <up-badge max="99" bgColor="#f3a200" :value="messageCount"></up-badge> -->
  8 + &nbsp;
  9 + </view>
  10 + </view>
  11 + <view class="order-icon-btn-box-label">
  12 + 已完成
  13 + </view>
  14 + </view>
  15 + <view class="order-icon-btn-box" @click="queryCleanOrderList">
  16 + <view class="order-icon-btn-box-img">
  17 + <image :src="cleanActiveUrl"></image>
  18 + <view class="order-icon-btn-box-img-badge">
  19 + <up-badge max="99" bgColor="#f3a200" :value="cleanBadgeCount"></up-badge>
  20 + </view>
  21 + </view>
  22 + <view class="order-icon-btn-box-label">
  23 + 处理中
  24 + </view>
  25 + </view>
  26 + </view>
  27 +</template>
  28 +
  29 +<script setup>
  30 +import { queryBadgeByType } from "@/apis/order";
  31 +import cleanActiveUrl from '@/static/image/clean-active.png';
  32 +import orderUrl from '@/static/image/order.png';
  33 +import { onShow } from "@dcloudio/uni-app";
  34 +import { ref } from 'vue';
  35 +const cleanBadgeCount = ref(0);
  36 +const querySuccessOrderList = () => {
  37 + // TODO 查询我的订单
  38 + uni.$u.route({
  39 + url: `pages/wode-info/wode-info-disposal-order/index`,
  40 + params: {
  41 + type: 3
  42 + }
  43 + })
  44 +}
  45 +const queryCleanOrderList = () => {
  46 + uni.$u.route({
  47 + url: `pages/wode-info/wode-info-disposal-order/index`,
  48 + params: {
  49 + type: 1
  50 + }
  51 + })
  52 +}
  53 +const initBadge = () => {
  54 + let cleanType = 1;
  55 + queryBadgeByType(cleanType).then((res) => {
  56 + cleanBadgeCount.value = res.data.data.badge;
  57 + })
  58 +}
  59 +onShow(() => {
  60 + initBadge();
  61 +})
  62 +</script>
  63 +
  64 +<style lang="scss" scoped>
  65 +.order-icon-btn {
  66 + display: flex;
  67 + align-items: center;
  68 + justify-content: space-around;
  69 + width: 100%;
  70 + height: 150rpx;
  71 + box-sizing: border-box;
  72 + padding: 0 30rpx;
  73 + background-color: white;
  74 + border-radius: 15rpx;
  75 + margin-top: 20rpx;
  76 +
  77 + .order-icon-btn-box {
  78 + display: flex;
  79 + flex-direction: column;
  80 + align-items: center;
  81 + justify-content: center;
  82 + color: $u-main-color;
  83 + @include handleClick;
  84 +
  85 + .order-icon-btn-box-img {
  86 + margin-bottom: 20rpx;
  87 + display: flex;
  88 + font-weight: small;
  89 +
  90 + image {
  91 + width: 45rpx;
  92 + height: 45rpx;
  93 + background-size: 100% 100%;
  94 + transform: translate(9rpx, 8rpx);
  95 + }
  96 +
  97 + .order-icon-btn-box-img-badge {
  98 + z-index: 9999;
  99 + }
  100 + }
  101 +
  102 + .order-icon-btn-box-label {}
  103 + }
  104 +}
  105 +</style>
... ...
garbage-removal/src/pages/wode/wode-driver/index.vue 0 → 100644
  1 +<template>
  2 + <view class="order-icon-btn">
  3 + <view class="order-icon-btn-box" @click="queryMyOrderList()">
  4 + <view class="order-icon-btn-box-img">
  5 + <image :src="orderUrl"></image>
  6 + <view class="order-icon-btn-box-img-badge">
  7 + <!-- <up-badge max="99" bgColor="#f3a200" :value="messageCount"></up-badge> -->
  8 + &nbsp;
  9 + </view>
  10 + </view>
  11 + <view class="order-icon-btn-box-label">
  12 + 我的订单
  13 + </view>
  14 + </view>
  15 + <view class="order-icon-btn-box" @click="queryNoCleanOrderList">
  16 + <view class="order-icon-btn-box-img">
  17 + <image :src="cleanWaitUrl"></image>
  18 + <view class="order-icon-btn-box-img-badge">
  19 + <up-badge max="99" bgColor="#f3a200" :value="newBadgeCount"></up-badge>
  20 + </view>
  21 + </view>
  22 + <view class="order-icon-btn-box-label">
  23 + 待清运
  24 + </view>
  25 + </view>
  26 + <view class="order-icon-btn-box" @click="queryCleanOrderList">
  27 + <view class="order-icon-btn-box-img">
  28 + <image :src="cleanActiveUrl"></image>
  29 + <view class="order-icon-btn-box-img-badge">
  30 + <up-badge max="99" bgColor="#f3a200" :value="cleanBadgeCount"></up-badge>
  31 + </view>
  32 + </view>
  33 + <view class="order-icon-btn-box-label">
  34 + 清运中
  35 + </view>
  36 + </view>
  37 + <view class="order-icon-btn-box" @click="querySuccessOrderList">
  38 + <view class="order-icon-btn-box-img">
  39 + <image :src="evaluateUrl"></image>
  40 + <view class="order-icon-btn-box-img-badge">
  41 + &nbsp;
  42 + </view>
  43 + </view>
  44 + <view class="order-icon-btn-box-label">
  45 + 已完成
  46 + </view>
  47 + </view>
  48 + </view>
  49 +</template>
  50 +
  51 +<script setup>
  52 +import { queryBadgeByType } from "@/apis/order";
  53 +import cleanActiveUrl from '@/static/image/clean-active.png';
  54 +import cleanWaitUrl from '@/static/image/clean-wait.png';
  55 +import evaluateUrl from '@/static/image/evaluate.png';
  56 +import orderUrl from '@/static/image/order.png';
  57 +import { onShow } from "@dcloudio/uni-app";
  58 +import { ref } from 'vue';
  59 +const cleanBadgeCount = ref(0);
  60 +const newBadgeCount = ref(0);
  61 +const queryMyOrderList = () => {
  62 + // TODO 查询我的订单
  63 + uni.$u.route({
  64 + url: `pages/wode-info/wode-info-driver-order/index`,
  65 + params: {
  66 + type: 2
  67 + }
  68 + })
  69 +}
  70 +const queryNoCleanOrderList = () => {
  71 + // TODO 查询待清运订单
  72 + uni.$u.route({
  73 + url: `pages/wode-info/wode-info-driver-order/index`,
  74 + params: {
  75 + type: 0
  76 + }
  77 + })
  78 +}
  79 +const queryCleanOrderList = () => {
  80 + // TODO 查询清运中订单
  81 + uni.$u.route({
  82 + url: `pages/wode-info/wode-info-driver-order/index`,
  83 + params: {
  84 + type: 1
  85 + }
  86 + })
  87 +}
  88 +const querySuccessOrderList = () => {
  89 + console.log("querySuccessOrderList");
  90 + uni.$u.route({
  91 + url: `pages/wode-info/wode-info-driver-order/index`,
  92 + params: {
  93 + type: 3
  94 + }
  95 + })
  96 +}
  97 +const initBadge = () => {
  98 + let newType = 0;
  99 + let cleanType = 1;
  100 + queryBadgeByType(newType).then((res) => {
  101 + newBadgeCount.value = res.data.data.badge;
  102 + })
  103 + queryBadgeByType(cleanType).then((res) => {
  104 + cleanBadgeCount.value = res.data.data.badge;
  105 + })
  106 +}
  107 +onShow(() => {
  108 + initBadge();
  109 +})
  110 +</script>
  111 +
  112 +<style lang="scss" scoped>
  113 +.order-icon-btn {
  114 + display: flex;
  115 + align-items: center;
  116 + justify-content: space-between;
  117 + width: 100%;
  118 + height: 150rpx;
  119 + box-sizing: border-box;
  120 + padding: 0 30rpx;
  121 + background-color: white;
  122 + border-radius: 15rpx;
  123 + margin-top: 20rpx;
  124 +
  125 + .order-icon-btn-box {
  126 + display: flex;
  127 + flex-direction: column;
  128 + align-items: center;
  129 + justify-content: center;
  130 + color: $u-main-color;
  131 + @include handleClick;
  132 +
  133 + .order-icon-btn-box-img {
  134 + margin-bottom: 20rpx;
  135 + display: flex;
  136 + font-weight: small;
  137 +
  138 + image {
  139 + width: 45rpx;
  140 + height: 45rpx;
  141 + background-size: 100% 100%;
  142 + transform: translate(9rpx, 8rpx);
  143 + }
  144 +
  145 + .order-icon-btn-box-img-badge {
  146 + z-index: 9999;
  147 + }
  148 + }
  149 +
  150 + .order-icon-btn-box-label {}
  151 + }
  152 +}
  153 +</style>
... ...
garbage-removal/src/pages/wode/wode-other/index.vue 0 → 100644
  1 +<template>
  2 + <view class="order-icon-btn">
  3 + <view class="order-icon-btn-box" @click="queryMyOrderList()">
  4 + <view class="order-icon-btn-box-img">
  5 + <image :src="orderUrl"></image>
  6 + <view class="order-icon-btn-box-img-badge">
  7 + <!-- <up-badge max="99" bgColor="#f3a200" :value="messageCount"></up-badge> -->
  8 + &nbsp;
  9 + </view>
  10 + </view>
  11 + <view class="order-icon-btn-box-label">
  12 + 我的订单
  13 + </view>
  14 + </view>
  15 + <view class="order-icon-btn-box" @click="queryNoCleanOrderList">
  16 + <view class="order-icon-btn-box-img">
  17 + <image :src="cleanWaitUrl"></image>
  18 + <view class="order-icon-btn-box-img-badge">
  19 + <up-badge max="99" bgColor="#f3a200" :value="newBadgeCount"></up-badge>
  20 + </view>
  21 + </view>
  22 + <view class="order-icon-btn-box-label">
  23 + 待清运
  24 + </view>
  25 + </view>
  26 + <view class="order-icon-btn-box" @click="queryCleanOrderList">
  27 + <view class="order-icon-btn-box-img">
  28 + <image :src="cleanActiveUrl"></image>
  29 + <view class="order-icon-btn-box-img-badge">
  30 + <up-badge max="99" bgColor="#f3a200" :value="cleanBadgeCount"></up-badge>
  31 + </view>
  32 + </view>
  33 + <view class="order-icon-btn-box-label">
  34 + 清运中
  35 + </view>
  36 + </view>
  37 + <view class="order-icon-btn-box" @click="queryEvaluateOrderList">
  38 + <view class="order-icon-btn-box-img">
  39 + <image :src="evaluateUrl"></image>
  40 + <view class="order-icon-btn-box-img-badge">
  41 + <up-badge max="99" bgColor="#f3a200" :value="evaluateBadgeCount"></up-badge>
  42 + </view>
  43 + </view>
  44 + <view class="order-icon-btn-box-label">
  45 + 待评价
  46 + </view>
  47 + </view>
  48 + </view>
  49 +</template>
  50 +
  51 +<script setup>
  52 +import { queryBadgeByType } from "@/apis/order";
  53 +import cleanActiveUrl from '@/static/image/clean-active.png';
  54 +import cleanWaitUrl from '@/static/image/clean-wait.png';
  55 +import evaluateUrl from '@/static/image/evaluate.png';
  56 +import orderUrl from '@/static/image/order.png';
  57 +import { onShow } from "@dcloudio/uni-app";
  58 +import { ref } from 'vue';
  59 +const evaluateBadgeCount = ref(0);
  60 +const cleanBadgeCount = ref(0);
  61 +const newBadgeCount = ref(0);
  62 +const queryMyOrderList = () => {
  63 + // TODO 查询我的订单
  64 + uni.$u.route({
  65 + url: `pages/wode-info/wode-info-other-order/index`,
  66 + params: {
  67 + type: 2
  68 + }
  69 + })
  70 +}
  71 +const queryNoCleanOrderList = () => {
  72 + // TODO 查询待清运订单
  73 + uni.$u.route({
  74 + url: `pages/wode-info/wode-info-other-order/index`,
  75 + params: {
  76 + type: 0
  77 + }
  78 + })
  79 +}
  80 +const queryCleanOrderList = () => {
  81 + // TODO 查询清运中订单
  82 + uni.$u.route({
  83 + url: `pages/wode-info/wode-info-other-order/index`,
  84 + params: {
  85 + type: 1
  86 + }
  87 + })
  88 +}
  89 +const queryEvaluateOrderList = () => {
  90 + console.log("queryEvaluateOrderList");
  91 + // TODO 查询待评价订单
  92 + uni.$u.route({
  93 + url: `pages/wode-info/wode-info-other-order/index`,
  94 + params: {
  95 + type: 3,
  96 + evaluateFlag: 1
  97 + }
  98 + })
  99 +}
  100 +const initBadge = () => {
  101 + let newType = 0;
  102 + let cleanType = 1;
  103 + let evaluateType = 3;
  104 + queryBadgeByType(newType).then((res) => {
  105 + newBadgeCount.value = res.data.data.badge;
  106 + })
  107 + queryBadgeByType(cleanType).then((res) => {
  108 + cleanBadgeCount.value = res.data.data.badge;
  109 + })
  110 + queryBadgeByType(evaluateType).then((res) => {
  111 + evaluateBadgeCount.value = res.data.data.badge;
  112 + })
  113 +}
  114 +onShow(() => {
  115 + initBadge();
  116 +})
  117 +</script>
  118 +
  119 +<style lang="scss" scoped>
  120 +.order-icon-btn {
  121 + display: flex;
  122 + align-items: center;
  123 + justify-content: space-between;
  124 + width: 100%;
  125 + height: 150rpx;
  126 + box-sizing: border-box;
  127 + padding: 0 30rpx;
  128 + background-color: white;
  129 + border-radius: 15rpx;
  130 + margin-top: 20rpx;
  131 +
  132 + .order-icon-btn-box {
  133 + display: flex;
  134 + flex-direction: column;
  135 + align-items: center;
  136 + justify-content: center;
  137 + color: $u-main-color;
  138 + @include handleClick;
  139 +
  140 + .order-icon-btn-box-img {
  141 + margin-bottom: 20rpx;
  142 + display: flex;
  143 + font-weight: small;
  144 +
  145 + image {
  146 + width: 45rpx;
  147 + height: 45rpx;
  148 + background-size: 100% 100%;
  149 + transform: translate(9rpx, 8rpx);
  150 + }
  151 +
  152 + .order-icon-btn-box-img-badge {
  153 + z-index: 9999;
  154 + }
  155 + }
  156 +
  157 + .order-icon-btn-box-label {}
  158 + }
  159 +}
  160 +</style>
... ...
garbage-removal/src/static/image/role/company.png 0 → 100644

9.26 KB

garbage-removal/src/static/image/role/disposal.png 0 → 100644

8.61 KB

garbage-removal/src/static/image/role/handler.png 0 → 100644

9.41 KB

garbage-removal/src/static/image/role/user.png 0 → 100644

7.55 KB