doctor-admin-components 1.0.13-beta.21 → 1.0.13-beta.22

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 (26) hide show
  1. package/package.json +1 -1
  2. package/packages/index.js +4 -0
  3. package/packages/src/api/biz/bizContract.js +967 -4
  4. package/packages/src/assets/images/more.png +0 -0
  5. package/packages/src/assets/images/pdf-new.png +0 -0
  6. package/packages/src/components/FileUpload/contract-drag-new.vue +82 -8
  7. package/packages/src/i18n/en/message.json +259 -0
  8. package/packages/src/i18n/index.js +38 -0
  9. package/packages/src/i18n/zh-CN/message.json +259 -0
  10. package/packages/src/utils/index.js +1 -0
  11. 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
  12. package/packages/src/views/biz/bizFileInfo/contract copy.vue +1711 -0
  13. package/packages/src/views/biz/bizFileInfo/contract.vue +1232 -974
  14. package/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue +114 -0
  15. package/packages/src/views/biz/bizFileInfo/contractFile/ContentTitle.vue +102 -0
  16. package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +235 -0
  17. package/packages/src/views/biz/bizFileInfo/contractFile/Progress.vue +84 -0
  18. package/packages/src/views/biz/bizFileInfo/contractFile/ProgressDetail.vue +122 -0
  19. package/packages/src/views/biz/bizFileInfo/contractFile/SectionSlot.vue +83 -0
  20. package/packages/src/views/biz/bizFileInfo/fileShow copy.vue +321 -0
  21. package/packages/src/views/biz/bizFileInfo/fileShow.vue +114 -37
  22. package/packages/src/views/biz/bizFileInfo/fileShowClaim.vue +1 -1
  23. package/packages/src/views/biz/bizShipment/add.vue +6 -8
  24. package/packages/src/views/biz/contractTracing/contractTracingDetail copy.vue +107 -0
  25. package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +202 -8
  26. package/packages/src/views/biz/contractTracing/shipmentPurchaseAmount.vue +1 -1
@@ -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,758 @@
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-if="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-time"></i>
62
+ 提单指令待确认
63
+ </el-col>
64
+ <!-- 销售合同-回签合同 -->
65
+ <el-col :span="24">
66
+ <el-col :span="12">
67
+ <div class="content-root-row">
68
+ <ContentTitle :contentTitleProp="{
69
+ bgButton: contract.contractType == 'sale'
70
+ ? $t('contractDetail.saleContract')
71
+ : $t('contractDetail.purchaseContract'),
72
+ bgTime: contract.contractType == 'sale' ? contractFileInfo.saleContractFileInfo && timeFormate(contractFileInfo.saleContractFileInfo) : contractFileInfo.purchaseContractFileInfo && timeFormate(contractFileInfo.purchaseContractFileInfo)
73
+ }"></ContentTitle>
74
+ <span class="bg-history" @click="handleHistory('contract_formal')">查看历史版本</span>
75
+ </div>
76
+ </el-col>
77
+ <el-col :span="12" v-if="contractFileInfo.signContractFileInfo && contractFileInfo.signContractFileInfo.length">
78
+ <ContentTitle :contentTitleProp="{
79
+ bgButton: '回签合同',
80
+ bgTime:timeFormate(contractFileInfo.signContractFileInfo)
81
+ }"
82
+ :successFlag="true"
83
+ ></ContentTitle>
84
+ </el-col>
85
+ </el-col>
86
+ <el-col :span="24">
87
+ <el-col :span="12">
88
+ <div class="file-list" v-if="getLastFileByList(contractFileInfo.latestContractFileInfo)">
89
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :fileInfo="getLastFileByList(contractFileInfo.latestContractFileInfo)" />
90
+ </div>
91
+ <div v-else>
92
+ 暂无合同
93
+ </div>
94
+ </el-col>
95
+ <!-- 回签合同 -->
96
+ <el-col :span="12">
97
+ <!-- <div v-if="channel !== 'official-website'" class="sub-title">
87
98
  {{ $t("contractDetail.signContract") }}
88
99
  <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
100
+ </div> -->
101
+ <div class="file-list">
102
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
103
+ @checked="handleChecked" @uncheck="handleUncheck" :file-info="item"
104
+ :selectFileListProp="selectFileList"
105
+ type="signContract"
106
+ @signContract="counterSign"
107
+ v-for="(item, i) in contractFileInfo.signContractFileInfo" :key="i" />
108
+ <contract-file-drag-upload
109
+ v-if="!contractFileInfo.contractSignFlag"
103
110
  @upload="
111
+ handleUpload(
112
+ $event,
113
+ contract.contractId,
114
+ 'contract',
115
+ 'contract_sign'
116
+ )
117
+ " :isShowTip="false" uploadNameStr="回签合同" />
118
+ </div>
119
+ </el-col>
120
+ </el-col>
121
+ <!-- 定金发票-支付凭证 -->
122
+ <div>
123
+ <el-col :span="12">
124
+ <div style="display:flex;align-items:center">
125
+ <ContentTitle :contentTitleProp="{
126
+ bgButton: '定金发票',
127
+ bgTime: contractFileInfo.personalProformaInvoiceFileInfo && timeFormate(contractFileInfo.personalProformaInvoiceFileInfo)
128
+ }">
129
+ </ContentTitle>
130
+ <span class="bg-history" v-if="channel !== 'official-website'" @click="skipInvoiceList">发票列表</span>
131
+ </div>
132
+ </el-col>
133
+
134
+ <el-col :span="12" v-if="contractFileInfo.proformaInvoiceWaterBillFileInfo && contractFileInfo.proformaInvoiceWaterBillFileInfo.length">
135
+ <ContentTitle :contentTitleProp="{
136
+ bgButton: '支付凭证',
137
+ bgTime: contractFileInfo.proformaInvoiceWaterBillFileInfo && timeFormate(contractFileInfo.proformaInvoiceWaterBillFileInfo)
138
+ }"
139
+ :successFlag="true"
140
+ >
141
+ </ContentTitle>
142
+ <!-- <div v-if="!contractFileInfo.depositInvoicePayFlag">
143
+ 有回签合同文件
144
+ </div> -->
145
+ <div>
146
+ </div>
147
+ </el-col>
148
+ </div>
149
+ <!-- 数据 -->
150
+ <el-col :span="24">
151
+ <el-col :span="12">
152
+ <div style="margin-bottom:20px">
153
+ <el-button type="primary" size="mini" v-if="channel !== 'official-website'" @click.stop="getDepositInvoice">
154
+ {{ contract.contractType == "sale" ? "生成定金发票" : "上传定金发票" }}
155
+ </el-button>
156
+ </div>
157
+ <div class="file-list">
158
+ <file-show
159
+ :hiddenOperation="channel == 'official-website'"
160
+ @refresh="handleRefresh"
161
+ @checked="handleChecked"
162
+ @uncheck="handleUncheck"
163
+ :selectFileListProp="selectFileList"
164
+ :fileInfo="
165
+ getLastFileByList(contractFileInfo.proformaInvoiceFileInfo)
166
+ "
167
+ />
168
+ </div>
169
+ <div class="file-list">
170
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
171
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
172
+ item, i
173
+ ) in contractFileInfo.personalProformaInvoiceFileInfo" :key="i" />
174
+ <contract-file-drag-upload v-if="channel == 'official-website' && !contractFileInfo.existDepositInvoiceFlag" @upload="
104
175
  handleUpload(
105
176
  $event,
106
- contract.contractId,
107
- 'contract',
108
- 'contract_sign'
177
+ contractFileInfo.proformaInvoice.id,
178
+ 'invoice',
179
+ 'personal_proforma_invoice'
109
180
  )
110
- "
111
- :isShowTip="false"
112
- />
181
+ ":isShowTip="false"
182
+ uploadNameStr="定金发票" />
183
+ <div v-if="channel == 'official-website'" class="center-status">
184
+ <i class="el-icon-time"></i>
185
+ <span>定金发票待上传</span>
186
+ </div>
187
+ </div>
188
+ </el-col>
189
+ <!-- 定金 -->
190
+ <!-- <div>contractFileInfo.depositInvoicePayFlag{{ contractFileInfo.depositInvoicePayFlag }}</div> -->
191
+ <div class="file-list" v-if="contractFileInfo.depositInvoicePayFlag">
192
+ <file-show @refresh="handleRefresh"
193
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
194
+ v-for="(item, i) in contractFileInfo.signContractFileInfo" :key="i" />
195
+ <contract-file-drag-upload
196
+ v-if="!contractFileInfo.contractSignFlag"
197
+ @upload="
198
+ handleUpload(
199
+ $event,
200
+ contract.contractId,
201
+ 'contract',
202
+ 'contract_sign'
203
+ )
204
+ " :isShowTip="false" uploadNameStr="支付凭证" />
113
205
  </div>
206
+ <el-col v-else :span="12" class="center-status">
207
+ <div>
208
+ <!-- <div>
209
+ <i class="el-icon-time"></i>
210
+ <span style="color:#f00" v-if="!contractFileInfo.depositInvoicePayFlag">定金待付</span>
211
+ </div> -->
212
+ <el-row v-if="contract.contractType == 'sale'">
213
+ <el-col :span="16">
214
+ <div
215
+ v-if="
216
+ contractFileInfo.proformaInvoice &&
217
+ contractFileInfo.proformaInvoice.amount >
218
+ contractFileInfo.proformaInvoice.remainingAmount
219
+ "
220
+ class="el-icon-success customer-icon-success-color"
221
+ >
222
+ {{
223
+ channel !== "official-website"
224
+ ? "定金已收"
225
+ : $t("contractDetail.Deposit_Paid")
226
+ }}
227
+ </div>
228
+ <div v-else style="color: red">
229
+ {{
230
+ channel !== "official-website"
231
+ ? "定金未收"
232
+ : $t("contractDetail.Deposit_Unpaid")
233
+ }}
234
+ </div>
235
+ </el-col>
236
+ </el-row>
237
+ <el-row v-else>
238
+ <!-- <el-col :span="4">
239
+ <div style="color: #1890ff">{{ $t("contractDetail.deposit") }}</div>
240
+ </el-col> -->
241
+ <el-col :span="16">
242
+ <div
243
+ v-if="
244
+ contractFileInfo.proformaInvoice &&
245
+ contractFileInfo.proformaInvoice.amount >
246
+ contractFileInfo.proformaInvoice.remainingAmount
247
+ "
248
+ class="el-icon-success customer-icon-success-color"
249
+ >定金已付</div>
250
+ <div v-else style="color: red">定金未付</div>
251
+ </el-col>
252
+ </el-row>
253
+ <div v-if="!shipmentItemData.proformaInvoiceWaterBillFileInfo || shipmentItemData.proformaInvoiceWaterBillFileInfo && shipmentItemData.proformaInvoiceWaterBillFileInfo.length == 0">支付凭证待提供</div>
254
+ </div>
255
+ </el-col>
114
256
  </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="
