Commit 592d4b42a6dea52a5c9a75ebef33fa340f8ffcd5

Authored by 史婷婷
1 parent 980154b8

feat: 发货单-申请延期

... ... @@ -15,7 +15,7 @@
15 15
16 16 <!-- 产品 -->
17 17 <view class="section2">
18   - <Product mode="view" :status="form.status" :list="form.detailList" />
  18 + <Product mode="view" :status="form.status" :list="form.detailList" @applyDelay="applyDelayFun" />
19 19 </view>
20 20 <view class="section">
21 21 <view class="row"><text class="label">签收单据</text><text class="value act">{{ form.fileName }}</text></view>
... ... @@ -24,22 +24,83 @@
24 24 </scroll-view>
25 25 <detail-buttons :buttons="displayButtons" @click="handleButtonClick" />
26 26 <uni-popup ref="uploadPopup" type="bottom" :mask-click="false">
27   - <view class="dialog">
28   - <view class="dialog_header">
29   - <text>上传签收单据</text>
30   - <view class="dialog_close" @click="closeUploadInfo">×</view>
31   - </view>
32   - <view class="dialog_body">
33   - <view class="dialog_row">
34   - <text class="dialog_label">签收单据</text>
35   - <FileUpload v-model="uploadFile" />
36   - </view>
37   - </view>
38   - <view class="dialog_footer">
39   - <button class="btn confirm" type="primary" @click="onUploadSave">保存</button>
40   - </view>
41   - </view>
42   - </uni-popup>
  27 + <view class="dialog">
  28 + <view class="dialog_header">
  29 + <text>上传签收单据</text>
  30 + <view class="dialog_close" @click="closeUploadInfo">×</view>
  31 + </view>
  32 + <view class="dialog_body">
  33 + <view class="dialog_row">
  34 + <text class="dialog_label">签收单据</text>
  35 + <FileUpload v-model="uploadFile" />
  36 + </view>
  37 + </view>
  38 + <view class="dialog_footer">
  39 + <button class="btn confirm" type="primary" @click="onUploadSave">保存</button>
  40 + </view>
  41 + </view>
  42 + </uni-popup>
  43 + <!-- 申请延期 -->
  44 + <uni-popup ref="applyDelayPopup" type="bottom" :mask-click="false">
  45 + <view class="dialog">
  46 + <view class="dialog_header">
  47 + <text>申请延期</text>
  48 + <view class="dialog_close" @click="closeApplyDelay">×</view>
  49 + </view>
  50 + <view class="dialog_body">
  51 + <uni-list>
  52 + <uni-list-item title="订单编号">
  53 + <template v-slot:footer>
  54 + <view class="value">{{ applyDelayForm.orderNo }}</view>
  55 + </template>
  56 + </uni-list-item>
  57 + <uni-list-item title="原订单计划发货日期">
  58 + <template v-slot:footer>
  59 + <view class="value">{{ applyDelayForm.shipmentsDate }}</view>
  60 + </template>
  61 + </uni-list-item>
  62 + <uni-list-item title="现申请发货日期">
  63 + <template v-slot:footer>
  64 + <uni-datetime-picker type="date" v-model="applyDelayForm.applyShipmentDate" />
  65 + </template>
  66 + </uni-list-item>
  67 + <uni-list-item title="延期原因">
  68 + <template v-slot:footer>
  69 + <uni-easyinput v-model="applyDelayForm.delayReason" placeholder="请输入延期原因" :inputBorder="false" />
  70 + </template>
  71 + </uni-list-item>
  72 + <uni-list-item title="申请次数">
  73 + <template v-slot:footer>
  74 + <view class="value">{{ applyDelayForm.applyCount }}</view>
  75 + </template>
  76 + </uni-list-item>
  77 + <uni-list-item title="订单类型">
  78 + <template v-slot:footer>
  79 + <view class="value">{{ applyDelayForm.orderType }}</view>
  80 + </template>
  81 + </uni-list-item>
  82 + <uni-list-item title="所属分厂">
  83 + <template v-slot:footer>
  84 + <view class="value">{{ applyDelayForm.workshopName }}</view>
  85 + </template>
  86 + </uni-list-item>
  87 + <uni-list-item title="客户名称">
  88 + <template v-slot:footer>
  89 + <view class="value">{{ applyDelayForm.customerName }}</view>
  90 + </template>
  91 + </uni-list-item>
  92 + <uni-list-item title="发货数量">
  93 + <template v-slot:footer>
  94 + <view class="value">{{ applyDelayForm.quantity }}</view>
  95 + </template>
  96 + </uni-list-item>
  97 + </uni-list>
  98 + </view>
  99 + <view class="dialog_footer">
  100 + <button class="btn confirm" type="primary" @click="onApplyDelaySave">保存</button>
  101 + </view>
  102 + </view>
  103 + </uni-popup>
