doctor-admin-components 1.0.13-beta.4 → 1.0.13-beta.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +18 -7
  2. package/package.json +1 -1
  3. package/packages/index.js +4 -0
  4. package/packages/src/api/biz/bizContract.js +963 -1
  5. package/packages/src/api/biz/bizContractCompany.js +1 -1
  6. package/packages/src/assets/images/click-show-table.png +0 -0
  7. package/packages/src/assets/images/more.png +0 -0
  8. package/packages/src/assets/images/pdf-new.png +0 -0
  9. package/packages/src/components/FileUpload/contract-drag-new.vue +89 -8
  10. package/packages/src/i18n/en/message.json +259 -0
  11. package/packages/src/i18n/index.js +38 -0
  12. package/packages/src/i18n/zh-CN/message.json +259 -0
  13. package/packages/src/utils/index.js +35 -0
  14. package/packages/src/utils/request.js +120 -146
  15. package/packages/src/views/biz/bizFileInfo/PAYMENT_VOUCHER(/"payment_voucher/", /"/344/273/230/346/254/276/345/207/255/350/257/201.ini" +222 -0
  16. package/packages/src/views/biz/bizFileInfo/contract copy.vue +1711 -0
  17. package/packages/src/views/biz/bizFileInfo/contract.vue +1602 -969
  18. package/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue +114 -0
  19. package/packages/src/views/biz/bizFileInfo/contractFile/ContentTitle.vue +102 -0
  20. package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +280 -0
  21. package/packages/src/views/biz/bizFileInfo/contractFile/Progress.vue +84 -0
  22. package/packages/src/views/biz/bizFileInfo/contractFile/ProgressDetail.vue +122 -0
  23. package/packages/src/views/biz/bizFileInfo/contractFile/SectionSlot.vue +83 -0
  24. package/packages/src/views/biz/bizFileInfo/contractFile/ShowAndHide.vue +173 -0
  25. package/packages/src/views/biz/bizFileInfo/fileShow copy.vue +321 -0
  26. package/packages/src/views/biz/bizFileInfo/fileShow.vue +178 -130
  27. package/packages/src/views/biz/bizFileInfo/fileShowClaim.vue +1 -1
  28. package/packages/src/views/biz/bizShipment/add.vue +111 -66
  29. package/packages/src/views/biz/contractTracing/addSubCompany.vue +106 -169
  30. package/packages/src/views/biz/contractTracing/billInfo.vue +150 -315
  31. package/packages/src/views/biz/contractTracing/contractPdf.vue +31 -20
  32. package/packages/src/views/biz/contractTracing/contractSummary.vue +286 -629
  33. package/packages/src/views/biz/contractTracing/contractTracingDetail copy.vue +107 -0
  34. package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +202 -8
  35. package/packages/src/views/biz/contractTracing/editBill.vue +219 -359
  36. package/packages/src/views/biz/contractTracing/purchaseInvoiceUpload.vue +91 -3
  37. package/packages/src/views/biz/contractTracing/shipmentPurchaseAmount.vue +8 -2
  38. package/packages/src/views/biz/contractTracing/subCompanyDialog.vue +196 -176
  39. package/packages/src/views/biz/contractTracing/association.vue +0 -189
  40. package/packages/src/views/biz/contractTracing/chargingDialog.vue +0 -84
  41. package/packages/src/views/biz/contractTracing/contract.vue +0 -1276
  42. package/packages/src/views/biz/contractTracing/disputeRecord.vue +0 -311
  43. package/packages/src/views/biz/contractTracing/edit.vue +0 -205
  44. package/packages/src/views/biz/contractTracing/sendDrafEmail.vue +0 -120
  45. package/packages/src/views/biz/contractTracing/shipment.vue +0 -601
@@ -1,46 +1,27 @@
1
1
  <template>
2
2
  <div class="app-container" v-if="linkId">
3
- <div slot="header">
4
- <el-row>
5
- <el-button
6
- style="float: right"
7
- type="text"
8
- @click="downloadZip"
9
- >{{ $t("contractDetail.downloadZip") }}</el-button>
10
- </el-row>
3
+ <!--合同 装运 收获 进度显示 -->
4
+ <div class="progress-root">
5
+ <Progress :infoPro="contractProgressInfo"></Progress>
6
+ <Progress :infoPro="shipProgressInfo"></Progress>
7
+ <Progress :infoPro="getGoodsProgressInfo"></Progress>
11
8
  </div>
12
- <el-timeline>
13
- <el-timeline-item icon="el-icon-success" type="primary" size="large">
14
- <div style="color: #1890ff">{{ $t("contractDetail.contractInfoConfirm") }}</div>
15
- <div>
16
- <el-row>
17
- <el-col :span="5">
18
- <div class="sub-title">
19
- {{
20
- contract.contractType == "sale"
21
- ? $t("contractDetail.saleContract")
22
- : $t("contractDetail.purchaseContract")
23
- }}
24
- <el-button
25
- v-if="channel !== 'official-website'"
26
- type="text"
27
- size="mini"
28
- @click="handleHistory('contract_formal')"
29
- >历史合同文件</el-button>
30
- </div>
31
- <div class="file-list">
32
- <file-show
33
- :hiddenOperation="channel == 'official-website'"
34
- @refresh="handleRefresh"
35
- @checked="handleChecked"
36
- @uncheck="handleUncheck"
37
- :fileInfo="
38
- getLastFileByList(contractFileInfo.latestContractFileInfo)
39
- "
40
- />
41
- </div>
42
- </el-col>
43
- <el-col :span="4">
9
+ <!-- 合同 -->
10
+ <div style="margin-top:30px">
11
+ <SectionSlot :infoPro="contractProgressInfo">
12
+ <template v-slot:header>
13
+ <div>
14
+ <ProgressDetail :infoPro="contractProgressInfo"></ProgressDetail>
15
+ </div>
16
+ </template>
17
+ <template v-slot:content>
18
+ <div class="content-root">
19
+ <!-- 提单指令 -->
20
+ <ContentTitle :contentTitleProp="{
21
+ bgButton: '提单指令',
22
+ bgTime:contractFileInfo.personalBillFileInfo && timeFormate(contractFileInfo.personalBillFileInfo),
23
+ }"></ContentTitle>
24
+ <el-col :span="12" v-if="getLastFileByList(contractFileInfo.latestBillFileInfo)">
44
25
  <div>
45
26
  <div class="sub-title">{{ $t("contractDetail.blInfo") }}</div>
46
27
  <div class="file-list">
@@ -49,6 +30,7 @@
49
30
  @refresh="handleRefresh"
50
31
  @checked="handleChecked"
51
32
  @uncheck="handleUncheck"
33
+ :selectFileListProp="selectFileList"
52
34
  :fileInfo="
53
35
  getLastFileByList(contractFileInfo.latestBillFileInfo)
54
36
  "
@@ -56,563 +38,805 @@
56
38
  </div>
57
39
  </div>
58
40
  </el-col>
59
- <el-col :span="6">
41
+ <el-col :span="12">
60
42
  <div class="file-list">
61
- <file-show
62
- :hiddenOperation="channel == 'official-website'"
63
- @refresh="handleRefresh"
64
- @checked="handleChecked"
65
- @uncheck="handleUncheck"
66
- :file-info="item"
67
- v-for="(item, i) in contractFileInfo.personalBillFileInfo"
68
- :key="i"
69
- />
70
- <contract-file-drag-upload
71
- v-if="channel !== 'official-website'"
72
- @upload="
73
- handleUpload(
74
- $event,
75
- contract.dealId,
76
- 'dealRecord',
77
- 'personal_deal_bill'
78
- )
79
- "
80
- :isShowTip="false"
81
- />
43
+ <file-show
44
+ :hiddenOperation="channel == 'official-website'"
45
+ @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
46
+ v-for="(item, i) in contractFileInfo.personalBillFileInfo" :key="i" />
47
+ <contract-file-drag-upload
48
+ v-show="(!contractFileInfo.personalBillFileInfo || contractFileInfo.personalBillFileInfo.length == 0) && channel !== 'official-website'"
49
+ @upload="
50
+ handleUpload(
51
+ $event,
52
+ contract.dealId,
53
+ 'dealRecord',
54
+ 'personal_deal_bill'
55
+ )
56
+ ":isShowTip="false"
57
+ uploadNameStr="提单指令" />
82
58
  </div>
83
59
  </el-col>
84
- <el-col :span="9">
85
- <div>
86
- <div v-if="channel !== 'official-website'" class="sub-title">
60
+ <el-col :span="12" v-if="contractFileInfo.bliConfirmFlag" class="center-status">
61
+ <i class="el-icon-success success"></i>
62
+ 提单指令已确认
63
+ </el-col>
64
+ <el-col :span="12" v-else class="center-status">
65
+ <i class="el-icon-time"></i>
66
+ 提单指令待确认
67
+ </el-col>
68
+ <!-- 销售合同-回签合同 -->
69
+ <el-col :span="24">
70
+ <div class="hr-class"></div>
71
+ </el-col>
72
+ <el-col :span="24">
73
+ <el-col :span="12">
74
+ <div class="content-root-row">
75
+ <ContentTitle :contentTitleProp="{
76
+ bgButton: contract.contractType == 'sale'
77
+ ? $t('contractDetail.saleContract')
78
+ : $t('contractDetail.purchaseContract'),
79
+ bgTime:contractFileInfo.latestContractFileInfo && timeFormate(contractFileInfo.latestContractFileInfo)
80
+ }"></ContentTitle>
81
+ <span class="bg-history" @click="handleHistory('contract_formal')">查看历史版本</span>
82
+ </div>
83
+ </el-col>
84
+ <el-col :span="12" v-if="contractFileInfo.signContractFileInfo && contractFileInfo.signContractFileInfo.length">
85
+ <ContentTitle :contentTitleProp="{
86
+ bgButton: '回签合同',
87
+ bgTime:timeFormate(contractFileInfo.signContractFileInfo)
88
+ }"
89
+ :successFlag="true"
90
+ ></ContentTitle>
91
+ </el-col>
92
+ </el-col>
93
+ <el-col :span="24">
94
+ <el-col :span="12">
95
+ <div class="file-list" v-if="getLastFileByList(contractFileInfo.latestContractFileInfo)">
96
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :fileInfo="getLastFileByList(contractFileInfo.latestContractFileInfo)" />
97
+ </div>
98
+ <div v-else>
99
+ 暂无合同
100
+ </div>
101
+ </el-col>
102
+ <!-- 回签合同 -->
103
+ <el-col :span="12">
104
+ <!-- <div v-if="channel !== 'official-website'" class="sub-title">
87
105
  {{ $t("contractDetail.signContract") }}
88
106
  <el-button style="margin-left: 10px" @click="counterSign" size="mini">撤回回签</el-button>
89
- </div>
90
- <div v-else class="sub-title">{{ $t("contractDetail.signContract") }}</div>
91
- </div>
92
- <div class="file-list">
93
- <file-show
94
- :hiddenOperation="channel == 'official-website'"
95
- @refresh="handleRefresh"
96
- @checked="handleChecked"
97
- @uncheck="handleUncheck"
98
- :file-info="item"
99
- v-for="(item, i) in contractFileInfo.signContractFileInfo"
100
- :key="i"
101
- />
102
- <contract-file-drag-upload
107
+ </div> -->
108
+ <div class="file-list">
109
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
110
+ @checked="handleChecked" @uncheck="handleUncheck" :file-info="item"
111
+ :selectFileListProp="selectFileList"
112
+ type="signContract"
113
+ @signContract="counterSign"
114
+ v-for="(item, i) in contractFileInfo.signContractFileInfo" :key="i" />
115
+ <contract-file-drag-upload
116
+ v-show="!contractFileInfo.signContractFileInfo || contractFileInfo.signContractFileInfo && contractFileInfo.signContractFileInfo.length == 0"
103
117
  @upload="
118
+ handleUpload(
119
+ $event,
120
+ contract.contractId,
121
+ 'contract',
122
+ 'contract_sign'
123
+ )
124
+ " :isShowTip="false" uploadNameStr="回签合同" />
125
+ </div>
126
+ </el-col>
127
+ </el-col>
128
+ <!-- 定金发票-支付凭证 -->
129
+ <el-col :span="24" v-if="contract.deposit > 0">
130
+ <div class="hr-class"></div>
131
+ </el-col>
132
+ <div v-if="contract.deposit > 0">
133
+ <el-col :span="12">
134
+ <div style="display:flex;align-items:center">
135
+ <ContentTitle :contentTitleProp="{
136
+ bgButton: '定金发票',
137
+ bgTime:contractFileInfo.proformaInvoiceFileInfo && timeFormate(contractFileInfo.proformaInvoiceFileInfo) || contractFileInfo.personalProformaInvoiceFileInfo && timeFormate(contractFileInfo.personalProformaInvoiceFileInfo)
138
+ }">
139
+ </ContentTitle>
140
+ <span class="bg-history" v-if="channel !== 'official-website'" @click="skipInvoiceList">发票列表</span>
141
+ </div>
142
+ </el-col>
143
+
144
+ <el-col :span="12" v-if="contractFileInfo.proformaInvoiceWaterBillFileInfo && contractFileInfo.proformaInvoiceWaterBillFileInfo.length">
145
+ <ContentTitle :contentTitleProp="{
146
+ bgButton: '支付凭证',
147
+ bgTime: contractFileInfo.proformaInvoiceWaterBillFileInfo && timeFormate(contractFileInfo.proformaInvoiceWaterBillFileInfo)
148
+ }"
149
+ :successFlag="true"
150
+ >
151
+ </ContentTitle>
152
+ <!-- <div v-if="!contractFileInfo.depositInvoicePayFlag">
153
+ 有回签合同文件
154
+ </div> -->
155
+ <div>
156
+ </div>
157
+ </el-col>
158
+ </div>
159
+ <!-- 数据 -->
160
+ <el-col :span="24" v-if="contract.deposit > 0">
161
+ <el-col :span="12">
162
+ <div style="margin-bottom:20px" v-if="contract.contractType == 'purchase'">
163
+ <el-button type="primary" size="mini" v-if="channel !== 'official-website'" @click.stop="getDepositInvoice">
164
+ {{ contract.contractType == "sale" ? "生成定金发票" : "上传定金发票" }}
165
+ </el-button>
166
+ </div>
167
+ <!-- 系统生成定金发票 -->
168
+ <div class="file-list">
169
+ <file-show
170
+ :hiddenOperation="channel == 'official-website'"
171
+ @refresh="handleRefresh"
172
+ @checked="handleChecked"
173
+ @uncheck="handleUncheck"
174
+ :selectFileListProp="selectFileList"
175
+ :fileInfo="
176
+ getLastFileByList(contractFileInfo.proformaInvoiceFileInfo)
177
+ "
178
+ />
179
+ </div>
180
+ <!-- 手动上传定金发票 -->
181
+ <div class="file-list">
182
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
183
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
184
+ item, i
185
+ ) in contractFileInfo.personalProformaInvoiceFileInfo" :key="i" />
186
+ <contract-file-drag-upload v-show="(!contractFileInfo.personalProformaInvoiceFileInfo || contractFileInfo.personalProformaInvoiceFileInfo.length == 0) && contract.contractType == 'sale'" @upload="
104
187
  handleUpload(
105
188
  $event,
106
- contract.contractId,
107
- 'contract',
108
- 'contract_sign'
189
+ contractFileInfo.proformaInvoice.id,
190
+ 'invoice',
191
+ 'personal_proforma_invoice'
109
192
  )