257
+ <!-- 其他文件 -->
258
+ <el-col :span="24">
259
+ <ContentTitle :contentTitleProp="{
260
+ bgButton: '其他文件',
261
+ bgTime: contract.contractType == 'sale' ? contractFileInfo.saleContractOtherFile && timeFormate(contractFileInfo.saleContractOtherFile) : contractFileInfo.purchaseContractOtherFile && timeFormate(contractFileInfo.purchaseContractOtherFile)
262
+ }"></ContentTitle>
263
+ </el-col>
264
+ <el-col :span="24">
265
+ <!-- 销售-其他文件 -->
266
+ <div class="file-list" v-if="contract.contractType == 'sale'">
267
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
268
+ v-for="(item, i) in contractFileInfo.saleContractOtherFile" :key="i" />
269
+ <contract-file-drag-upload @upload="
131
270
  handleUpload(
132
271
  $event,
133
272
  contract.contractId,
134
273
  'contract',
135
274
  'sale_contract_other_file'
136
275
  )
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="
276
+ " :isShowTip="false" uploadNameStr="其他文件" />
277
+ </div>
278
+ <!-- 销售-采购文件 -->
279
+ <div class="file-list" v-else>
280
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :file-info="item"
281
+ v-for="(item, i) in contractFileInfo.purchaseContractOtherFile" :key="i" />
282
+ <contract-file-drag-upload @upload="
153
283
  handleUpload(
154
284
  $event,
155
285
  contract.contractId,
156
286
  'contract',
157
287
  'purchase_contract_other_file'
158
288
  )
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
182
- "
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
210
- "
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>
235
- </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
- />
246
- </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
- />
274
- </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
- />
289
+ "
290
+ :isShowTip="false"
291
+ uploadNameStr="其他文件"
292
+ />
293
+ </div>
294
+ </el-col>
291
295
  </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="
296
+ </template>
297
+ </SectionSlot>
298
+ </div>
299
+ <!-- 装运 -->
300
+ <div>
301
+ <BillOfLadingNoTab
302
+ :contractFileInfo="contractFileInfo"
303
+ @changeShipBillNo="changeShipBillNo"
304
+ :progressInfo="shipProgressInfo"
305
+ :shipBillNoProp="shipBillNo"
306
+ ></BillOfLadingNoTab>
307
+
308
+ <div
309
+ v-if="
333
310
  channel !== 'official-website' &&
311
+ contractFileInfo.shipmentFileInfoList && contractFileInfo.shipmentFileInfoList.length > 0 &&
334
312
  contract.contractType == 'purchase'
335
313
  "
336
314
  style="margin-bottom: 20px"
315
+ class="preview-download-root"
337
316
  >
338
- <el-button
339
- type="primary"
340
- size="mini"
341
- v-if="shipmentFileInfo && shipmentFileInfo.shipmentId"
317
+ <div
318
+ v-if="shipmentItemData && shipmentItemData.shipmentId"
342
319
  @click="
343
320
  identifyPage(
344
321
  '',
345
- shipmentFileInfo && shipmentFileInfo.shipmentId,
322
+ shipmentItemData && shipmentItemData.shipmentId,
346
323
  'summary'
347
324
  )
348
325
  "
349
- >识别汇总</el-button>
350
- <el-button type="primary" size="mini" @click="editShipment(shipmentFileInfo)">编辑船运</el-button>
326
+ class="preview-download"
327
+ >识别汇总</div>
328
+ <div class="preview-download" @click="editShipment(shipmentItemData)">编辑船运</div>
329
+ </div>
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'
338
+ "
339
+ >生成装运</div>
340
+ <div class="addshipment" @click.stop="handleGeneratePurchase"
341
+ v-if="
342
+ channel !== 'official-website' && contract.contractType == 'purchase'
343
+ "
344
+ >生成装运</div>
345
+ </div>
346
+ </template>
347
+ </SectionSlot>
348
+ <div v-else>
349
+ <SectionSlot :infoPro="shipProgressInfo" v-for="(
350
+ shipmentFileInfo, shipmentIndex
351
+ ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex" v-if="shipmentIndex == shipBillNo">
352
+ <template v-slot:header>
353
+ <div style="position:relative">
354
+ <ProgressDetail :infoPro="shipProgressInfo"></ProgressDetail>
355
+ <div class="addshipment" @click.stop="handleGenerate"
356
+ v-if="
357
+ channel !== 'official-website' && contract.contractType == 'sale'
358
+ "
359
+ >增加装运</div>
360
+ <div class="addshipment" @click.stop="handleGeneratePurchase"
361
+ v-if="
362
+ channel !== 'official-website' && contract.contractType == 'purchase'
363
+ "
364
+ >增加装运</div>
351
365
  </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>
366
+ </template>
367
+ <template v-slot:content>
368
+ <!-- <div class="content-root" v-if="shipProgressInfo.rate > 0"> -->
369
+ <div class="content-root" v-if="true">
370
+ <!-- 订舱资料 -->
371
+ <ContentTitle :contentTitleProp="{
372
+ bgButton: '订舱资料',
373
+ bgTime: shipmentFileInfo.bookingConfirmation && timeFormate(shipmentFileInfo.bookingConfirmation),
374
+ bgcolor: shipProgressInfo.bgcolor
375
+
376
+ }">
377
+ </ContentTitle>
359
378
  <div>
360
- <div class="sub-title">{{ $t("contractDetail.bookingConfirmation") }}</div>
379
+ </div>
380
+ <el-col :span="24">
381
+ <div class="file-list">
382
+ <file-show @refresh="handleRefresh" @checked="handleChecked" :hiddenOperation="channel == 'official-website'" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
383
+ v-for="(item, i) in shipmentFileInfo.bookingConfirmation" :key="i" />
384
+ <!-- 6. 销售去掉订舱资料上传功能 https://udswem7m8c.feishu.cn/wiki/Tm4SwKcqviRkTUkKNCxc2bnBnVb -->
385
+ <contract-file-drag-upload
386
+ v-if="channel !== 'official-website' && contract.contractType == 'purchase'"
387
+ @upload="
388
+ handleUpload(
389
+ $event,
390
+ shipmentFileInfo.shipmentId,
391
+ 'shipment',
392
+ 'shipment_booking_confirmation'
393
+ )
394
+ " :isShowTip="false" uploadNameStr="订舱资料" />
395
+ </div>
396
+ <el-col v-if="!shipmentFileInfo.bookingConfirmation || shipmentFileInfo.bookingConfirmation && shipmentFileInfo.bookingConfirmation.length == 0" :span="12" class="center-status">
397
+ <i class="el-icon-time"></i>
398
+ 订舱资料待更新
399
+ </el-col>
400
+ </el-col>
401
+ <!-- 装箱单 -->
402
+ <ContentTitle :contentTitleProp="{
403
+ bgButton: '装箱单',
404
+ bgTime: contract.contractType == 'purchase' ? shipmentFileInfo.purchasePersonalPackingList && timeFormate(shipmentFileInfo.purchasePersonalPackingList) : shipmentFileInfo.salePersonalPackingList && timeFormate(shipmentFileInfo.salePersonalPackingList),
405
+ bgcolor: shipProgressInfo.bgcolor
406
+ }"></ContentTitle>
407
+ <el-row v-if="contract.contractType == 'purchase'">
408
+ <div>
409
+ <div class="sub-title">
410
+ 装箱单(P)
411
+ <span style="color: #1890ff; cursor: pointer" v-if="shipmentFileInfo &&
412
+ shipmentFileInfo.purchasePersonalPackingList &&
413
+ shipmentFileInfo.purchasePersonalPackingList[0] &&
414
+ shipmentFileInfo.purchasePersonalPackingList[0]
415
+ .url
416
+ " @click="
417
+ identifyPage(
418
+ shipmentFileInfo &&
419
+ shipmentFileInfo.purchasePersonalPackingList &&
420
+ shipmentFileInfo
421
+ .purchasePersonalPackingList[0] &&
422
+ shipmentFileInfo
423
+ .purchasePersonalPackingList[0].url,
424
+ shipmentFileInfo && shipmentFileInfo.shipmentId,
425
+ 'packing'
426
+ )
427
+ ">{{ identify }}
428
+ </span>
429
+ </div>
430
+ <el-col :span="24">
431
+ <div class="file-list">
432
+ <file-show v-if="shipmentItemData.generatePackingFlag" :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
433
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
434
+ item, i
435
+ ) in shipmentFileInfo.purchasePersonalPackingList" :key="i" />
436
+
437
+ <el-col :span="12" v-if="channel == 'official-website' && !shipmentItemData.generatePackingFlag" class="center-status">
438
+ <i class="el-icon-time"></i>
439
+ 装箱单待更新
440
+ </el-col>
441
+ <contract-file-drag-upload v-if="channel !== 'official-website'"
442
+ @upload="handleUpload(
443
+ $event,
444
+ shipmentFileInfo.shipmentId,
445
+ 'shipment',
446
+ 'purchase_personal_shipment_packing_list'
447
+ )"
448
+ :isShowTip="false"
449
+ uploadNameStr="装箱单"
450
+ />
451
+ </div>
452
+ </el-col>
453
+ </div>
454
+ </el-row>
455
+ <el-row v-if="contract.contractType == 'sale'">
456
+ <div>
457
+ <div class="sub-title">装箱单(S)</div>
458
+ <el-col :span="24">
361
459
  <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="