43 104 </view>
44 105 </template>
45 106
... ... @@ -48,6 +109,7 @@ import { getDetailApi, saveSignInTicket, checkApi } from '@/api/invoice.js'
48 109 import Product from './product.vue'
49 110 import DetailButtons from '@/components/detail-buttons/index.vue'
50 111 import FileUpload from '@/components/file-upload/index.vue'
  112 +import { getShipmentPlanDetailApi, createApi } from '@/api/delay_invoice.js'
51 113
52 114 export default {
53 115 name: 'InvoiceDetail',
... ... @@ -61,7 +123,7 @@ export default {
61 123 { text: '填写实发数', visible: true, variant: 'outline', event: 'fill' },
62 124 { text: '上传签收单据', visible: true, variant: 'primary', event: 'upload' },
63 125 ],
64   - uploadFile: { id: '', name: '' },
  126 + uploadFile: { id: '', name: '' },
65 127 }
66 128 },
67 129 computed: {
... ... @@ -107,8 +169,8 @@ export default {
107 169 if (typeof fn === 'function') fn()
108 170 },
109 171 // onEdit() {
110   - // const id = this.form.id || this.form.code
111   - // if (id) uni.navigateTo({ url: `/pages/invoice/modify?id=${id}` })
  172 + // const id = this.form.id || this.form.code
  173 + // if (id) uni.navigateTo({ url: `/pages/invoice/modify?id=${id}` })
112 174 // },
113 175 async onFill() {
114 176 const id = this.form.id || this.form.code;
... ... @@ -121,19 +183,19 @@ export default {
121 183 if (id) uni.navigateTo({ url: `/pages/invoice/fill?id=${id}&customerName=${this.form.customerName}` })
122 184 },
123 185 onUpload() {
124   - this.$refs.uploadPopup && this.$refs.uploadPopup.open()
  186 + this.$refs.uploadPopup && this.$refs.uploadPopup.open()
125 187 },
126 188 closeUploadInfo() {
127 189 this.uploadFile = { id: '', name: '' };
128   - this.$refs.uploadPopup && this.$refs.uploadPopup.close()
129   - },
  190 + this.$refs.uploadPopup && this.$refs.uploadPopup.close()
  191 + },
130 192 async onUploadSave() {
131 193 console.log('onUploadSave__this.uploadFile', this.uploadFile)
132 194 if (!this.uploadFile.id) {
133 195 uni.showToast({
134   - title: '请上传签收单据',
135   - icon: 'none'
136   - })
  196 + title: '请上传签收单据',
  197 + icon: 'none'
  198 + })
137 199 return
138 200 }
139 201 const params = {
... ... @@ -148,6 +210,50 @@ export default {
148 210 } catch (e) {
149 211 uni.showToast({ title: (e && e.msg) || '保存失败', icon: 'none' })
150 212 }
  213 + },
  214 + applyDelayFun(id) {
  215 + getShipmentPlanDetailApi(id).then(res => {
  216 + if (res && res.data) {
  217 + console.log('handleApplyDelay__res.data', res.data)
  218 + this.applyDelayForm = { ...res.data };
  219 + this.$refs.applyDelayPopup && this.$refs.applyDelayPopup.open();
  220 + }
  221 + })
  222 + },
  223 + closeApplyDelay() {
  224 + this.$refs.applyDelayPopup && this.$refs.applyDelayPopup.close();
  225 + },
  226 + async onApplyDelaySave() {
  227 + console.log('onApplyDelaySave__this.applyDelayForm', this.applyDelayForm)
  228 + if (!this.applyDelayForm.applyShipmentDate) {
  229 + uni.showToast({ title: '请选择现申请发货日期', icon: 'none' })
  230 + return
  231 + }
  232 + const delayedShipmentDetailList = [this.applyDelayForm].map((r) => {
  233 + return {
  234 + orderId: r.orderId,
  235 + shipmentsPlanDetailId: r.id,
  236 + orderSpecId: r.orderSpecId,
  237 + deliveryDate: r.shipmentsDate,
  238 + applyShipmentDate: r.applyShipmentDate,
  239 + applyCount: r.applyCount,
  240 + quantity: Number(r.quantity || 0),
  241 + delayReason: r.delayReason,
  242 + };
  243 + });
  244 + const params = {};
  245 + params.shipmentsOrderId = this.form.id || '';
  246 + params.delayedShipmentDetailList = delayedShipmentDetailList;
  247 + console.log('onApplyDelaySave__params', params)
  248 + try {
  249 + await createApi(params)
  250 + uni.showToast({ title: '保存成功', icon: 'success' })
  251 + // 刷新当前页
  252 + this.$refs.applyDelayPopup && this.$refs.applyDelayPopup.close();
  253 + this.loadDetail(this.form.id)
  254 + } catch (e) {
  255 + uni.showToast({ title: (e && e.msg) || '保存失败', icon: 'none' })
  256 + }
151 257 }
152 258 }
153 259 }
... ... @@ -235,9 +341,10 @@ export default {
235 341 color: rgba(0, 0, 0, 0.9);
236 342 text-align: right;
237 343 word-break: break-all;
  344 +
238 345 &.act {
239 346 color: $theme-primary;
240   - }
  347 + }
