Commit dd38c11c086727a5f1bec4c8db7a2660857316d5

Authored by guzijian
1 parent 90d4fba2

feat: 样式修改,优化扫码流程逻辑

Showing 34 changed files with 275 additions and 239 deletions

Too many changes to show.

To preserve performance only 34 of 35 files are displayed.

garbage-removal/package-lock.json
... ... @@ -5105,24 +5105,9 @@
5105 5105 }
5106 5106 },
5107 5107 "node_modules/caniuse-lite": {
5108   - "version": "1.0.30001561",
5109   - "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz",
5110   - "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==",
5111   - "funding": [
5112   - {
5113   - "type": "opencollective",
5114   - "url": "https://opencollective.com/browserslist"
5115   - },
5116   - {
5117   - "type": "tidelift",
5118   - "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
5119   - },
5120   - {
5121   - "type": "github",
5122   - "url": "https://github.com/sponsors/ai"
5123   - }
5124   - ],
5125   - "license": "CC-BY-4.0"
  5108 + "version": "1.0.30001617",
  5109 + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz",
  5110 + "integrity": "sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA=="
5126 5111 },
5127 5112 "node_modules/chalk": {
5128 5113 "version": "2.4.2",
... ...
garbage-removal/src/apis/order.js
... ... @@ -13,6 +13,12 @@ export async function saveOrder(params, config) {
13 13 export async function queryOrderDetail(id) {
14 14 return await request.get(`/order/detail/${id}`);
15 15 }
  16 +/**
  17 + * @method 订单详情
  18 + */
  19 +export async function queryOrderTransportDetail(id) {
  20 + return await request.get(`/order/detail/transport/${id}`);
  21 +}
16 22  
17 23 /**
18 24 * @method 订单列表
... ... @@ -61,7 +67,6 @@ export async function queryOrderDispatch(orderId) {
61 67 return await request.get(`/order/queryDispatch/${orderId}`);
62 68 }
63 69  
64   -
65 70 export async function dispatchOrders(params,config) {
66 71 return await request.put('/order/dispatch', params,config);
67 72 }
... ... @@ -77,3 +82,15 @@ export async function queryOrderHandlerStatus(orderId, config) {
77 82 export async function queryDisposalDispatch(orderId) {
78 83 return await request.get(`/order/queryDisposalDispatch/${orderId}`);
79 84 }
  85 +
  86 +export async function checkCode(validCode) {
  87 + return await request.get(`/order/check/code/${validCode}`);
  88 +}
  89 +
  90 +export async function askTransport(params,config) {
  91 + return await request.post(`/order/askTransport`,params,config);
  92 +}
  93 +
  94 +export async function scanDetail(askId) {
  95 + return await request.get(`/order/scan/detail/${askId}`);
  96 +}
... ...
garbage-removal/src/components/clash-disposal-dispatch/index.vue
... ... @@ -70,14 +70,17 @@ function handlerTreeData(dataList) {
70 70 .map((item, index) => {
71 71 return {
72 72 "id": (index + 1),
73   - "companyName": item.garOrderDisposalCompanyName,
  73 + "name": item.garOrderDisposalCompanyName,
74 74 "label": item.garOrderDisposalCompanyName,
75 75 "children": item.personnelInfo.map((childrenItem, childrenIndex) => {
76 76 return {
77 77 "id": (index + 1) + '-' + (childrenIndex + 1),
78 78 "tel": childrenItem.tel,
79   - "name": childrenItem.name,
80   - "label": childrenItem.tel,
  79 + "companyName": item.garOrderDisposalCompanyName,
  80 + "companyId": item.garOrderDisposalCompanyId,
  81 + "name": childrenItem.personName,
  82 + "personName": childrenItem.personName,
  83 + "label": childrenItem.personName + "-" + childrenItem.tel,
81 84 "checked": childrenItem.checked,
82 85 "disabled": childrenItem.checked ? true : childrenItem.tel ? false : true
83 86 }
... ...
garbage-removal/src/components/liu-delivery-time/liu-delivery-time.vue
... ... @@ -491,7 +491,7 @@ defineExpose({ open })
491 491 .date.active {
492 492 font-size: 30rpx;
493 493 font-weight: bold;
494   - color: #a9e08f;
  494 + color: #19a97c;
495 495 }
496 496  
497 497 .time-scroll {
... ... @@ -514,6 +514,6 @@ defineExpose({ open })
514 514 .time.active {
515 515 font-size: 30rpx;
516 516 font-weight: bold;
517   - color: #a9e08f;
  517 + color: #19a97c;
518 518 }
519 519 </style>
... ...
garbage-removal/src/pages.json
... ... @@ -37,7 +37,7 @@
37 37 "style": {
38 38 "navigationBarTitleText": "收运单详情",
39 39 "enablePullDownRefresh": false,
40   - "navigationBarBackgroundColor":"#53c21d",
  40 + "navigationBarBackgroundColor":"#19a97c",
41 41 "navigationBarTextStyle": "white"
42 42 }
43 43 },
... ... @@ -46,7 +46,7 @@
46 46 "style": {
47 47 "navigationBarTitleText": "收运单扫描",
48 48 "enablePullDownRefresh": false,
49   - "navigationBarBackgroundColor":"#53c21d",
  49 + "navigationBarBackgroundColor":"#19a97c",
50 50 "navigationBarTextStyle": "white"
51 51 }
52 52 },
... ... @@ -67,7 +67,7 @@
67 67 "style": {
68 68 "navigationBarTitleText": "订单详情",
69 69 "navigationBarTextStyle": "white",
70   - "navigationBarBackgroundColor": "#53c21d",
  70 + "navigationBarBackgroundColor": "#19a97c",
71 71 "enablePullDownRefresh": false
72 72 }
73 73 },{
... ... @@ -75,7 +75,7 @@
75 75 "style": {
76 76 "navigationBarTitleText": "完成订单",
77 77 "navigationBarTextStyle": "white",
78   - "navigationBarBackgroundColor": "#53c21d",
  78 + "navigationBarBackgroundColor": "#19a97c",
79 79 "enablePullDownRefresh": false
80 80 }
81 81 },{
... ... @@ -83,7 +83,7 @@
83 83 "style": {
84 84 "navigationBarTitleText": "详情",
85 85 "navigationBarTextStyle": "white",
86   - "navigationBarBackgroundColor": "#53c21d",
  86 + "navigationBarBackgroundColor": "#19a97c",
87 87 "enablePullDownRefresh": false
88 88 }
89 89 },{
... ... @@ -91,7 +91,7 @@
91 91 "style": {
92 92 "navigationBarTitleText": "上传照片",
93 93 "navigationBarTextStyle": "white",
94   - "navigationBarBackgroundColor": "#53c21d",
  94 + "navigationBarBackgroundColor": "#19a97c",
95 95 "enablePullDownRefresh": false
96 96 }
97 97 },{
... ... @@ -99,7 +99,7 @@
99 99 "style": {
100 100 "navigationBarTitleText": "评价详情",
101 101 "navigationBarTextStyle": "white",
102   - "navigationBarBackgroundColor": "#53c21d",
  102 + "navigationBarBackgroundColor": "#19a97c",
103 103 "enablePullDownRefresh": false
104 104 }
105 105 },{
... ... @@ -107,7 +107,7 @@
107 107 "style": {
108 108 "navigationBarTitleText": "写评价",
109 109 "navigationBarTextStyle": "white",
110   - "navigationBarBackgroundColor": "#53c21d",
  110 + "navigationBarBackgroundColor": "#19a97c",
111 111 "enablePullDownRefresh": false
112 112 }
113 113 },
... ... @@ -130,7 +130,7 @@
130 130 "style": {
131 131 "navigationBarTitleText": "清运地址",
132 132 "navigationBarTextStyle":"white",
133   - "navigationBarBackgroundColor":"#53c21d",
  133 + "navigationBarBackgroundColor":"#19a97c",
134 134 "enablePullDownRefresh": false
135 135 }
136 136 },
... ... @@ -139,7 +139,7 @@
139 139 "style": {
140 140 "navigationBarTitleText": "清运地址",
141 141 "navigationBarTextStyle":"white",
142   - "navigationBarBackgroundColor":"#53c21d",
  142 + "navigationBarBackgroundColor":"#19a97c",
143 143 "enablePullDownRefresh": false
144 144 }
145 145 },
... ... @@ -154,7 +154,7 @@
154 154 "style": {
155 155 "navigationBarTitleText": "订单详情",
156 156 "navigationBarTextStyle":"white",
157   - "navigationBarBackgroundColor":"#53c21d",
  157 + "navigationBarBackgroundColor":"#19a97c",
158 158 "enablePullDownRefresh": false
159 159 }
160 160 },{
... ... @@ -168,23 +168,23 @@
168 168 ],
169 169 "tabBar": {
170 170 "color": "#7A7E83",
171   - "selectedColor": "#3cc51f",
  171 + "selectedColor": "#19a97c",
172 172 "borderStyle": "black",
173 173 "backgroundColor": "#ffffff",
174 174 "list": [{
175 175 "pagePath": "pages/home/index",
176 176 "iconPath": "static/tabbar/icon/home.png",
177   - "selectedIconPath": "static/tabbar/icon/home-green.png",
  177 + "selectedIconPath": "static/tabbar/icon/home-active.png",
178 178 "text": "首页"
179 179 }, {
180 180 "pagePath": "pages/order/index",
181 181 "iconPath": "static/tabbar/icon/order.png",
182   - "selectedIconPath": "static/tabbar/icon/order-green.png",
  182 + "selectedIconPath": "static/tabbar/icon/order-active.png",
183 183 "text": "订单"
184 184 }, {
185 185 "pagePath": "pages/wode/index",
186   - "iconPath": "static/tabbar/icon/wode.png",
187   - "selectedIconPath": "static/tabbar/icon/wode-green.png",
  186 + "iconPath": "static/tabbar/icon/my.png",
  187 + "selectedIconPath": "static/tabbar/icon/my-active.png",
188 188 "text": "我的"
189 189 }]
190 190 }
... ...
garbage-removal/src/pages/home/address/addSite.vue
... ... @@ -35,7 +35,7 @@
35 35 <view class="set">当前选中地址</view>
36 36 </view>
37 37 <view class="right">
38   - <u-switch v-model="addressInfo.defaultFlag" size="40" activeColor="#a9e08f"></u-switch>
  38 + <u-switch v-model="addressInfo.defaultFlag" size="40" activeColor="#19a97c"></u-switch>
39 39 </view>
40 40 </view>
41 41 </view>
... ... @@ -245,7 +245,7 @@ const reset = () =&gt; {
245 245 // background-color: $u-info-light;
246 246 height: 100%;
247 247 width: 100%;
248   - background: linear-gradient(to bottom, $u-success-dark, $u-info-light, $u-info-light, $u-info-light);
  248 + background: linear-gradient(to bottom, #19a97c, $u-info-light, $u-info-light, $u-info-light);
249 249  
250 250 .wrap-from-container {
251 251 width: 100%;
... ... @@ -295,7 +295,7 @@ const reset = () =&gt; {
295 295 color: #ffffff;
296 296  
297 297 .add {
298   - background-color: #a9e08f;
  298 + background-color: #19a97c;
299 299 border-radius: 60rpx;
300 300 width: 100%;
301 301 display: flex;
... ... @@ -320,7 +320,7 @@ const reset = () =&gt; {
320 320  
321 321 .update {
322 322 width: 100%;
323   - background-color: $u-success-dark;
  323 + background-color: #19a97c;
324 324 border-radius: 60rpx;
325 325 display: flex;
326 326 align-items: center;
... ...
garbage-removal/src/pages/home/address/index.vue
... ... @@ -83,7 +83,7 @@ onShow(() =&gt; {
83 83 .address-container {
84 84 height: 100%;
85 85 width: 100%;
86   - background: linear-gradient(to bottom, $u-success-dark, $u-info-light, $u-info-light, $u-info-light, $u-info-light, $u-info-light, #ffffff);
  86 + background: linear-gradient(to bottom, #19a97c, $u-info-light, $u-info-light, $u-info-light, $u-info-light, #ffffff);
87 87 padding: 20rpx;
88 88 box-sizing: border-box;
89 89 display: flex;
... ... @@ -132,7 +132,7 @@ onShow(() =&gt; {
132 132 }
133 133  
134 134 .red {
135   - background-color: #a9e08f
  135 + background-color: #19a97c
136 136 }
137 137 }
138 138 }
... ... @@ -158,7 +158,7 @@ onShow(() =&gt; {
158 158 line-height: 100rpx;
159 159 position: absolute;
160 160 bottom: 30rpx;
161   - background-color: #a9e08f;
  161 + background-color: #19a97c;
162 162 border-radius: 60rpx;
163 163 font-size: 30rpx;
164 164  
... ...
garbage-removal/src/pages/home/clean/index.vue
... ... @@ -145,7 +145,7 @@
145 145 <view class="company-clean-container-site-image-info-sure-button-radio">
146 146 <view @click="changeAgree">
147 147 <u-checkbox-group v-model="paramFrom.sureReadFlag" placement="row">
148   - <u-checkbox activeColor="#5ac725" :customStyle="{ marginBottom: '0px', marginTop: '1px' }" size="25"
  148 + <u-checkbox activeColor="#19a97c" :customStyle="{ marginBottom: '0px', marginTop: '1px' }" size="25"
149 149 labelSize="25" shape="square" :key="0" :name="true" :labelDisabled="true"
150 150 labelColor="#909399"></u-checkbox>
151 151 </u-checkbox-group>
... ... @@ -174,7 +174,7 @@
174 174 </view>
175 175 </view>
176 176 <view class="company-clean-bottom-right">
177   - <u-button @click="handleOderSure" shape="square" color="#a9e08f" text="立即订单"></u-button>
  177 + <u-button @click="handleOderSure" shape="square" color="#19a97c" text="立即下单"></u-button>
178 178 </view>
179 179 </view>
180 180 </view>
... ... @@ -824,7 +824,7 @@ $custom-bottom-height: 200rpx;
824 824 display: flex;
825 825 align-items: center;
826 826 justify-content: center;
827   - background-color: #a9e08f;
  827 + background-color: #19a97c;
828 828 border-radius: 100%;
829 829 }
830 830 }
... ... @@ -875,7 +875,7 @@ $custom-bottom-height: 200rpx;
875 875 .company-clean-container-car-popup-content-box {
876 876 box-sizing: border-box;
877 877 padding: $custom-page-padding;
878   - border: 2rpx solid #a9e08f;
  878 + border: 2rpx solid #19a97c;
879 879 border-radius: 10rpx;
880 880  
881 881 .company-clean-container-car-popup-content-box-item {
... ... @@ -907,7 +907,7 @@ $custom-bottom-height: 200rpx;
907 907 }
908 908  
909 909 .company-in-car-store-box-text-yes {
910   - background: #a9e08f;
  910 + background: #19a97c;
911 911 }
912 912  
913 913 .company-in-car-store-box-text-no {
... ...
garbage-removal/src/pages/home/index.vue
... ... @@ -28,7 +28,7 @@
28 28 <view class="company-list-box" v-if="addressInfo">
29 29 <view class="company-list-header">
30 30 <view class="company-list-header-left">
31   - <u-dropdown>
  31 + <u-dropdown active-color="#19a97c">
32 32 <u-dropdown-item :height="'240rpx'" :placement="'left'" v-model="registrationAreaValue"
33 33 @change="handleDropdownAreaChange" :title="'所属区域'" :options="dropdownOptions[0]"></u-dropdown-item>
34 34 <u-dropdown-item :placement="'center'" v-model="carTypeValue" @change="handleDropdownCarChange"
... ... @@ -92,7 +92,7 @@
92 92 </view>
93 93 </view>
94 94 <view class="company-list-item-bottom-contact-company" style="display: flex;">
95   - <up-icon name="phone" color="#a9e08f"></up-icon>
  95 + <up-icon name="phone" color="#19a97c"></up-icon>
96 96 <view @click="handleContactClick(item.servicePhone)"
97 97 style="display: flex; justify-content: center; align-items: center" color="#a9e08f">
98 98 {{ item.servicePhone }}
... ...
garbage-removal/src/pages/login/index.vue
... ... @@ -24,7 +24,7 @@
24 24 <view style="display: flex; justify-content: flex-start;" @click="radioChange">
25 25 <u-checkbox-group v-model="agree" placement="row" @change="groupChange">
26 26 <!-- 选中颜色为绿色 -->
27   - <u-checkbox shape="square" activeColor="green" :size="24"
  27 + <u-checkbox shape="square" activeColor="#19a97c" :size="24"
28 28 :customStyle="{ marginBottom: '0px', marginTop: '1px' }" :key="0" :name="true">
29 29 </u-checkbox>
30 30 </u-checkbox-group>
... ... @@ -142,7 +142,7 @@ export default {
142 142 }
143 143  
144 144 .getCaptcha {
145   - background-color: #5ac725;
  145 + background-color: #19a97c;
146 146 color: #ffffff;
147 147 border: none;
148 148 font-size: 30rpx;
... ...
garbage-removal/src/pages/order/handler-home/index.vue
... ... @@ -11,9 +11,17 @@
11 11 </swiper-item>
12 12 </swiper>
13 13 </z-paging-swiper>
  14 + <view class="scan-box">
  15 + <view class="scan-btn">
  16 + <view class="scan-icon">
  17 + <u-icon @click="handleScan" name="scan" :size="80" color="#fff"></u-icon>
  18 + </view>
  19 + </view>
  20 + </view>
14 21 </template>
15 22  
16 23 <script setup>
  24 +import { checkCode } from '@/apis/order.js';
17 25 import { ref } from 'vue';
18 26 import swiperListItem from './swiper-list-item/index.vue';
19 27 const list = ref([{ name: '处理中' }, { name: '已完成' }])
... ... @@ -33,10 +41,87 @@ const animationfinish = (e) =&gt; {
33 41 const translation = (e) => {
34 42 uTabsElement.value.setDx(e.detail.dx)
35 43 }
  44 +const handleScan = () => {
  45 + // 调用uniapi开启二维码扫描
  46 + // 允许从相机和相册扫码
  47 + checkCode("18977778888,1789190664111099906,508235").then(res => {
  48 + console.log(res);
  49 + if (res.data.code == 200) {
  50 + uni.$u.route({
  51 + url: `pages/order/handler-home/scan-detail/index`,
  52 + params: {
  53 + data: encodeURIComponent(JSON.stringify(res.data.data))
  54 + }
  55 + })
  56 + return
  57 + }
  58 + uni.$u.toast(res.data.msg);
  59 + })
  60 + // uni.scanCode({
  61 + // success: function (res) {
  62 + // console.log('条码类型:' + res.scanType);
  63 + // console.log('条码内容:' + res.result);
  64 + // try {
  65 + // if (res.scanType == "QR_CODE") {
  66 + // checkCode(res.result).then(res => {
  67 + // console.log(res);
  68 + // if (res.data.code == 200) {
  69 + // uni.$u.route({
  70 + // url: `pages/order/handler-home/scan-detail/index`,
  71 + // params: {
  72 + // data: encodeURIComponent(JSON.stringify(res.data.data))
  73 + // }
  74 + // })
  75 + // return
  76 + // }
  77 + // uni.$u.toast(res.data.msg);
  78 + // })
  79 + // }
  80 + // } catch (error) {
  81 + // uni.$u.toast("无法确认当前二维码趟次,请扫描正在进行的运输趟次");
  82 + // }
  83 +
  84 + // }
  85 + // });
  86 +
  87 +}
36 88 </script>
37 89 <style lang="scss" scoped>
38 90 .swiper {
39 91 height: 100%;
40   - background: linear-gradient(to bottom, $u-success-dark, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color);
  92 + background: linear-gradient(to bottom, #19a97c, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color);
  93 +}
  94 +
  95 +.scan-box {
  96 + position: fixed;
  97 + bottom: 200rpx;
  98 + right: 50rpx;
  99 + width: 90rpx;
  100 + height: 90rpx;
  101 + border-radius: 15rpx;
  102 + box-shadow: 0 0 10rpx rgba(0, 0, 0, .1);
  103 + display: flex;
  104 + justify-content: center;
  105 + align-items: center;
  106 + padding: 2rpx;
  107 + box-sizing: border-box;
  108 + background-color: #ffffff71;
  109 +
  110 + .scan-btn {
  111 + width: 80rpx;
  112 + height: 80rpx;
  113 + border-radius: 50%;
  114 + display: flex;
  115 + justify-content: center;
  116 + align-items: center;
  117 + background-color: #19a97c;
  118 + @include handleClick;
  119 +
  120 + .scan-icon {
  121 + display: flex;
  122 + justify-content: center;
  123 + align-items: center;
  124 + }
  125 + }
41 126 }
42 127 </style>
... ...
garbage-removal/src/pages/order/handler-home/scan-detail/index.vue
... ... @@ -6,10 +6,10 @@
6 6 分发时间
7 7 </view>
8 8 <view class="scan-time">
9   - {{ details.scanTime }}
  9 + {{ details.garCreateTime }}
10 10 </view>
11 11 <view class="scan-icon">
12   - <up-icon name="calendar" color="#53c21d" size="40"></up-icon>
  12 + <up-icon name="calendar" color="#19a97c" size="40"></up-icon>
13 13 </view>
14 14 </view>
15 15 <view class="scan-time">
... ... @@ -17,10 +17,10 @@
17 17 司机姓名
18 18 </view>
19 19 <view class="scan-time">
20   - {{ details.name }}
  20 + {{ details.garOrderHandlerName }}
21 21 </view>
22 22 <view class="scan-icon">
23   - <up-icon name="account" color="#53c21d" size="40"></up-icon>
  23 + <up-icon name="account" color="#19a97c" size="40"></up-icon>
24 24 </view>
25 25 </view>
26 26 <view class="scan-time">
... ... @@ -28,10 +28,10 @@
28 28 司机电话
29 29 </view>
30 30 <view class="scan-time" style="color: #a0cfff">
31   - {{ details.driverTel }}
  31 + {{ details.garOrderHandlerTel }}
32 32 </view>
33 33 <view class="scan-icon">
34   - <up-icon name="phone" color="#53c21d" size="40"></up-icon>
  34 + <up-icon name="phone" color="#19a97c" size="40"></up-icon>
35 35 </view>
36 36 </view>
37 37 <view class="scan-time">
... ... @@ -39,10 +39,10 @@
39 39 所属公司
40 40 </view>
41 41 <view class="scan-time">
42   - {{ details.companyName }}
  42 + {{ details.garOrderCompanyName }}
43 43 </view>
44 44 <view class="scan-icon">
45   - <up-icon name="map" color="#53c21d" size="40"></up-icon>
  45 + <up-icon name="map" color="#19a97c" size="40"></up-icon>
46 46 </view>
47 47 </view>
48 48 </view>
... ... @@ -55,7 +55,7 @@
55 55 车牌号
56 56 </view>
57 57 <view class="scan-car-num-content">
58   - {{ details.carNum }}
  58 + {{ details.garHandlerCarCode }}
59 59 </view>
60 60 </view>
61 61 <view class="scan-upload-fill-image-box">
... ... @@ -63,17 +63,18 @@
63 63 <view>
64 64 全景照片
65 65 </view>
66   - <view>
  66 + <view v-if="isDeletable">
67 67 {{ fileList.length }}/3
68 68 </view>
69 69 </view>
70 70 <view class="scan-upload-fill-image-btn">
71   - <u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="3" multiple :maxCount="3"
72   - :previewFullImage="true" width="200" height="150"></u-upload>
  71 + <u-upload :deletable="isDeletable" :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="3"
  72 + multiple :maxCount="isDeletable ? 3 : fileList.length" :previewFullImage="true" width="200"
  73 + height="150"></u-upload>
73 74 </view>
74 75 </view>
75 76 </view>
76   - <view class="scan-submit-button-box">
  77 + <view class="scan-submit-button-box" v-if="isNew">
77 78 <view class="scan-submit-button-btn">
78 79 <u-button type="primary" @click="handlerSubmit" text="确认"></u-button>
79 80 </view>
... ... @@ -83,22 +84,18 @@
83 84  
84 85 <script setup>
85 86 import { uploadFilePromise } from '@/apis/common.js';
  87 +import { askTransport, scanDetail } from '@/apis/order.js';
  88 +import { onLoad } from '@dcloudio/uni-app';
86 89 import { ref } from 'vue';
87   -const details = ref({
88   - scanTime: '2022-09-09 12:00:00',
89   - carNum: '湘A12345',
90   - name: "里斯",
91   - driverTel: "13888888888",
92   - companyName: "测试公司",
93   - fillImageList: [],
94   -})
  90 +const details = ref({})
95 91 const fileList = ref([])
  92 +const isDeletable = ref(true)
96 93 // 删除图片
97 94 const deletePic = (event) => {
98 95 fileList.value.splice(event.index, 1);
99 96 };
100 97  
101   -
  98 +const isNew = ref(true)
102 99 // 新增图片
103 100 const afterRead = async (event) => {
104 101 // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
... ... @@ -124,10 +121,77 @@ const afterRead = async (event) =&gt; {
124 121 fileListLen++;
125 122 }
126 123 };
  124 +
127 125 const handlerSubmit = () => {
128 126 console.log("确认提交");
129   - uni.$u.toast("确认提交了")
  127 + // 校验参数
  128 + let params = {
  129 + ...details.value,
  130 + fillImageList: fileList.value.map((item) => item.url),
  131 + garOrderHandlerCompanyName: details.value.garOrderCompanyName,
  132 + garOrderHandlerCompanyId: details.value.garOrderCompanyId
  133 + }
  134 + if (!validateParams(params)) {
  135 + askTransport(params).then((res) => {
  136 + console.log(res);
  137 + })
  138 + uni.$u.toast("确认提交了")
  139 + }
  140 +}
  141 +
  142 +const validateParams = (params) => {
  143 + if (!params.garOrderHandlerName) {
  144 + uni.$u.toast("请输入处理人姓名");
  145 + return false;
  146 + }
  147 + if (!params.garOrderHandlerTel) {
  148 + uni.$u.toast("请输入处理人电话");
  149 + return false;
  150 + }
  151 + if (!params.garOrderCompanyName) {
  152 + uni.$u.toast("请输入处理人单位");
  153 + return false;
  154 + }
  155 + if (!validateImage(params.fillImageList)) {
  156 + return
  157 + }
  158 +}
  159 +
  160 +const validateImage = (fillImageList) => {
  161 + console.log(fillImageList);
  162 + if (fillImageList instanceof Array) {
  163 + for (let index = 0; index < fillImageList.length; index++) {
  164 + const str = fillImageList[index];
  165 + if (!str.startsWith("/profile/upload")) {
  166 + uni.$u.toast("请等待图片上传~")
  167 + return false;
  168 + }
  169 + }
  170 + return true;
  171 + }
  172 + uni.$u.toast("请上传图片~")
  173 + return false;
130 174 }
  175 +
  176 +onLoad((options) => {
  177 + if (options.data) {
  178 + details.value = JSON.parse(decodeURIComponent(options.data))
  179 + }
  180 + if (options.garAskId) {
  181 + // TODO query
  182 + scanDetail(options.garAskId).then((res) => {
  183 + console.log(res);
  184 + details.value = res.data.data;
  185 + details.value.garOrderCompanyName = details.value.garOrderHandlerCompanyName;
  186 + fileList.value = details.value.fillImageList.map((item) => {
  187 + return { url: import.meta.env.VITE_BASE_URL + item }
  188 + })
  189 + console.log(details.value);
  190 + isDeletable.value = false
  191 + isNew.value = false
  192 + })
  193 + }
  194 +})
131 195 </script>
132 196  
133 197 <style lang="scss" scoped>
... ... @@ -150,6 +214,7 @@ $l-h-8: 80rpx;
150 214 // 底部阴影 向内发散
151 215 border-bottom: 1rpx solid #f5f5f5;
152 216 line-height: 100rpx;
  217 + align-items: center;
153 218  
154 219 .scan-label {
155 220 width: 30%;
... ...
garbage-removal/src/pages/order/handler-home/swiper-list-item/index.vue
... ... @@ -16,22 +16,15 @@
16 16 <image :src="item.goodsUrl" mode="aspectFill"></image>
17 17 </view>
18 18 <view class="content">
19   - <view class="title u-line-2">{{ item.garOrderAddress + item.garOrderAddressDetails }}</view>
  19 + <view class="title u-line-2">{{ item.garOrderAddressDetails }}</view>
20 20 <view class="type">垃圾类型: {{ item.garOrderTrashType }}</view>
21   - <view class="delivery-time">创建时间 {{ item.createTime }}</view>
22   - <view class="transport-num">载运量 {{ item.transportNum }}</view>
  21 + <view class="delivery-time">创建时间 {{ item.garCreateTime }}</view>
  22 + <view class="transport-num">载运量 {{ item.transportNum ? 6 : 8 }}</view>
23 23 </view>
24 24 </view>
25 25 </view>
26 26 </view>
27 27 </z-paging>
28   - <view class="scan-box">
29   - <view class="scan-btn">
30   - <view class="scan-icon">
31   - <u-icon @click="handleScan" name="scan" :size="80" color="#fff"></u-icon>
32   - </view>
33   - </view>
34   - </view>
35 28 </view>
36 29 </template>
37 30  
... ... @@ -55,29 +48,15 @@ const dataList = ref([]);
55 48 const paging = ref(null);
56 49 const firstLoaded = ref(false)
57 50  
58   -const handleClick = (companyId) => {
  51 +const handleClick = (garOrderId) => {
59 52 uni.$u.route({
60 53 url: `pages/order/handler-home/transport-detail/index`,
61 54 params: {
62   - companyId
  55 + garOrderId
63 56 }
64 57 })
65 58 }
66 59  
67   -const handleScan = () => {
68   - // 调用uniapi开启二维码扫描
69   - // 允许从相机和相册扫码
70   - uni.$u.route({
71   - url: `pages/order/handler-home/scan-detail/index`
72   - })
73   - uni.scanCode({
74   - success: function (res) {
75   - console.log('条码类型:' + res.scanType);
76   - console.log('条码内容:' + res.result);
77   - }
78   - });
79   -
80   -}
81 60  
82 61 // list集合
83 62 const queryList = (pageNo, pageSize) => {
... ... @@ -85,39 +64,9 @@ const queryList = (pageNo, pageSize) =&gt; {
85 64 //这里的请求只是演示,请替换成自己的项目的网络请求,并在网络请求回调中通过paging.value.complete(请求回来的数组)将请求结果传给z-paging
86 65 //request.queryList({ pageNo, pageSize }).then(res => {
87 66 //请勿在网络请求回调中给dataList赋值!!只需要调用complete就可以了
88   - queryOrderList({ type: props.tabIndex, pageNo, pageSize }).then((res) => {
89   - paging.value.complete([
90   - {
91   - garOrderId: 1,
92   - garOrderCompanyName: '长沙',
93   - garOrderCompanyId: '3',
94   - garOrderAddress: '广东省广州市天河区',
95   - garOrderAddressDetails: '天河北路168号',
96   - garOrderTrashType: '可回收垃圾',
97   - garOrderAgreementTime: '2022-08-01 10:00',
98   - garOrderHandlerStatus: 0,
99   - garCancelFlag: 0,
100   - garOrderStatus: 0,
101   - goodsUrl: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
102   - createTime: '2022-08-01 10:00',
103   - transportNum: 0
104   - },
105   - {
106   - garOrderId: 2,
107   - garOrderCompanyName: '长沙',
108   - garOrderAddress: '广东省广州市天河区',
109   - garOrderAddressDetails: '天河北路168号',
110   - garOrderCompanyId: '3',
111   - garOrderTrashType: '可回收垃圾',
112   - garOrderAgreementTime: '2022-08-01 10:00',
113   - garOrderHandlerStatus: 0,
114   - garCancelFlag: 0,
115   - garOrderStatus: 0,
116   - goodsUrl: 'https://cdn.uviewui.com/uview/swiper/2.jpg',
117   - createTime: '2022-08-01 10:00',
118   - transportNum: "0"
119   - }
120   - ]);
  67 + queryOrderList({ type: props.tabIndex == 0 ? 1 : 3, pageNo, pageSize }).then((res) => {
  68 + paging.value.complete(res.data.data.list);
  69 + console.log(res);
121 70 firstLoaded.value = true
122 71 }).catch(res => {
123 72 //如果请求失败写paging.value.complete(false),会自动展示错误页面
... ... @@ -211,6 +160,7 @@ watch(() =&gt; props.currentIndex, (val1, val2) =&gt; {
211 160 }
212 161  
213 162 .content {
  163 + width: 100%;
214 164  
215 165 .title {
216 166 font-size: 28rpx;
... ... @@ -230,7 +180,7 @@ watch(() =&gt; props.currentIndex, (val1, val2) =&gt; {
230 180  
231 181 .transport-num {
232 182 font-size: 24rpx;
233   - color: #e5d001;
  183 + color: #19a97c;
234 184 text-align: end;
235 185 }
236 186 }
... ... @@ -305,37 +255,5 @@ watch(() =&gt; props.currentIndex, (val1, val2) =&gt; {
305 255 }
306 256 }
307 257  
308   - .scan-box {
309   - position: fixed;
310   - bottom: 100rpx;
311   - right: 30rpx;
312   - width: 90rpx;
313   - height: 90rpx;
314   - border-radius: 15rpx;
315   - box-shadow: 0 0 10rpx rgba(0, 0, 0, .1);
316   - display: flex;
317   - justify-content: center;
318   - align-items: center;
319   - padding: 2rpx;
320   - box-sizing: border-box;
321   - background-color: #ffffff71;
322   -
323   - .scan-btn {
324   - width: 80rpx;
325   - height: 80rpx;
326   - border-radius: 50%;
327   - display: flex;
328   - justify-content: center;
329   - align-items: center;
330   - background-color: #82e455b1;
331   - @include handleClick;
332   -
333   - .scan-icon {
334   - display: flex;
335   - justify-content: center;
336   - align-items: center;
337   - }
338   - }
339   - }
340 258 }
341 259 </style>
... ...
garbage-removal/src/pages/order/handler-home/transport-detail/index.vue
... ... @@ -46,7 +46,7 @@
46 46 <view class="order-detail-container-header-card-uicon"></view>
47 47 收运清单
48 48 </view>
49   - <view v-if="dataGram.garTransportList" v-for="item in dataGram.garTransportList"
  49 + <view v-if="dataGram.transportDetails" v-for="item in dataGram.transportDetails"
50 50 style="width: 100%; box-sizing: border-box;">
51 51 <view class="transport-process-item" style="display: flex;width: 100%; margin: 20rpx 0 ;">
52 52 <view style="width: 150rpx;">
... ... @@ -54,13 +54,13 @@
54 54 </view>
55 55 <view style="display: flex;align-items: center;width: 100%;justify-content: center;">
56 56 <text style=" transform: rotateY(180deg);">
57   - <up-icon name="car-fill" size="40" color="#a9e08f"></up-icon></text>
58   - <text style="margin-left:15rpx;font-size: 25rpx;">{{ item.garCarNum }}</text>
  57 + <up-icon name="car-fill" size="40" color="#19a97c"></up-icon></text>
  58 + <text style="margin-left:15rpx;font-size: 25rpx;">{{ item.garHandlerCarCode }}</text>
59 59 </view>
60 60 <view style="display: flex; align-items: center;width: 150rpx; justify-content: flex-end;"
61 61 @click="goTransportDetail(item)">
62   - <text style="font-size: 30rpx;white-space: nowrap;margin-right: 15rpx;color: #3c9cff;">详情</text>
63   - <up-icon name="arrow-right" size="30" color="#3c9cff"></up-icon>
  62 + <text style="font-size: 30rpx;white-space: nowrap;margin-right: 15rpx;color: #19a97c;">详情</text>
  63 + <up-icon name="arrow-right" size="30" color="#19a97c"></up-icon>
64 64 </view>
65 65 </view>
66 66 </view>
... ... @@ -82,7 +82,7 @@
82 82 </template>
83 83  
84 84 <script setup>
85   -import { dispatchOrders } from "@/apis/order.js";
  85 +import { queryOrderTransportDetail } from '@/apis/order.js';
86 86 import zStatic from '@/components/z-paging/js/z-paging-static';
87 87 import { useMainStore } from '@/stores/index.js';
88 88 import { onLoad, onShow } from '@dcloudio/uni-app';
... ... @@ -104,7 +104,7 @@ const dataGram = ref({
104 104 garOrderTime: "2022-08-01 12:00:00",
105 105 garOrderType: "1",
106 106 garRemark: "测试",
107   - garTransportList: [{
  107 + transportDetails: [{
108 108 fillImage: "https://img1.baidu.com/it/u=1846112660,2512843120&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=450",
109 109 garCarNum: "湘AT123456",
110 110 garTransportId: "1"
... ... @@ -121,8 +121,6 @@ const dataGram = ref({
121 121 });
122 122 const orderId = ref(null)
123 123 const currentImages = ref([])
124   -const putOnImages = ref([])
125   -const putDownImages = ref([])
126 124 const emptyBase64Image = ref(zStatic.base64Empty)
127 125 const showUQRcode = ref(false)
128 126 const spaceStr = ref("")
... ... @@ -144,32 +142,23 @@ const createQrCodeLocal = (orderId) =&gt; {
144 142 const goTransportDetail = (val) => {
145 143 uni.$u.route({
146 144 url: `pages/order/handler-home/scan-detail/index`
  145 + , params: {
  146 + garAskId: val.garAskId
  147 + }
147 148 })
148 149 }
149 150  
150 151 const handleOrderDetail = (orderId) => {
151   - // queryOrderDetail(orderId).then(res => {
152   - // dataGram.value = res.data.data;
153   - // console.log(res.data.data);
154   - // currentImages.value = res.data.data.currentImages.map(item => {
155   - // return { url: import.meta.env.VITE_BASE_URL + item };
156   - // });
157   - // putOnImages.value = res.data.data.putOnImages.map(item => {
158   - // return { url: import.meta.env.VITE_BASE_URL + item };
159   - // });
160   - // putDownImages.value = res.data.data.putDownImages.map(item => {
161   - // return { url: import.meta.env.VITE_BASE_URL + item };
162   - // });
163   - // })
164   -}
165   -/**
166   - * 拨打电话回调
167   - */
168   -const handleContactClick = (val) => {
169   - uni.makePhoneCall({ phoneNumber: val }).then(res => {
170   - }).catch(err => { });
  152 + queryOrderTransportDetail(orderId).then(res => {
  153 + dataGram.value = res.data.data;
  154 + dataGram.value.transportDetails.forEach(element => {
  155 + element.fillImage = import.meta.env.VITE_BASE_URL + element.fillImage
  156 + })
  157 + currentImages.value = dataGram.value.currentImages.map(element => {
  158 + return { url: import.meta.env.VITE_BASE_URL + element }
  159 + });
  160 + })
171 161 }
172   -
173 162 const handlerJumpOtherApp = (latitude, longitude, garCoordinate) => {
174 163 // 给出提示确定要跳转吗
175 164 uni.showModal({
... ... @@ -189,36 +178,12 @@ const handlerJumpOtherApp = (latitude, longitude, garCoordinate) =&gt; {
189 178 })
190 179 }
191 180  
192   -const handleDispatchConfirm = (val) => {
193   - console.log(val);
194   - if (!val) {
195   - return
196   - }
197   - let data = {
198   - garOrderId: orderId.value,
199   - dispatchList: []
200   - }
201   - for (const key in val) {
202   - data.dispatchList.push({
203   - ...val[key]
204   - });
205   - }
206   - console.log(data);
207   - dispatchOrders(data).then(res => {
208   - if (res.data.success) {
209   - uni.$u.toast(res.data.msg)
210   - } else {
211   - uni.$u.toast("订单下发失败,请重试")
212   - }
213   - clashDispatchRef.value.close()
214   - })
215   -}
216 181  
217 182 /**
218 183 * 初始化信息
219 184 */
220 185 onLoad((options) => {
221   - orderId.value = options.orderId
  186 + orderId.value = options.garOrderId
222 187 handleOrderDetail(orderId.value)
223 188 })
224 189  
... ... @@ -255,7 +220,7 @@ $custom-bottom-height: 200rpx;
255 220 background-color: $u-info-light;
256 221 box-sizing: border-box;
257 222 overflow-y: scroll;
258   - background: linear-gradient(to bottom, $u-success-dark, $u-info-light, $u-info-light, $u-info-light);
  223 + background: linear-gradient(to bottom, #19a97c, $u-info-light, $u-info-light, $u-info-light);
259 224  
260 225  
261 226 .order-detail-container-box {
... ... @@ -350,7 +315,7 @@ $custom-bottom-height: 200rpx;
350 315 display: flex;
351 316 align-items: center;
352 317 justify-content: center;
353   - background-color: #a9e08f;
  318 + background-color: #19a97c;
354 319 border-radius: 100%;
355 320 }
356 321 }
... ...
garbage-removal/src/pages/order/index.vue
... ... @@ -15,6 +15,6 @@ console.log(userType.value);
15 15 </script>
16 16 <style lang="scss" scoped>
17 17 ::v-deep .u-tabs__wrapper__scroll-view {
18   - background-color: #53c21d;
  18 + background-color: #19a97c;
19 19 }
20 20 </style>
... ...
garbage-removal/src/pages/order/other-home/detail/index.vue
... ... @@ -625,7 +625,7 @@ $custom-bottom-height: 200rpx;
625 625 background-color: $u-info-light;
626 626 box-sizing: border-box;
627 627 overflow-y: scroll;
628   - background: linear-gradient(to bottom, $u-success-dark, $u-info-light, $u-info-light, $u-info-light);
  628 + background: linear-gradient(to bottom, #19a97c, $u-info-light, $u-info-light, $u-info-light);
629 629  
630 630  
631 631 .order-detail-container-box {
... ...
garbage-removal/src/pages/order/other-home/guest/index.vue
... ... @@ -224,7 +224,7 @@ $custom-bottom-height: 200rpx;
224 224 background-color: $u-info-light;
225 225 box-sizing: border-box;
226 226 overflow-y: scroll;
227   - background: linear-gradient(to bottom, $u-success-dark, $u-info-light, $u-info-light, $u-info-light);
  227 + background: linear-gradient(to bottom, #19a97c, $u-info-light, $u-info-light, $u-info-light);
228 228  
229 229 .order-detail-container-box {
230 230 height: 100%;
... ...
garbage-removal/src/pages/order/other-home/index.vue
... ... @@ -33,6 +33,6 @@ const translation = (e) =&gt; {
33 33 <style lang="scss" scoped>
34 34 .swiper {
35 35 height: 100%;
36   - background: linear-gradient(to bottom, $u-success-dark, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color);
  36 + background: linear-gradient(to bottom, #19a97c, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color, $u-bg-color);
37 37 }
38 38 </style>
... ...
garbage-removal/src/pages/order/other-home/upload/index.vue
... ... @@ -41,8 +41,6 @@ const deletePic = (event) =&gt; {
41 41 fileList.value.splice(event.index, 1);
42 42 };
43 43  
44   -
45   -
46 44 // 新增图片
47 45 const afterRead = async (event) => {
48 46 // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
... ...
garbage-removal/src/pages/wode/choose/index.vue
... ... @@ -26,7 +26,7 @@
26 26 <view class="choose-type-item-bottom-button"
27 27 :class="item.isNow ? 'choose-type-item-bottom-button-active' : ''">
28 28 {{ item.isNow ? '当前身份' : '切换此身份' }}
29   - <up-icon name="checkmark-circle-fill" :color="item.isNow ? '#35bef7' : ''" size="28"></up-icon>
  29 + <up-icon name="checkmark-circle-fill" :color="item.isNow ? '#19a97c' : ''" size="28"></up-icon>
30 30 </view>
31 31 </view>
32 32 </view>
... ... @@ -277,7 +277,7 @@ onLoad((options) =&gt; {
277 277 }
278 278  
279 279 .choose-type-item-bottom-button-active {
280   - color: #35bef7 !important;
  280 + color: #19a97c !important;
281 281 }
282 282 }
283 283 }
... ...
garbage-removal/src/static/image/handler.png

44.2 KB | W: | H:

145 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
garbage-removal/src/static/image/user.png

15.8 KB | W: | H:

125 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
garbage-removal/src/static/tabbar/icon/home-active.png 0 → 100644

2.38 KB

garbage-removal/src/static/tabbar/icon/home-green.png deleted 100644 → 0

2.52 KB

garbage-removal/src/static/tabbar/icon/home.png

2.78 KB | W: | H:

2.38 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
garbage-removal/src/static/tabbar/icon/my-active.png 0 → 100644

2.98 KB

garbage-removal/src/static/tabbar/icon/my.png 0 → 100644

2.81 KB

garbage-removal/src/static/tabbar/icon/order-active.png 0 → 100644

2.66 KB

garbage-removal/src/static/tabbar/icon/order-green.png deleted 100644 → 0

2.02 KB

garbage-removal/src/static/tabbar/icon/order.png

2 KB | W: | H:

2.56 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
garbage-removal/src/static/tabbar/icon/wode-green.png deleted 100644 → 0

4.58 KB

garbage-removal/src/static/tabbar/icon/wode.png deleted 100644 → 0

4.42 KB

garbage-removal/src/uview-plus/libs/config/color.js
... ... @@ -6,7 +6,7 @@ const color = {
6 6 default: '#909399',
7 7 warning: '#f9ae3d',
8 8 error: '#f56c6c',
9   - success: '#5ac725',
  9 + success: '#19a97c',
10 10 mainColor: '#303133',
11 11 contentColor: '#606266',
12 12 tipsColor: '#909399',
... ...
garbage-removal/src/uview-plus/libs/css/color.scss
... ... @@ -47,7 +47,7 @@
47 47 }
48 48  
49 49 .u-success-dark {
50   - color: $u-success-dark;
  50 + color: #19a97c;
51 51 }
52 52  
53 53 .u-error-dark {
... ...