460
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
461
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
462
+ item, i
463
+ ) in shipmentFileInfo.salePersonalPackingList" :key="i" />
464
+ <!-- sale 只做展示 -->
465
+ <!-- <contract-file-drag-upload v-if="channel !== 'official-website'" @upload="
374
466
  handleUpload(
375
467
  $event,
376
468
  shipmentFileInfo.shipmentId,
377
469
  'shipment',
378
- 'shipment_booking_confirmation'
470
+ 'sale_personal_shipment_packing_list'
379
471
  )
380
- "
472
+ "
381
473
  :isShowTip="false"
382
- />
383
- </div>
474
+ uploadNameStr="装箱单"
475
+ /> -->
476
+ </div>
477
+ </el-col>
384
478
  </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
- />
479
+ </el-row>
480
+
481
+ <!-- 装箱照片 -->
482
+ <div v-for="(
483
+ containerFile, i
484
+ ) in shipmentFileInfo.containerFileInfoRespList" :key="i">
485
+ <el-col :span="24">
486
+ <div class="content-root-row">
487
+ <ContentTitle :contentTitleProp="{
488
+ bgButton: '装箱照片' + containerFile.containerNo,
489
+ bgTime: containerFile.packingPhoto && timeFormate(containerFile.packingPhoto),
490
+ bgcolor: shipProgressInfo.bgcolor
491
+ }"></ContentTitle>
492
+ <div v-if="containerFile && containerFile.packingPhoto.length" style="display:flex">
493
+ <!-- <div style="display:flex"> -->
494
+ <div class="border-button" @click.stop="allSelectContainerPackingPhoto(containerFile.containerId)">
495
+ 全选照片 </div>
496
+ <div class="border-button" @click.stop="cancelContainerPackingPhoto(containerFile.containerId)">取消全选
400
497
  </div>
498
+ <div class="border-button border-button-share"
499
+ @click.stop="shareContainerUrl(containerFile.containerId)">分享</div>
401
500
  </div>
501
+ </div>
502
+ </el-col>
503
+ <el-col :span="24">
504
+ <div style="display:flex">
505
+ <!-- 文件预览 -->
506
+ <IMGPreviewCheckBox :ref="`container_packing_photo_${containerFile.containerId}`"
507
+ :imgArr="containerFile.packingPhoto"
508
+ :info="containerFile"
509
+ >
510
+ <template>
511
+ <contract-file-drag-upload v-if="channel !== 'official-website'" @upload="
512
+ handleUpload(
513
+ $event,
514
+ containerFile.containerId,
515
+ 'container',
516
+ 'container_packing_photo'
517
+ )
518
+ " :isShowTip="false" photos
519
+ style="margin-top:0px"
520
+ />
521
+ </template>
522
+ </IMGPreviewCheckBox>
523
+ </div>
524
+ <el-col :span="12" v-if="containerFile.packingPhoto && containerFile.packingPhoto.length == 0" class="center-status">
525
+ <i class="el-icon-time"></i>
526
+ 装箱照片待更新
402
527
  </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="
528
+ </el-col>
529
+ </div>
530
+
531
+
532
+ <el-col :span="24">
533
+ <ContentTitle :contentTitleProp="{
534
+ bgButton: '草稿提单',
535
+ bgTime: shipmentFileInfo.draftBillOfLading && timeFormate(shipmentFileInfo.draftBillOfLading),
536
+ bgcolor: shipProgressInfo.bgcolor
537
+ }"></ContentTitle>
538
+ </el-col>
539
+ <el-col :span="24">
540
+ <el-col :span="12">
541
+ <div class="sub-title">
542
+ {{ $t("contractDetail.draftBillOfLading") }}
543
+ <span
544
+ style="color: #1890ff; cursor: pointer"
545
+ v-if="
546
+ shipmentFileInfo &&
547
+ shipmentFileInfo.draftBillOfLading &&
548
+ shipmentFileInfo.draftBillOfLading[0] &&
549
+ shipmentFileInfo.draftBillOfLading[0].url
550
+ "
551
+ @click="
552
+ identifyPage(
411
553
  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>
554
+ shipmentFileInfo.draftBillOfLading &&
555
+ shipmentFileInfo.draftBillOfLading[0] &&
556
+ shipmentFileInfo.draftBillOfLading[0].url,
557
+ shipmentFileInfo && shipmentFileInfo.shipmentId,
558
+ 'draft_bill'
559
+ )
560
+ "
561
+ >{{ identify }}</span>
456
562
  </div>
457
- </el-row>
458
- <el-row v-if="contract.contractType == 'sale'">
459
- <div>
460
- <div class="sub-title">装箱单(S)</div>
461
-
462
- <div class="file-list">
563
+ <div class="file-list">
564
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
565
+ :hiddenOperation="channel == 'official-website'"
566
+ v-for="(
567
+ item, i
568
+ ) in shipmentFileInfo.draftBillOfLading" :key="i" />
569
+
570
+ <contract-file-drag-upload v-if="channel !== 'official-website'" @upload="
571
+ handleUpload(
572
+ $event,
573
+ shipmentFileInfo.shipmentId,
574
+ 'shipment',
575
+ 'draft_bill_of_lading'
576
+ )
577
+ " :isShowTip="false" />
578
+ </div>
579
+ </el-col>
580
+ <el-col :span="12" class="center-status" v-if="channel != 'official-website'">
581
+ <div v-if="shipmentItemData.confirmDraftBlFlag">
582
+ <i class="el-icon-success success"></i> 提单信息已确认
583
+ </div>
584
+ <div v-else-if="contract.contractType == 'sale'" class="confirm-draft-bl" @click.stop="shipmentConfirmDraftBlFun">确认提单草稿</div>
585
+ <el-col :span="12" v-else class="center-status">
586
+ <i class="el-icon-time"></i>
587
+ 草稿提单信息待确认
588
+ </el-col>
589
+
590
+ </el-col>
591
+ <el-col :span="24">
592
+ <el-col :span="12" v-if="(shipmentFileInfo.draftBillOfLading == null || shipmentFileInfo.draftBillOfLading && shipmentFileInfo.draftBillOfLading.length == 0) && channel == 'official-website'" class="center-status">
593
+ <i class="el-icon-time"></i>
594
+ 提单草稿待更新
595
+ </el-col>
596
+ <el-col :span="12" v-if="!shipmentItemData.confirmDraftBlFlag && channel == 'official-website'" class="center-status">
597
+ <i class="el-icon-time"></i>
598
+ 草稿提单信息待确认
599
+ </el-col>
600
+ </el-col>
601
+ </el-col>
602
+
603
+ <el-col :span="24">
604
+ <ContentTitle :contentTitleProp="{
605
+ bgButton: '正式提单Copy',
606
+ bgTime: shipmentFileInfo.originalBillOfLadingCopy && timeFormate(shipmentFileInfo.originalBillOfLadingCopy),
607
+ bgcolor: shipProgressInfo.bgcolor
608
+ }"></ContentTitle>
609
+ </el-col>
610
+ <el-col :span="24">
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.originalBillOfLadingCopy" :key="i" />
617
+ <contract-file-drag-upload v-if="channel !== 'official-website'" @upload="
618
+ handleUpload(
619
+ $event,
620
+ shipmentFileInfo.shipmentId,
621
+ 'shipment',
622
+ 'original_bill_of_lading_copy'
623
+ )
624
+ " :isShowTip="false"
625
+ photosStr="正式提单Copy"
626
+ />
627
+ </div>
628
+ <el-col :span="12" v-if="(shipmentFileInfo.originalBillOfLadingCopy == null || shipmentFileInfo.originalBillOfLadingCopy && shipmentFileInfo.originalBillOfLadingCopy.length == 0) && channel == 'official-website'" class="center-status">
629
+ <i class="el-icon-time"></i>
630
+ 正式提单Copy待更新
631
+ </el-col>
632
+ </el-col>
633
+ <!-- 临时尾款发票 -->
634
+ <el-col :span="24" v-if="contract.quoteType != 'FIXED'">
635
+ <ContentTitle :contentTitleProp="{
636
+ bgButton: '临时尾款发票',
637
+ bgTime: shipmentFileInfo.salePersonalTemporaryFinallyInvoice && timeFormate(shipmentFileInfo.salePersonalTemporaryFinallyInvoice),
638
+ bgcolor: shipProgressInfo.bgcolor
639
+ }"></ContentTitle>
640
+ <div class="sub-title">
641
+ 临时尾款发票
642
+ <span
643
+ v-if="
644
+ channel !== 'official-website' &&
645
+ contract.contractType == 'purchase'
646
+ "
647
+ style="color: #1890ff; cursor: pointer; margin-left: 10px"
648
+ @click.stop="identifyPageBoth(shipmentFileInfo, 1)"
649
+ >{{ identify }}</span>
650
+ </div>
651
+ <el-col :span="12" v-if="channel == 'official-website' && shipmentFileInfo.salePersonalTemporaryFinallyInvoice && shipmentFileInfo.salePersonalTemporaryFinallyInvoice.length == 0" class="center-status">
652
+ <i class="el-icon-time"></i>
653
+ 临时尾款发票待更新
654
+ </el-col>
655
+ <div>
656
+ <div class="file-list" v-if="contract.contractType == 'sale'">
657
+ <div class="file-list">
463
658
  <file-show
464
659
  :hiddenOperation="channel == 'official-website'"
465
660
  @refresh="handleRefresh"
466
661
  @checked="handleChecked"
467
662
  @uncheck="handleUncheck"
468
- :file-info="item"
469
- v-for="(
470
- item, i
471
- ) in shipmentFileInfo.salePersonalPackingList"
472
- :key="i"
473
- />
474
- <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'
663
+ :file-info="
664
+ getLastFileByList(
665
+ shipmentFileInfo.saleTemporaryFinallyInvoice
482
666
  )