110
- "
111
- :isShowTip="false"
112
- />
113
- </div>
193
+ ":isShowTip="false"
194
+ uploadNameStr="定金发票" />
195
+ <div v-if="channel == 'official-website'" class="center-status">
196
+ <i class="el-icon-time"></i>
197
+ <span>定金发票待上传</span>
198
+ </div>
199
+ </div>
200
+ </el-col>
201
+ <!-- 定金 -->
202
+ <!-- <div>contractFileInfo.depositInvoicePayFlag{{ contractFileInfo.depositInvoicePayFlag }}</div> -->
203
+ <!-- <div class="file-list" v-if="contractFileInfo.depositInvoicePayFlag">
204
+ <file-show @refresh="handleRefresh"
205
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
206
+ v-for="(item, i) in contractFileInfo.proformaInvoiceWaterBillFileInfo" :key="i" />
207
+ <contract-file-drag-upload
208
+ @upload="
209
+ handleUpload(
210
+ $event,
211
+ contract.contractId,
212
+ 'contract',
213
+ 'contract_sign'
214
+ )
215
+ " :isShowTip="false" uploadNameStr="支付凭证" />
216
+ </div> -->
217
+ <el-col :span="12" class="center-status">
218
+ <div>
219
+ <!-- <div>
220
+ <i class="el-icon-time"></i>
221
+ <span style="color:#f00" v-if="!contractFileInfo.depositInvoicePayFlag">定金待付</span>
222
+ </div> -->
223
+ <el-row v-if="contract.contractType == 'sale'">
224
+ <el-col :span="16">
225
+ <div
226
+ v-if="contractFileInfo.depositInvoicePayFlag"
227
+ :class="['el-icon-success','customer-icon-success-color', 'success']"
228
+ style="width:max-content"
229
+ >
230
+ {{
231
+ channel !== "official-website"
232
+ ? "定金已收"
233
+ : $t("contractDetail.Deposit_Paid")
234
+ }}
235
+ </div>
236
+ <div v-else style="width:max-content">
237
+ <i class="el-icon-time"></i>
238
+ <span style="color: red">
239
+ {{
240
+ channel !== "official-website"
241
+ ? "定金待付"
242
+ : $t("contractDetail.Deposit_Unpaid")
243
+ }}
244
+ </span>
245
+ </div>
246
+ </el-col>
247
+ </el-row>
248
+ <el-row v-else>
249
+ <!-- <el-col :span="4">
250
+ <div style="color: #1890ff">{{ $t("contractDetail.deposit") }}</div>
251
+ </el-col> -->
252
+ <el-col :span="12">
253
+ <div
254
+ v-if="contractFileInfo.depositInvoicePayFlag"
255
+ style="width:max-content"
256
+ >
257
+ <i class="el-icon-success success"></i>
258
+ 定金已付</div>
259
+ <div v-else style="width:max-content">
260
+ <i class="el-icon-time"></i>
261
+ <span style="color: red">定金待付</span>
262
+ </div>
263
+ </el-col>
264
+ </el-row>
265
+ <div v-if="!contractFileInfo.proformaInvoiceWaterBillFileInfo || contractFileInfo.proformaInvoiceWaterBillFileInfo.length == 0">
266
+ <!-- <i class="el-icon-time"></i> -->
267
+ 支付凭证待提供
268
+ </div>
269
+ <div v-else style="color:#000">
270
+ <file-show @refresh="handleRefresh"
271
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
272
+ v-for="(item, i) in contractFileInfo.proformaInvoiceWaterBillFileInfo" :key="i" />
273
+ </div>
274
+ </div>
275
+ </el-col>
114
276
  </el-col>
115
- </el-row>
116
- <el-divider></el-divider>
117
- <el-row>
118
- <div class="sub-title">{{ $t("contractDetail.otherFile") }}</div>
119
- <div class="file-list" v-if="contract.contractType == 'sale'">
120
- <file-show
121
- :hiddenOperation="channel == 'official-website'"
122
- @refresh="handleRefresh"
123
- @checked="handleChecked"
124
- @uncheck="handleUncheck"
125
- :file-info="item"
126
- v-for="(item, i) in contractFileInfo.saleContractOtherFile"
127
- :key="i"
128
- />
129
- <contract-file-drag-upload
130
- @upload="
277
+ <!-- 其他文件 -->
278
+ <el-col :span="24">
279
+ <div class="hr-class"></div>
280
+ </el-col>
281
+ <el-col :span="24">
282
+ <ContentTitle :contentTitleProp="{
283
+ bgButton: '其他文件',
284
+ bgTime: contract.contractType == 'sale' ? contractFileInfo.saleContractOtherFile && timeFormate(contractFileInfo.saleContractOtherFile) : contractFileInfo.purchaseContractOtherFile && timeFormate(contractFileInfo.purchaseContractOtherFile)
285
+ }"></ContentTitle>
286
+ </el-col>
287
+ <el-col :span="24">
288
+ <!-- 销售-其他文件 -->
289
+ <div class="file-list" v-if="contract.contractType == 'sale'">
290
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
291
+ v-for="(item, i) in contractFileInfo.saleContractOtherFile" :key="i" />
292
+ <contract-file-drag-upload @upload="
131
293
  handleUpload(
132
294
  $event,
133
295
  contract.contractId,
134
296
  'contract',
135
297
  'sale_contract_other_file'
136
298
  )
137
- "
138
- :isShowTip="false"
139
- />
140
- </div>
141
- <div class="file-list" v-else>
142
- <file-show
143
- :hiddenOperation="channel == 'official-website'"
144
- @refresh="handleRefresh"
145
- @checked="handleChecked"
146
- @uncheck="handleUncheck"
147
- :file-info="item"
148
- v-for="(item, i) in contractFileInfo.purchaseContractOtherFile"
149
- :key="i"
150
- />
151
- <contract-file-drag-upload
152
- @upload="
299
+ " :isShowTip="false" uploadNameStr="其他文件" />
300
+ </div>
301
+ <!-- 销售-采购文件 -->
302
+ <div class="file-list" v-else>
303
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :file-info="item"
304
+ v-for="(item, i) in contractFileInfo.purchaseContractOtherFile" :key="i" />
305
+ <contract-file-drag-upload @upload="
153
306
  handleUpload(
154
307
  $event,
155
308
  contract.contractId,
156
309
  'contract',
157
310
  'purchase_contract_other_file'
158
311
  )
159
- "
160
- :isShowTip="false"
161
- />
162
- </div>
163
- </el-row>
164
- </div>
165
- </el-timeline-item>
166
- <el-timeline-item
167
- :icon="contractFileInfo.proformaInvoice ? 'el-icon-success' : ''"
168
- :type="contractFileInfo.proformaInvoice ? 'primary' : ''"
169
- size="large"
170
- v-if="contract.deposit !== 0"
171
- >
172
- <el-row v-if="contract.contractType == 'sale'">
173
- <el-col :span="2">
174
- <div style="color: #1890ff">{{ $t("contractDetail.deposit") }}</div>
175
- </el-col>
176
- <el-col :span="4">
177
- <div
178
- v-if="
179
- contractFileInfo.proformaInvoice &&
180
- contractFileInfo.proformaInvoice.amount >
181
- contractFileInfo.proformaInvoice.remainingAmount
312
+ "
313
+ :isShowTip="false"
314
+ uploadNameStr="其他文件"
315
+ />
316
+ </div>
317
+ </el-col>
318
+ </div>
319
+ </template>
320
+ </SectionSlot>
321
+ </div>
322
+ <!-- 装运 -->
323
+ <div>
324
+ <BillOfLadingNoTab
325
+ :contractFileInfo="contractFileInfo"
326
+ @changeShipBillNo="changeShipBillNo"
327
+ :progressInfo="shipProgressInfo"
328
+ :shipBillNoProp="shipBillNo"
329
+ ></BillOfLadingNoTab>
330
+ <!-- 生成装运 -->
331
+ <SectionSlot :infoPro="shipProgressInfo" v-if="contractFileInfo && !contractFileInfo.shipmentFileInfoList">
332
+ <template v-slot:header>
333
+ <div style="position:relative">
334
+ <ProgressDetail :infoPro="shipProgressInfo"></ProgressDetail>
335
+ <!-- <div class="addshipment" @click.stop="handleGenerate"
336
+ v-if="
337
+ channel !== 'official-website' && contract.contractType == 'sale'
182
338
  "
183
- class="el-icon-success customer-icon-success-color"
184
- >
185
- {{
186
- channel !== "official-website"
187
- ? "定金已收"
188
- : $t("contractDetail.Deposit_Paid")
189
- }}
190
- </div>
191
- <div v-else style="color: red">
192
- {{
193
- channel !== "official-website"
194
- ? "定金未收"
195
- : $t("contractDetail.Deposit_Unpaid")
196
- }}
197
- </div>
198
- </el-col>
199
- </el-row>
200
- <el-row v-else>
201
- <el-col :span="2">
202
- <div style="color: #1890ff">{{ $t("contractDetail.deposit") }}</div>
203
- </el-col>
204
- <el-col :span="2">
205
- <div
206
- v-if="
207
- contractFileInfo.proformaInvoice &&
208
- contractFileInfo.proformaInvoice.amount >
209
- contractFileInfo.proformaInvoice.remainingAmount
339
+ >生成装运</div> -->
340
+ <div class="addshipment" @click.stop="handleGeneratePurchase"
341
+ v-if="
342
+ channel !== 'official-website' && contract.contractType == 'purchase'
210
343
  "
211
- class="el-icon-success customer-icon-success-color"
212
- >定金已付</div>
213
- <div v-else style="color: red">定金未付</div>
214
- </el-col>
215
- </el-row>
216
- <el-row v-if="channel !== 'official-website'">
217
- <el-col :span="5">
218
- <el-button type="primary" size="mini" @click="getDepositInvoice">
219
- {{
220
- contract.contractType == "sale" ? "生成定金发票" : "上传定金发票"
221
- }}
222
- </el-button>
223
- </el-col>
224
- </el-row>
225
- <el-row>
226
- <el-col :span="6">
227
- <div class="sub-title">
228
- {{ $t("contractDetail.depositInvoice") }}
229
- <el-button
230
- v-if="channel !== 'official-website'"
231
- type="text"
232
- size="small"
233
- @click="skipInvoiceList"
234
- >发票列表</el-button>
344
+ >生成装运</div>
345
+ </div>
346
+ </template>
347
+ <template v-slot:content>
348
+ <div class="ship-empty" style="background-color:#fff">
349
+ <div>
350
+ <b>装箱单</b>将会在卖家装运后更新
235
351
  </div>
236
- <div class="file-list">
237
- <file-show
238
- :hiddenOperation="channel == 'official-website'"
239
- @refresh="handleRefresh"
240
- @checked="handleChecked"
241
- @uncheck="handleUncheck"
242
- :fileInfo="
243
- getLastFileByList(contractFileInfo.proformaInvoiceFileInfo)
244
- "
245
- />
352
+ <div>
353
+ <b>装运照片</b>将会在卖家装运后更新
246
354
  </div>
247
- </el-col>
248
- <el-col :span="13">
249
- <el-row style="margin-top: 20px"></el-row>
250
- <div class="file-list">
251
- <file-show
252
- :hiddenOperation="channel == 'official-website'"
253
- @refresh="handleRefresh"
254
- @checked="handleChecked"
255
- @uncheck="handleUncheck"
256
- :file-info="item"
257
- v-for="(
258
- item, i
259
- ) in contractFileInfo.personalProformaInvoiceFileInfo"
260
- :key="i"
261
- />
262
- <contract-file-drag-upload
263
- v-if="channel !== 'official-website'"
264
- @upload="
265
- handleUpload(
266
- $event,
267
- contractFileInfo.proformaInvoice.id,
268
- 'invoice',
269
- 'personal_proforma_invoice'
270
- )
271
- "
272
- :isShowTip="false"
273
- />
355
+ <div>
356
+ <b>草稿提单</b>将会在卖家装运后更新
274
357
  </div>
275
- </el-col>
276
- </el-row>
277
- <el-row>
278
- <div class="sub-title">{{ $t("contractDetail.depositRemittanceReceipt") }}</div>
279
- <div class="file-list">
280
- <file-show
281
- :hiddenOperation="channel == 'official-website'"
282
- @refresh="handleRefresh"
283
- @checked="handleChecked"
284
- @uncheck="handleUncheck"
285
- :file-info="item"
286
- v-for="(
287
- item, i
288
- ) in contractFileInfo.proformaInvoiceWaterBillFileInfo"
289
- :key="i"
290
- />
291
358
  </div>
292
- </el-row>
293
- </el-timeline-item>
294
- <el-timeline-item
295
- :icon="contractFileInfo.shipmentFileInfoList ? 'el-icon-success' : ''"
296
- :type="contractFileInfo.shipmentFileInfoList ? 'primary' : ''"
297
- size="large"
298
- >
299
- <div style="color: #1890ff">{{ $t("contractDetail.tip5") }}</div>
300
- <el-button
301
- type="primary"
302
- size="mini"
303
- @click="handleGenerate"
304
- v-if="
305
- channel !== 'official-website' && contract.contractType == 'sale'
306
- "
307
- >生成装运</el-button>
308
- <el-button
309
- type="primary"
310
- size="mini"
311
- @click="handleGeneratePurchase"
312
- v-if="
313
- channel !== 'official-website' &&
314
- contract.contractType == 'purchase'
315
- "
316
- >生成装运</el-button>
317
- <el-tabs v-model="activeName">
318
- <el-tab-pane
319
- :label="
320
- '提单号 ' +
321
- (shipmentFileInfo.billOfLadingNo
322
- ? shipmentFileInfo.billOfLadingNo
323
- : '')
324
- "
325
- :name="shipmentIndex.toString()"
326
- v-for="(
327
- shipmentFileInfo, shipmentIndex
328
- ) in contractFileInfo.shipmentFileInfoList"
329
- :key="shipmentIndex"
330
- >
331
- <div
332
- v-if="
333
- channel !== 'official-website' &&
334
- contract.contractType == 'purchase'
335
- "
336
- style="margin-bottom: 20px"
337
- >
338
- <el-button
339
- type="primary"
340
- size="mini"
341
- v-if="shipmentFileInfo && shipmentFileInfo.shipmentId"
342
- @click="
343
- identifyPage(
344
- '',
345
- shipmentFileInfo && shipmentFileInfo.shipmentId,
346
- 'summary'
347
- )
359
+ </template>
360
+ </SectionSlot>
361
+ <div v-else>
362
+ <SectionSlot :infoPro="shipProgressInfo" v-for="(
363
+ shipmentFileInfo, shipmentIndex
364
+ ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex" v-if="shipmentIndex == shipBillNo">
365
+ <template v-slot:header>
366
+ <div style="position:relative">
367
+ <ProgressDetail :infoPro="shipProgressInfo"></ProgressDetail>
368
+ <!-- <div class="addshipment" @click.stop="handleGenerate"
369
+ v-if="
370
+ channel !== 'official-website' && contract.contractType == 'sale'
371
+ "
372
+ >增加装运</div> -->
373
+ <div class="addshipment" @click.stop="handleGeneratePurchase"
374
+ v-if="
375
+ channel !== 'official-website' && contract.contractType == 'purchase'
348
376
  "