241 348
242 349 }
243 350 }
... ... @@ -265,74 +372,213 @@ export default {
265 372
266 373
267 374 .dialog {
268   - width: 100%;
269   - max-height: 70vh;
270   - overflow-y: auto;
271   - padding: 32rpx 28rpx calc(20rpx + env(safe-area-inset-bottom));
272   - background: #fff;
273   - border-radius: 20rpx 20rpx 0 0;
274   -
275   - &_header {
276   - position: relative;
277   - text-align: center;
278   - font-size: 34rpx;
279   - font-weight: 600;
280   - margin-bottom: 12rpx;
281   - color: rgba(0, 0, 0, 0.9);
282   - }
283   -
284   - &_body {
285   - padding: 12rpx 4rpx 24rpx;
286   - }
287   -
288   - &_footer {
289   - padding-top: 12rpx;
290   - display: flex;
291   - justify-content: center;
292   -
293   - .btn {
294   - width: 100%;
295   - height: 80rpx;
296   - line-height: 80rpx;
297   - border-radius: 12rpx;
298   - font-size: 32rpx;
299   - background: $theme-primary;
300   - color: #fff;
301   -
302   - &::after {
303   - border: none;
304   - }
305   - }
306   - }
  375 + width: 100%;
  376 + overflow-y: auto;
  377 + padding: 32rpx 28rpx calc(20rpx + env(safe-area-inset-bottom));
  378 + background: #fff;
  379 + border-radius: 20rpx 20rpx 0 0;
  380 +
  381 + &_header {
  382 + position: relative;
  383 + text-align: center;
  384 + font-size: 34rpx;
  385 + font-weight: 600;
  386 + margin-bottom: 12rpx;
  387 + color: rgba(0, 0, 0, 0.9);
  388 + }
  389 +
  390 + &_body {
  391 + padding: 12rpx 4rpx 24rpx;
  392 + max-height: 70vh;
  393 + overflow-y: auto;
  394 + }
  395 +
  396 + &_footer {
  397 + padding-top: 12rpx;
  398 + display: flex;
  399 + justify-content: center;
  400 +
  401 + .btn {
  402 + width: 100%;
  403 + height: 80rpx;
  404 + line-height: 80rpx;
  405 + border-radius: 12rpx;
  406 + font-size: 32rpx;
  407 + background: $theme-primary;
  408 + color: #fff;
  409 +
  410 + &::after {
  411 + border: none;
  412 + }
  413 + }
  414 + }
307 415 }
308 416
309 417 .dialog_close {
310   - position: absolute;
311   - right: 16rpx;
312   - top: -14rpx;
313   - width: 64rpx;
314   - height: 64rpx;
315   - line-height: 64rpx;
316   - text-align: center;
317   - font-size: 36rpx;
318   - color: rgba(0, 0, 0, 0.6);
  418 + position: absolute;
  419 + right: 16rpx;
  420 + top: -14rpx;
  421 + width: 64rpx;
  422 + height: 64rpx;
  423 + line-height: 64rpx;
  424 + text-align: center;
  425 + font-size: 36rpx;
  426 + color: rgba(0, 0, 0, 0.6);
319 427 }
320 428
321 429 .dialog_row {
322   - margin-bottom: 24rpx;
  430 + margin-bottom: 24rpx;
323 431 }
324 432
325 433 .dialog_label {
326   - display: block;
327   - margin-bottom: 12rpx;
328   - font-size: 28rpx;
329   - color: rgba(0, 0, 0, 0.9);
  434 + display: block;
  435 + margin-bottom: 12rpx;
  436 + font-size: 28rpx;
  437 + color: rgba(0, 0, 0, 0.9);
330 438 }
331 439
332 440 .upload-show {
333   - margin-top: 8rpx;
334   - font-size: 26rpx;
335   - color: rgba(0, 0, 0, 0.6);
  441 + margin-top: 8rpx;
  442 + font-size: 26rpx;
  443 + color: rgba(0, 0, 0, 0.6);
  444 +}
  445 +
  446 +
  447 +::v-deep .uni-list {
  448 + background: transparent;
  449 +
  450 + .uni-list--border-top {
  451 + background-color: transparent !important;
  452 + }
  453 +
  454 + &-item {
  455 + &__extra-text {
  456 + font-size: 32rpx;
  457 + }
  458 +
  459 + &__content-title {
  460 + font-size: 32rpx;
  461 + color: rgba(0, 0, 0, 0.9);
  462 + }
  463 +
  464 + &__container {
  465 + padding: 32rpx;
  466 +
  467 + .uni-easyinput {
  468 +
  469 + .is-disabled {
  470 + background-color: transparent !important;
  471 + }
  472 +
  473 + &__placeholder-class {
  474 + font-size: 32rpx;
  475 + color: rgba(0, 0, 0, 0.4);
  476 + }
  477 +
  478 + &__content {
  479 + border: none;
  480 +
  481 + &-input {
  482 + padding-left: 0 !important;
  483 + height: 48rpx;
  484 + line-height: 48rpx;
  485 + font-size: 32rpx;
  486 + }
  487 +
  488 + .content-clear-icon {
  489 + font-size: 44rpx !important;
  490 + }
  491 + }
  492 + }
  493 +
  494 + .amount-row {
  495 + flex: 1;
  496 + display: flex;
  497 + align-items: center;
  498 +
  499 + .uni-easyinput {
  500 + flex: 1;
  501 + }
  502 +
  503 + .unit {
  504 + margin-left: 16rpx;
  505 + color: rgba(0, 0, 0, 0.9);
  506 + }
  507 + }
  508 +
  509 + .item-title,
  510 + .uni-list-item__content {
  511 + flex: none;
  512 + min-height: 48rpx;
  513 + line-height: 48rpx;
  514 + font-size: 32rpx;
  515 + position: relative;
  516 + width: 200rpx;
  517 + margin-right: 32rpx;
  518 + color: rgba(0, 0, 0, 0.9);
  519 + padding-right: 0;
  520 +
  521 +
  522 + .required {
  523 + color: red;
  524 + position: absolute;
  525 + top: 50%;
  526 + transform: translateY(-50%);
  527 + left: -16rpx;
  528 + }
  529 + }
  530 +
  531 + }
  532 +
  533 + &.select-item {
  534 + &.is-empty {
  535 + .uni-list-item__extra-text {
  536 + color: rgba(0, 0, 0, 0.4) !important;
  537 + }
  538 + }
  539 +
  540 + &.is-filled {
  541 + .uni-list-item__extra-text {
  542 + color: rgba(0, 0, 0, 0.9) !important;
  543 + }
  544 + }
  545 +
  546 + .serial-number-row {
  547 + display: flex;
  548 + align-items: center;
  549 + }
  550 +
  551 + }
  552 +
  553 + &.mgb10 {
  554 + margin-bottom: 20rpx;
  555 + }
  556 +
  557 + }
  558 +
  559 + .title-header {
  560 + background-color: #fff;
  561 + display: flex;
  562 + align-items: center;
  563 + padding: 32rpx 32rpx 22rpx;
  564 +
  565 + &_icon {
  566 + width: 32rpx;
  567 + height: 28rpx;
  568 + margin-right: 16rpx;
  569 + }
  570 +
  571 + span {
  572 + color: rgba(0, 0, 0, 0.9);
  573 + font-size: 32rpx;
  574 + line-height: 44rpx;
  575 + font-weight: 600;
  576 + }
  577 + }
336 578 }
337 579
  580 +/* 只读 easyinput 根据内容自适应高度 */
  581 +::v-deep .uni-list-item__container {
  582 + align-items: flex-start;
  583 +}
338 584 </style>
... ...
... ... @@ -15,7 +15,9 @@
15 15 </view>
16 16 </view>
17 17
18   - <view v-if="status === 'UN_SHIPMENTS' && $auth.hasPermi('shipping-plan-manage:invoice:modify') && items.length > 8" class="tip" >提醒:当前待处理明细超过 8 条,请尽快进行延期操作!</view>
  18 + <view
  19 + v-if="status === 'UN_SHIPMENTS' && $auth.hasPermi('shipping-plan-manage:invoice:modify') && items.length > 8"
  20 + class="tip">提醒:当前待处理明细超过 8 条,请尽快进行延期操作!</view>
19 21
20 22 <view v-if="mode === 'add'" class="section">
21 23 <view v-for="(item, idx) in items" :key="'a-' + idx" class="block">
... ... @@ -94,35 +96,43 @@
94 96 <view class="value value-spec">
95 97 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
96 98 <view v-if="item.thickness" class="value-spec_box">
97   - <view v-if="item.thicknessTolPos" class="value-spec_box_1">{{ item.thicknessTolPos > 0 ? '+' + item.thicknessTolPos : item.thicknessTolPos }}
  99 + <view v-if="item.thicknessTolPos" class="value-spec_box_1">{{ item.thicknessTolPos > 0 ? '+'
  100 + +
  101 + item.thicknessTolPos : item.thicknessTolPos }}
98 102 </view>
99   - <view v-if="item.thicknessTolNeg" class="value-spec_box_2">{{ item.thicknessTolNeg > 0 ? '+' + item.thicknessTolNeg : item.thicknessTolNeg }}
  103 + <view v-if="item.thicknessTolNeg" class="value-spec_box_2">{{ item.thicknessTolNeg > 0 ? '+'
  104 + +
  105 + item.thicknessTolNeg : item.thicknessTolNeg }}
100 106 </view>
101 107 </view>
102 108 <view v-if="item.width" class="value-spec_val p12">*</view>
103 109 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
104 110 <view v-if="item.width" class="value-spec_box">
105   - <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' + item.widthTolPos : item.widthTolPos }}
  111 + <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' +
  112 + item.widthTolPos : item.widthTolPos }}