483
667
  "
484
- :isShowTip="false"
485
668
  />
486
- </div>
487
- </div>
488
- </el-row>
669
+ </div>
670
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
671
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
672
+ item, i
673
+ ) in shipmentFileInfo.salePersonalTemporaryFinallyInvoice" :key="i" />
674
+
675
+ <contract-file-drag-upload v-if="channel !== 'official-website'" @upload="
676
+ handleUpload(
677
+ $event,
678
+ shipmentFileInfo.shipmentId,
679
+ 'shipment',
680
+ 'sale_personal_temporary_finally_invoice'
681
+ )
682
+ ":isShowTip="false" photosStr="临时尾款发票" />
683
+ </div>
684
+ <div class="file-list" v-else>
685
+ <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
686
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
687
+ item, i
688
+ ) in shipmentFileInfo.purchaseTemporaryFinallyInvoice" :key="i" />
689
+
690
+ <contract-file-drag-upload v-if="channel !== 'official-website'" @upload="
691
+ handleUpload(
692
+ $event,
693
+ shipmentFileInfo.shipmentId,
694
+ 'shipment',
695
+ 'purchase_temporary_finally_invoice'
696
+ )
697
+ ":isShowTip="false" photosStr="临时尾款发票" />
698
+ </div>
699
+ </div>
700
+ </el-col>
701
+
702
+
703
+ <el-col :span="24">
704
+ <el-col :span="24">
705
+ <el-col :span="12">
706
+ <ContentTitle :contentTitleProp="{
707
+ bgButton: '尾款发票',
708
+ bgTime: contract.contractType == 'sale' ? shipmentFileInfo.saleFinallyInvoice && timeFormate(shipmentFileInfo.saleFinallyInvoice) : shipmentFileInfo.purchaseFinallyInvoice && timeFormate(shipmentFileInfo.purchaseFinallyInvoice),
709
+ bgcolor: shipProgressInfo.bgcolor
710
+ }"></ContentTitle>
711
+ <div class="sub-title">
712
+ {{ $t("contractDetail.finallyInvoice") }}
713
+ <el-button
714
+ v-if="channel !== 'official-website'"
715
+ type="text"
716
+ size="small"
717
+ @click="skipInvoiceList"
718
+ >发票列表</el-button>
719
+ <span
720
+ v-if="channel !== 'official-website' &&
721
+ contract.contractType == 'purchase' "
722
+ style="color: #1890ff; margin-left: 10px"
723
+ >
724
+ {{
725
+ shipmentPurchaseAmountMessage}}
726
+ </span>
727
+ <el-button
728
+ style="color: #1890ff; cursor: pointer; margin-left: 10px"
729
+ v-if="channel !== 'official-website' &&
730
+ contract.contractType == 'purchase'"
731
+ type="text"
732
+ size="small"
733
+ @click="getShipmentPurchase(shipmentFileInfo)"
734
+ >
735
+ 点击可查看明细
736
+ </el-button>
737
+ <div>{{ getShipmentPurchaseAmount(shipmentFileInfo,shipmentIndex) }}</div>
738
+ </div>
489
739
  </el-col>
490
- </el-row>
491
- <el-divider></el-divider>
492
- <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>
524
- <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">
740
+ <el-col :span="12" v-if="shipmentFileInfo.waterBill && shipmentFileInfo.waterBill.length">
741
+ <!-- 支付凭证 -->
742
+ <ContentTitle :contentTitleProp="{
743
+ bgButton: '尾款支付凭证',
744
+ bgTime: shipmentFileInfo.waterBill && timeFormate(shipmentFileInfo.waterBill),
745
+ bgcolor: getGoodsProgressInfo.bgcolor,
746
+ successFlag: true
747
+ }"></ContentTitle>
748
+ <div class="file-list">
540
749
  <file-show
541
750
  :hiddenOperation="channel == 'official-website'"
542
751
  @refresh="handleRefresh"
543
752
  @checked="handleChecked"
544
753
  @uncheck="handleUncheck"
545
754
  :file-info="item"
546
- v-for="(item, i) in containerFile.packingPhoto"
755
+ v-for="(item, i) in shipmentFileInfo.waterBill"
547
756
  :key="i"
548
757
  />
549
758
  </div>
550
-
551
- <contract-file-drag-upload
552
- v-if="channel !== 'official-website'"
553
- @upload="
554
- handleUpload(
555
- $event,
556
- containerFile.containerId,
557
- 'container',
558
- 'container_packing_photo'
559
- )
560
- "
561
- :isShowTip="false"
562
- />
563
- </div>
564
- </el-row>
565
- </div>
566
- <el-divider></el-divider>
567
- <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>
592
- </div>
593
- <el-row v-if="contract.quoteType != 'FIXED'">
759
+ </el-col>
760
+ <el-col :span="12" v-else>
761
+ <div class="center-status-block">
762
+ <div v-if="shipmentFileInfo.waterBill && shipmentFileInfo.waterBill.length">
763
+ <i class="el-icon-time"></i>
764
+ <span style="color:#f00">尾款待付</span>
765
+ </div>
766
+ <div v-else>支付凭证待提供</div>
767
+ </div>
768
+ </el-col>
769
+ </el-col>
770
+ <!-- 管理台 -->
771
+ <div v-if="channel != 'official-website'">
594
772
  <div v-if="contract.contractType == 'sale'">
595
- <el-col :span="6">
773
+ <el-col :span="12">
596
774
  <div style="margin-left: 60px">
597
- <div
598
- class="sub-title"
599
- >{{ $t("contractDetail.saleTemporaryFinallyInvoice") }}</div>
775
+ <!-- <div class="sub-title">{{ $t("contractDetail.saleFinallyInvoice") }}</div> -->
600
776
  <div class="file-list">
601
777
  <file-show
602
778
  :hiddenOperation="channel == 'official-website'"
603
779
  @refresh="handleRefresh"
604
780
  @checked="handleChecked"
605
781
  @uncheck="handleUncheck"
782
+ :selectFileListProp="selectFileList"
606
783
  :file-info="
607
784
  getLastFileByList(
608
- shipmentFileInfo.saleTemporaryFinallyInvoice
785
+ shipmentFileInfo.saleFinallyInvoice
609
786
  )
610
787
  "
611
788
  />
612
789
  </div>
613
790
  </div>
614
791
  </el-col>
615
- <el-col :span="18">
792
+ <el-col :span="12">
616
793
  <div>
617
794
  <div class="file-list">
618
795
  <file-show
@@ -620,340 +797,200 @@
620
797
  @refresh="handleRefresh"
621
798
  @checked="handleChecked"
622
799
  @uncheck="handleUncheck"
800
+ :selectFileListProp="selectFileList"
623
801
  :file-info="item"
624
802
  v-for="(
625
- item, i
626
- ) in shipmentFileInfo.salePersonalTemporaryFinallyInvoice"
627
- :key="i"
628
- />
629
- <contract-file-drag-upload
630
- v-if="channel !== 'official-website'"
631
- @upload="
632
- handleUpload(
633
- $event,
634
- shipmentFileInfo.shipmentId,
635
- 'shipment',
636
- 'sale_personal_temporary_finally_invoice'
637
- )
638
- "
639
- :isShowTip="false"
640
- />
641
- </div>
642
- </div>
643
- </el-col>
644
- </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-row>
707
- <el-row v-else>
708
- <div style="margin-left: 60px">
709
- <div class="sub-title">
710
- <span
711
- v-if="
712
- channel !== 'official-website' &&
713
- contract.contractType == 'purchase'
714
- "
715
- style="color: #1890ff; cursor: pointer; margin-left: 10px"
716
- @click.stop="identifyPageBoth(shipmentFileInfo, 2)"
717
- >{{ identify }}</span>
718
- <span style="margin-left:20px">
719
- {{ shipmentPurchaseAmountMessage }}
720
- </span>
721
- <el-tooltip effect="dark" content="系统根据【重量x单价-扣除定金】自动计算出参考尾款,可以据此核对发票。点击蓝色字体可以查看系统的数据来源明细,修改系统自动计算的扣减定金。" placement="top">
722
- <i class="el-icon-question" style="color:#c3c4c6"/>
723
- </el-tooltip>
724
- <el-button
725
- style="color: #1890ff; cursor: pointer; margin-left: 10px"
726
- v-if="channel !== 'official-website' &&
727
- contract.contractType == 'purchase'"
728
- type="text"
729
- size="small"
730
- @click="getShipmentPurchase(shipmentFileInfo)"
731
- >点击可查看明细</el-button>
732
- <span>{{ getShipmentPurchaseAmount(shipmentFileInfo,shipmentIndex) }}</span>
733
- </div>
734
- <div class="file-list">
735
- <file-show
736
- :hiddenOperation="channel == 'official-website'"
737
- @refresh="handleRefresh"
738
- @checked="handleChecked"
739
- @uncheck="handleUncheck"
740
- :file-info="item"
741
- v-for="(
742
- item, i
743
- ) in shipmentFileInfo.salePersonalFinallyInvoice"
744
- :key="i"
745
- />
746
- <contract-file-drag-upload
747
- v-if="channel !== 'official-website'"
748
- @upload="
749
- handleUpload(
750
- $event,
751
- shipmentFileInfo.shipmentId,
752
- 'shipment',
753
- 'sale_personal_finally_invoice'
754
- )
755
- "
756
- :isShowTip="false"
757
- />
758
- </div>
759
- </div>
760
- </el-col>
761
- </el-row>
762
- <el-row v-else>
763
- <div style="margin-left: 60px">
764
- <div class="sub-title">
765
- 卖家采购尾款发票
766
- <span
767
- v-if="
768
- channel !== 'official-website' &&
769
- contract.contractType == 'purchase'
770
- "
771
- style="color: #1890ff; cursor: pointer; margin-left: 10px"
772
- @click.stop="identifyPageBoth(shipmentFileInfo, 2)"
773
- >{{ identify }}</span>
774
- </div>
775
- <div class="file-list">
776
- <file-show
777
- :hiddenOperation="channel == 'official-website'"
778
- @refresh="handleRefresh"
779
- @checked="handleChecked"
780
- @uncheck="handleUncheck"
781
- :file-info="item"
782
- v-for="(
783
- item, i
784
- ) in shipmentFileInfo.purchaseFinallyInvoice"
785
- :key="i"
786
- />
787
- <div>
788
- <el-button
789
- type="primary"
790
- size="mini"
791
- @click="
792
- uploadFinalInvoice(
793
- 'finally',
794
- shipmentFileInfo.shipmentId
795
- )
796
- "
797
- >上传采购尾款发票</el-button>
803
+ item, i
804
+ ) in shipmentFileInfo.salePersonalFinallyInvoice"
805
+ :key="i"
806
+ />
807
+ <contract-file-drag-upload
808
+ v-if="channel !== 'official-website'"
809
+ @upload="
810
+ handleUpload(
811
+ $event,
812
+ shipmentFileInfo.shipmentId,
813
+ 'shipment',
814
+ 'sale_personal_finally_invoice'
815
+ )
816
+ "
817
+ :isShowTip="false"
818
+ />
819
+ </div>
798
820
  </div>