349
- >识别汇总</el-button>
350
- <el-button type="primary" size="mini" @click="editShipment(shipmentFileInfo)">编辑船运</el-button>
377
+ >增加装运</div>
351
378
  </div>
352
- <el-timeline>
353
- <el-timeline-item
354
- :icon="shipmentFileInfo ? 'el-icon-success' : ''"
355
- :type="shipmentFileInfo ? 'primary' : ''"
356
- size="large"
357
- >
358
- <div v-if="channel !== 'official-website'" style="color: #1890ff">首批货运</div>
359
- <div>
360
- <div class="sub-title">{{ $t("contractDetail.bookingConfirmation") }}</div>
361
- <div class="file-list">
362
- <file-show
363
- :hiddenOperation="channel == 'official-website'"
364
- @refresh="handleRefresh"
365
- @checked="handleChecked"
366
- @uncheck="handleUncheck"
367
- :file-info="item"
368
- v-for="(item, i) in shipmentFileInfo.bookingConfirmation"
369
- :key="i"
370
- />
371
- <contract-file-drag-upload
372
- v-if="channel !== 'official-website'"
373
- @upload="
374
- handleUpload(
375
- $event,
376
- shipmentFileInfo.shipmentId,
377
- 'shipment',
378
- 'shipment_booking_confirmation'
379
- )
379
+ </template>
380
+ <template v-slot:content>
381
+ <!-- <div class="content-root" v-if="shipProgressInfo.rate > 0"> -->
382
+ <div class="content-root" v-if="true">
383
+ <div
384
+ v-if="
385
+ channel !== 'official-website' &&
386
+ contractFileInfo.shipmentFileInfoList && contractFileInfo.shipmentFileInfoList.length > 0 &&
387
+ contract.contractType == 'purchase'
380
388
  "
381
- :isShowTip="false"
382
- />
383
- </div>
389
+ style="margin-bottom: 20px"
390
+ class="preview-download-root"
391
+ >
392
+ <div
393
+ v-if="shipmentItemData && shipmentItemData.shipmentId"
394
+ @click="
395
+ identifyPage(
396
+ '',
397
+ shipmentItemData && shipmentItemData.shipmentId,
398
+ 'summary'
399
+ )
400
+ "
401
+ class="preview-download"
402
+ >识别汇总</div>
403
+ <div class="preview-download" @click="editShipment(shipmentItemData)">编辑船运</div>
384
404
  </div>
385
- <el-divider></el-divider>
386
- <el-row v-if="channel !== 'official-website'">
387
- <el-col :span="6" v-if="contract.contractType == 'sale'">
388
- <div>
389
- <div class="sub-title">{{ $t("contractDetail.packingList") }}</div>
390
- <div class="file-list">
391
- <file-show
392
- :hiddenOperation="channel == 'official-website'"
393
- @refresh="handleRefresh"
394
- @checked="handleChecked"
395
- @uncheck="handleUncheck"
396
- :file-info="
397
- getLastFileByList(shipmentFileInfo.packingList)
398
- "
399
- />
400
- </div>
401
- </div>
405
+ <!-- 订舱资料 -->
406
+ <ContentTitle :contentTitleProp="{
407
+ bgButton: '订舱资料',
408
+ bgTime: shipmentFileInfo.bookingConfirmation && timeFormate(shipmentFileInfo.bookingConfirmation),
409
+ bgcolor: shipProgressInfo.bgcolor
410
+
411
+ }">
412
+ </ContentTitle>
413
+ <div>
414
+ </div>
415
+ <el-col :span="24">
416
+ <div class="file-list">
417
+ <el-col v-if=" contract.contractType == 'sale' && (!shipmentFileInfo.bookingConfirmation || shipmentFileInfo.bookingConfirmation && shipmentFileInfo.bookingConfirmation.length == 0)" :span="12" class="center-status">
418
+ <i class="el-icon-time"></i>
419
+ 订舱资料待更新
402
420
  </el-col>
403
- <el-col :span="18">
404
- <el-row v-if="contract.contractType == 'purchase'">
405
- <div>
406
- <div class="sub-title">
407
- 装箱单(P)
408
- <span
409
- style="color: #1890ff; cursor: pointer"
410
- v-if="
411
- shipmentFileInfo &&
412
- shipmentFileInfo.purchasePersonalPackingList &&
413
- shipmentFileInfo.purchasePersonalPackingList[0] &&
414
- shipmentFileInfo.purchasePersonalPackingList[0]
415
- .url
416
- "
417
- @click="
418
- identifyPage(
419
- shipmentFileInfo &&
420
- shipmentFileInfo.purchasePersonalPackingList &&
421
- shipmentFileInfo
422
- .purchasePersonalPackingList[0] &&
423
- shipmentFileInfo
424
- .purchasePersonalPackingList[0].url,
425
- shipmentFileInfo && shipmentFileInfo.shipmentId,
426
- 'packing'
427
- )
428
- "
429
- >{{ identify }}</span>
430
- </div>
431
- <div class="file-list">
432
- <file-show
433
- :hiddenOperation="channel == 'official-website'"
434
- @refresh="handleRefresh"
435
- @checked="handleChecked"
436
- @uncheck="handleUncheck"
437
- :file-info="item"
438
- v-for="(
439
- item, i
440
- ) in shipmentFileInfo.purchasePersonalPackingList"
441
- :key="i"
442
- />
443
- <contract-file-drag-upload
444
- v-if="channel !== 'official-website'"
445
- @upload="
446
- handleUpload(
447
- $event,
448
- shipmentFileInfo.shipmentId,
449
- 'shipment',
450
- 'purchase_personal_shipment_packing_list'
451
- )
452
- "
453
- :isShowTip="false"
454
- />
455
- </div>
456
- </div>
457
- </el-row>
458
- <el-row v-if="contract.contractType == 'sale'">
459
- <div>
460
- <div class="sub-title">装箱单(S)</div>
461
-
421
+ <file-show @refresh="handleRefresh" @checked="handleChecked" :hiddenOperation="channel == 'official-website'" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
422
+ v-for="(item, i) in shipmentFileInfo.bookingConfirmation" :key="i" />
423
+ <!-- 6. 销售去掉订舱资料上传功能 https://udswem7m8c.feishu.cn/wiki/Tm4SwKcqviRkTUkKNCxc2bnBnVb -->
424
+ <contract-file-drag-upload
425
+ v-if="channel !== 'official-website' && contract.contractType == 'purchase'"
426
+ @upload="
427
+ handleUpload(
428
+ $event,
429
+ shipmentFileInfo.shipmentId,
430
+ 'shipment',
431
+ 'shipment_booking_confirmation'
432
+ )
433
+ " :isShowTip="false" uploadNameStr="订舱资料" />
434
+ </div>
435
+ </el-col>
436
+ <el-col :span="24">
437
+ <div class="hr-class"></div>
438
+ </el-col>
439
+ <!-- 装箱单 -->
440
+ <ContentTitle :contentTitleProp="{
441
+ bgButton: '装箱单',
442
+ bgTime: contract.contractType == 'purchase' ? shipmentFileInfo.purchasePersonalPackingList && timeFormate(shipmentFileInfo.purchasePersonalPackingList) : shipmentFileInfo.salePersonalPackingList && timeFormate(shipmentFileInfo.salePersonalPackingList),
443
+ bgcolor: shipProgressInfo.bgcolor
444
+ }"></ContentTitle>
445
+ <el-row v-if="contract.contractType == 'purchase'">
446
+ <div>
447
+ <div class="sub-title">
448
+ <span style="color: #1890ff; cursor: pointer" v-if="shipmentFileInfo &&
449
+ shipmentFileInfo.purchasePersonalPackingList &&
450
+ shipmentFileInfo.purchasePersonalPackingList[0] &&
451
+ shipmentFileInfo.purchasePersonalPackingList[0]
452
+ .url
453
+ " @click="
454
+ identifyPage(
455
+ shipmentFileInfo &&
456
+ shipmentFileInfo.purchasePersonalPackingList &&
457
+ shipmentFileInfo
458
+ .purchasePersonalPackingList[0] &&
459
+ shipmentFileInfo
460
+ .purchasePersonalPackingList[0].url,
461
+ shipmentFileInfo && shipmentFileInfo.shipmentId,
462
+ 'packing'
463
+ )
464
+ ">{{ identify }}
465
+ </span>
466
+ </div>
467
+ <ShowAndHide :dataInfoArr="shipmentFileInfo.purchasePersonalPackingList" heightStr="50px" :HideAmount="4">
468
+ <template>
469
+ <el-col :span="24">
462
470
  <div class="file-list">
463
- <file-show
464
- :hiddenOperation="channel == 'official-website'"
465
- @refresh="handleRefresh"
466
- @checked="handleChecked"
467
- @uncheck="handleUncheck"
468
- :file-info="item"
469
- v-for="(
470
- item, i
471
- ) in shipmentFileInfo.salePersonalPackingList"
472
- :key="i"
473
- />
471
+ <!-- <el-col :span="12" v-if="!shipmentFileInfo.purchasePersonalPackingList || shipmentFileInfo.purchasePersonalPackingList.length == 0" class="center-status">
472
+ <i class="el-icon-time"></i>
473
+ 装箱单待更新
474
+ </el-col> -->
475
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
476
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
477
+ item, i
478
+ ) in shipmentFileInfo.purchasePersonalPackingList" :key="i" />
479
+
474
480
  <contract-file-drag-upload
475
- v-if="channel !== 'official-website'"
476
- @upload="
477
- handleUpload(
478
- $event,
479
- shipmentFileInfo.shipmentId,
480
- 'shipment',
481
- 'sale_personal_shipment_packing_list'
482
- )
483
- "
484
- :isShowTip="false"
481
+ @upload="handleUpload(
482
+ $event,
483
+ shipmentFileInfo.shipmentId,
484
+ 'shipment',
485
+ 'purchase_personal_shipment_packing_list'
486
+ )"
487
+ :isShowTip="false"
488
+ uploadNameStr="装箱单"
485
489
  />
486
490
  </div>
487
- </div>
488
- </el-row>
489
- </el-col>
490
- </el-row>
491
- <el-divider></el-divider>
491
+ </el-col>
492
+ </template>
493
+ </ShowAndHide>
494
+ </div>
495
+ </el-row>
496
+ <el-row v-if="contract.contractType == 'sale'">
492
497
  <div>
493
- <div class="sub-title">{{ $t("contractDetail.packingPhoto") }}</div>
494
- <el-row
495
- style="margin-left: 60px"
496
- v-for="(
497
- containerFile, i
498
- ) in shipmentFileInfo.containerFileInfoRespList"
499
- :key="i"
500
- >
501
- <div style="display: flex; align-items: center">
502
- <div>{{ "集装箱" + (i + 1) + containerFile.containerNo }}</div>
503
- <div>
504
- <el-button
505
- type="text"
506
- @click="shareContainerUrl(containerFile.containerId)"
507
- >分享</el-button>
508
- </div>
509
- <!-- 展开/折叠按钮 -->
510
- <div v-if="containerFile.packingPhoto.length > 1" style="margin-left: 10px;">
511
- <el-button
512
- type="text"
513
- style="color: rgb(255, 0, 191);"
514
- @click="toggleExpand(shipmentIndex, i)"
515
- >
516
- {{
517
- containerFile.expandedFlag
518
- ? "收起图片"
519
- : "展开全部图片"
520
- }}
521
- </el-button>
522
- </div>
523
- </div>
498
+ <ShowAndHide :dataInfoArr="shipmentFileInfo.salePersonalPackingList" heightStr="50px" :HideAmount="4">
499
+ <el-col :span="24">
524
500
  <div class="file-list">
525
- <div
526
- v-if="
527
- !containerFile.expandedFlag &&
528
- containerFile.packingPhoto.length > 1
529
- "
530
- >
531
- <file-show
532
- :hiddenOperation="channel == 'official-website'"
533
- @refresh="handleRefresh"
534
- @checked="handleChecked"
535
- @uncheck="handleUncheck"
536
- :file-info="containerFile.packingPhoto[0]"
537
- />
538
- </div>
539
- <div v-else class="file-list">
540
- <file-show
541
- :hiddenOperation="channel == 'official-website'"
542
- @refresh="handleRefresh"
543
- @checked="handleChecked"
544
- @uncheck="handleUncheck"
545
- :file-info="item"
546
- v-for="(item, i) in containerFile.packingPhoto"
547
- :key="i"
548
- />
501
+ <el-col :span="12" v-if="!shipmentFileInfo.salePersonalPackingList || shipmentFileInfo.salePersonalPackingList.length == 0" class="center-status">
502
+ <i class="el-icon-time"></i>
503
+ 装箱单待更新
504
+ </el-col>
505
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
506
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
507
+ item, i
508
+ ) in shipmentFileInfo.salePersonalPackingList" :key="i" />
509
+ <!-- sale 只做展示 -->
510
+ <!-- <contract-file-drag-upload v-if="channel !== 'official-website'" @upload="
511
+ handleUpload(
512
+ $event,
513
+ shipmentFileInfo.shipmentId,
514
+ 'shipment',
515
+ 'sale_personal_shipment_packing_list'
516
+ )
517
+ "
518
+ :isShowTip="false"
519
+ uploadNameStr="装箱单"
520
+ /> -->
521
+ </div>
522
+ </el-col>
523
+ </ShowAndHide>
524
+ </div>
525
+ </el-row>
526
+
527
+ <!-- 装箱照片 -->
528
+ <el-col :span="24">
529
+ <div class="hr-class"></div>
530
+ </el-col>
531
+ <div v-for="(
532
+ containerFile, i
533
+ ) in shipmentFileInfo.containerFileInfoRespList" :key="i">
534
+ <el-col :span="24">
535
+ <div class="content-root-row">
536
+ <ContentTitle :contentTitleProp="{
537
+ bgButton: '装箱照片' + containerFile.containerNo,
538
+ bgTime: containerFile.packingPhoto && timeFormate(containerFile.packingPhoto),
539
+ bgcolor: shipProgressInfo.bgcolor
540
+ }"></ContentTitle>
541
+ <div v-if="containerFile && containerFile.packingPhoto.length" style="display:flex">
542
+ <!-- <div style="display:flex"> -->
543
+ <div class="border-button" @click.stop="allSelectContainerPackingPhoto(containerFile.containerId)">
544
+ 全选照片 </div>
545
+ <div class="border-button" @click.stop="cancelContainerPackingPhoto(containerFile.containerId)">取消全选
549
546
  </div>
550
-
551
- <contract-file-drag-upload
552
- v-if="channel !== 'official-website'"
553
- @upload="
547
+ <div class="border-button border-button-share"
548
+ @click.stop="shareContainerUrl(containerFile.containerId)">分享</div>
549
+ </div>
550
+ </div>
551
+ </el-col>
552
+ <el-col :span="24">
553
+ <div style="display:flex">
554
+ <!-- 文件预览 -->
555
+ <IMGPreviewCheckBox :ref="`container_packing_photo_${containerFile.containerId}`"
556
+ :imgArr="containerFile.packingPhoto"
557
+ :info="containerFile"
558
+ >
559
+ <template>
560
+ <contract-file-drag-upload v-show="channel !== 'official-website'" @upload="
554
561
  handleUpload(
555
562
  $event,
556
563
  containerFile.containerId,
557
564
  'container',
558
565
  'container_packing_photo'
559
566
  )