106 113 </view>
107   - <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' + item.widthTolNeg : item.widthTolNeg }}
  114 + <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' +
  115 + item.widthTolNeg : item.widthTolNeg }}
108 116 </view>
109 117 </view>
110 118 <view v-if="item.length" class="value-spec_val p12">*</view>
111 119 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
112 120 <view v-if="item.length" class="value-spec_box">
113   - <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' + item.lengthTolPos : item.lengthTolPos }}</view>
114   - <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' + item.lengthTolNeg : item.lengthTolNeg }}</view>
  121 + <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' +
  122 + item.lengthTolPos : item.lengthTolPos }}</view>
  123 + <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' +
  124 + item.lengthTolNeg : item.lengthTolNeg }}</view>
115 125 </view>
116 126 </view>
117 127 </view>
118 128 <view class="row"><text class="label">需发数量(kg)</text><text class="value">{{ item.quantity
119   - }}</text>
  129 + }}</text>
120 130 </view>
121 131 <view class="row"><text class="label">实发数量(kg)</text><text class="value">{{ item.actualShipmentQuantity
122   - }}</text>
  132 + }}</text>
123 133 </view>
124 134 <view class="row"><text class="label">件数</text><text class="value">{{ item.num
125   - }}</text></view>
  135 + }}</text></view>