799
- </div>
821
+ </el-col>
800
822
  </div>
801
- </el-row>
802
- <el-divider></el-divider>
803
- <!-- 提单草稿 -->
804
- <el-row>
805
- <div>
806
- <div class="sub-title">
807
- {{ $t("contractDetail.draftBillOfLading") }}
808
- <span
809
- style="color: #1890ff; cursor: pointer"
810
- v-if="
811
- shipmentFileInfo &&
812
- shipmentFileInfo.draftBillOfLading &&
813
- shipmentFileInfo.draftBillOfLading[0] &&
814
- shipmentFileInfo.draftBillOfLading[0].url
815
- "
816
- @click="
817
- identifyPage(
818
- shipmentFileInfo &&
819
- shipmentFileInfo.draftBillOfLading &&
820
- shipmentFileInfo.draftBillOfLading[0] &&
821
- shipmentFileInfo.draftBillOfLading[0].url,
822
- shipmentFileInfo && shipmentFileInfo.shipmentId,
823
- 'draft_bill'
824
- )
825
- "
826
- >{{ identify }}</span>
827
- </div>
828
- <div class="file-list">
829
- <file-show
830
- :hiddenOperation="channel == 'official-website'"
831
- @refresh="handleRefresh"
832
- @checked="handleChecked"
833
- @uncheck="handleUncheck"
834
- :file-info="item"
835
- v-for="(item, i) in shipmentFileInfo.draftBillOfLading"
836
- :key="i"
837
- />
838
- <contract-file-drag-upload
839
- v-if="channel !== 'official-website'"
840
- @upload="
841
- handleUpload(
842
- $event,
843
- shipmentFileInfo.shipmentId,
844
- 'shipment',
845
- 'draft_bill_of_lading'
846
- )
847
- "
848
- :isShowTip="false"
849
- />
850
- </div>
823
+ <!-- purchase -->
824
+ <div v-else>
825
+ <el-col :span="12">
826
+ <div style="margin-left: 60px">
827
+ <div class="sub-title">
828
+ <span
829
+ v-if="
830
+ channel !== 'official-website'"
831
+ style="color: #1890ff; cursor: pointer; margin-left: 10px"
832
+ @click.stop="identifyPageBoth(shipmentFileInfo, 2)"
833
+ >{{ identify }}</span>
834
+ </div>
835
+ <div class="file-list">
836
+ <file-show
837
+ :hiddenOperation="channel == 'official-website'"
838
+ @refresh="handleRefresh"
839
+ @checked="handleChecked"
840
+ @uncheck="handleUncheck"
841
+ :selectFileListProp="selectFileList"
842
+ :file-info="item"
843
+ v-for="(
844
+ item, i
845
+ ) in shipmentFileInfo.purchaseFinallyInvoice"
846
+ :key="i"
847
+ />
848
+ <div>
849
+ <el-button
850
+ style="margin-top: 10px"
851
+ type="primary"
852
+ size="mini"
853
+ @click="
854
+ uploadFinalInvoice(
855
+ 'finally',
856
+ shipmentFileInfo.shipmentId
857
+ )
858
+ "
859
+ >上传采购尾款发票</el-button>
860
+ </div>
861
+ </div>
862
+ </div>
863
+ </el-col>
851
864
  </div>
852
- </el-row>
853
- <el-divider></el-divider>
854
- <!-- 提单正本Copy -->
855
- <el-row>
856
- <div>
857
- <div class="sub-title">{{ $t("contractDetail.BLCopy") }}</div>
865
+ </div>
866
+ <div v-else>
867
+ <!-- 买家端 -->
868
+ <el-col>
858
869
  <div class="file-list">
859
870
  <file-show
860
871
  :hiddenOperation="channel == 'official-website'"
861
872
  @refresh="handleRefresh"
862
873
  @checked="handleChecked"
863
874
  @uncheck="handleUncheck"
875
+ :selectFileListProp="selectFileList"
864
876
  :file-info="item"
865
877
  v-for="(
866
878
  item, i
867
- ) in shipmentFileInfo.originalBillOfLadingCopy"
879
+ ) in shipmentFileInfo.saleFinallyInvoice"
868
880
  :key="i"
869
881
  />
870
- <contract-file-drag-upload
871
- v-if="channel !== 'official-website'"
872
- @upload="
873
- handleUpload(
874
- $event,
875
- shipmentFileInfo.shipmentId,
876
- 'shipment',
877
- 'original_bill_of_lading_copy'
878
- )
879
- "
880
- :isShowTip="false"
881
- />
882
882
  </div>
883
- </div>
884
- </el-row>
885
- <el-divider></el-divider>
883
+ </el-col>
884
+ <!-- <el-col :span="12" class="center-status">
885
+ <div>
886
+ <div v-if="!shipmentItemData.balanceInvoiceFullyPaidFlag">
887
+ <i class="el-icon-time"></i>
888
+ <span style="color:#f00">尾款待付</span>
889
+ </div>
890
+ <div v-if="!shipmentFileInfo.waterBill || shipmentFileInfo.waterBill && shipmentFileInfo.waterBill.length == 0">支付凭证待提供</div>
891
+ </div>
892
+ </el-col> -->
893
+ </div>
886
894
  <div>
887
- <div class="sub-title">{{ $t("contractDetail.otherShipmentFile") }}</div>
888
- <div class="file-list" v-if="contract.contractType == 'sale'">
889
- <file-show
890
- :hiddenOperation="channel == 'official-website'"
891
- @refresh="handleRefresh"
892
- @checked="handleChecked"
893
- @uncheck="handleUncheck"
894
- :file-info="item"
895
- v-for="(item, i) in shipmentFileInfo.saleShipmentOther"
896
- :key="i"
897
- />
898
- <contract-file-drag-upload
899
- v-if="channel !== 'official-website'"
900
- @upload="
901
- handleUpload(
902
- $event,
903
- shipmentFileInfo.shipmentId,
904
- 'shipment',
905
- 'sale_shipment_other'
906
- )
907
- "
908
- :isShowTip="false"
909
- />
910
- </div>
911
- <div v-else class="file-list">
912
- <file-show
913
- :hiddenOperation="channel == 'official-website'"
914
- @refresh="handleRefresh"
915
- @checked="handleChecked"
916
- @uncheck="handleUncheck"
917
- :file-info="item"
918
- v-for="(
919
- item, i
920
- ) in shipmentFileInfo.purchaseShipmentOther"
921
- :key="i"
922
- />
923
- <contract-file-drag-upload
924
- v-if="channel !== 'official-website'"
925
- @upload="
926
- handleUpload(
927
- $event,
928
- shipmentFileInfo.shipmentId,
929
- 'shipment',
930
- 'purchase_shipment_other'
931
- )
932
- "
933
- :isShowTip="false"
934
- />
935
- </div>
936
895
  </div>
937
- </el-timeline-item>
938
- <el-timeline-item
939
- :icon="shipmentFileInfo.waterBill ? 'el-icon-success' : ''"
940
- :type="shipmentFileInfo.waterBill ? 'primary' : ''"
941
- size="large"
942
- >
943
- <div v-if="channel !== 'official-website'" style="color: #1890ff">
896
+ </el-col>
897
+ <el-col :span="24">
898
+ <ContentTitle :contentTitleProp="{
899
+ bgButton: '其他文件',
900
+ bgTime: contract.contractType == 'sale' ? shipmentFileInfo.saleShipmentOther && timeFormate(shipmentFileInfo.saleShipmentOther) : shipmentFileInfo.purchaseShipmentOther && timeFormate(shipmentFileInfo.purchaseShipmentOther),
901
+ bgcolor: shipProgressInfo.bgcolor
902
+ }"></ContentTitle>
903
+ </el-col>
904
+ <el-col :span="24" v-if="contract.contractType == 'sale'">
905
+ <div class="file-list">
906
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
907
+ :hiddenOperation="channel == 'official-website'"
908
+ v-for="(item, i) in shipmentFileInfo.saleShipmentOther" :key="i" />
909
+ <contract-file-drag-upload @upload="
910
+ handleUpload(
911
+ $event,
912
+ shipmentFileInfo.shipmentId,
913
+ 'shipment',
914
+ 'sale_shipment_other'
915
+ )
916
+ " :isShowTip="false" photosStr="其他文件" />
917
+ </div>
918
+ </el-col>
919
+ <el-col :span="24" v-else>
920
+ <div class="file-list">
921
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
922
+ :hiddenOperation="channel == 'official-website'"
923
+ v-for="(
924
+ item, i
925
+ ) in shipmentFileInfo.purchaseShipmentOther" :key="i" />
926
+ <contract-file-drag-upload @upload="
927
+ handleUpload(
928
+ $event,
929
+ shipmentFileInfo.shipmentId,
930
+ 'shipment',
931
+ 'purchase_shipment_other'
932
+ )"
933
+ :isShowTip="false"
934
+ photosStr="其他文件" />
935
+ </div>
936
+ </el-col>
937
+ </div>
938
+ <div v-else class="ship-empty" style="background-color:#fff">
939
+ <div>
940
+ <b>装箱单</b>将会在卖家装运后更新
941
+ </div>
942
+ <div>
943
+ <b>装运照片</b>将会在卖家装运后更新
944
+ </div>
945
+ <div>
946
+ <b>草稿提单</b>将会在卖家装运后更新
947
+ </div>
948
+ </div>
949
+ </template>
950
+ </SectionSlot>
951
+ </div>
952
+ </div>
953
+
954
+ <!-- 收货 -->
955
+ <div>
956
+ <BillOfLadingNoTab
957
+ :contractFileInfo="contractFileInfo"
958
+ @changeShipBillNo="changeShipBillNo"
959
+ :progressInfo="getGoodsProgressInfo"
960
+ :shipBillNoProp="shipBillNo"
961
+ ></BillOfLadingNoTab>
962
+ <SectionSlot
963
+ :infoPro="getGoodsProgressInfo" v-for="(
964
+ shipmentFileInfo, shipmentIndex
965
+ ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex" v-if="shipmentIndex == shipBillNo"
966
+ >
967
+ <template v-slot:header>
968
+ <div>
969
+ <ProgressDetail :infoPro="getGoodsProgressInfo"></ProgressDetail>
970
+ </div>
971
+ </template>
972
+ <template v-slot:content>
973
+ <div class="content-root">
974
+ <div>
975
+ <!-- <div v-if="channel !== 'official-website'" style="color: #1890ff">
944
976
  {{
945
977
  contract.contractType == "sale"
946
978
  ? "尾款收款"
947
979
  : $t("contractDetail.Final_payment")
948
980
  }}