560
- "
561
- :isShowTip="false"
567
+ " :isShowTip="false" photos
568
+ style="margin-top:0px"
569
+ />
570
+ </template>
571
+ </IMGPreviewCheckBox>
572
+ </div>
573
+ <!-- <el-col :span="12" v-if="containerFile.packingPhoto && containerFile.packingPhoto.length == 0" class="center-status">
574
+ <i class="el-icon-time"></i>
575
+ 装箱照片待更新
576
+ </el-col> -->
577
+ </el-col>
578
+ </div>
579
+
580
+ <el-col :span="24">
581
+ <div class="hr-class"></div>
582
+ </el-col>
583
+ <el-col :span="24" style="display:flex;align-items:center">
584
+ <ContentTitle :contentTitleProp="{
585
+ bgButton: '草稿提单',
586
+ bgTime: shipmentFileInfo.draftBillOfLading && timeFormate(shipmentFileInfo.draftBillOfLading),
587
+ bgcolor: shipProgressInfo.bgcolor
588
+ }"></ContentTitle>
589
+ <span
590
+ style="color: #1890ff; cursor: pointer;font-size:14px"
591
+ v-if="
592
+ shipmentFileInfo &&
593
+ shipmentFileInfo.draftBillOfLading &&
594
+ shipmentFileInfo.draftBillOfLading[0] &&
595
+ shipmentFileInfo.draftBillOfLading[0].url
596
+ "
597
+ @click="
598
+ identifyPage(
599
+ shipmentFileInfo &&
600
+ shipmentFileInfo.draftBillOfLading &&
601
+ shipmentFileInfo.draftBillOfLading[0] &&
602
+ shipmentFileInfo.draftBillOfLading[0].url,
603
+ shipmentFileInfo && shipmentFileInfo.shipmentId,
604
+ 'draft_bill'
605
+ )
606
+ "
607
+ >{{ identify }}</span>
608
+ </el-col>
609
+ <el-col :span="24">
610
+ <el-col :span="12">
611
+ <div class="file-list">
612
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
613
+ :hiddenOperation="channel == 'official-website'"
614
+ v-for="(
615
+ item, i
616
+ ) in shipmentFileInfo.draftBillOfLading" :key="i" />
617
+
618
+ <contract-file-drag-upload v-show="channel !== 'official-website' && (!shipmentFileInfo.draftBillOfLading || shipmentFileInfo.draftBillOfLading.length == 0)" @upload="
619
+ handleUpload(
620
+ $event,
621
+ shipmentFileInfo.shipmentId,
622
+ 'shipment',
623
+ 'draft_bill_of_lading'
624
+ )
625
+ " :isShowTip="false"
626
+ uploadNameStr="草稿提单"
562
627
  />
563
- </div>
564
- </el-row>
628
+ </div>
629
+ </el-col>
630
+ <el-col :span="12" class="center-status" v-if="channel != 'official-website'">
631
+ <div v-if="shipmentItemData.confirmDraftBlFlag">
632
+ <i class="el-icon-success success"></i> 提单信息已确认
633
+ </div>
634
+ <div v-else-if="contract.contractType == 'sale' && shipmentFileInfo.draftBillOfLading.length" class="confirm-draft-bl" @click.stop="shipmentConfirmDraftBlFun">确认提单草稿</div>
635
+ <el-col :span="12" v-else class="center-status">
636
+ <i class="el-icon-time"></i>
637
+ 草稿提单信息待确认
638
+ </el-col>
639
+
640
+ </el-col>
641
+ <el-col :span="24">
642
+ <el-col :span="12" v-if="(shipmentFileInfo.draftBillOfLading == null || shipmentFileInfo.draftBillOfLading && shipmentFileInfo.draftBillOfLading.length == 0) && channel == 'official-website'" class="center-status">
643
+ <i class="el-icon-time"></i>
644
+ 提单草稿待更新
645
+ </el-col>
646
+ <el-col :span="12" v-if="!shipmentItemData.confirmDraftBlFlag && channel == 'official-website'" class="center-status">
647
+ <i class="el-icon-time"></i>
648
+ 草稿提单信息待确认
649
+ </el-col>
650
+ </el-col>
651
+ </el-col>
652
+
653
+ <el-col :span="24">
654
+ <div class="hr-class"></div>
655
+ </el-col>
656
+ <el-col :span="24">
657
+ <ContentTitle :contentTitleProp="{
658
+ bgButton: '正式提单Copy',
659
+ bgTime: shipmentFileInfo.originalBillOfLadingCopy && timeFormate(shipmentFileInfo.originalBillOfLadingCopy),
660
+ bgcolor: shipProgressInfo.bgcolor
661
+ }"></ContentTitle>
662
+ </el-col>
663
+ <el-col :span="24">
664
+ <div class="file-list">
665
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
666
+ :hiddenOperation="channel == 'official-website'"
667
+ v-for="(
668
+ item, i
669
+ ) in shipmentFileInfo.originalBillOfLadingCopy" :key="i" />
670
+ <contract-file-drag-upload v-show="(!shipmentFileInfo.originalBillOfLadingCopy || shipmentFileInfo.originalBillOfLadingCopy.length == 0) && channel !== 'official-website'" @upload="
671
+ handleUpload(
672
+ $event,
673
+ shipmentFileInfo.shipmentId,
674
+ 'shipment',
675
+ 'original_bill_of_lading_copy'
676
+ )
677
+ " :isShowTip="false"
678
+ uploadNameStr="正式提单Copy"
679
+ />
565
680
  </div>
566
- <el-divider></el-divider>
681
+ <el-col :span="12" v-if="(shipmentFileInfo.originalBillOfLadingCopy == null || shipmentFileInfo.originalBillOfLadingCopy && shipmentFileInfo.originalBillOfLadingCopy.length == 0) && channel == 'official-website'" class="center-status">
682
+ <i class="el-icon-time"></i>
683
+ 正式提单Copy待更新
684
+ </el-col>
685
+ </el-col>
686
+ <!-- 临时尾款发票 -->
687
+ <el-col :span="24" v-if="contract.quoteType != 'FIXED'">
688
+ <div class="hr-class"></div>
689
+ </el-col>
690
+ <el-col :span="24" v-if="contract.quoteType != 'FIXED'">
691
+ <ContentTitle :contentTitleProp="{
692
+ bgButton: '临时尾款发票',
693
+ bgTime: shipmentFileInfo.salePersonalTemporaryFinallyInvoice && timeFormate(shipmentFileInfo.salePersonalTemporaryFinallyInvoice),
694
+ bgcolor: shipProgressInfo.bgcolor
695
+ }"></ContentTitle>
567
696
  <div class="sub-title">
568
- {{ $t("contractDetail.finallyInvoice") }}
569
- <el-button
570
- v-if="channel !== 'official-website'"
571
- type="text"
572
- size="small"
573
- @click="skipInvoiceList"
574
- >发票列表</el-button>
575
- <span
576
- v-if="channel !== 'official-website' &&
577
- contract.contractType == 'purchase' "
578
- style="color: #1890ff; margin-left: 10px"
579
- >
580
- {{
581
- shipmentPurchaseAmountMessage}}
582
- </span>
583
- <el-button
584
- style="color: #1890ff; cursor: pointer; margin-left: 10px"
585
- v-if="channel !== 'official-website' &&
586
- contract.contractType == 'purchase'"
587
- type="text"
588
- size="small"
589
- @click="getShipmentPurchase(shipmentFileInfo)"
590
- >点击可查看明细</el-button>
591
- <div>{{ getShipmentPurchaseAmount(shipmentFileInfo,shipmentIndex) }}</div>
697
+ <span
698
+ v-if="
699
+ channel !== 'official-website' &&
700
+ contract.contractType == 'purchase'
701
+ "
702
+ style="color: #1890ff; cursor: pointer; margin-left: 10px"
703
+ @click.stop="identifyPageBoth(shipmentFileInfo, 1)"
704
+ >{{ identify }}</span>
705
+ </div>
706
+ <el-col :span="12" v-if="channel == 'official-website' && shipmentFileInfo.salePersonalTemporaryFinallyInvoice && shipmentFileInfo.salePersonalTemporaryFinallyInvoice.length == 0" class="center-status">
707
+ <i class="el-icon-time"></i>
708
+ 临时尾款发票待更新
709
+ </el-col>
710
+ <div>
711
+ <div class="file-list" v-if="contract.contractType == 'sale'">
712
+ <div class="file-list">
713
+ <file-show
714
+ :hiddenOperation="channel == 'official-website'"
715
+ @refresh="handleRefresh"
716
+ @checked="handleChecked"
717
+ @uncheck="handleUncheck"
718
+ :file-info="
719
+ getLastFileByList(
720
+ shipmentFileInfo.saleTemporaryFinallyInvoice
721
+ )
722
+ "
723
+ />
724
+ </div>
725
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
726
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
727
+ item, i
728
+ ) in shipmentFileInfo.salePersonalTemporaryFinallyInvoice" :key="i" />
729
+
730
+ <contract-file-drag-upload v-show="(!shipmentFileInfo.salePersonalTemporaryFinallyInvoice || shipmentFileInfo.salePersonalTemporaryFinallyInvoice.length == 0) && channel !== 'official-website'" @upload="
731
+ handleUpload(
732
+ $event,
733
+ shipmentFileInfo.shipmentId,
734
+ 'shipment',
735
+ 'sale_personal_temporary_finally_invoice'
736
+ )
737
+ ":isShowTip="false" uploadNameStr="临时尾款发票" />
738
+ </div>
739
+ <div class="file-list" v-else>
740
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
741
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
742
+ item, i
743
+ ) in shipmentFileInfo.purchaseTemporaryFinallyInvoice" :key="i" />
744
+
745
+ <contract-file-drag-upload v-show="(!shipmentFileInfo.purchaseTemporaryFinallyInvoice || shipmentFileInfo.purchaseTemporaryFinallyInvoice.length == 0) && channel !== 'official-website'" @upload="
746
+ handleUpload(
747
+ $event,
748
+ shipmentFileInfo.shipmentId,
749
+ 'shipment',
750
+ 'purchase_temporary_finally_invoice'
751
+ )
752
+ ":isShowTip="false" uploadNameStr="临时尾款发票" />
592
753
  </div>
593
- <el-row v-if="contract.quoteType != 'FIXED'">
754
+ </div>
755
+ </el-col>
756
+
757
+ <el-col :span="24">
758
+ <div class="hr-class"></div>
759
+ </el-col>
760
+ <el-col :span="24">
761
+ <el-col :span="24">
762
+ <div>
763
+ {{ getShipmentPurchaseAmount(shipmentFileInfo,shipmentIndex) }}
764
+ <span
765
+ v-if="channel !== 'official-website' &&
766
+ contract.contractType == 'purchase' "
767
+ style="color: #1890ff; margin-left: 100px;cursor:pointer"
768
+ @click.stop="getShipmentPurchase(shipmentFileInfo)"
769
+ >
770
+ {{
771
+ shipmentPurchaseAmountMessage}}
772
+ </span>
773
+ <el-popover
774
+ v-if="channel !== 'official-website' &&
775
+ contract.contractType == 'purchase' "
776
+ placement="top-start"
777
+ title=""
778
+ width="380"
779
+ trigger="hover"
780
+ content="系统根据【重量x单价-扣除定金】自动计算出参考尾款,可以据此核对发票。点击蓝色字体可以查看系统的数据来源明细,修改系统自动计算的扣减定金。">
781
+ <i class="el-icon-question" slot="reference" style="color:#c2c4c5;"/>
782
+ </el-popover>
783
+ </div>
784
+ <el-col :span="12">
785
+ <div style="display:flex;align-items:center">
786
+ <ContentTitle :contentTitleProp="{
787
+ bgButton: '尾款发票',
788
+ bgTime: contract.contractType == 'sale' ? shipmentFileInfo.saleFinallyInvoice && timeFormate(shipmentFileInfo.saleFinallyInvoice) : shipmentFileInfo.purchaseFinallyInvoice && timeFormate(shipmentFileInfo.purchaseFinallyInvoice),
789
+ bgcolor: shipProgressInfo.bgcolor
790
+ }"></ContentTitle>
791
+ <span
792
+ v-if="
793
+ channel !== 'official-website' && contract.contractType == 'purchase' && shipmentFileInfo.purchaseFinallyInvoice && shipmentFileInfo.purchaseFinallyInvoice.length > 0"
794
+ style="color: #1890ff; cursor: pointer; margin-left: 10px;font-size:14px;"
795
+ @click.stop="identifyPageBoth(shipmentFileInfo, 2)"
796
+ >{{ identify }}
797
+ </span>
798
+ </div>
799
+ <!-- <div class="sub-title"> -->
800
+ <!-- {{ $t("contractDetail.finallyInvoice") }}
801
+ <el-button
802
+ v-if="channel !== 'official-website'"
803
+ type="text"
804
+ size="small"
805
+ @click="skipInvoiceList"
806
+ >发票列表</el-button> -->
807
+ <!-- <el-button
808
+ style="color: #1890ff; cursor: pointer; margin-left: 10px"
809
+ v-if="channel !== 'official-website' &&
810
+ contract.contractType == 'purchase'"
811
+ type="text"
812
+ size="small"
813
+ @click="getShipmentPurchase(shipmentFileInfo)"
814
+ >
815
+ 点击可查看明细
816
+ </el-button> -->
817
+ <!-- </div> -->
818
+ <!-- 管理台 -->
819
+ <div v-if="channel != 'official-website'">
594
820
  <div v-if="contract.contractType == 'sale'">
595
- <el-col :span="6">
821
+ <!-- <el-col :span="12">
596
822
  <div style="margin-left: 60px">
597
- <div
598
- class="sub-title"
599
- >{{ $t("contractDetail.saleTemporaryFinallyInvoice") }}</div>
600
823
  <div class="file-list">
601
824
  <file-show
602
825
  :hiddenOperation="channel == 'official-website'"
603
826
  @refresh="handleRefresh"
604
827
  @checked="handleChecked"
605
828
  @uncheck="handleUncheck"
829
+ :selectFileListProp="selectFileList"
606
830
  :file-info="
607
831
  getLastFileByList(
608
- shipmentFileInfo.saleTemporaryFinallyInvoice
832
+ shipmentFileInfo.saleFinallyInvoice
609
833
  )
610
834
  "
611
835
  />
612
836
  </div>
613
837
  </div>
614
- </el-col>
615
- <el-col :span="18">
838
+ </el-col> -->
839
+ <el-col :span="12">
616
840
  <div>
617
841
  <div class="file-list">
618
842
  <file-show
@@ -620,312 +844,107 @@
620
844
  @refresh="handleRefresh"
621
845
  @checked="handleChecked"
622
846
  @uncheck="handleUncheck"
847
+ :selectFileListProp="selectFileList"
623
848
  :file-info="item"
624
849
  v-for="(