126 136 <view class="row"><text class="label">单价(元/kg)</text><text class="value">{{ item.salesPrice }}</text>
127 137 </view>
128 138 <view class="row"><text class="label">包装费(元/kg)</text><text class="value">{{
... ... @@ -132,12 +142,17 @@
132 142 }}</text>
133 143 </view>
134 144 <view class="row"><text class="label">加工经销</text><text class="value">{{ item.orderType }}</text></view>
135   - <view class="row"><text class="label">运费</text><text class="value">{{ item.contractType !== 'PROCESS_STD_AGMT' ? item.shippingCost : '' }}</text></view>
136   - <view class="row"><text class="label">回程费</text><text class="value">{{ item.contractType === 'PROCESS_STD_AGMT' ? item.shippingCost : '' }}</text></view>
  145 + <view class="row"><text class="label">运费</text><text class="value">{{ item.contractType !==
  146 + 'PROCESS_STD_AGMT' ?
  147 + item.shippingCost : '' }}</text></view>
  148 + <view class="row"><text class="label">回程费</text><text class="value">{{ item.contractType ===
  149 + 'PROCESS_STD_AGMT'
  150 + ? item.shippingCost : '' }}</text></view>
137 151 <view class="row"><text class="label">牌号</text><text class="value">{{ item.brand }}</text></view>
138 152 <view class="row"><text class="label">高新</text><text class="value">-</text></view>
139   - <view v-if="status === 'UN_SHIPMENTS' && $auth.hasPermi('shipping-plan-manage:invoice:modify')" class="row row-opt">
140   - <text class="row-opt_btn">申请延期</text>
  153 + <view v-if="status === 'UN_SHIPMENTS' && $auth.hasPermi('shipping-plan-manage:invoice:modify')"
  154 + class="row row-opt">
  155 + <text class="row-opt_btn" @click="handleApplyDelay(item)">申请延期</text>