949
981
  </div>
950
- <div v-else class="sub-title">{{ $t("contractDetail.Final_payment") }}</div>
951
- <el-row>
952
- <el-col :span="8">
982
+ <div v-else class="sub-title">{{ $t("contractDetail.Final_payment") }}</div> -->
983
+ <!-- 尾款水单 -->
984
+ <!-- <el-row>
985
+ <el-col :span="24">
953
986
  <div>
954
- <div class="sub-title">{{ $t("contractDetail.finalPaymentMemo") }}</div>
987
+ <ContentTitle :contentTitleProp="{
988
+ bgButton: $t('contractDetail.finalPaymentMemo'),
989
+ bgTime: shipmentFileInfo.waterBill && timeFormate(shipmentFileInfo.waterBill),
990
+ bgcolor: getGoodsProgressInfo.bgcolor
991
+ }"></ContentTitle>
955
992
 
956
- <div class="file-list">
993
+ <div class="file-list" v-if="shipmentFileInfo.waterBill && shipmentFileInfo.waterBill.length">
957
994
  <file-show
958
995
  :hiddenOperation="channel == 'official-website'"
959
996
  @refresh="handleRefresh"
@@ -964,67 +1001,22 @@
964
1001
  :key="i"
965
1002
  />
966
1003
  </div>
967
- </div>
968
- </el-col>
969
- <!-- <el-col :span="16">
970
- <div v-if="contract.contractType == 'sale'">
971
- <div class="file-list">
972
- <file-show
973
- :hiddenOperation="channel == 'official-website'"
974
- @refresh="handleRefresh"
975
- @checked="handleChecked"
976
- @uncheck="handleUncheck"
977
- :file-info="item"
978
- v-for="(
979
- item, i
980
- ) in shipmentFileInfo.salePersonalWaterBill"
981
- :key="i"
982
- />
983
- <contract-file-drag-upload
984
- @upload="
985
- handleUpload(
986
- $event,
987
- shipmentFileInfo.shipmentId,
988
- 'shipment',
989
- 'sale_personal_waterBill'
990
- )
991
- "
992
- :isShowTip="false"
993
- />
994
- </div>
995
- </div>
996
- <div v-else>
997
- <div class="file-list">
998
- <file-show
999
- :hiddenOperation="channel == 'official-website'"
1000
- @refresh="handleRefresh"
1001
- @checked="handleChecked"
1002
- @uncheck="handleUncheck"
1003
- :file-info="item"
1004
- v-for="(
1005
- item, i
1006
- ) in shipmentFileInfo.purchasePersonalWaterBill"
1007
- :key="i"
1008
- />
1009
- <contract-file-drag-upload
1010
- @upload="
1011
- handleUpload(
1012
- $event,
1013
- shipmentFileInfo.shipmentId,
1014
- 'shipment',
1015
- 'purchase_personal_waterBill'
1016
- )
1017
- "
1018
- :isShowTip="false"
1019
- />
1004
+ <div v-else class="center-status">
1005
+ <i class="el-icon-time"></i>
1006
+ 暂无文件
1020
1007
  </div>
1021
1008
  </div>
1022
- </el-col>-->
1023
- </el-row>
1024
- <el-row>
1009
+ </el-col>
1010
+ </el-row> -->
1011
+ <!-- 汇款凭证 -->
1012
+ <!-- <el-row>
1025
1013
  <div>
1026
- <div class="sub-title">{{ $t("contractDetail.swift") }}</div>
1027
- <div class="file-list">
1014
+ <ContentTitle :contentTitleProp="{
1015
+ bgButton: $t('contractDetail.swift'),
1016
+ bgTime: shipmentFileInfo.voucher && timeFormate(shipmentFileInfo.voucher),
1017
+ bgcolor: getGoodsProgressInfo.bgcolor
1018
+ }"></ContentTitle>
1019
+ <div class="file-list" v-if="shipmentFileInfo.voucher && shipmentFileInfo.voucher.length">
1028
1020
  <file-show
1029
1021
  :hiddenOperation="channel == 'official-website'"
1030
1022
  @refresh="handleRefresh"
@@ -1035,39 +1027,84 @@
1035
1027
  :key="i"
1036
1028
  />
1037
1029
  </div>
1030
+ <div v-else class="center-status">
1031
+ <i class="el-icon-time"></i>
1032
+ 暂无文件
1033
+ </div>
1038
1034
  </div>
1039
- </el-row>
1040
- </el-timeline-item>
1041
- <el-timeline-item
1042
- :icon="
1043
- shipmentFileInfo.deliveryReceipt &&
1044
- shipmentFileInfo.deliveryReceipt.length > 0
1045
- ? 'el-icon-success'
1046
- : ''
1047
- "
1048
- :type="
1049
- shipmentFileInfo.deliveryReceipt &&
1050
- shipmentFileInfo.deliveryReceipt.length > 0
1051
- ? 'primary'
1052
- : ''
1053
- "
1054
- size="large"
1055
- >
1056
- <div style="color: #1890ff">{{ $t("contractDetail.tip6") }}</div>
1057
- <div class="sub-title">{{ $t("contractDetail.tip7") }}</div>
1058
-
1059
- <div class="file-list">
1060
- <file-show
1061
- :hiddenOperation="channel == 'official-website'"
1062
- @refresh="handleRefresh"
1063
- @checked="handleChecked"
1064
- @uncheck="handleUncheck"
1065
- :file-info="item"
1066
- v-for="(item, i) in shipmentFileInfo.deliveryReceipt"
1067
- :key="i"
1068
- />
1069
- <!-- <contract-file-drag-upload
1035
+ </el-row> -->
1036
+ <!-- 提货凭证 -->
1037
+ <ContentTitle :contentTitleProp="{
1038
+ bgButton: '提货凭证',
1039
+ bgTime: shipmentFileInfo.deliveryReceipt && timeFormate(shipmentFileInfo.deliveryReceipt),
1040
+ bgcolor: getGoodsProgressInfo.bgcolor
1041
+ }"></ContentTitle>
1042
+ <el-col :span="24">
1043
+ <div class="file-list" v-if="shipmentFileInfo.deliveryReceipt && shipmentFileInfo.deliveryReceipt.length">
1044
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck"
1045
+ :selectFileListProp="selectFileList"
1046
+ :file-info="item" v-for="(item, i) in shipmentFileInfo.deliveryReceipt" :key="i" />
1047
+ <!-- v-if="shipmentItemData.shipmentPercentage > 0" -->
1048
+ <!-- todo: 上传提货凭证 -->
1049
+ <!-- <contract-file-drag-upload
1070
1050
  v-if="channel !== 'official-website'"
1051
+ @upload="
1052
+ handleUpload(
1053
+ $event,
1054
+ shipmentFileInfo.shipmentId,
1055
+ 'shipment',
1056
+ 'shipment_delivery_receipt'
1057
+ )
1058
+ " :isShowTip="false"
1059
+ uploadNameStr="提货凭证"
1060
+ /> -->
1061
+ </div>
1062
+ <div v-else class="center-status">
1063
+ <i class="el-icon-time"></i>
1064
+ 暂无文件
1065
+ </div>
1066
+ </el-col>
1067
+ </div>
1068
+ </div>
1069
+ </template>
1070
+ </SectionSlot>
1071
+ </div>
1072
+ <!-- 索赔 -->
1073
+ <div v-if="contractFileInfo.claimCreateFlag">
1074
+ <BillOfLadingNoTab
1075
+ :contractFileInfo="contractFileInfo"
1076
+ @changeShipBillNo="changeShipBillNo"
1077
+ :progressInfo="shipProgressInfo"
1078
+ :shipBillNoProp="shipBillNo"
1079
+ ></BillOfLadingNoTab>
1080
+ <SectionSlot
1081
+ :infoPro="claimProgressInfo"
1082
+ v-for="(
1083
+ shipmentFileInfo, shipmentIndex
1084
+ ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex"
1085
+ v-if="shipmentIndex == shipBillNo"
1086
+ >
1087
+ <template v-slot:header>
1088
+ <div>
1089
+ <ProgressDetail :infoPro="claimProgressInfo"></ProgressDetail>
1090
+ </div>
1091
+ </template>
1092
+ <template v-slot:content>
1093
+ <div class="content-root">
1094
+ <div>
1095
+ <ContentTitle :contentTitleProp="{
1096
+ bgButton: buyerFlag
1097
+ ? $t('contractDetail.Credit_Note')
1098
+ : $t('contractDetail.Debit_Note'),
1099
+ bgTime: claimFileInfoCom && timeFormate(claimFileInfoCom),
1100
+ bgcolor: claimProgressInfo.bgcolor
1101
+ }"></ContentTitle>
1102
+ <el-col :span="24">
1103
+ <div class="file-list" v-if="claimFileInfoCom">
1104
+ <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck"
1105
+ :selectFileListProp="selectFileList"
1106
+ :file-info="item" v-for="(item, i) in claimFileInfoCom" :key="i" />
1107
+ <!-- <contract-file-drag-upload
1071
1108
  @upload="