625
850
  item, i
626
- ) in shipmentFileInfo.salePersonalTemporaryFinallyInvoice"
851
+ ) in shipmentFileInfo.saleFinallyInvoice"
627
852
  :key="i"
628
853
  />
629
854
  <contract-file-drag-upload
630
- v-if="channel !== 'official-website'"
855
+ v-show="(!shipmentFileInfo.saleFinallyInvoice || shipmentFileInfo.saleFinallyInvoice.length == 0) && channel !== 'official-website'"
631
856
  @upload="
632
857
  handleUpload(
633
858
  $event,
634
859
  shipmentFileInfo.shipmentId,
635
860
  'shipment',
636
- 'sale_personal_temporary_finally_invoice'
861
+ 'sale_finally_invoice'
637
862
  )
638
863
  "
639
864
  :isShowTip="false"
865
+ uploadNameStr="尾款发票"
640
866
  />
641
867
  </div>
642
868
  </div>
643
869
  </el-col>
644
870
  </div>
645
- <div v-else style="margin-left: 60px">
646
- <div class="sub-title">
647
- 临时尾款发票
648
- <span
649
- v-if="
650
- channel !== 'official-website' &&
651
- contract.contractType == 'purchase'
652
- "
653
- style="color: #1890ff; cursor: pointer; margin-left: 10px"
654
- @click.stop="identifyPageBoth(shipmentFileInfo, 1)"
655
- >{{ identify }}</span>
656
- </div>
657
- <div class="file-list">
658
- <file-show
659
- :hiddenOperation="channel == 'official-website'"
660
- @refresh="handleRefresh"
661
- @checked="handleChecked"
662
- @uncheck="handleUncheck"
663
- :file-info="item"
664
- v-for="(
665
- item, i
666
- ) in shipmentFileInfo.purchaseTemporaryFinallyInvoice"
667
- :key="i"
668
- />
669
- <contract-file-drag-upload
670
- v-if="channel !== 'official-website'"
671
- @upload="
672
- handleUpload(
673
- $event,
674
- shipmentFileInfo.shipmentId,
675
- 'shipment',
676
- 'purchase_temporary_finally_invoice'
677
- )
678
- "
679
- :isShowTip="false"
680
- />
681
- </div>
682
- </div>
683
- </el-row>
684
-
685
- <el-divider v-if="contract.quoteType != 'FIXED'"></el-divider>
686
-
687
- <el-row v-if="contract.contractType == 'sale'">
688
- <el-col :span="6">
689
- <div style="margin-left: 60px">
690
- <div class="sub-title">{{ $t("contractDetail.saleFinallyInvoice") }}</div>
691
- <div class="file-list">
692
- <file-show
693
- :hiddenOperation="channel == 'official-website'"
694
- @refresh="handleRefresh"
695
- @checked="handleChecked"
696
- @uncheck="handleUncheck"
697
- :file-info="
698
- getLastFileByList(
699
- shipmentFileInfo.saleFinallyInvoice
700
- )
701
- "
702
- />
703
- </div>
704
- </div>
705
- </el-col>
706
- <el-col :span="18">
707
- <div>
708
- <div class="file-list">
709
- <file-show
710
- :hiddenOperation="channel == 'official-website'"
711
- @refresh="handleRefresh"
712
- @checked="handleChecked"
713
- @uncheck="handleUncheck"
714
- :file-info="item"
715
- v-for="(
716
- item, i
717
- ) in shipmentFileInfo.salePersonalFinallyInvoice"
718
- :key="i"
719
- />
720
- <contract-file-drag-upload
721
- v-if="channel !== 'official-website'"
722
- @upload="
723
- handleUpload(
724
- $event,
725
- shipmentFileInfo.shipmentId,
726
- 'shipment',
727
- 'sale_personal_finally_invoice'
728
- )
729
- "
730
- :isShowTip="false"
731
- />
732
- </div>
733
- </div>
734
- </el-col>
735
- </el-row>
736
- <el-row v-else>
737
- <div style="margin-left: 60px">
738
- <div class="sub-title">
739
- 卖家采购尾款发票
740
- <span
741
- v-if="
742
- channel !== 'official-website' &&
743
- contract.contractType == 'purchase'
744
- "
745
- style="color: #1890ff; cursor: pointer; margin-left: 10px"
746
- @click.stop="identifyPageBoth(shipmentFileInfo, 2)"
747
- >{{ identify }}</span>
748
- </div>
749
- <div class="file-list">
750
- <file-show
751
- :hiddenOperation="channel == 'official-website'"
752
- @refresh="handleRefresh"
753
- @checked="handleChecked"
754
- @uncheck="handleUncheck"
755
- :file-info="item"
756
- v-for="(
757
- item, i
758
- ) in shipmentFileInfo.purchaseFinallyInvoice"
759
- :key="i"
760
- />
761
- <div>
762
- <el-button
763
- type="primary"
764
- size="mini"
765
- @click="
766
- uploadFinalInvoice(
767
- 'finally',
768
- shipmentFileInfo.shipmentId
769
- )
770
- "
771
- >上传采购尾款发票</el-button>
772
- </div>
773
- </div>
774
- </div>
775
- </el-row>
776
- <el-divider></el-divider>
777
- <!-- 提单草稿 -->
778
- <el-row>
779
- <div>
780
- <div class="sub-title">
781
- {{ $t("contractDetail.draftBillOfLading") }}
782
- <span
783
- style="color: #1890ff; cursor: pointer"
784
- v-if="
785
- shipmentFileInfo &&
786
- shipmentFileInfo.draftBillOfLading &&
787
- shipmentFileInfo.draftBillOfLading[0] &&
788
- shipmentFileInfo.draftBillOfLading[0].url
789
- "
790
- @click="
791
- identifyPage(
792
- shipmentFileInfo &&
793
- shipmentFileInfo.draftBillOfLading &&
794
- shipmentFileInfo.draftBillOfLading[0] &&
795
- shipmentFileInfo.draftBillOfLading[0].url,
796
- shipmentFileInfo && shipmentFileInfo.shipmentId,
797
- 'draft_bill'
798
- )
799
- "
800
- >{{ identify }}</span>
801
- </div>
802
- <div class="file-list">
803
- <file-show
804
- :hiddenOperation="channel == 'official-website'"
805
- @refresh="handleRefresh"
806
- @checked="handleChecked"
807
- @uncheck="handleUncheck"
808
- :file-info="item"
809
- v-for="(item, i) in shipmentFileInfo.draftBillOfLading"
810
- :key="i"
811
- />
812
- <contract-file-drag-upload
813
- v-if="channel !== 'official-website'"
814
- @upload="
815
- handleUpload(
816
- $event,
817
- shipmentFileInfo.shipmentId,
818
- 'shipment',
819
- 'draft_bill_of_lading'
820
- )
821
- "
822
- :isShowTip="false"
823
- />
824
- </div>
825
- </div>
826
- </el-row>
827
- <el-divider></el-divider>
828
- <!-- 提单正本Copy -->
829
- <el-row>
830
- <div>
831
- <div class="sub-title">{{ $t("contractDetail.BLCopy") }}</div>
832
- <div class="file-list">
833
- <file-show
834
- :hiddenOperation="channel == 'official-website'"
835
- @refresh="handleRefresh"
836
- @checked="handleChecked"
837
- @uncheck="handleUncheck"
838
- :file-info="item"
839
- v-for="(
840
- item, i
841
- ) in shipmentFileInfo.originalBillOfLadingCopy"
842
- :key="i"
843
- />
844
- <contract-file-drag-upload
845
- v-if="channel !== 'official-website'"
846
- @upload="
847
- handleUpload(
848
- $event,
849
- shipmentFileInfo.shipmentId,
850
- 'shipment',
851
- 'original_bill_of_lading_copy'
852
- )
853
- "
854
- :isShowTip="false"
855
- />
856
- </div>
857
- </div>
858
- </el-row>
859
- <el-divider></el-divider>
860
- <div>
861
- <div class="sub-title">{{ $t("contractDetail.otherShipmentFile") }}</div>
862
- <div class="file-list" v-if="contract.contractType == 'sale'">
863
- <file-show
864
- :hiddenOperation="channel == 'official-website'"
865
- @refresh="handleRefresh"
866
- @checked="handleChecked"
867
- @uncheck="handleUncheck"
868
- :file-info="item"
869
- v-for="(item, i) in shipmentFileInfo.saleShipmentOther"
870
- :key="i"
871
- />
872
- <contract-file-drag-upload
873
- v-if="channel !== 'official-website'"
874
- @upload="
875
- handleUpload(
876
- $event,
877
- shipmentFileInfo.shipmentId,
878
- 'shipment',
879
- 'sale_shipment_other'
880
- )
881
- "
882
- :isShowTip="false"
883
- />
884
- </div>
885
- <div v-else class="file-list">
886
- <file-show
887
- :hiddenOperation="channel == 'official-website'"
888
- @refresh="handleRefresh"
889
- @checked="handleChecked"
890
- @uncheck="handleUncheck"
891
- :file-info="item"
892
- v-for="(
893
- item, i
894
- ) in shipmentFileInfo.purchaseShipmentOther"
895
- :key="i"
896
- />
897
- <contract-file-drag-upload
898
- v-if="channel !== 'official-website'"
899
- @upload="
900
- handleUpload(
901
- $event,
902
- shipmentFileInfo.shipmentId,
903
- 'shipment',
904
- 'purchase_shipment_other'
905
- )
906
- "
907
- :isShowTip="false"
908
- />
871
+ <!-- purchase -->
872
+ <div v-else>
873
+ <el-col :span="12">
874
+ <div style="margin-left: 60px">
875
+ <div class="file-list">
876
+ <file-show
877
+ :hiddenOperation="channel == 'official-website'"
878
+ @refresh="handleRefresh"
879
+ @checked="handleChecked"
880
+ @uncheck="handleUncheck"
881
+ :selectFileListProp="selectFileList"
882
+ :file-info="item"
883
+ v-for="(
884
+ item, i
885
+ ) in shipmentFileInfo.purchaseFinallyInvoice"
886
+ :key="i"
887
+ />
888
+ <div>
889
+ <el-button
890
+ style="margin-top: 10px"
891
+ type="primary"
892
+ size="mini"
893
+ @click="
894
+ uploadFinalInvoice(
895
+ 'finally',
896
+ shipmentFileInfo.shipmentId
897
+ )
898
+ "
899
+ >上传采购尾款发票</el-button>
900
+ </div>
901
+ </div>
902
+ </div>
903
+ </el-col>
909
904
  </div>
910
905
  </div>
911
- </el-timeline-item>
912
- <el-timeline-item
913
- :icon="shipmentFileInfo.waterBill ? 'el-icon-success' : ''"
914
- :type="shipmentFileInfo.waterBill ? 'primary' : ''"
915
- size="large"
916
- >
917
- <div v-if="channel !== 'official-website'" style="color: #1890ff">
918
- {{
919
- contract.contractType == "sale"
920
- ? "尾款收款"
921
- : $t("contractDetail.Final_payment")
922
- }}
906
+ <div v-else>
907
+ <!-- 买家端 -->
908
+ <el-col>
909
+ <div class="file-list">
910
+ <file-show
911
+ :hiddenOperation="channel == 'official-website'"
912
+ @refresh="handleRefresh"
913
+ @checked="handleChecked"
914
+ @uncheck="handleUncheck"
915
+ :selectFileListProp="selectFileList"
916
+ :file-info="item"
917
+ v-for="(
918
+ item, i
919
+ ) in shipmentFileInfo.saleFinallyInvoice"
920
+ :key="i"
921
+ />
922
+ </div>
923
+ </el-col>
924
+ <!-- <el-col :span="12" class="center-status">
925
+ <div>
926
+ <div v-if="!shipmentItemData.balanceInvoiceFullyPaidFlag">
927
+ <i class="el-icon-time"></i>
928
+ <span style="color:#f00">尾款待付</span>
929
+ </div>
930
+ <div v-if="!shipmentFileInfo.waterBill || shipmentFileInfo.waterBill && shipmentFileInfo.waterBill.length == 0">支付凭证待提供</div>
931
+ </div>
932
+ </el-col> -->
923
933
  </div>
924
- <div v-else class="sub-title">{{ $t("contractDetail.Final_payment") }}</div>
925
- <el-row>
926
- <el-col :span="8">
927
- <div>
928
- <div class="sub-title">{{ $t("contractDetail.finalPaymentMemo") }}</div>
934
+ </el-col>
935
+ <el-col :span="12">
936
+ <!-- 支付凭证 -->
937
+ <ContentTitle :contentTitleProp="{
938
+ bgButton: '尾款支付凭证',
939
+ bgTime: shipmentFileInfo.waterBill && timeFormate(shipmentFileInfo.waterBill),
940
+ bgcolor: getGoodsProgressInfo.bgcolor,
941
+ successFlag: true
942
+ }"></ContentTitle>
943
+
944
+ <div v-if="!contractFileInfo.balanceInvoiceFullyPaidFlag">
945
+ <i class="el-icon-time"></i>
946
+ <span style="color:#f00">尾款待付</span>
947
+ </div>
929
948
 
930
949
  <div class="file-list">
931
950
  <file-show
@@ -938,67 +957,133 @@
938
957
  :key="i"
939
958
  />
940
959
  </div>
941
- </div>
960
+ <div v-if="!shipmentFileInfo.waterBill || shipmentFileInfo.waterBill.length == 0" class="center-status-block" style="align-items: flex-start">
961
+ <div>
962
+ <i class="el-icon-time"></i>
963
+ 支付凭证待提供
964
+ </div>
965
+ </div>
942
966
  </el-col>
943
- <!-- <el-col :span="16">
944
- <div v-if="contract.contractType == 'sale'">
945
- <div class="file-list">
946
- <file-show
947
- :hiddenOperation="channel == 'official-website'"
948
- @refresh="handleRefresh"
949
- @checked="handleChecked"
950
- @uncheck="handleUncheck"
951
- :file-info="item"
952
- v-for="(
967
+ </el-col>
968
+ <div>
969
+ </div>
970
+ </el-col>
971
+ <el-col :span="24">
972
+ <div class="hr-class"></div>
973
+ </el-col>
974
+
975
+ <el-col :span="24">
976
+ <ContentTitle :contentTitleProp="{
977
+ bgButton: '其他文件',
978
+ bgTime: contract.contractType == 'sale' ? shipmentFileInfo.saleShipmentOther && timeFormate(shipmentFileInfo.saleShipmentOther) : shipmentFileInfo.purchaseShipmentOther && timeFormate(shipmentFileInfo.purchaseShipmentOther),
979
+ bgcolor: shipProgressInfo.bgcolor
980
+ }"></ContentTitle>
981
+ </el-col>
982
+ <el-col :span="24" v-if="contract.contractType == 'sale'">
983
+ <div class="file-list">
984
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
985
+ :hiddenOperation="channel == 'official-website'"
986
+ v-for="(item, i) in shipmentFileInfo.saleShipmentOther" :key="i" />
987
+ <contract-file-drag-upload @upload="
988
+ handleUpload(
989
+ $event,
990
+ shipmentFileInfo.shipmentId,
991
+ 'shipment',
992
+ 'sale_shipment_other'
993
+ )
994
+ " :isShowTip="false" uploadNameStr="其他文件" />
995
+ </div>
996
+ </el-col>
997
+ <el-col :span="24" v-else>
998
+ <div class="file-list">
999
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
1000
+ :hiddenOperation="channel == 'official-website'"
1001
+ v-for="(
953
1002
  item, i