141 156 <text class="line"></text>
142 157 <text class="row-opt_btn">拆分</text>
143 158 </view>
... ... @@ -146,7 +161,7 @@
146 161
147 162 <view v-else-if="mode === 'fill'" class="section" v-show="!collapsedView">
148 163 <view v-for="(item, idx) in items" :key="'v-' + idx" class="block">
149   - <uni-list class="edit-list">
  164 + <uni-list class="edit-list">
150 165 <uni-list-item title="订单编号">
151 166 <template v-slot:footer>
152 167 <view class="value">{{ item.orderNo }}</view>
... ... @@ -162,24 +177,30 @@
162 177 <view class="value value-spec">
163 178 <view v-if="item.thickness" class="value-spec_val">{{ item.thickness }}</view>
164 179 <view v-if="item.thickness" class="value-spec_box">
165   - <view v-if="item.thicknessTolPos" class="value-spec_box_1">{{ item.thicknessTolPos > 0 ? '+' + item.thicknessTolPos : item.thicknessTolPos }}
  180 + <view v-if="item.thicknessTolPos" class="value-spec_box_1">{{ item.thicknessTolPos >
  181 + 0 ? '+' + item.thicknessTolPos : item.thicknessTolPos }}
166 182 </view>
167   - <view v-if="item.thicknessTolNeg" class="value-spec_box_2">{{ item.thicknessTolNeg > 0 ? '+' + item.thicknessTolNeg : item.thicknessTolNeg }}
  183 + <view v-if="item.thicknessTolNeg" class="value-spec_box_2">{{ item.thicknessTolNeg >
  184 + 0 ? '+' + item.thicknessTolNeg : item.thicknessTolNeg }}
168 185 </view>
169 186 </view>
170 187 <view v-if="item.width" class="value-spec_val p12">*</view>
171 188 <view v-if="item.width" class="value-spec_val">{{ item.width }}</view>
172 189 <view v-if="item.width" class="value-spec_box">
173   - <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+' + item.widthTolPos : item.widthTolPos }}
  190 + <view v-if="item.widthTolPos" class="value-spec_box_1">{{ item.widthTolPos > 0 ? '+'
  191 + + item.widthTolPos : item.widthTolPos }}