1072
1109
  handleUpload(
1073
1110
  $event,
@@ -1077,49 +1114,19 @@
1077
1114
  )
1078
1115
  "
1079
1116
  :isShowTip="false"
1080
- />-->
1117
+ /> -->
1081
1118
  </div>
1082
- </el-timeline-item>
1083
- </el-timeline>
1084
- </el-tab-pane>
1085
- </el-tabs>
1086
- </el-timeline-item>
1087
-
1088
- <el-timeline-item icon="el-icon-success" type="primary" size="large">
1089
- <div style="color: #1890ff">{{ $t("contractDetail.tip8") }}</div>
1090
- </el-timeline-item>
1091
- </el-timeline>
1092
- <el-timeline v-if="channel !== 'official-website' && claimFileInfoCom">
1093
- <el-timeline-item icon="el-icon-success" type="primary" size="large">
1094
- <span style="color: #1890ff">{{ $t("contractDetail.Claim_documents") }}</span>
1095
- <div style="font-size: 16px; font-weight: 600; margin-top: 10px">
1096
- {{
1097
- buyerFlag
1098
- ? $t("contractDetail.Credit_Note")
1099
- : $t("contractDetail.Debit_Note")
1100
- }}
1101
- </div>
1102
- <div class="file-list">
1103
- <file-show
1104
- :hiddenOperation="channel == 'official-website'"
1105
- @refresh="handleRefresh"
1106
- @checked="handleChecked"
1107
- @uncheck="handleUncheck"
1108
- :file-info="item"
1109
- v-for="(item, i) in claimFileInfoCom"
1110
- :key="i"
1111
- />
1112
- </div>
1113
- </el-timeline-item>
1119
+ <div v-else class="center-status">
1120
+ <i class="el-icon-time"></i>
1121
+ 暂无文件
1122
+ </div>
1123
+ </el-col>
1124
+ </div>
1125
+ </div>
1126
+ </template>
1127
+ </SectionSlot>
1128
+ </div>
1114
1129
 
1115
- <el-timeline-item
1116
- icon="el-icon-success"
1117
- :type="claimFileInfoCom ? 'primary' : ''"
1118
- size="large"
1119
- >
1120
- <span style="color: #1890ff">{{ $t("contractDetail.Claim_completion") }}</span>
1121
- </el-timeline-item>
1122
- </el-timeline>
1123
1130
  <deposit-invoice ref="depositInvoice"></deposit-invoice>
1124
1131
 
1125
1132
  <gen-shipment ref="genShipment" @refresh="handleRefresh" />
@@ -1133,14 +1140,10 @@
1133
1140
  <div>请在下方选择一个您需要发货的买家</div>
1134
1141
  <div>
1135
1142
  <el-radio-group v-model="selectRadio">
1136
- <el-radio
1137
- :label="key"
1138
- v-for="(purchaseBuyerListItem, key) in purchaseBuyerList"
1139
- :key="key"
1140
- >
1143
+ <el-radio :label="key" v-for="(purchaseBuyerListItem, key) in purchaseBuyerList" :key="key">
1141
1144
  {{ purchaseBuyerListItem.buyerUserInfo.companyName }} ({{
1142
- purchaseBuyerListItem.contractNo
1143
- }}) {{ purchaseBuyerListItem.buyerUserInfo.firstName }}
1145
+ purchaseBuyerListItem.contractNo
1146
+ }}) {{ purchaseBuyerListItem.buyerUserInfo.firstName }}
1144
1147
  {{ purchaseBuyerListItem.buyerUserInfo.lastName }}
1145
1148
  </el-radio>
1146
1149
  </el-radio-group>
@@ -1175,7 +1178,9 @@ import { batchAsZip } from '../../../utils/zip';
1175
1178
  import {
1176
1179
  getBizContract,
1177
1180
  updateBizContract,
1181
+ withdrawSignContract,
1178
1182
  signContract,
1183
+ shipmentConfirmDraftBl
1179
1184
  } from '../../../api/biz/bizContract';
1180
1185
 
1181
1186
  import DepositInvoice from '../bizContract/depositInvoice.vue';
@@ -1192,6 +1197,12 @@ import ShipmentAdd from '../bizShipment/add.vue';
1192
1197
  import ShipmentPurchaseAmount from '../contractTracing/shipmentPurchaseAmount.vue';
1193
1198
  import { encryptId } from '../../../utils/index.js';
1194
1199
  import { Loading } from 'element-ui';
1200
+ import Progress from "./contractFile/Progress.vue";
1201
+ import ProgressDetail from "./contractFile/ProgressDetail.vue";
1202
+ import SectionSlot from "./contractFile/SectionSlot.vue";
1203
+ import ContentTitle from './contractFile/ContentTitle.vue';
1204
+ import IMGPreviewCheckBox from './contractFile/IMGPreviewCheckBox.vue'
1205
+ import BillOfLadingNoTab from './contractFile/BillOfLadingNoTab.vue'
1195
1206
 