954
- ) in shipmentFileInfo.salePersonalWaterBill"
955
- :key="i"
956
- />
957
- <contract-file-drag-upload
958
- @upload="
959
- handleUpload(
960
- $event,
961
- shipmentFileInfo.shipmentId,
962
- 'shipment',
963
- 'sale_personal_waterBill'
964
- )
965
- "
966
- :isShowTip="false"
967
- />
968
- </div>
969
- </div>
970
- <div v-else>
971
- <div class="file-list">
1003
+ ) in shipmentFileInfo.purchaseShipmentOther" :key="i" />
1004
+ <contract-file-drag-upload @upload="
1005
+ handleUpload(
1006
+ $event,
1007
+ shipmentFileInfo.shipmentId,
1008
+ 'shipment',
1009
+ 'purchase_shipment_other'
1010
+ )"
1011
+ :isShowTip="false"
1012
+ uploadNameStr="其他文件" />
1013
+ </div>
1014
+ </el-col>
1015
+ </div>
1016
+ </template>
1017
+ </SectionSlot>
1018
+ </div>
1019
+ </div>
1020
+
1021
+ <!-- 收货 -->
1022
+ <div>
1023
+ <BillOfLadingNoTab
1024
+ :contractFileInfo="contractFileInfo"
1025
+ @changeShipBillNo="changeShipBillNo"
1026
+ :progressInfo="getGoodsProgressInfo"
1027
+ :shipBillNoProp="shipBillNo"
1028
+ ></BillOfLadingNoTab>
1029
+ <SectionSlot
1030
+ :infoPro="getGoodsProgressInfo" v-for="(
1031
+ shipmentFileInfo, shipmentIndex
1032
+ ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex" v-if="shipmentIndex == shipBillNo"
1033
+ >
1034
+ <template v-slot:header>
1035
+ <div>
1036
+ <ProgressDetail :infoPro="getGoodsProgressInfo"></ProgressDetail>
1037
+ </div>
1038
+ </template>
1039
+ <template v-slot:content>
1040
+ <div class="content-root">
1041
+ <div>
1042
+ <!-- <div v-if="channel !== 'official-website'" style="color: #1890ff">
1043
+ {{
1044
+ contract.contractType == "sale"
1045
+ ? "尾款收款"
1046
+ : $t("contractDetail.Final_payment")
1047
+ }}
1048
+ </div>
1049
+ <div v-else class="sub-title">{{ $t("contractDetail.Final_payment") }}</div> -->
1050
+ <!-- 尾款水单 -->
1051
+ <!-- <el-row>
1052
+ <el-col :span="24">
1053
+ <div>
1054
+ <ContentTitle :contentTitleProp="{
1055
+ bgButton: $t('contractDetail.finalPaymentMemo'),
1056
+ bgTime: shipmentFileInfo.waterBill && timeFormate(shipmentFileInfo.waterBill),
1057
+ bgcolor: getGoodsProgressInfo.bgcolor
1058
+ }"></ContentTitle>
1059
+
1060
+ <div class="file-list" v-if="shipmentFileInfo.waterBill && shipmentFileInfo.waterBill.length">
972
1061
  <file-show
973
1062
  :hiddenOperation="channel == 'official-website'"
974
1063
  @refresh="handleRefresh"
975
1064
  @checked="handleChecked"
976
1065
  @uncheck="handleUncheck"
977
1066
  :file-info="item"
978
- v-for="(
979
- item, i
980
- ) in shipmentFileInfo.purchasePersonalWaterBill"
1067
+ v-for="(item, i) in shipmentFileInfo.waterBill"
981
1068
  :key="i"
982
1069
  />
983
- <contract-file-drag-upload
984
- @upload="
985
- handleUpload(
986
- $event,
987
- shipmentFileInfo.shipmentId,
988
- 'shipment',
989
- 'purchase_personal_waterBill'
990
- )
991
- "
992
- :isShowTip="false"
993
- />
1070
+ </div>
1071
+ <div v-else class="center-status">
1072
+ <i class="el-icon-time"></i>
1073
+ 暂无文件
994
1074
  </div>
995
1075
  </div>
996
- </el-col>-->
997
- </el-row>
998
- <el-row>
1076
+ </el-col>
1077
+ </el-row> -->
1078
+ <!-- 汇款凭证 -->
1079
+ <!-- <el-row>
999
1080
  <div>
1000
- <div class="sub-title">{{ $t("contractDetail.swift") }}</div>
1001
- <div class="file-list">
1081
+ <ContentTitle :contentTitleProp="{
1082
+ bgButton: $t('contractDetail.swift'),
1083
+ bgTime: shipmentFileInfo.voucher && timeFormate(shipmentFileInfo.voucher),
1084
+ bgcolor: getGoodsProgressInfo.bgcolor
1085
+ }"></ContentTitle>
1086
+ <div class="file-list" v-if="shipmentFileInfo.voucher && shipmentFileInfo.voucher.length">
1002
1087
  <file-show
1003
1088
  :hiddenOperation="channel == 'official-website'"
1004
1089
  @refresh="handleRefresh"
@@ -1009,39 +1094,84 @@
1009
1094
  :key="i"
1010
1095
  />
1011
1096
  </div>
1097
+ <div v-else class="center-status">
1098
+ <i class="el-icon-time"></i>
1099
+ 暂无文件
1100
+ </div>
1012
1101
  </div>
1013
- </el-row>
1014
- </el-timeline-item>
1015
- <el-timeline-item
1016
- :icon="
1017
- shipmentFileInfo.deliveryReceipt &&
1018
- shipmentFileInfo.deliveryReceipt.length > 0
1019
- ? 'el-icon-success'
1020
- : ''
1021
- "
1022
- :type="
1023
- shipmentFileInfo.deliveryReceipt &&
1024
- shipmentFileInfo.deliveryReceipt.length > 0
1025
- ? 'primary'
1026
- : ''
1027
- "
1028
- size="large"
1029
- >
1030
- <div style="color: #1890ff">{{ $t("contractDetail.tip6") }}</div>
1031
- <div class="sub-title">{{ $t("contractDetail.tip7") }}</div>
1032
-
1102
+ </el-row> -->
1103
+ <!-- 提货凭证 -->
1104
+ <ContentTitle :contentTitleProp="{
1105
+ bgButton: '提货凭证',
1106
+ bgTime: shipmentFileInfo.deliveryReceipt && timeFormate(shipmentFileInfo.deliveryReceipt),
1107
+ bgcolor: getGoodsProgressInfo.bgcolor
1108
+ }"></ContentTitle>
1109
+ <el-col :span="24">
1033
1110
  <div class="file-list">
1034
- <file-show
1035
- :hiddenOperation="channel == 'official-website'"
1036
- @refresh="handleRefresh"
1037
- @checked="handleChecked"
1038
- @uncheck="handleUncheck"
1039
- :file-info="item"
1040
- v-for="(item, i) in shipmentFileInfo.deliveryReceipt"
1041
- :key="i"
1042
- />
1111
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck"
1112
+ :selectFileListProp="selectFileList"
1113
+ :file-info="item" v-for="(item, i) in shipmentFileInfo.deliveryReceipt" :key="i" />
1114
+ <!-- v-if="shipmentItemData.shipmentPercentage > 0" -->
1115
+ <!-- todo: 上传提货凭证 -->
1116
+ <contract-file-drag-upload
1117
+ v-show="(!shipmentFileInfo.deliveryReceipt || shipmentFileInfo.deliveryReceipt.length == 0) && channel !== 'official-website'"
1118
+ @upload="
1119
+ handleUpload(
1120
+ $event,
1121
+ shipmentFileInfo.shipmentId,
1122
+ 'shipment',
1123
+ 'shipment_delivery_receipt'
1124
+ )
1125
+ " :isShowTip="false"
1126
+ uploadNameStr="提货凭证"
1127
+ />
1128
+ </div>
1129
+ <div v-if="!shipmentFileInfo.deliveryReceipt || shipmentFileInfo.deliveryReceipt.length == 0 && channel == 'official-website'" class="center-status">
1130
+ <i class="el-icon-time"></i>
1131
+ 暂无文件
1132
+ </div>
1133
+ </el-col>
1134
+ </div>
1135
+ </div>
1136
+ </template>
1137
+ </SectionSlot>
1138
+ </div>
1139
+ <!-- 索赔 -->
1140
+ <div v-if="contractFileInfo.claimCreateFlag">
1141
+ <BillOfLadingNoTab
1142
+ :contractFileInfo="contractFileInfo"
1143
+ @changeShipBillNo="changeShipBillNo"
1144
+ :progressInfo="shipProgressInfo"
1145
+ :shipBillNoProp="shipBillNo"
1146
+ ></BillOfLadingNoTab>
1147
+ <SectionSlot
1148
+ :infoPro="claimProgressInfo"
1149
+ v-for="(
1150
+ shipmentFileInfo, shipmentIndex
1151
+ ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex"
1152
+ v-if="shipmentIndex == shipBillNo"
1153
+ >
1154
+ <template v-slot:header>
1155
+ <div>
1156
+ <ProgressDetail :infoPro="claimProgressInfo"></ProgressDetail>
1157
+ </div>
1158
+ </template>
1159
+ <template v-slot:content>
1160
+ <div class="content-root">
1161
+ <div>
1162
+ <ContentTitle :contentTitleProp="{
1163
+ bgButton: !buyerFlag
1164
+ ? $t('contractDetail.Credit_Note')
1165
+ : $t('contractDetail.Debit_Note'),
1166
+ bgTime: claimFileInfoCom && timeFormate(claimFileInfoCom),
1167
+ bgcolor: claimProgressInfo.bgcolor
1168
+ }"></ContentTitle>
1169
+ <el-col :span="24">
1170
+ <div class="file-list" v-if="claimFileInfoCom">
1171
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck"
1172
+ :selectFileListProp="selectFileList"
1173
+ :file-info="item" v-for="(item, i) in claimFileInfoCom" :key="i" />
1043
1174
  <!-- <contract-file-drag-upload
1044
- v-if="channel !== 'official-website'"
1045
1175
  @upload="
1046
1176
  handleUpload(
1047
1177
  $event,
@@ -1051,67 +1181,36 @@
1051
1181
  )
1052
1182
  "
1053
1183
  :isShowTip="false"
1054
- />-->
1184
+ /> -->
1055
1185
  </div>
1056
- </el-timeline-item>
1057
- </el-timeline>
1058
- </el-tab-pane>
1059
- </el-tabs>
1060
- </el-timeline-item>
1061
-
1062
- <el-timeline-item icon="el-icon-success" type="primary" size="large">
1063
- <div style="color: #1890ff">{{ $t("contractDetail.tip8") }}</div>
1064
- </el-timeline-item>
1065
- </el-timeline>
1066
- <el-timeline v-if="channel !== 'official-website' && claimFileInfoCom">
1067
- <el-timeline-item icon="el-icon-success" type="primary" size="large">
1068
- <span style="color: #1890ff">{{ $t("contractDetail.Claim_documents") }}</span>
1069
- <div style="font-size: 16px; font-weight: 600; margin-top: 10px">
1070
- {{
1071
- buyerFlag
1072
- ? $t("contractDetail.Credit_Note")
1073
- : $t("contractDetail.Debit_Note")
1074
- }}
1075
- </div>
1076
- <div class="file-list">
1077
- <file-show
1078
- :hiddenOperation="channel == 'official-website'"
1079
- @refresh="handleRefresh"
1080
- @checked="handleChecked"
1081
- @uncheck="handleUncheck"
1082
- :file-info="item"
1083
- v-for="(item, i) in claimFileInfoCom"
1084
- :key="i"
1085
- />
1086
- </div>
1087
- </el-timeline-item>
1186
+ <div v-else class="center-status">
1187
+ <i class="el-icon-time"></i>
1188
+ 暂无文件
1189
+ </div>
1190
+ </el-col>
1191
+ </div>
1192
+ </div>
1193
+ </template>
1194
+ </SectionSlot>
1195
+ </div>
1088
1196
 
1089
- <el-timeline-item
1090
- icon="el-icon-success"
1091
- :type="claimFileInfoCom ? 'primary' : ''"
1092
- size="large"
1093
- >
1094
- <span style="color: #1890ff">{{ $t("contractDetail.Claim_completion") }}</span>
1095
- </el-timeline-item>
1096
- </el-timeline>
1097
1197
  <deposit-invoice ref="depositInvoice"></deposit-invoice>
1098
1198
 
1099
1199
  <gen-shipment ref="genShipment" @refresh="handleRefresh" />
1100
1200
 
1101
- <purchase-invoice-upload ref="purchaseInvoice" @refresh="handleRefresh"></purchase-invoice-upload>
1201
+ <purchase-invoice-upload ref="purchaseInvoice" @refresh="handleRefresh"
1202
+ :purchaseBalanceMoneyProp="purchaseBalanceMoney"
1203
+ :getShipmentPurchaseFun="getShipmentPurchase"
1204
+ ></purchase-invoice-upload>
1102
1205
  <!-- 多个买家弹窗 -->
1103
1206
  <el-dialog title="请先选择收货买家" :visible.sync="dialogVisible" width="30%">
1104
1207
  <div>请在下方选择一个您需要发货的买家</div>
1105
1208
  <div>
1106
1209
  <el-radio-group v-model="selectRadio">
1107
- <el-radio
1108
- :label="key"
1109
- v-for="(purchaseBuyerListItem, key) in purchaseBuyerList"
1110
- :key="key"
1111
- >
1210
+ <el-radio :label="key" v-for="(purchaseBuyerListItem, key) in purchaseBuyerList" :key="key">
1112
1211
  {{ purchaseBuyerListItem.buyerUserInfo.companyName }} ({{
1113
- purchaseBuyerListItem.contractNo
1114
- }}) {{ purchaseBuyerListItem.buyerUserInfo.firstName }}
1212
+ purchaseBuyerListItem.contractNo
1213
+ }}) {{ purchaseBuyerListItem.buyerUserInfo.firstName }}
1115
1214
  {{ purchaseBuyerListItem.buyerUserInfo.lastName }}
1116
1215
  </el-radio>
1117
1216
  </el-radio-group>
@@ -1124,7 +1223,10 @@
1124
1223
  </el-dialog>
1125
1224
  <shipment-add ref="shipmentGen" @refresh="handleRefresh" />
1126
1225
 
1127
- <shipment-purchase-amount ref="shipmentPurchaseAmount"></shipment-purchase-amount>
1226
+ <shipment-purchase-amount
1227
+ ref="shipmentPurchaseAmount"
1228
+ :getContractFileInfoCallback="getContractFileInfoCallback"
1229
+ ></shipment-purchase-amount>
1128
1230
  </div>
1129
1231
  </template>
1130
1232
 
@@ -1143,8 +1245,11 @@ import { batchAsZip } from '../../../utils/zip';
1143
1245
  import {
1144
1246
  getBizContract,
1145
1247
  updateBizContract,
1248
+ withdrawSignContract,
1146
1249
  signContract,
1250
+ shipmentConfirmDraftBl
1147
1251
  } from '../../../api/biz/bizContract';