174 192 </view>
175   - <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+' + item.widthTolNeg : item.widthTolNeg }}
  193 + <view v-if="item.widthTolNeg" class="value-spec_box_2">{{ item.widthTolNeg > 0 ? '+'
  194 + + item.widthTolNeg : item.widthTolNeg }}
176 195 </view>
177 196 </view>
178 197 <view v-if="item.length" class="value-spec_val p12">*</view>
179 198 <view v-if="item.length" class="value-spec_val">{{ item.length }}</view>
180 199 <view v-if="item.length" class="value-spec_box">
181   - <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ? '+' + item.lengthTolPos : item.lengthTolPos }}</view>
182   - <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ? '+' + item.lengthTolNeg : item.lengthTolNeg }}</view>
  200 + <view v-if="item.lengthTolPos" class="value-spec_box_1">{{ item.lengthTolPos > 0 ?
  201 + '+' + item.lengthTolPos : item.lengthTolPos }}</view>
  202 + <view v-if="item.lengthTolNeg" class="value-spec_box_2">{{ item.lengthTolNeg > 0 ?
  203 + '+' + item.lengthTolNeg : item.lengthTolNeg }}</view>
183 204 </view>
184 205 </view>
185 206 </template>
... ... @@ -201,8 +222,7 @@
201 222 </uni-list-item>
202 223 <uni-list-item title="件数">
203 224 <template v-slot:footer>
204   - <uni-easyinput type="digit" v-model="item.num"
205   - placeholder="请输入件数" :inputBorder="false"
  225 + <uni-easyinput type="digit" v-model="item.num" placeholder="请输入件数" :inputBorder="false"
206 226 @input="onNonNegativeNumberInput($event, item, idx, 'num')"
207 227 @blur="onNonNegativeNumberBlur(item, idx, 'num')" />
208 228 </template>
... ... @@ -229,12 +249,14 @@
229 249 </uni-list-item>
230 250 <uni-list-item title="运费">
231 251 <template v-slot:footer>
232   - <view class="value">{{ item.contractType !== 'PROCESS_STD_AGMT' ? item.shippingCost : '' }}</view>
  252 + <view class="value">{{ item.contractType !== 'PROCESS_STD_AGMT' ? item.shippingCost : ''
  253 + }}</view>
233 254 </template>
234 255 </uni-list-item>
235 256 <uni-list-item title="回程费">
236 257 <template v-slot:footer>
237   - <view class="value">{{ item.contractType === 'PROCESS_STD_AGMT' ? item.shippingCost : '' }}</view>
  258 + <view class="value">{{ item.contractType === 'PROCESS_STD_AGMT' ? item.shippingCost : ''
  259 + }}</view>
238 260 </template>
239 261 </uni-list-item>
240 262 <uni-list-item title="牌号">
... ... @@ -256,7 +278,7 @@
256 278 {{ item.collapsed ? '展开' : '收起' }}
257 279 </div>
258 280 </view>
259   -
  281 +
260 282 </view>
261 283 </view>
262 284
... ... @@ -277,6 +299,18 @@ export default {
277 299 items: [],
278 300 collapsedView: false,
279 301 roleCodes: [],
  302 + applyDelayForm: {
  303 + id: '',
  304 + orderNo: '',
  305 + deliveryDate: '',
  306 + applyShipmentDate: '',
  307 + applyCount: '',
  308 + orderType: '',
  309 + workshopName: '',
  310 + customerName: '',
  311 + quantity: '',
  312 + delayReason: '',
  313 + }
280 314 }
281 315 },
282 316 computed: {
... ... @@ -419,6 +453,9 @@ export default {
419 453 this.$set(this.items, idx, { ...item })
420 454 uni.showToast({ title: '发货日期必须大于订货日期', icon: 'none' })
421 455 }
  456 + },
  457 + handleApplyDelay(item) {
  458 + this.$emit('applyDelay', item.id)
422 459 }
423 460 }
424 461 }
... ... @@ -807,13 +844,16 @@ export default {
807 844 font-size: 30rpx;
808 845 padding: 0 40rpx;
809 846 text-align: center;
  847 +
810 848 &:first-child {
811 849 color: $theme-primary;
812 850 }
  851 +
813 852 &:last-child {
814 853 color: $theme-primary;
815 854 }
816 855 }
  856 +
817 857 .line {
818 858 display: block;
819 859 width: 2rpx;
... ...