Commit 9289d6f9c10f3f03109e0ac8c9498f4cd025e42c

Authored by lxf
1 parent 08852e31

fix: 24年7月3周优化

@@ -160,8 +160,10 @@ export default { @@ -160,8 +160,10 @@ export default {
160 uni.$u.api.login.wechat({ code }).then(response => { 160 uni.$u.api.login.wechat({ code }).then(response => {
161 const result = response.result || {}; 161 const result = response.result || {};
162 this.$store.commit('SET_AUTHED', result.hasBind); 162 this.$store.commit('SET_AUTHED', result.hasBind);
163 - this.$store.commit('SET_USER_INFO', result);  
164 - uni.$emit('refresh-permission'); 163 + if (result.hasBind) {
  164 + this.$store.commit('SET_USER_INFO', result);
  165 + uni.$emit('refresh-permission');
  166 + }
165 }); 167 });
166 } 168 }
167 }, 169 },
@@ -138,8 +138,8 @@ module.exports = (vm) => { @@ -138,8 +138,8 @@ module.exports = (vm) => {
138 getPayeeInfo: params => vm.$u.http.get( freightAPI + '/freightOrder/getPayeeInfo', params), // 获取收款人 138 getPayeeInfo: params => vm.$u.http.get( freightAPI + '/freightOrder/getPayeeInfo', params), // 获取收款人
139 modifyCustomerOrderCode: params => vm.$u.http.post( freightAPI + '/freightOrder/modifyCustomerOrderCode', params), // 修改内部单号 139 modifyCustomerOrderCode: params => vm.$u.http.post( freightAPI + '/freightOrder/modifyCustomerOrderCode', params), // 修改内部单号
140 modifyAddress: params => vm.$u.http.get( freightAPI + '/freightOrder/modifyAddress', params), // 更改地址 140 modifyAddress: params => vm.$u.http.get( freightAPI + '/freightOrder/modifyAddress', params), // 更改地址
141 - modifyGoods: params => vm.$u.http.post( freightAPI + '/freightOrder/modifyGoods', params), // 更改货物信息  
142 - adjustAmount: params => vm.$u.http.post( freightAPI + '/freightOrder/adjustAmount', params), // 更改运费 141 + modifyGoods: params => vm.$u.http.post( freightAPI + '/freightOrder/maModifyGoods', params), // 更改货物信息
  142 + adjustAmount: params => vm.$u.http.post( freightAPI + '/freightOrder/maAdjustAmount', params), // 更改运费
143 modifyReceiptAttachment: params => vm.$u.http.post( freightAdmin + '/woss/freightOrder/modifyReceiptAttachment', params), // 修改回单附件 143 modifyReceiptAttachment: params => vm.$u.http.post( freightAdmin + '/woss/freightOrder/modifyReceiptAttachment', params), // 修改回单附件
144 count: params => vm.$u.http.post( freightAPI + '/freightOrder/count', params), // 状态数量 144 count: params => vm.$u.http.post( freightAPI + '/freightOrder/count', params), // 状态数量
145 getDetail: params => vm.$u.http.get( freightAPI + '/freightOrder/getDetail', {params}), // 订单详情 145 getDetail: params => vm.$u.http.get( freightAPI + '/freightOrder/getDetail', {params}), // 订单详情
config/index.js
@@ -29,28 +29,28 @@ const newUploadHost = `${envMapping[env] || envMapping.develop}/driver-app-api/u @@ -29,28 +29,28 @@ const newUploadHost = `${envMapping[env] || envMapping.develop}/driver-app-api/u
29 export default { 29 export default {
30 // 微信小程序名称 30 // 微信小程序名称
31 wxAppName: '则一飞牛货主', 31 wxAppName: '则一飞牛货主',
32 - 32 +
33 // 微信小程序ID 33 // 微信小程序ID
34 wxAppId: 'wxc92a99760d6b0a99', 34 wxAppId: 'wxc92a99760d6b0a99',
35 - 35 +
36 // 企业微信小程序SuiteID 36 // 企业微信小程序SuiteID
37 suiteId: '', 37 suiteId: '',
38 - 38 +
39 // 钉钉第三方企业版小程序应用ID 39 // 钉钉第三方企业版小程序应用ID
40 clientId: '', 40 clientId: '',
41 - 41 +
42 // 腾讯地图位置服务KEY(对应插件chooseLocation) 42 // 腾讯地图位置服务KEY(对应插件chooseLocation)
43 mapServiceKey: 'CFKBZ-6L3C4-LZSUR-DJQAY-3R7NT-IPFJR', 43 mapServiceKey: 'CFKBZ-6L3C4-LZSUR-DJQAY-3R7NT-IPFJR',
44 44
45 // 小程序的 Code Name 45 // 小程序的 Code Name
46 - name: 'outscourced-ma', 46 + name: 'freight-ma',
47 47
48 // 全局分享文案 48 // 全局分享文案
49 shareMessage: '则一飞牛货主', 49 shareMessage: '则一飞牛货主',
50 50
51 // 服务地址 51 // 服务地址
52 apiHost, 52 apiHost,
53 - 53 +
54 // 上传地址 54 // 上传地址
55 uploadHost, 55 uploadHost,
56 56
@@ -62,4 +62,4 @@ export default { @@ -62,4 +62,4 @@ export default {
62 62
63 // 小程序版本(生产) 63 // 小程序版本(生产)
64 version: miniProgram?.version, 64 version: miniProgram?.version,
65 -} 65 +};
@@ -18,16 +18,16 @@ uni.$u.setConfig({ @@ -18,16 +18,16 @@ uni.$u.setConfig({
18 'u-primary': colorPrimary, 18 'u-primary': colorPrimary,
19 }, 19 },
20 }, 20 },
21 - props: { 21 + props: {
22 line: { 22 line: {
23 - color: 'rgba(151, 151, 151, 0.2)' 23 + color: 'rgba(151, 151, 151, 0.2)',
24 }, 24 },
25 swiper: { 25 swiper: {
26 - bgColor: 'inherit' 26 + bgColor: 'inherit',
27 }, 27 },
28 - tabs: { 28 + tabs: {
29 lineColor: colorPrimary, 29 lineColor: colorPrimary,
30 - }, 30 + },
31 steps: { 31 steps: {
32 activeColor: colorPrimary, 32 activeColor: colorPrimary,
33 }, 33 },
@@ -44,18 +44,19 @@ uni.$u.setConfig({ @@ -44,18 +44,19 @@ uni.$u.setConfig({
44 activeColor: colorPrimary, 44 activeColor: colorPrimary,
45 }, 45 },
46 input: { 46 input: {
47 - fontSize: 'inherit' 47 + fontSize: 'inherit',
48 }, 48 },
49 text: { 49 text: {
50 size: 'inherit', 50 size: 'inherit',
51 - color: 'inherit' 51 + color: 'inherit',
52 }, 52 },
53 icon: { 53 icon: {
54 - color: 'inherit' 54 + color: 'inherit',
55 }, 55 },
56 - } 56 + },
57 }); 57 });
58 - 58 +import mpShare from './uni_modules/uview-ui/libs/mixin/mpShare.js';
  59 +Vue.mixin(mpShare);
59 // 混入与组件List相关的页面生命周期 60 // 混入与组件List相关的页面生命周期
60 Vue.mixin({ 61 Vue.mixin({
61 onPullDownRefresh() { 62 onPullDownRefresh() {
@@ -68,7 +69,7 @@ Vue.mixin({ @@ -68,7 +69,7 @@ Vue.mixin({
68 onSearch(config) { 69 onSearch(config) {
69 if (this.mpType === 'page' && this.$refs.list) this.$refs.list.search(config); 70 if (this.mpType === 'page' && this.$refs.list) this.$refs.list.search(config);
70 }, 71 },
71 - } 72 + },
72 }); 73 });
73 74
74 // 页面内获取当前页面参数 75 // 页面内获取当前页面参数
@@ -79,7 +80,7 @@ Object.defineProperty(Vue.prototype, '$params', { @@ -79,7 +80,7 @@ Object.defineProperty(Vue.prototype, '$params', {
79 }, 80 },
80 }); 81 });
81 82
82 -import store from './store' 83 +import store from './store';
83 84
84 Vue.config.productionTip = false; 85 Vue.config.productionTip = false;
85 Vue.prototype.$store = store; 86 Vue.prototype.$store = store;
@@ -88,7 +89,7 @@ App.mpType = 'app'; @@ -88,7 +89,7 @@ App.mpType = 'app';
88 89
89 const app = new Vue({ 90 const app = new Vue({
90 store, 91 store,
91 - ...App 92 + ...App,
92 }); 93 });
93 94
94 require('@/utils/uniapp.js')(uni); 95 require('@/utils/uniapp.js')(uni);
pages/login/login.vue
@@ -4,8 +4,8 @@ @@ -4,8 +4,8 @@
4 <image src="/static/logo.png" mode="aspectFit"></image> 4 <image src="/static/logo.png" mode="aspectFit"></image>
5 </view> 5 </view>
6 <view class="page-login__title"> 6 <view class="page-login__title">
7 - <view>您好,</view>  
8 - <view>欢迎使用则一飞牛货主</view> 7 + <view class="welcome">欢迎使用</view>
  8 + <view class="title">则一飞牛货主</view>
9 </view> 9 </view>
10 <!-- #ifdef MP-WEIXIN --> 10 <!-- #ifdef MP-WEIXIN -->
11 <view class="page-login__content"> 11 <view class="page-login__content">
@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 <view class="page-login__wechat"> 40 <view class="page-login__wechat">
41 <u-button type="primary" plain shape="circle" open-type="getPhoneNumber" :loading="submitting" loading-text="登录中..." @getphonenumber="onGetPhoneNumber"> 41 <u-button type="primary" plain shape="circle" open-type="getPhoneNumber" :loading="submitting" loading-text="登录中..." @getphonenumber="onGetPhoneNumber">
42 <!-- <u-icon name="weixin-fill" size="inherit" /> --> 42 <!-- <u-icon name="weixin-fill" size="inherit" /> -->
43 - <text>手机号快捷登录</text> 43 + <text>微信一键登录</text>
44 </u-button> 44 </u-button>
45 </view> 45 </view>
46 <!-- #endif --> 46 <!-- #endif -->
@@ -202,6 +202,14 @@ export default { @@ -202,6 +202,14 @@ export default {
202 font-size: $font-lg * 1.2; 202 font-size: $font-lg * 1.2;
203 padding: $padding-md; 203 padding: $padding-md;
204 line-height: 2; 204 line-height: 2;
  205 + text-align: center;
  206 + color: $color-primary;
  207 + .welcome {
  208 + font-size: 40rpx;
  209 + }
  210 + .title {
  211 + font-size: 70rpx;
  212 + }
205 } 213 }
206 &__content { 214 &__content {
207 color: $color-minor; 215 color: $color-minor;
@@ -224,7 +232,7 @@ export default { @@ -224,7 +232,7 @@ export default {
224 background-color: $color-primary; 232 background-color: $color-primary;
225 padding: $padding-md; 233 padding: $padding-md;
226 line-height: 1.5; 234 line-height: 1.5;
227 - text-align: cener; 235 + text-align: center;
228 font-size: $font-md * 1.2; 236 font-size: $font-md * 1.2;
229 border-radius: $radius-lg * 2; 237 border-radius: $radius-lg * 2;
230 &::after { 238 &::after {
@@ -245,7 +253,7 @@ export default { @@ -245,7 +253,7 @@ export default {
245 } 253 }
246 } 254 }
247 &__wechat { 255 &__wechat {
248 - color: $color-wx; 256 + color: $color-primary;
249 margin-top: $padding-md * 3; 257 margin-top: $padding-md * 3;
250 .u-icon { 258 .u-icon {
251 margin-right: $padding-base; 259 margin-right: $padding-base;
pages/me/index.vue
1 <template> 1 <template>
2 - <Page name="my" flank>  
3 - <template #content>  
4 - <view class="page-my__background"></view>  
5 - <view class="page-my__info">  
6 - <view class="page-my__info-avatar">  
7 - <view class="avatar">  
8 - <image v-if="freightInfo.headImgUrl" class="image" :src="freightInfo.headImgUrl" mode="aspectFill" />  
9 - <!-- #ifdef MP-WEIXIN -->  
10 - <open-data v-else type="userAvatarUrl"></open-data>  
11 - <!-- #endif -->  
12 - <!-- #ifndef MP-WEIXIN -->  
13 - <!-- #ifdef MP-DINGTALK -->  
14 - <image class="image" :src="formatImagePath('dingtalk', 'svg')" mode="aspectFill"></image>  
15 - <!-- #endif -->  
16 - <!-- #ifndef MP-DINGTALK -->  
17 - <image class="image" :src="formatImagePath('avatar-none', 'svg')" mode="aspectFill"></image>  
18 - <!-- #endif -->  
19 - <!-- #endif -->  
20 - </view>  
21 - </view>  
22 - <view class="page-my__info-content">  
23 - <view class="name">  
24 - <text v-if="freightInfo.name">{{ freightInfo.name }}{{ mobileFilter(freightInfo.mobile) }}</text>  
25 - <!-- #ifdef MP-WEIXIN -->  
26 - <open-data v-else type="userNickName"></open-data>  
27 - <!-- #endif -->  
28 - <!-- #ifndef MP-WEIXIN -->  
29 - <text>钉钉用户</text>  
30 - <!-- #endif -->  
31 - </view>  
32 - <view class="mobile">  
33 - {{ freightInfo.enterpriseName }}  
34 - </view>  
35 - <view class="mobile">  
36 - <render-dict v-if="freightInfo.job" v-else dict="FREIGHT_ENTERPRISE_EMPLOYEE_JOB" :value="freightInfo.job"></render-dict>  
37 - <text v-else-if="freightInfo.enterpriseAdmin">管理员</text>  
38 - </view> 2 + <view class="page-my">
  3 + <view class="page-my__background"></view>
  4 + <view class="page-my__info">
  5 + <view class="page-my__info-avatar">
  6 + <view class="avatar">
  7 + <image class="image" src="/static/user_img.png" mode="aspectFill" />
39 <!-- #ifdef MP-WEIXIN --> 8 <!-- #ifdef MP-WEIXIN -->
40 - <view class="refresh-version" @click.stop="handleRefreshVersion">  
41 - <view :class="[loading && 'loading']"><u-icon name="reload" size="20" /></view>  
42 - <text>检测更新</text>  
43 - </view> 9 + <!-- <open-data v-else type="userAvatarUrl"></open-data>-->
  10 + <!-- #endif -->
  11 + <!-- #ifndef MP-WEIXIN -->
  12 + <!-- #ifdef MP-DINGTALK -->
  13 + <image class="image" :src="formatImagePath('dingtalk', 'svg')" mode="aspectFill"></image>
  14 + <!-- #endif -->
  15 + <!-- #ifndef MP-DINGTALK -->
  16 + <image class="image" :src="formatImagePath('avatar-none', 'svg')" mode="aspectFill"></image>
  17 + <!-- #endif -->
44 <!-- #endif --> 18 <!-- #endif -->
45 </view> 19 </view>
46 </view> 20 </view>
47 - <view class="page-my__login">  
48 - <template v-if="authed">  
49 - <u-button shape="circle" @click="handleLogout">退出登录</u-button>  
50 - </template>  
51 - <template v-else>  
52 - <u-button shape="circle" @click="handleLogin">立即登录</u-button>  
53 - </template> 21 + <view class="page-my__info-content">
  22 + <view class="name">
  23 + <text v-if="freightInfo.name">{{ freightInfo.name }}{{ mobileFilter(freightInfo.mobile) }}</text>
  24 + <!-- #ifdef MP-WEIXIN -->
  25 + <open-data v-else type="userNickName"></open-data>
  26 + <!-- #endif -->
  27 + <!-- #ifndef MP-WEIXIN -->
  28 + <text>钉钉用户</text>
  29 + <!-- #endif -->
  30 + </view>
  31 + <view class="mobile">
  32 + {{ freightInfo.enterpriseName || '' }}
  33 + </view>
  34 + <view class="tag-job" v-if="freightInfo.id">
  35 + <render-dict v-if="freightInfo.job" v-else dict="FREIGHT_ENTERPRISE_EMPLOYEE_JOB" :value="freightInfo.job"></render-dict>
  36 + <text v-else-if="freightInfo.enterpriseAdmin">管理员</text>
  37 + </view>
  38 + <!-- #ifdef MP-WEIXIN -->
  39 + <!-- <view class="refresh-version" @click.stop="handleRefreshVersion">-->
  40 + <!-- <view :class="[loading && 'loading']"><u-icon name="reload" size="20" /></view>-->
  41 + <!-- <text>检测更新</text>-->
  42 + <!-- </view>-->
  43 + <!-- #endif -->
54 </view> 44 </view>
  45 + </view>
  46 + <view class="page-my__login">
  47 + <u-button shape="circle" @click="handleRefreshVersion">检测更新</u-button>
  48 + <template v-if="authed">
  49 + <u-button shape="circle" @click="handleLogout">退出登录</u-button>
  50 + </template>
  51 + <template v-else>
  52 + <u-button shape="circle" @click="handleLogin">立即登录</u-button>
  53 + </template>
55 <view class="card-version"> 54 <view class="card-version">
56 <text class="cell-version">SDK: {{ versionInfo.SDKVersion }}</text> 55 <text class="cell-version">SDK: {{ versionInfo.SDKVersion }}</text>
57 <text class="cell-version">wechat: {{ versionInfo.version }}</text> 56 <text class="cell-version">wechat: {{ versionInfo.version }}</text>
58 <text class="cell-version" v-if="version">version: {{ version }}</text> 57 <text class="cell-version" v-if="version">version: {{ version }}</text>
59 </view> 58 </view>
60 - </template>  
61 - </Page> 59 + </view>
  60 + </view>
62 </template> 61 </template>
63 62
64 <script> 63 <script>
@@ -134,8 +133,10 @@ export default { @@ -134,8 +133,10 @@ export default {
134 box-sizing: border-box; 133 box-sizing: border-box;
135 overflow-x: hidden; 134 overflow-x: hidden;
136 &__info { 135 &__info {
137 - padding-top: $padding-md * 6;  
138 - padding-bottom: $padding-md * 3; 136 + margin: $padding-md;
  137 + background: $color-white;
  138 + padding: $padding-md;
  139 + border-radius: $radius-md;
139 display: flex; 140 display: flex;
140 text-align: center; 141 text-align: center;
141 align-items: center; 142 align-items: center;
@@ -176,6 +177,15 @@ export default { @@ -176,6 +177,15 @@ export default {
176 } 177 }
177 .mobile { 178 .mobile {
178 color: $color-text-minor; 179 color: $color-text-minor;
  180 + font-size: 26upx;
  181 + }
  182 + .tag-job {
  183 + color: #2673fb;
  184 + font-size: 20upx;
  185 + margin-top: $padding-base;
  186 + border-radius: $radius-sm;
  187 + padding: 4upx 10upx;
  188 + border: 1px solid #2673fb;
179 } 189 }
180 } 190 }
181 &__background { 191 &__background {
@@ -208,8 +218,11 @@ export default { @@ -208,8 +218,11 @@ export default {
208 } 218 }
209 } 219 }
210 &__login { 220 &__login {
211 - margin-top: $padding-md * 24; 221 + position: absolute;
  222 + width: 100%;
  223 + bottom: 20upx;
212 .u-button { 224 .u-button {
  225 + margin-bottom: $padding-md;
213 box-shadow: $shadow-normal; 226 box-shadow: $shadow-normal;
214 } 227 }
215 } 228 }
pages/order/add.vue
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <u-input v-model="form.goodsName" border="none" suffix-icon="arrow-right" placeholder="请选择" disabledColor="#ffffff" disabled /> 27 <u-input v-model="form.goodsName" border="none" suffix-icon="arrow-right" placeholder="请选择" disabledColor="#ffffff" disabled />
28 </u-form-item> 28 </u-form-item>
29 <u-form-item v-if="showGoodsValue" label="货物价值" required> 29 <u-form-item v-if="showGoodsValue" label="货物价值" required>
30 - <u-input v-model="form.goodsValue" border="none" type="digit" placeholder="请输入" /> 30 + <u-input v-model="form.goodsValue" border="none" type="digit" placeholder="请输入" @change="computedService" />
31 </u-form-item> 31 </u-form-item>
32 <u-form-item label="货物件数"> 32 <u-form-item label="货物件数">
33 <u-input v-model="form.goodsPiece" border="none" type="digit" placeholder="请输入,选填" /> 33 <u-input v-model="form.goodsPiece" border="none" type="digit" placeholder="请输入,选填" />
@@ -41,7 +41,11 @@ @@ -41,7 +41,11 @@
41 </view> 41 </view>
42 <view class="card"> 42 <view class="card">
43 <u-form-item label="司机手机" required> 43 <u-form-item label="司机手机" required>
44 - <u-input v-model="form.mobile" border="none" type="number" placeholder="请输入" @blur="mobileChange" /> 44 + <u-input v-model="form.mobile" border="none" type="number" placeholder="请输入" @blur="mobileChange">
  45 + <template #suffix>
  46 + <u-tag @click="(showModal = true), (content = '')" text="粘贴识别" plain size="mini"></u-tag>
  47 + </template>
  48 + </u-input>
45 </u-form-item> 49 </u-form-item>
46 <u-form-item label="司机姓名" required> 50 <u-form-item label="司机姓名" required>
47 <u-input v-model="form.driverName" border="none" placeholder="请输入" :disabled="!!form.driverId" /> 51 <u-input v-model="form.driverName" border="none" placeholder="请输入" :disabled="!!form.driverId" />
@@ -75,7 +79,11 @@ @@ -75,7 +79,11 @@
75 :disabled="autoComputedArrival" 79 :disabled="autoComputedArrival"
76 :placeholder="autoComputedArrival ? '自动计算' : '请输入'" 80 :placeholder="autoComputedArrival ? '自动计算' : '请输入'"
77 @change="computedService" 81 @change="computedService"
78 - /> 82 + >
  83 + <template #suffix>
  84 + <span v-if="autoComputedArrival && form.driverSecurityServiceAmount" class="color-red">已扣安全服务费{{ form.driverSecurityServiceAmount }}</span>
  85 + </template>
  86 + </u-input>
79 </u-form-item> 87 </u-form-item>
80 <u-form-item label="尾款/回单付"> 88 <u-form-item label="尾款/回单付">
81 <u-input 89 <u-input
@@ -86,7 +94,11 @@ @@ -86,7 +94,11 @@
86 @change="computedService" 94 @change="computedService"
87 :disabled="!autoComputedArrival" 95 :disabled="!autoComputedArrival"
88 :placeholder="!autoComputedArrival ? '自动计算' : '请输入'" 96 :placeholder="!autoComputedArrival ? '自动计算' : '请输入'"
89 - /> 97 + >
  98 + <template #suffix>
  99 + <span v-if="!autoComputedArrival && form.driverSecurityServiceAmount" class="color-red">已扣安全服务费{{ form.driverSecurityServiceAmount }}</span>
  100 + </template>
  101 + </u-input>
90 </u-form-item> 102 </u-form-item>
91 </view> 103 </view>
92 <view class="card" @tap="more = !more"> 104 <view class="card" @tap="more = !more">
@@ -127,6 +139,9 @@ @@ -127,6 +139,9 @@
127 <u-button type="primary" @tap="submitAddFun">下单并指派</u-button> 139 <u-button type="primary" @tap="submitAddFun">下单并指派</u-button>
128 </template> 140 </template>
129 <u-toast ref="uToast"></u-toast> 141 <u-toast ref="uToast"></u-toast>
  142 + <u-modal :show="showModal" title="粘贴识别司机车辆信息" :showCancelButton="true" @cancel="cliCancel" @confirm="cliSubmit" confirmText="确定">
  143 + <u--textarea v-model="content" placeholder="支持同时粘贴司机手机号、车牌号、车挂号"></u--textarea>
  144 + </u-modal>
130 <popup-platenumber :visible="showCar" @update:visible="e => (showCar = e)" @confirm="carConfirm" v-model="carNumber"></popup-platenumber> 145 <popup-platenumber :visible="showCar" @update:visible="e => (showCar = e)" @confirm="carConfirm" v-model="carNumber"></popup-platenumber>
131 </Page> 146 </Page>
132 </template> 147 </template>
@@ -135,11 +150,14 @@ import { urlParam } from &#39;@/utils/param&#39;; @@ -135,11 +150,14 @@ import { urlParam } from &#39;@/utils/param&#39;;
135 import dayjs from 'dayjs'; 150 import dayjs from 'dayjs';
136 import payee from '../../components/card/payee.vue'; 151 import payee from '../../components/card/payee.vue';
137 import PopupPlatenumber from '../../components/popup/popup-platenumber.vue'; 152 import PopupPlatenumber from '../../components/popup/popup-platenumber.vue';
  153 +import UTextarea from '../../uni_modules/uview-ui/components/u--textarea/u--textarea.vue';
138 export default { 154 export default {
139 name: 'order-add', 155 name: 'order-add',
140 - components: { PopupPlatenumber, payee }, 156 + components: { UTextarea, PopupPlatenumber, payee },
141 data() { 157 data() {
142 return { 158 return {
  159 + showModal: '',
  160 + content: '',
143 carNumber: '', 161 carNumber: '',
144 showLoadTime: false, 162 showLoadTime: false,
145 loadTimeDef: new Date(), 163 loadTimeDef: new Date(),
@@ -195,6 +213,57 @@ export default { @@ -195,6 +213,57 @@ export default {
195 this.initConfig(); 213 this.initConfig();
196 }, 214 },
197 methods: { 215 methods: {
  216 + clipboard(data) {
  217 + if (!data) return;
  218 + let mobileReg = /1[3456789]\d{9}/;
  219 + let vehicleReg = /[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[ABCDEFGHJKLMNOPQRSTUVWXY]{1}[0-9A-Z]{5,6}/;
  220 + let trailerReg = /[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[ABCDEFGHJKLMNPQRSTUVWXY]{1}[0-9A-Z]{4}[挂超]{1}/;
  221 + let mobile = mobileReg.exec(data.toUpperCase());
  222 + let vehicle = vehicleReg.exec(data.toUpperCase());
  223 + let trailer = trailerReg.exec(data.toUpperCase());
  224 + let cliMobile = '',
  225 + cliVehicle = '',
  226 + cliTrailer = '';
  227 + if (mobile && mobile.input) {
  228 + cliMobile = mobile[0];
  229 + }
  230 + if (vehicle && vehicle.input) {
  231 + cliVehicle = vehicle[0];
  232 + }
  233 + if (trailer && trailer.input) {
  234 + cliTrailer = trailer[0];
  235 + }
  236 + console.info(cliMobile, cliVehicle, cliTrailer);
  237 + if (cliMobile || cliVehicle || cliTrailer) {
  238 + this.form = {
  239 + ...this.form,
  240 + mobile: cliMobile || this.form.mobile,
  241 + licenseNumber: cliVehicle || this.form.licenseNumber,
  242 + };
  243 + if (cliMobile) {
  244 + this.mobileChange();
  245 + }
  246 + if (cliVehicle) {
  247 + this.typeCar = 'licenseNumber';
  248 + this.vehicleChange(cliVehicle);
  249 + }
  250 + if (cliTrailer) {
  251 + setTimeout(() => {
  252 + this.typeCar = 'trailerNumber';
  253 + this.form.trailerNumber = cliTrailer ? cliTrailer.replace('超', '挂') : this.form.trailerNumber;
  254 + this.vehicleChange(cliTrailer);
  255 + }, 500);
  256 + }
  257 + }
  258 + },
  259 + cliCancel() {
  260 + this.showModal = false;
  261 + },
  262 + cliSubmit() {
  263 + this.clipboard(this.content);
  264 + this.cliCancel();
  265 + },
  266 +
198 initConfig() { 267 initConfig() {
199 uni.$u.api.freightOrder.currentFreight({}).then(en => { 268 uni.$u.api.freightOrder.currentFreight({}).then(en => {
200 this.currentFreight = en?.result || {}; 269 this.currentFreight = en?.result || {};
pages/order/card.vue
@@ -30,6 +30,11 @@ @@ -30,6 +30,11 @@
30 </view> 30 </view>
31 </view> 31 </view>
32 </view> 32 </view>
  33 + <view class="card-order__item">
  34 + <image src="/static/driver.png" />
  35 + {{ item.driverName ? item.driverName.substring(0, 4) : '' }} {{ item.driverMobile ? item.driverMobile : '' }} | {{ item.vehicleLicenseNum ? item.vehicleLicenseNum : '' }}
  36 + {{ item.trailerLicenseNum ? item.trailerLicenseNum : '' }}
  37 + </view>
33 <view class="card-order__tags"> 38 <view class="card-order__tags">
34 <view class="tag--warning" v-if="item.driverCertifiedStatus === 'NOT_CERTIFIED'">司机未认证</view> 39 <view class="tag--warning" v-if="item.driverCertifiedStatus === 'NOT_CERTIFIED'">司机未认证</view>
35 <view class="tag--paying" v-if="item.driverCertifiedStatus === 'CERTIFYING'">司机认证中</view> 40 <view class="tag--paying" v-if="item.driverCertifiedStatus === 'CERTIFYING'">司机认证中</view>
@@ -43,10 +48,6 @@ @@ -43,10 +48,6 @@
43 <text class="tag--warning" v-if="item.extraTrailerFlag">多车挂</text> 48 <text class="tag--warning" v-if="item.extraTrailerFlag">多车挂</text>
44 <text class="tag--warning" v-if="item.missTrailerFlag">缺车挂</text> 49 <text class="tag--warning" v-if="item.missTrailerFlag">缺车挂</text>
45 </view> 50 </view>
46 - <view class="card-order__item">  
47 - {{ item.driverName ? item.driverName : '' }} {{ item.driverMobile ? item.driverMobile : '' }} | {{ item.vehicleLicenseNum ? item.vehicleLicenseNum : '' }}  
48 - {{ item.trailerLicenseNum ? item.trailerLicenseNum : '' }}  
49 - </view>  
50 <view class="card-order__footer"> 51 <view class="card-order__footer">
51 <view class="amount"> 52 <view class="amount">
52 运费<text class="red">¥{{ item.freightAmount }}</text> 53 运费<text class="red">¥{{ item.freightAmount }}</text>
@@ -185,12 +186,19 @@ export default { @@ -185,12 +186,19 @@ export default {
185 } 186 }
186 } 187 }
187 &__item { 188 &__item {
  189 + margin-top: $padding-xs;
188 display: flex; 190 display: flex;
189 font-size: 26upx; 191 font-size: 26upx;
190 color: #999999; 192 color: #999999;
  193 + align-items: baseline;
  194 + image {
  195 + margin-right: $padding-xs;
  196 + width: 24upx;
  197 + height: 24upx;
  198 + }
191 } 199 }
192 &__tags { 200 &__tags {
193 - margin-bottom: $padding-sm; 201 + margin-top: $padding-xs;
194 display: flex; 202 display: flex;
195 align-items: center; 203 align-items: center;
196 flex-wrap: wrap; 204 flex-wrap: wrap;
@@ -206,6 +214,7 @@ export default { @@ -206,6 +214,7 @@ export default {
206 font-size: $font-sm; 214 font-size: $font-sm;
207 background-color: rgba($color-primary, 0.1); 215 background-color: rgba($color-primary, 0.1);
208 &--warning { 216 &--warning {
  217 + margin-right: $padding-xs;
209 color: #f52723; 218 color: #f52723;
210 font-size: 20rpx; 219 font-size: 20rpx;
211 padding-left: 10rpx; 220 padding-left: 10rpx;
@@ -214,6 +223,7 @@ export default { @@ -214,6 +223,7 @@ export default {
214 border: 2rpx solid #f52723; 223 border: 2rpx solid #f52723;
215 } 224 }
216 &--paying { 225 &--paying {
  226 + margin-right: $padding-xs;
217 color: #ff9339; 227 color: #ff9339;
218 font-size: 20rpx; 228 font-size: 20rpx;
219 padding-left: 10upx; 229 padding-left: 10upx;
@@ -314,7 +324,7 @@ export default { @@ -314,7 +324,7 @@ export default {
314 color: #ffffff; 324 color: #ffffff;
315 } 325 }
316 } 326 }
317 - margin-top: $padding-sm; 327 + margin-top: $padding-base;
318 } 328 }
319 } 329 }
320 </style> 330 </style>
pages/order/change-fee.vue
@@ -73,7 +73,11 @@ @@ -73,7 +73,11 @@
73 :suffix-icon="autoComputedArrival ? '' : 'arrow-right'" 73 :suffix-icon="autoComputedArrival ? '' : 'arrow-right'"
74 :placeholder="autoComputedArrival ? '自动计算' : '请输入'" 74 :placeholder="autoComputedArrival ? '自动计算' : '请输入'"
75 :disabled="autoComputedArrival || arrivalPay.disabled" 75 :disabled="autoComputedArrival || arrivalPay.disabled"
76 - ></u-input> 76 + >
  77 + <template #suffix>
  78 + <span v-if="autoComputedArrival && form.driverSecurityServiceAmount" class="color-red">-{{ form.driverSecurityServiceAmount }}</span>
  79 + </template>
  80 + </u-input>
77 </view> 81 </view>
78 </view> 82 </view>
79 <view class="item"> 83 <view class="item">
@@ -95,7 +99,11 @@ @@ -95,7 +99,11 @@
95 :suffix-icon="!autoComputedArrival ? '' : 'arrow-right'" 99 :suffix-icon="!autoComputedArrival ? '' : 'arrow-right'"
96 :placeholder="!autoComputedArrival ? '自动计算' : '请输入'" 100 :placeholder="!autoComputedArrival ? '自动计算' : '请输入'"
97 :disabled="!autoComputedArrival || final.disabled" 101 :disabled="!autoComputedArrival || final.disabled"
98 - ></u-input> 102 + >
  103 + <template #suffix>
  104 + <span v-if="!autoComputedArrival && form.driverSecurityServiceAmount" class="color-red">-{{ form.driverSecurityServiceAmount }}</span>
  105 + </template>
  106 + </u-input>
99 </view> 107 </view>
100 </view> 108 </view>
101 </view> 109 </view>
pages/order/detail.vue
@@ -79,7 +79,9 @@ @@ -79,7 +79,9 @@
79 <text v-if="!!item.goodsWeight">{{ item.goodsWeight }}吨</text> 79 <text v-if="!!item.goodsWeight">{{ item.goodsWeight }}吨</text>
80 <text v-if="!!item.goodsVolume">{{ item.goodsVolume }}方</text> 80 <text v-if="!!item.goodsVolume">{{ item.goodsVolume }}方</text>
81 </view> 81 </view>
82 - <view v-if="$permission('/freightOrder/modifyGoods')" class="action" @tap="toChangeGoods"> <u--text text="修改" suffixIcon="arrow-right"></u--text> </view> 82 + <view v-if="$permission('/freightOrder/modifyGoods') && !['ALREADY_SETTLEMENT'].includes(item.paymentSettlementStatus)" class="action" @tap="toChangeGoods">
  83 + <u--text text="修改" suffixIcon="arrow-right"></u--text>
  84 + </view>
83 </view> 85 </view>
84 </view> 86 </view>
85 <view class="card__item"> 87 <view class="card__item">
@@ -218,7 +220,13 @@ @@ -218,7 +220,13 @@
218 <view class="card__item_field"> 220 <view class="card__item_field">
219 <render-dict dict="ONLINE_FREIGHT_ORDER_FEE_TYPE" :value="it.type"></render-dict> 221 <render-dict dict="ONLINE_FREIGHT_ORDER_FEE_TYPE" :value="it.type"></render-dict>
220 </view> 222 </view>
221 - <view class="card__item_content">¥{{ it.amount }}</view> 223 + <view class="card__item_content">
  224 + ¥{{ it.amount || 0 }}
  225 + <span v-if="item.driverSecurityServiceAmount">
  226 + <span v-if="autoComputedArrival && it.type === 'OUT_INVITE_ARRIVAL'" class="color-red">已扣安全服务费{{ item.driverSecurityServiceAmount }}</span>
  227 + <span v-if="!autoComputedArrival && it.type === 'OUT_INVITE_FINAL'" class="color-red">已扣安全服务费{{ item.driverSecurityServiceAmount }}</span>
  228 + </span>
  229 + </view>
222 <view v-if="it.payStatus === 'PAY_FAILED'" class="card__item--warning">支付失败:{{ it.remark }}</view> 230 <view v-if="it.payStatus === 'PAY_FAILED'" class="card__item--warning">支付失败:{{ it.remark }}</view>
223 <view v-if="it.payStatus === 'PAYING'" class="card__item--paying">支付中</view> 231 <view v-if="it.payStatus === 'PAYING'" class="card__item--paying">支付中</view>
224 <view v-if="it.payStatus === 'PAY_SUCCESS'" class="card__item--success">已支付</view> 232 <view v-if="it.payStatus === 'PAY_SUCCESS'" class="card__item--success">已支付</view>
@@ -285,11 +293,30 @@ export default { @@ -285,11 +293,30 @@ export default {
285 { cityName: '', areaName: '', address: '' }, 293 { cityName: '', areaName: '', address: '' },
286 ], 294 ],
287 }, 295 },
  296 + currentFreight: {},
288 }; 297 };
289 }, 298 },
290 computed: { 299 computed: {
291 amountList() { 300 amountList() {
292 - return this.item.orderFeePayPlanList ? this.item.orderFeePayPlanList.filter(i => i.amount && i.amount > 0) : []; 301 + let list = this.item.orderFeePayPlanList;
  302 + if (!list || list.length === 0) return [];
  303 + const { prePayFlag, arrivalPayFlag, oilPayFlag } = this.item;
  304 + let oilPay = list.filter(i => i.type === 'OIL_COST')[0];
  305 + let prePay = list.filter(i => i.type === 'OUT_INVITE_PRE')[0];
  306 + let arrivalPay = list.filter(i => i.type === 'OUT_INVITE_ARRIVAL')[0];
  307 + let finalPay = list.filter(i => i.type === 'OUT_INVITE_FINAL')[0];
  308 + let res = [];
  309 + if (oilPayFlag || (oilPay.amount && oilPay.amount > 0)) {
  310 + res.push(oilPay);
  311 + }
  312 + if (prePayFlag || (prePay.amount && prePay.amount > 0)) {
  313 + res.push(prePay);
  314 + }
  315 + if (arrivalPayFlag || (arrivalPay.amount && arrivalPay.amount > 0) || (this.autoComputedArrival && this.item.driverSecurityServiceAmount)) {
  316 + res.push(arrivalPay);
  317 + }
  318 + res.push(finalPay);
  319 + return res;
293 }, 320 },
294 payeeModel() { 321 payeeModel() {
295 return this.item.payee 322 return this.item.payee
@@ -300,6 +327,10 @@ export default { @@ -300,6 +327,10 @@ export default {
300 } 327 }
301 : {}; 328 : {};
302 }, 329 },
  330 + autoComputedArrival() {
  331 + // 自动计算货到
  332 + return 'OUT_INVITE_ARRIVAL' === this.currentFreight ? this.currentFreight.autoComputeFeeType : false;
  333 + },
303 }, 334 },
304 onLoad(options) { 335 onLoad(options) {
305 if (options.code) { 336 if (options.code) {
@@ -308,6 +339,9 @@ export default { @@ -308,6 +339,9 @@ export default {
308 }, 339 },
309 methods: { 340 methods: {
310 initData(code) { 341 initData(code) {
  342 + uni.$u.api.freightOrder.currentFreight({}).then(en => {
  343 + this.currentFreight = en.result || {};
  344 + });
311 uni.$u.api.freightOrder.getDetail({ code }).then(res => { 345 uni.$u.api.freightOrder.getDetail({ code }).then(res => {
312 this.item = res.result || {}; 346 this.item = res.result || {};
313 }); 347 });
pages/order/index.vue
@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
33 </view> 33 </view>
34 </template> 34 </template>
35 <template #content> 35 <template #content>
36 - <List ref="list" v-model="list" :api="orderAPI" @update:loading="e => (loading = e)"> 36 + <List ref="list" v-model="list" :api="orderAPI" @update:loading="e => (loading = e)" :verify="true">
37 <template v-for="(item, index) in list"> 37 <template v-for="(item, index) in list">
38 <card 38 <card
39 @more="more" 39 @more="more"
pages/settlement/index.vue
@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 </view> 40 </view>
41 </template> 41 </template>
42 <template #content> 42 <template #content>
43 - <List ref="list" v-model="list" :api="orderAPI" @update:loading="e => (loading = e)"> 43 + <List ref="list" v-model="list" :api="orderAPI" @update:loading="e => (loading = e)" :verify="true">
44 <template v-for="(item, index) in list"> 44 <template v-for="(item, index) in list">
45 <card @apply="applySub" @audit="auditFun" @cancelApply="cancelApplySub" @tap="toDetail(item.orderCode)" :key="index" :item="item"></card> 45 <card @apply="applySub" @audit="auditFun" @cancelApply="cancelApplySub" @tap="toDetail(item.orderCode)" :key="index" :item="item"></card>
46 </template> 46 </template>
static/driver.png 0 → 100644

7.25 KB

static/qr.png

188 Bytes | W: | H:

6.59 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
static/user_img.png 0 → 100644

11.4 KB