1252
+
1148
1253
  import DepositInvoice from '../bizContract/depositInvoice.vue';
1149
1254
  import { getDepositInvoice, listBizInvoice } from '../../../api/biz/bizInvoice';
1150
1255
  import GenShipment from '../bizShipment/add.vue';
@@ -1159,6 +1264,16 @@ import ShipmentAdd from '../bizShipment/add.vue';
1159
1264
  import ShipmentPurchaseAmount from '../contractTracing/shipmentPurchaseAmount.vue';
1160
1265
  import { encryptId } from '../../../utils/index.js';
1161
1266
  import { Loading } from 'element-ui';
1267
+ import Progress from "./contractFile/Progress.vue";
1268
+ import ProgressDetail from "./contractFile/ProgressDetail.vue";
1269
+ import SectionSlot from "./contractFile/SectionSlot.vue";
1270
+ import ContentTitle from './contractFile/ContentTitle.vue';
1271
+ import IMGPreviewCheckBox from './contractFile/IMGPreviewCheckBox.vue'
1272
+ import BillOfLadingNoTab from './contractFile/BillOfLadingNoTab.vue'
1273
+ import ShowAndHide from './contractFile/ShowAndHide.vue'
1274
+
1275
+ let handleGenerateflag = false;
1276
+ let handleGenerateflag1 = false;
1162
1277
 