1196
1207
  export default {
1197
1208
  name: 'ContractFile',
@@ -1205,6 +1216,12 @@ export default {
1205
1216
  FileShowClaim,
1206
1217
  ShipmentAdd,
1207
1218
  ShipmentPurchaseAmount,
1219
+ Progress,
1220
+ SectionSlot,
1221
+ ProgressDetail,
1222
+ ContentTitle,
1223
+ IMGPreviewCheckBox,
1224
+ BillOfLadingNoTab
1208
1225
  },
1209
1226
  props: {
1210
1227
  // 文件信息
@@ -1222,9 +1239,47 @@ export default {
1222
1239
  type: Boolean,
1223
1240
  default: true,
1224
1241
  },
1242
+ selectFileListProp: {
1243
+ type: Array,
1244
+ default: () => {
1245
+ return [];
1246
+ },
1247
+ },
1225
1248
  },
1226
1249
  data() {
1227
1250
  return {
1251
+ shipmentItemData: {},
1252
+ shipBillNo: 0,
1253
+ goodsBillNo: 0,
1254
+ claimBillNo: 0,
1255
+ contractProgressInfo: {
1256
+ text: '合同',
1257
+ rate: 0,
1258
+ img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/805524d45f964ad0b3f51437d3b5750e.png',
1259
+ bgcolor: '#FBB040',
1260
+ textArr:[]
1261
+ },
1262
+ shipProgressInfo: {
1263
+ text: '装运',
1264
+ rate: 0,
1265
+ img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/8517dbf0444542d5bf100279231c9597.png',
1266
+ bgcolor: '#54B8FF',
1267
+ textArr:[]
1268
+ },
1269
+ getGoodsProgressInfo: {
1270
+ text: '收货',
1271
+ rate: 0,
1272
+ img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/a43ef25e953747efa9b88d3d9bbe674f.png',
1273
+ bgcolor: '#7CCF48',
1274
+ textArr:[]
1275
+ },
1276
+ claimProgressInfo: {
1277
+ text: '索赔',
1278
+ rate: 0,
1279
+ img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1280
+ bgcolor: '#adadad',
1281
+ textArr:[]
1282
+ },
1228
1283
  identify: '识别',
1229
1284
  selectRadio: 0,
1230
1285
  purchaseBuyerList: [],
@@ -1293,7 +1348,6 @@ export default {
1293
1348
  // 表单校验
1294
1349
  rules: {},
1295
1350
  lintId: null,
1296
- selectFileList: [],
1297
1351
  contractId: null,
1298
1352
  //合同文件
1299
1353
  contractFileInfo: {
@@ -1306,6 +1360,12 @@ export default {
1306
1360
  };
1307
1361
  },
1308
1362
  created() {
1363
+ this.loadingInstance = Loading.service({
1364
+ text: '请稍候',
1365
+ spinner: 'el-icon-loading',
1366
+ background: 'rgba(0, 0, 0, 0.7)',
1367
+ });
1368
+
1309
1369
  const contractId = this.$route.params && this.$route.params.contractId;
1310
1370
  if (contractId) {
1311
1371
  this.linkId = contractId;
@@ -1314,8 +1374,38 @@ export default {
1314
1374
  this.queryParams.linkId = contractId;
1315
1375
  }
1316
1376
  },
1317
- mounted() {},
1377
+ mounted() { },
1318
1378
  methods: {
1379
+ /**
1380
+ * @description:
1381
+ * @param {*} info
1382
+ * @return {*}
1383
+ */
1384
+ timeFormate(info) {
1385
+ if(info.length > 0 && info[0].createTime) {
1386
+ return this.$moment(info[0].createTime).format('YYYY-MM-DD HH:mm');
1387
+ } else {
1388
+ return '';
1389
+ }
1390
+ },
1391
+
1392
+ allSelectContainerPackingPhoto(containerId) {
1393
+ this.$refs['container_packing_photo_' + containerId][0].checkAll1()
1394
+ },
1395
+ cancelContainerPackingPhoto(containerId) {
1396
+ this.$refs['container_packing_photo_' + containerId][0].cancelAll1()
1397
+ },
1398
+
1399
+ changeShipBillNo(index) {
1400
+ this.shipBillNo = index
1401
+ this.setRate(index)
1402
+ },
1403
+ changeGoodsBillNo(index) {
1404
+ this.goodsBillNo = index
1405
+ },
1406
+ changeClaimBillNo(index) {
1407
+ this.claimBillNo = index
1408
+ },
1319
1409
  getShipmentPurchaseAmount(shipmentFileInfo, shipmentIndex) {
1320
1410
  if (shipmentIndex == this.activeName) {
1321
1411
  getPurchaseAmount(shipmentFileInfo.shipmentId).then((res) => {
@@ -1420,19 +1510,19 @@ export default {
1420
1510
  },
1421
1511
 
1422
1512
  /**
1423
- * @description: 添加货运
1513
+ * @description: 添加货运todo
1424
1514
  * @return {*}
1425
1515
  */
1426
1516
  addShipment() {
1427
1517
  const purchaseBuyerInfo = this.purchaseBuyerList[this.selectRadio];
1428
1518
  let timer = Date.now();
1429
1519
  addBizShipmentPurchase({
1430
- bookingNo: 'bookingNo-'+ timer,
1520
+ bookingNo: 'bookingNo-' + timer,
1431
1521
  billOfLadingNo: 'billOfLadingNo-' + timer,
1432
1522
  saleContractId: purchaseBuyerInfo.contractId,
1433
1523
  purchaseContractId: this.contract.contractId,
1434
- containerList:[{
1435
- containerNo:'containerNo-1'
1524
+ containerList: [{
1525
+ containerNo: 'containerNo-1'
1436
1526
  }]
1437
1527
  }).then((res) => {
1438
1528
  if (res.code === 200) {
@@ -1492,12 +1582,27 @@ export default {
1492
1582
  //撤回回签
1493
1583
  counterSign() {
1494
1584
  //如果是回签合同 保留原合同状态
1495
- updateBizContract({
1585
+ withdrawSignContract({
1496
1586
  contractId: this.contractId,
1497
- contractStatus:
1498
- this.contract.beforeContractStatus || this.contract.contractStatus,
1587
+ // contractStatus:
1588
+ // this.contract.beforeContractStatus || this.contract.contractStatus,
1589
+ }).then((res) => {
1590
+ if(res.code == 200) {
1591
+ this.$modal.msgSuccess('撤回回签成功');
1592
+ this.handleRefresh();
1593
+ }
1594
+ });
1595
+ },
1596
+
1597
+ //确认提单草稿成功
1598
+ shipmentConfirmDraftBlFun() {
1599
+ shipmentConfirmDraftBl({
1600
+ shipmentId: this.shipmentItemData.shipmentId,
1499
1601
  }).then((res) => {
1500
- this.$modal.msgSuccess('撤回回签成功');
1602
+ if(res.code == 200) {
1603
+ this.$modal.msgSuccess('确认提单草稿成功');
1604
+ this.handleRefresh();
1605
+ }
1501
1606
  });
1502
1607
  },
1503
1608
  //生船运按钮操作
@@ -1532,7 +1637,7 @@ export default {
1532
1637
  );
1533
1638
  });
1534
1639
  })
1535
- .catch(() => {});
1640
+ .catch(() => { });
1536
1641
  } else {
1537
1642
  listWithContractInfo({
1538
1643
  contractIds: [this.contractId],
@@ -1776,6 +1881,7 @@ export default {
1776
1881
  getContractFileInfo(contractId) {
1777
1882
  getBizContractFileInfo(contractId).then((res) => {
1778
1883
  this.contractFileInfo = res.data;
1884
+ this.setRate(this.shipBillNo || 0)
1779
1885
  });
1780
1886
  },
1781
1887
 
@@ -1809,10 +1915,23 @@ export default {
1809
1915
  console.log(this.selectFileList);
1810
1916
  },
1811
1917
  handleUncheck(val) {
1812
- let index = this.selectFileList.findIndex((item) => item.fileId === val);
1813
- if (index > -1) this.selectFileList.splice(index, 1);
1918
+ let index = this.selectFileList.findIndex((item) => {
1919
+ console.log('====handleUncheck==', item.fileId, val);
1920
+ return item.fileId === val
1921
+ });
1922
+ console.log('====handleUncheck==', index);
1923
+ if (index > -1) {
1924
+ this.selectFileList.splice(index, 1);
1925
+ }
1814
1926
  console.log(this.selectFileList);
1815
1927
  },
1928
+ cancelAllSelectFileList () {
1929
+ this.selectFileList.forEach((item) => {
1930
+ setTimeout(() => {
1931
+ this.handleUncheck(item.fileId)
1932
+ }, 10);
1933
+ });
1934
+ },
1816
1935
  handleUpload(e, linkId, linkType, fileType) {
1817
1936
  let loadingInstance = Loading.service({
1818
1937
  text: '请稍候',
@@ -1917,27 +2036,82 @@ export default {
1917
2036
  ) {
1918
2037
  return this.buyerFlag
1919
2038
  ? this.contractFileInfo &&
1920
- this.contractFileInfo.claimCreditNoteFileList &&
1921
- this.contractFileInfo.claimCreditNoteFileList
2039
+ this.contractFileInfo.claimCreditNoteFileList &&
2040
+ this.contractFileInfo.claimCreditNoteFileList
1922
2041
  : this.contractFileInfo &&
1923
- this.contractFileInfo.claimDebitNoteFileList &&
1924
- this.contractFileInfo.claimDebitNoteFileList;
2042
+ this.contractFileInfo.claimDebitNoteFileList &&
2043
+ this.contractFileInfo.claimDebitNoteFileList;
1925
2044
  } else {
1926
2045
  false;
1927
2046
  }
1928
2047
  },
1929
2048
  },
2049
+ watch: {
2050
+ selectFileListProp: {
2051
+ handler(val) {
2052
+ this.selectFileList = val
2053
+ },
2054
+ immediate: true,
2055
+ deep: true
2056
+ },
2057
+ }
1930
2058
  };
1931
2059
  </script>
1932
2060
  <style lang="scss" scoped>
2061
+
2062
+ .bg-history {
2063
+ color: #1C75BC;
2064
+ line-height: 12px;
2065
+ font-size: 14px;
2066
+ cursor: pointer;
2067
+ }
2068
+
2069
+ .progress-root {
2070
+ display: flex;
2071
+ }
2072
+
2073
+ .selection-root {
2074
+ display: flex;
2075
+ margin-top: 26px;
2076
+ justify-content: flex-start;
2077
+ align-items: center;
2078
+ margin-bottom: 20px;
2079
+ }
2080
+
2081
+ .border-button {
2082
+ margin-left: 8px;
2083
+ min-width: 45px;
2084
+ padding: 0 10px;
2085
+ width: max-content;
2086
+ height: 21px;
2087
+ text-align: center;
2088
+ line-height: 17px;
2089
+ background: #FFFFFF;
2090
+ border-radius: 11px;
2091
+ font-size: 12px;
2092
+ border: 2px solid #D1D3D4;
2093
+ cursor: pointer;
2094
+ }
2095
+
2096
+ .border-button-share {
2097
+ background: #84db4c;
2098
+ border: 2px solid transparent;
2099
+ }
2100
+
2101
+ .slot-content {
2102
+ margin-top: 8px;
2103
+ }
2104
+
1933
2105
  .box-card {
1934
2106
  width: 100%;
1935
2107
  }
2108
+
1936
2109
  .sub-title {
1937
2110
  font-size: 14px;
1938
2111
  font-weight: bold;
1939
2112
  margin-bottom: 10px;
1940
2113
  }
2114
+
1941
2115
  .file-list {
1942
2116
  display: flex;
1943
2117
  flex-wrap: wrap;
@@ -1946,9 +2120,93 @@ export default {
1946
2120
  margin-right: 10px;
1947
2121
  }
1948
2122
  }
2123
+
2124
+
2125
+ .content-root {
2126
+ overflow: hidden;
2127
+ background-color: #fff;
2128
+ padding: 10px 20px;
2129
+
2130
+ .content-root-row {
2131
+ display: flex;
2132
+ align-items: center;
2133
+ }
2134
+ }
2135
+
1949
2136
  ::v-deep .el-tabs--top .el-tabs__item.is-top:last-child {
1950
2137
  font-weight: 900;
1951
2138
  }
2139
+
2140
+ .success {
2141
+ color: #67C23A;
2142
+ }
2143
+
2144
+ .confirm-draft-bl {
2145
+ width:200px;
2146
+ height: 30px;
2147
+ border-radius: 15px;
2148
+ line-height:30px;
2149
+ text-align: center;
2150
+ background-color: #189048;
2151
+ color:#fff;
2152
+ cursor:pointer;
2153
+ }
2154
+
2155
+ .center-status {
2156
+ height: 85px;
2157
+ display: flex;
2158
+ align-items: center;
2159
+ justify-content: flex-start;
2160
+ color: #bbb
2161
+ }
2162
+ .center-status-block {
2163
+ height: 85px;
2164
+ display: flex;
2165
+ align-items: center;
2166
+ flex-direction: column;
2167
+ justify-content: center;
2168
+ color: #bbb
2169
+ }
2170
+ .ship-empty {
2171
+ line-height:60px;
2172
+ color: #bbb;
2173
+ text-align: center;
2174
+ padding:20px 0;
2175
+ }
2176
+
2177
+ .preview-download-root {
2178
+ display:flex;
2179
+ margin-top:5px;
2180
+
2181
+ .preview-download {
2182
+ cursor: pointer;
2183
+ margin-left:8px;
2184
+ min-width: 45px;
2185
+ width:max-content;
2186
+ padding: 0 10px;
2187
+ height: 21px;
2188
+ text-align: center;
2189
+ line-height: 17px;
2190
+ background: #FFFFFF;
2191
+ border-radius: 11px;
2192
+ font-size:12px;
2193
+ border: 2px solid #D1D3D4;
2194
+ }
2195
+ }
2196
+ .addshipment {
2197
+ position: absolute;
2198
+ left:100px;
2199
+ top:88px;
2200
+ background-color:#fff;
2201
+ height:30px;
2202
+ line-height:30px;
2203
+ text-align: center;
2204
+ color:#1C75BC;
2205
+ padding: 0 20px;
2206
+ width:max-content;
2207
+ border-radius:15px;
2208
+ cursor:pointer;
2209
+ }
1952
2210
  </style>
1953
2211
  <style lang="scss">
1954
2212
  .el-tooltip__popper {