1163
1278
  export default {
1164
1279
  name: 'ContractFile',
@@ -1172,6 +1287,13 @@ export default {
1172
1287
  FileShowClaim,
1173
1288
  ShipmentAdd,
1174
1289
  ShipmentPurchaseAmount,
1290
+ Progress,
1291
+ SectionSlot,
1292
+ ProgressDetail,
1293
+ ContentTitle,
1294
+ IMGPreviewCheckBox,
1295
+ BillOfLadingNoTab,
1296
+ ShowAndHide
1175
1297
  },
1176
1298
  props: {
1177
1299
  // 文件信息
@@ -1183,15 +1305,53 @@ export default {
1183
1305
  },
1184
1306
  channel: {
1185
1307
  type: String,
1186
- default: '',
1308
+ default: 'official-website11',
1187
1309
  },
1188
1310
  buyerFlag: {
1189
1311
  type: Boolean,
1190
1312
  default: true,
1191
1313
  },
1314
+ selectFileListProp: {
1315
+ type: Array,
1316
+ default: () => {
1317
+ return [];
1318
+ },
1319
+ },
1192
1320
  },
1193
1321
  data() {
1194
1322
  return {
1323
+ shipmentItemData: {},
1324
+ shipBillNo: 0,
1325
+ goodsBillNo: 0,
1326
+ claimBillNo: 0,
1327
+ contractProgressInfo: {
1328
+ text: '合同',
1329
+ rate: 0,
1330
+ img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/805524d45f964ad0b3f51437d3b5750e.png',
1331
+ bgcolor: '#FBB040',
1332
+ textArr:[]
1333
+ },
1334
+ shipProgressInfo: {
1335
+ text: '装运',
1336
+ rate: 0,
1337
+ img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/8517dbf0444542d5bf100279231c9597.png',
1338
+ bgcolor: '#54B8FF',
1339
+ textArr:['等待卖家装运']
1340
+ },
1341
+ getGoodsProgressInfo: {
1342
+ text: '收货',
1343
+ rate: 0,
1344
+ img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/a43ef25e953747efa9b88d3d9bbe674f.png',
1345
+ bgcolor: '#7CCF48',
1346
+ textArr:[]
1347
+ },
1348
+ claimProgressInfo: {
1349
+ text: '索赔',
1350
+ rate: 0,
1351
+ img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1352
+ bgcolor: '#adadad',
1353
+ textArr:[]
1354
+ },
1195
1355
  identify: '识别',
1196
1356
  selectRadio: 0,
1197
1357
  purchaseBuyerList: [],
@@ -1260,7 +1420,6 @@ export default {
1260
1420
  // 表单校验
1261
1421
  rules: {},
1262
1422
  lintId: null,
1263
- selectFileList: [],
1264
1423
  contractId: null,
1265
1424
  //合同文件
1266
1425
  contractFileInfo: {
@@ -1268,9 +1427,17 @@ export default {
1268
1427
  },
1269
1428
  //参考采购价
1270
1429
  shipmentPurchaseAmountMessage: '',
1430
+ loadingInstance: null,
1431
+ purchaseBalanceMoney: null
1271
1432
  };
1272
1433
  },
1273
1434
  created() {
1435
+ this.loadingInstance = Loading.service({
1436
+ text: '请稍候',
1437
+ spinner: 'el-icon-loading',
1438
+ background: 'rgba(0, 0, 0, 0.7)',
1439
+ });
1440
+
1274
1441
  const contractId = this.$route.params && this.$route.params.contractId;
1275
1442
  if (contractId) {
1276
1443
  this.linkId = contractId;
@@ -1279,16 +1446,47 @@ export default {
1279
1446
  this.queryParams.linkId = contractId;
1280
1447
  }
1281
1448
  },
1282
- mounted() {},
1449
+ mounted() { },
1283
1450
  methods: {
1451
+ /**
1452
+ * @description:
1453
+ * @param {*} info
1454
+ * @return {*}
1455
+ */
1456
+ timeFormate(info) {
1457
+ if(info.length > 0 && info[0].createTime) {
1458
+ return this.$moment.utc(info[0].createTime).local().format('YYYY-MM-DD HH:mm');
1459
+ } else {
1460
+ return '';
1461
+ }
1462
+ },
1463
+
1464
+ allSelectContainerPackingPhoto(containerId) {
1465
+ this.$refs['container_packing_photo_' + containerId][0].checkAll1()
1466
+ },
1467
+ cancelContainerPackingPhoto(containerId) {
1468
+ this.$refs['container_packing_photo_' + containerId][0].cancelAll1()
1469
+ },
1470
+
1471
+ changeShipBillNo(index) {
1472
+ this.shipBillNo = index
1473
+ this.setRate(index)
1474
+ },
1475
+ changeGoodsBillNo(index) {
1476
+ this.goodsBillNo = index
1477
+ },
1478
+ changeClaimBillNo(index) {
1479
+ this.claimBillNo = index
1480
+ },
1284
1481
  getShipmentPurchaseAmount(shipmentFileInfo, shipmentIndex) {
1285
1482
  if (shipmentIndex == this.activeName) {
1286
1483
  getPurchaseAmount(shipmentFileInfo.shipmentId).then((res) => {
1484
+ this.purchaseBalanceMoney = (res.data.totalPurchaseAmount - res.data.purchaseDepositAmount).toFixed(2)
1287
1485
  this.shipmentPurchaseAmountMessage =
1288
- '参考采购尾款$' +
1289
- (
1290
- res.data.totalPurchaseAmount - res.data.purchaseDepositAmount
1291
- ).toFixed(2);
1486
+ '参考采购尾款$' + this.purchaseBalanceMoney
1487
+ ;
1488
+ console.log('==/biz/shipment/getPurchaseAmount/===', this.shipmentPurchaseAmountMessage);
1489
+ return this.shipmentPurchaseAmountMessage;
1292
1490
  });
1293
1491
  }
1294
1492
  },
@@ -1304,6 +1502,8 @@ export default {
1304
1502
  shipmentFileInfo && shipmentFileInfo.shipmentId,
1305
1503
  'final_invoice'
1306
1504
  );
1505
+ } else {
1506
+ return this.$message.warning('暂无文件');
1307
1507
  }
1308
1508
  } else {
1309
1509
  // 临时 purchaseTemporaryFinallyInvoice
@@ -1386,19 +1586,19 @@ export default {
1386
1586
  },
1387
1587
 
1388
1588
  /**
1389
- * @description: 添加货运
1589
+ * @description: 添加货运todo
1390
1590
  * @return {*}
1391
1591
  */
1392
1592
  addShipment() {
1393
1593
  const purchaseBuyerInfo = this.purchaseBuyerList[this.selectRadio];
1394
1594
  let timer = Date.now();
1395
1595
  addBizShipmentPurchase({
1396
- bookingNo: 'bookingNo-'+ timer,
1596
+ bookingNo: 'bookingNo-' + timer,
1397
1597
  billOfLadingNo: 'billOfLadingNo-' + timer,
1398
1598
  saleContractId: purchaseBuyerInfo.contractId,
1399
1599
  purchaseContractId: this.contract.contractId,
1400
- containerList:[{
1401
- containerNo:'containerNo-1'
1600
+ containerList: [{
1601
+ containerNo: 'containerNo-1'
1402
1602
  }]
1403
1603
  }).then((res) => {
1404
1604
  if (res.code === 200) {
@@ -1458,16 +1658,36 @@ export default {
1458
1658
  //撤回回签
1459
1659
  counterSign() {
1460
1660
  //如果是回签合同 保留原合同状态
1461
- updateBizContract({
1661
+ withdrawSignContract({
1462
1662
  contractId: this.contractId,
1463
- contractStatus:
1464
- this.contract.beforeContractStatus || this.contract.contractStatus,
1663
+ // contractStatus:
1664
+ // this.contract.beforeContractStatus || this.contract.contractStatus,
1465
1665
  }).then((res) => {
1466
- this.$modal.msgSuccess('撤回回签成功');
1666
+ if(res.code == 200) {
1667
+ this.$modal.msgSuccess('撤回回签成功');
1668
+ this.handleRefresh();
1669
+ }
1670
+ });
1671
+ },
1672
+
1673
+ //确认提单草稿成功
1674
+ shipmentConfirmDraftBlFun() {
1675
+ shipmentConfirmDraftBl({
1676
+ shipmentId: this.shipmentItemData.shipmentId,
1677
+ }).then((res) => {
1678
+ if(res.code == 200) {
1679
+ this.$modal.msgSuccess('确认提单草稿成功');
1680
+ this.handleRefresh();
1681
+ }
1467
1682
  });
1468
1683
  },
1469
1684
  //生船运按钮操作
1470
1685
  handleGenerate() {
1686
+ if(handleGenerateflag) {
1687
+ return;
1688
+ }
1689
+ handleGenerateflag = true;
1690
+
1471
1691
  listBizInvoice({
1472
1692
  contractId: this.contractId,
1473
1693
  invoiceType: 'sale',
@@ -1498,7 +1718,11 @@ export default {
1498
1718
  );
1499
1719
  });
1500
1720
  })
1501
- .catch(() => {});
1721
+ .catch(() => { }).finally(() => {
1722
+ this.timer = setTimeout(() => {
1723
+ handleGenerateflag = false;
1724
+ },3000);
1725
+ });
1502
1726
  } else {
1503
1727
  listWithContractInfo({
1504
1728
  contractIds: [this.contractId],
@@ -1509,11 +1733,20 @@ export default {
1509
1733
  this.contract.destination,
1510
1734
  this.contract
1511
1735
  );
1736
+ }).finally(() => {
1737
+ this.timer = setTimeout(() => {
1738
+ handleGenerateflag = false;
1739
+ },3000);
1512
1740
  });
1513
1741
  }
1514
1742
  });
1515
1743
  },
1516
1744
  handleGeneratePurchase() {
1745
+ if(handleGenerateflag1) {
1746
+ return;
1747
+ }
1748
+ handleGenerateflag1 = true;
1749
+
1517
1750
  listSaleContracts({ purchaseContractNo: this.contract.contractNo }).then(
1518
1751
  (res) => {
1519
1752
  this.purchaseBuyerList = res.rows;
@@ -1523,7 +1756,11 @@ export default {
1523
1756
  this.addShipment();
1524
1757
  }
1525
1758
  }
1526
- );
1759
+ ).finally(() => {
1760
+ this.timer = setTimeout(() => {
1761
+ handleGenerateflag1 = false;
1762
+ },3000);
1763
+ });
1527
1764
  },
1528
1765
  handleRefresh() {
1529
1766
  this.getContractFileInfo(this.contractId);
@@ -1543,9 +1780,239 @@ export default {
1543
1780
  uploadFinalInvoice(type, shipmentId) {
1544
1781
  this.$refs.purchaseInvoice.handleUpload(this.contract, type, shipmentId);
1545
1782
  },
1783
+ //设置进度
1784
+ setRate(index) {
1785
+ this.contractProgressInfo.rate = this.contractFileInfo.contractPercentage || 0
1786
+ let textArr = []
1787
+ console.log('===this.contract.contractType==', this.contract.contractType);
1788
+ // 销售
1789
+ if(this.contract.contractType == 'sale') {
1790
+ // 无定金
1791
+ //发送草稿合同标记
1792
+ if(!this.contractFileInfo.sendDraftContractFlag) {
1793
+ // 草稿合同待发出(英文:Draft contract to be sent out)
1794
+ textArr.push('草稿合同待发出')
1795
+ }
1796
+
1797
+ // 点击合同确认标记
1798
+ if(this.contractFileInfo.confirmContractFlag) {
1799
+ // 正式合同已发出(英文:Formal Contract have been sent out)
1800
+ // textArr.push('正式合同已发出')
1801
+ } else {
1802
+ // 正式合同待发出(英文:Formal contract to be sent out)
1803
+ textArr.push('正式合同待发出')
1804
+ }
1805
+
1806
+ // BLI确认标记
1807
+ if(this.contractFileInfo.bliConfirmFlag) {
1808
+ // 提单指令已确认(英文:BL Instruction confirmed)
1809
+ // textArr.push('提单指令已确认')
1810
+ } else {
1811
+ // 提单指令待买家确认(英文: BL Instruction to be confirmed
1812
+ textArr.push('提单指令待买家确认')
1813
+ }
1814
+
1815
+ // 合同回签标记
1816
+ if(this.contractFileInfo.contractSignFlag) {
1817
+ // 回签合同已上传(英文:Signed Contract has been signed back)
1818
+ // textArr.push('回签合同已上传')
1819
+ } else {
1820
+ // 回签合同待上传(英文:Formal contract to be signed back
1821
+ textArr.push('回签合同待上传')
1822
+ }
1823
+
1824
+ if(this.contract.deposit != null && this.contract.deposit > 0) {
1825
+ // 定金支付标记
1826
+ if(this.contractFileInfo.depositInvoicePayFlag) {
1827
+ // 定金已支付(英文:Deposit paid)
1828
+ // textArr.push('定金已支付')
1829
+ } else {
1830
+ // 定金待支付(英文:Deposit to be paid)
1831
+ textArr.push('定金待支付')
1832
+ }
1833
+ }
1834
+ }
1835
+
1836
+ if(this.contract.contractType == 'purchase') {
1837
+ // 无定金
1838
+ //发送草稿合同标记
1839
+ if(!this.contractFileInfo.sendDraftContractFlag) {
1840
+ // 草稿合同待发出(英文:Draft contract to be sent out)
1841
+ textArr.push('草稿合同待发出')
1842
+ }
1843
+
1844
+ // 点击合同确认标记
1845
+ if(this.contractFileInfo.confirmContractFlag) {
1846
+ // 正式合同已发出(英文:Formal Contract have been sent out)
1847
+ // textArr.push('正式合同已发出')
1848
+ } else {
1849
+ // 正式合同待发出(英文:Formal contract to be sent out)
1850
+ textArr.push('正式合同待发出')
1851
+ }
1852
+
1853
+ // BLI确认标记
1854
+ if(this.contractFileInfo.bliConfirmFlag) {
1855
+ // 提单指令已确认(英文:BL Instruction confirmed)
1856
+ // textArr.push('提单指令已确认')
1857
+ } else {
1858
+ // 提单指令待买家确认(英文: BL Instruction to be confirmed
1859
+ textArr.push('提单指令待买家确认')
1860
+ }
1861
+
1862
+ // 合同回签标记
1863
+ if(this.contractFileInfo.contractSignFlag) {
1864
+ // 回签合同已上传(英文:Signed Contract has been signed back)
1865
+ // textArr.push('回签合同已上传')
1866
+ } else {
1867
+ // 回签合同待上传(英文:Formal contract to be signed back
1868
+ textArr.push('回签合同待上传')
1869
+ }
1870
+
1871
+ if(this.contract.deposit != null && this.contract.deposit > 0) {
1872
+ if(!this.contractFileInfo.existDepositInvoiceFlag) {
1873
+ // 定金发票待提供(英文:Deposit Invoice to be uploaded)
1874
+ textArr.push('定金发票待提供')
1875
+ }
1876
+
1877
+ // 定金支付标记
1878
+ if(!this.contractFileInfo.depositInvoicePayFlag) {
1879
+ // 定金待支付(英文:Deposit to be paid)
1880
+ textArr.push('定金待支付')
1881
+ }
1882
+ }
1883
+ }
1884
+
1885
+ this.contractProgressInfo.textArr = textArr
1886
+
1887
+
1888
+ let shipmentFileInfoList = this.contractFileInfo.shipmentFileInfoList;
1889
+
1890
+ let shipTextArr = []
1891
+
1892
+ if(shipmentFileInfoList && shipmentFileInfoList.length > 0) {
1893
+ let shipmentItem = shipmentFileInfoList[index]
1894
+ this.shipmentItemData = shipmentItem
1895
+ this.shipProgressInfo.rate = shipmentItem?.shipmentPercentage || 0
1896
+ this.getGoodsProgressInfo.rate = shipmentItem?.telexReleasePercentage || 0
1897
+ this.claimProgressInfo.rate = this.contractFileInfo?.claimPercentage || 0
1898
+
1899
+ // 装运进度
1900
+ // 装箱单
1901
+ if(shipmentItem.generatePackingFlag) {
1902
+ // 装箱单已上传(英文:Packing List updated)
1903
+ // shipTextArr.push('装箱单已上传')
1904
+ } else {
1905
+ // 装箱单待上传(英文:Shipping docs-Packing list to be updated)
1906
+ shipTextArr.push('装箱单待上传')
1907
+ }
1908
+
1909
+ // 是否已支付尾款
1910
+ if(!shipmentItem.balanceInvoiceFullyPaidFlag && this.contract.contractType == 'sale') {
1911
+ // 尾款发票待上传(英文:Balance Invoice to be updated)
1912
+ shipTextArr.push('尾款发票待上传')
1913
+ }
1914
+
1915
+ // 上传装箱照片
1916
+ if(shipmentItem.uploadContainerPhotoFlag) {
1917
+ // 装箱照片已上传(Packing photos updated)
1918
+ // shipTextArr.push('装箱照片已上传')
1919
+ } else {
1920
+ // 装箱照片待上传(英文:Shipping docs-Shipping photos to be updated)
1921
+ shipTextArr.push('装箱照片待上传')
1922
+ }
1923
+
1924
+
1925
+ // 是否上传草稿提单
1926
+ if(shipmentItem.uploadDraftBlFlag) {
1927
+ // 草稿提单已上传(Draft BL updated)
1928
+ // shipTextArr.push('草稿提单已上传')
1929
+ } else {
1930
+ // 草稿提单待上传(英文:Shipping docs-Draft BL to be updated)
1931
+ shipTextArr.push('草稿提单待上传')
1932
+ }
1933
+
1934
+ // 是否确认草稿提单
1935
+ if(!shipmentItem.confirmDraftBlFlag) {
1936
+ // 草稿提单待买家确认(英文:Draft BL to be confirmed )
1937
+ shipTextArr.push('草稿提单待买家确认')
1938
+ } else {
1939
+ // 草稿提单已确认(英文:Draft BL confirmed)
1940
+ // shipTextArr.push('草稿提单已确认')
1941
+ }
1942
+
1943
+ // 尾款部分支付标记
1944
+
1945
+ // 尾款部分支付标记
1946
+ if(shipmentItem.balanceInvoiceFullyPaidFlag) {
1947
+ // 尾款已支付(英文:Final Payment paid)
1948
+ // shipTextArr.push('尾款已支付')
1949
+ } else {
1950
+ if(shipmentItem.balanceInvoicePartiallyPaidFlag) {
1951
+ // 尾款已部分支付(英文:Final Payment partially paid)
1952
+ shipTextArr.push('尾款已部分支付')
1953
+ } else {
1954
+ // 尾款待买家支付(英文:Balance Invoice to be paid)
1955
+ shipTextArr.push('尾款待买家支付')
1956
+ }
1957
+ }
1958
+
1959
+ this.shipProgressInfo.textArr = shipTextArr
1960
+
1961
+
1962
+ // 收货进度
1963
+ let goodsTextArr = []
1964
+ // 装运百分比
1965
+ if(shipmentItem.telexReleasePercentage > 0) {
1966
+ // 提货凭证已提供(英文:Released/ Telxed the BL)
1967
+ // goodsTextArr.push('提货凭证已提供')
1968
+ } else {
1969
+ // 提货凭证待提供(英文:Release /Telxed BL to be done)
1970
+ goodsTextArr.push('提货凭证待提供')
1971
+ }
1972
+
1973
+ this.getGoodsProgressInfo.textArr = goodsTextArr
1974
+
1975
+ // 索赔进度
1976
+ let claimTextArr = []
1977
+ if(this.contractFileInfo.claimCreateFlag && !this.contractFileInfo.claimProcessFlag && !this.contractFileInfo.claimCloseFlag) {
1978
+ // 索赔中(英文:Claiming)
1979
+ claimTextArr.push('索赔中')
1980
+ }
1981
+
1982
+ if(this.contractFileInfo.claimCreateFlag && this.contractFileInfo.claimProcessFlag && !this.contractFileInfo.claimCloseFlag) {
1983
+ // 文件已更新(英文:Claiming-CN/DN issued
1984
+ claimTextArr.push('文件已更新')
1985
+ }
1986
+
1987
+ if(this.contractFileInfo.claimCreateFlag && this.contractFileInfo.claimProcessFlag && this.contractFileInfo.claimCloseFlag) {
1988
+ // 索赔已关闭(英文:Claim closed)
1989
+ claimTextArr.push('索赔已关闭')
1990
+ }
1991
+
1992
+ this.claimProgressInfo.textArr = claimTextArr
1993
+ } else {
1994
+ shipTextArr.push('等待卖家装运')
1995
+ this.claimProgressInfo.textArr = shipTextArr
1996
+ }
1997
+
1998
+ this.loadingInstance.close();
1999
+ },
2000
+ //获取合同文件信息
1546
2001
  getContractFileInfo(contractId) {
1547
2002
  getBizContractFileInfo(contractId).then((res) => {
1548
2003
  this.contractFileInfo = res.data;
2004
+ this.setRate(this.shipBillNo || 0)
2005
+ });
2006
+ },
2007
+
2008
+ /**
2009
+ * @description: 修改正式尾款发票金额重新获取合同文件信息
2010
+ * @return {*}
2011
+ */
2012
+ getContractFileInfoCallback() {
2013
+ getBizContractFileInfo(this.contractId).then((res) => {
2014
+ this.contractFileInfo = res.data;
2015
+ this.setRate(this.shipBillNo)
1549
2016
  });
1550
2017
  },
1551
2018
  handleHistory(fileType) {
@@ -1568,10 +2035,23 @@ export default {
1568
2035
  console.log(this.selectFileList);
1569
2036
  },
1570
2037
  handleUncheck(val) {
1571
- let index = this.selectFileList.findIndex((item) => item.fileId === val);
1572
- if (index > -1) this.selectFileList.splice(index, 1);
2038
+ let index = this.selectFileList.findIndex((item) => {
2039
+ console.log('====handleUncheck==', item.fileId, val);
2040
+ return item.fileId === val
2041
+ });
2042
+ console.log('====handleUncheck==', index);
2043
+ if (index > -1) {
2044
+ this.selectFileList.splice(index, 1);
2045
+ }
1573
2046
  console.log(this.selectFileList);
1574
2047
  },
2048
+ cancelAllSelectFileList () {
2049
+ this.selectFileList.forEach((item) => {
2050
+ setTimeout(() => {
2051
+ this.handleUncheck(item.fileId)
2052
+ }, 10);
2053
+ });
2054
+ },
1575
2055
  handleUpload(e, linkId, linkType, fileType) {
1576
2056
  let loadingInstance = Loading.service({
1577
2057
  text: '请稍候',
@@ -1674,38 +2154,191 @@ export default {
1674
2154
  this.contractFileInfo.claimDebitNoteFileList &&
1675
2155
  this.contractFileInfo.claimDebitNoteFileList[0])
1676
2156
  ) {
1677
- return this.buyerFlag
2157
+ return !this.buyerFlag
1678
2158
  ? this.contractFileInfo &&
1679
- this.contractFileInfo.claimCreditNoteFileList &&
1680
- this.contractFileInfo.claimCreditNoteFileList
2159
+ this.contractFileInfo.claimCreditNoteFileList &&
2160
+ this.contractFileInfo.claimCreditNoteFileList
1681
2161
  : this.contractFileInfo &&
1682
- this.contractFileInfo.claimDebitNoteFileList &&
1683
- this.contractFileInfo.claimDebitNoteFileList;
2162
+ this.contractFileInfo.claimDebitNoteFileList &&
2163
+ this.contractFileInfo.claimDebitNoteFileList;
1684
2164
  } else {
1685
2165
  false;
1686
2166
  }
1687
2167
  },
1688
2168
  },
2169
+ watch: {
2170
+ selectFileListProp: {
2171
+ handler(val) {
2172
+ this.selectFileList = val
2173
+ },
2174
+ immediate: true,
2175
+ deep: true
2176
+ },
2177
+ },
2178
+ destroyed() {
2179
+ clearTimeout(this.timer);
2180
+ },
1689
2181
  };
1690
2182
  </script>
1691
2183
  <style lang="scss" scoped>
2184
+
2185
+ .bg-history {
2186
+ color: #1C75BC;
2187
+ line-height: 12px;
2188
+ font-size: 14px;
2189
+ cursor: pointer;
2190
+ }
2191
+
2192
+ .progress-root {
2193
+ display: flex;
2194
+ }
2195
+
2196
+ .selection-root {
2197
+ display: flex;
2198
+ margin-top: 26px;
2199
+ justify-content: flex-start;
2200
+ align-items: center;
2201
+ margin-bottom: 20px;
2202
+ }
2203
+
2204
+ .border-button {
2205
+ margin-left: 8px;
2206
+ min-width: 45px;
2207
+ padding: 0 10px;
2208
+ width: max-content;
2209
+ height: 21px;
2210
+ text-align: center;
2211
+ line-height: 17px;
2212
+ background: #FFFFFF;
2213
+ border-radius: 11px;
2214
+ font-size: 12px;
2215
+ border: 2px solid #D1D3D4;
2216
+ cursor: pointer;
2217
+ }
2218
+
2219
+ .border-button-share {
2220
+ background: #84db4c;
2221
+ border: 2px solid transparent;
2222
+ }
2223
+
2224
+ .slot-content {
2225
+ margin-top: 8px;
2226
+ }
2227
+
1692
2228
  .box-card {
1693
2229
  width: 100%;
1694
2230
  }
2231
+
1695
2232
  .sub-title {
1696
2233
  font-size: 14px;
1697
2234
  font-weight: bold;
1698
2235
  margin-bottom: 10px;
1699
2236
  }
2237
+
1700
2238
  .file-list {
1701
2239
  display: flex;
1702
2240
  flex-wrap: wrap;
1703
-
2241
+ max-width:1000px;
1704
2242
  .file-info {
1705
2243
  margin-right: 10px;
1706
2244
  }
1707
2245
  }
2246
+
2247
+
2248
+ .content-root {
2249
+ overflow: hidden;
2250
+ background-color: #fff;
2251
+ padding: 10px 20px;
2252
+
2253
+ .content-root-row {
2254
+ display: flex;
2255
+ align-items: center;
2256
+ }
2257
+ }
2258
+
1708
2259
  ::v-deep .el-tabs--top .el-tabs__item.is-top:last-child {
1709
2260
  font-weight: 900;
1710
2261
  }
2262
+
2263
+ .success {
2264
+ color: #67C23A;
2265
+ }
2266
+
2267
+ .confirm-draft-bl {
2268
+ width:200px;
2269
+ height: 30px;
2270
+ border-radius: 15px;
2271
+ line-height:30px;
2272
+ text-align: center;
2273
+ background-color: #189048;
2274
+ color:#fff;
2275
+ cursor:pointer;
2276
+ }
2277
+
2278
+ .center-status {
2279
+ height: 85px;
2280
+ display: flex;
2281
+ align-items: center;
2282
+ justify-content: flex-start;
2283
+ color: #bbb
2284
+ }
2285
+ .center-status-block {
2286
+ height: 85px;
2287
+ display: flex;
2288
+ align-items: center;
2289
+ flex-direction: column;
2290
+ justify-content: center;
2291
+ color: #bbb
2292
+ }
2293
+ .ship-empty {
2294
+ line-height:60px;
2295
+ color: #bbb;
2296
+ text-align: center;
2297
+ padding:20px 0;
2298
+ }
2299
+
2300
+ .preview-download-root {
2301
+ display:flex;
2302
+ margin-top:5px;
2303
+
2304
+ .preview-download {
2305
+ cursor: pointer;
2306
+ margin-left:8px;
2307
+ min-width: 45px;
2308
+ width:max-content;
2309
+ padding: 0 10px;
2310
+ height: 21px;
2311
+ text-align: center;
2312
+ line-height: 17px;
2313
+ background: #FFFFFF;
2314
+ border-radius: 11px;
2315
+ font-size:12px;
2316
+ border: 2px solid #D1D3D4;
2317
+ }
2318
+ }
2319
+ .addshipment {
2320
+ position: absolute;
2321
+ left:100px;
2322
+ top:120px;
2323
+ background-color:#fff;
2324
+ height:30px;
2325
+ line-height:30px;
2326
+ text-align: center;
2327
+ color:#1C75BC;
2328
+ padding: 0 20px;
2329
+ width:max-content;
2330
+ border-radius:15px;
2331
+ cursor:pointer;
2332
+ }
2333
+ .hr-class {
2334
+ width: 100%;
2335
+ height: 1px;
2336
+ background-color: #ddd;
2337
+ margin: 20px 0 ;
2338
+ }
1711
2339
  </style>
2340
+ <style lang="scss">
2341
+ .el-tooltip__popper {
2342
+ max-width: 300px !important; /* 设置你希望的最大宽度 */
2343
+ }
2344
+ </style>