doctor-admin-components 1.0.14-beta.7 → 1.0.14-beta.71
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.
- package/README.md +4 -1
- package/package.json +1 -1
- package/packages/index.js +14 -3
- package/packages/src/api/biz/bizContract.js +36 -9
- package/packages/src/api/biz/bizShipment.js +30 -1
- package/packages/src/i18n/zh-CN/message.json +1 -1
- package/packages/src/index.js +18 -2
- package/packages/src/utils/index.js +1 -1
- package/packages/src/utils/zip.js +29 -11
- package/packages/src/views/biz/bizFileInfo/contract.vue +510 -420
- package/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue +9 -7
- package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +25 -10
- package/packages/src/views/biz/bizFileInfo/contractFile/SectionSlot.vue +11 -3
- package/packages/src/views/biz/bizFileInfo/fileShow.vue +11 -5
- package/packages/src/views/biz/bizShipment/add.vue +67 -38
- package/packages/src/views/biz/contractTracing/billInfo.vue +17 -9
- package/packages/src/views/biz/contractTracing/changrLogList.vue +67 -0
- package/packages/src/views/biz/contractTracing/companyBanks.vue +19 -8
- package/packages/src/views/biz/contractTracing/contractClause.vue +356 -0
- package/packages/src/views/biz/contractTracing/contractClauseComponenrts/TextContent.vue +53 -0
- package/packages/src/views/biz/contractTracing/contractPdf.vue +16 -175
- package/packages/src/views/biz/contractTracing/contractSummary.vue +101 -73
- package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +5 -77
- package/packages/src/views/biz/contractTracing/editBill.vue +35 -27
- package/packages/src/views/biz/contractTracing/info.vue +363 -0
- package/packages/src/views/biz/contractTracing/purchaseInvoiceUpload.vue +5 -2
- package/packages/src/views/biz/contractTracing/queryDeductionRecords.vue +103 -0
- package/packages/src/views/biz/contractTracing/shipmentPurchaseAmount.vue +361 -79
- package/packages/src/views/biz/contractTracing/shipmentPurchaseAmountEditDialog.vue +176 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: zhangpengwei 15038779532@163.com
|
|
3
3
|
* @Date: 2023-08-28 19:04:39
|
|
4
4
|
* @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
5
|
-
* @LastEditTime:
|
|
5
|
+
* @LastEditTime: 2025-01-20 14:15:12
|
|
6
6
|
* @FilePath: /doctor-admin-components/packages/src/views/biz/contractTracing/contractSummary.vue
|
|
7
7
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
8
8
|
-->
|
|
@@ -11,42 +11,45 @@
|
|
|
11
11
|
<el-card class="box-card">
|
|
12
12
|
<el-row>
|
|
13
13
|
<el-col :span="12">
|
|
14
|
-
{{ $t('contractDetail.contractNo') + ':' + (this.contract && this.contract.contractNo ?
|
|
14
|
+
{{ $t('contractDetail.contractNo') + ':' + (this.contract && this.contract.contractNo ?
|
|
15
|
+
this.contract.contractNo : '') }}
|
|
15
16
|
</el-col>
|
|
16
17
|
<el-col v-if="channel !== 'official-website'" :span="12">
|
|
17
18
|
<div v-if="contract.contractSignTime && isOvertime(contract.contractSignTime, 14)">
|
|
18
19
|
{{
|
|
19
20
|
depositStatus == 'not_received'
|
|
20
21
|
? '【超时未收定金】提醒:您已于【' +
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
utc2local(contract.contractSignTime, 'YYYY-MM-DD') +
|
|
23
|
+
'】 签订合同,定金款已超过【' +
|
|
24
|
+
getDays(contract.contractSignTime) +
|
|
25
|
+
'】天未收到'
|
|
25
26
|
: depositStatus == 'not_paid'
|
|
26
|
-
|
|
27
|
+
? '【超时未付定金】提醒:您已于【' +
|
|
27
28
|
utc2local(contract.contractSignTime, 'YYYY-MM-DD') +
|
|
28
29
|
'】 签订合同,定金款已超过【' +
|
|
29
30
|
getDays(contract.contractSignTime) +
|
|
30
31
|
'】天未支付'
|
|
31
|
-
|
|
32
|
+
: ''
|
|
32
33
|
}}
|
|
33
34
|
</div>
|
|
34
35
|
<div v-if="contract.contractSignTime && isOvertime(contract.contractSignTime, contract.latestShipment)">
|
|
35
36
|
{{
|
|
36
37
|
deliveryStatus != 'all_shipment'
|
|
37
38
|
? '【超时未发货】提醒:当前合同约定签订后【' +
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
contract.latestShipment +
|
|
40
|
+
'】天发货;目前距合同签订【' +
|
|
41
|
+
getDays(contract.contractSignTime) +
|
|
42
|
+
'】天,卖家仍未全部发货;'
|
|
42
43
|
: '' + '】'
|
|
43
44
|
}}
|
|
44
45
|
</div>
|
|
45
|
-
<div v-if="deliveryStatus == 'all_shipment' && depositStatus == 'not_received'">{{
|
|
46
|
+
<div v-if="deliveryStatus == 'all_shipment' && depositStatus == 'not_received'">{{
|
|
47
|
+
'【已发货未收定金】提醒:卖家已全部发货,定金款仍未收到' }}</div>
|
|
46
48
|
</el-col>
|
|
47
49
|
</el-row>
|
|
48
50
|
<el-row v-if="channel !== 'official-website'">
|
|
49
|
-
{{ $t('contractDetail.relatedContract') + ':' + getContractNos((this.contract &&
|
|
51
|
+
{{ $t('contractDetail.relatedContract') + ':' + getContractNos((this.contract &&
|
|
52
|
+
this.contract.associationContractList) ||[]) }}
|
|
50
53
|
</el-row>
|
|
51
54
|
</el-card>
|
|
52
55
|
|
|
@@ -101,7 +104,8 @@
|
|
|
101
104
|
<el-form-item :label="$t('contractDetail.paymentType')">{{ dealRecord.paymentType }}</el-form-item>
|
|
102
105
|
</el-col>
|
|
103
106
|
<el-col :span="8">
|
|
104
|
-
<el-form-item v-if="dealRecord.paymentType != 'EXW'" :label="$t('contractDetail.destination')">{{
|
|
107
|
+
<el-form-item v-if="dealRecord.paymentType != 'EXW'" :label="$t('contractDetail.destination')">{{
|
|
108
|
+
dealRecord.buyerDestination }}</el-form-item>
|
|
105
109
|
<el-form-item v-else label="EXW">{{ dealRecord.exw }}</el-form-item>
|
|
106
110
|
</el-col>
|
|
107
111
|
</el-row>
|
|
@@ -116,7 +120,8 @@
|
|
|
116
120
|
</el-col>
|
|
117
121
|
<!-- 买家点价 -->
|
|
118
122
|
<el-col :span="6">
|
|
119
|
-
<div class="share" v-if="showPricing" style="right: 100px" @click.stop="openPriceFix">{{
|
|
123
|
+
<div class="share" v-if="showPricing" style="right: 100px" @click.stop="openPriceFix">{{
|
|
124
|
+
$t('index.priceFix') }}</div>
|
|
120
125
|
</el-col>
|
|
121
126
|
</el-row>
|
|
122
127
|
</el-card>
|
|
@@ -151,43 +156,45 @@
|
|
|
151
156
|
{{ $t('contractDetail.commodityInfo') }}
|
|
152
157
|
</span>
|
|
153
158
|
</div>
|
|
154
|
-
<el-table
|
|
155
|
-
:
|
|
156
|
-
small="mini"
|
|
157
|
-
style="width: 100%"
|
|
158
|
-
:header-cell-style="{ 'text-align': 'center' }"
|
|
159
|
-
:cell-style="{ 'text-align': 'center' }"
|
|
160
|
-
>
|
|
159
|
+
<el-table :data="dealRecord.dealRecordDetailList" small="mini" style="width: 100%"
|
|
160
|
+
:header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }">
|
|
161
161
|
<el-table-column :label="$t('contractDetail.commodityPicture')" width="150">
|
|
162
162
|
<template v-slot:default="scope">
|
|
163
163
|
<image-preview :src="scope.row.askCover" :width="50" :height="50" />
|
|
164
164
|
</template>
|
|
165
165
|
</el-table-column>
|
|
166
|
-
<el-table-column prop="askName" :label="$t('contractDetail.askName')"
|
|
167
|
-
|
|
168
|
-
<el-table-column v-if="channel !== 'official-website'" :label="$t('contractDetail.
|
|
166
|
+
<el-table-column prop="askName" :label="$t('contractDetail.askName')"
|
|
167
|
+
:width="channel === 'official-website' ? 200 : 100"></el-table-column>
|
|
168
|
+
<el-table-column v-if="channel !== 'official-website'" :label="$t('contractDetail.categoryName')"
|
|
169
|
+
prop="categoryName"></el-table-column>
|
|
170
|
+
<el-table-column v-if="channel !== 'official-website'" :label="$t('contractDetail.subCategory')"
|
|
171
|
+
prop="subCategoryName" width="110"></el-table-column>
|
|
169
172
|
<el-table-column :label="$t('contractDetail.packaging')" prop="packingMethod" width="90" />
|
|
170
|
-
<el-table-column prop="descriptions" :label="$t('contractDetail.description')"
|
|
173
|
+
<el-table-column prop="descriptions" :label="$t('contractDetail.description')"
|
|
174
|
+
:width="channel === 'official-website' ? 200 : 160"></el-table-column>
|
|
171
175
|
<el-table-column prop="weight" :label="$t('contractDetail.weight')" width="120px">
|
|
172
176
|
<template slot-scope="scope">
|
|
173
177
|
{{ CommonFormatNumber(scope.row.weight) }}
|
|
174
178
|
</template>
|
|
175
179
|
</el-table-column>
|
|
176
|
-
<el-table-column v-if="channel !== 'official-website'" prop="sllerPrice"
|
|
180
|
+
<el-table-column v-if="channel !== 'official-website'" prop="sllerPrice"
|
|
181
|
+
:label="$t('contractDetail.sellerPrice')" width="120">
|
|
177
182
|
<template slot-scope="scope">
|
|
178
183
|
<span v-if="dealRecord.quoteType == 'FIXED'">{{ '$' + scope.row.sllerPrice }}</span>
|
|
179
184
|
<span v-else-if="dealRecord.quoteType == 'CMX'">{{ 'CMX - ' + scope.row.sllerPrice }}</span>
|
|
180
185
|
<span v-else>{{ scope.row.sellerPriceFormula || scope.row.sllerPrice + '%LME' }}</span>
|
|
181
186
|
</template>
|
|
182
187
|
</el-table-column>
|
|
183
|
-
<el-table-column prop="quotePrice" :label="$t('contractDetail.quotePrice')"
|
|
188
|
+
<el-table-column prop="quotePrice" :label="$t('contractDetail.quotePrice')"
|
|
189
|
+
:width="channel === 'official-website' ? 180 : 120">
|
|
184
190
|
<template slot-scope="scope">
|
|
185
191
|
<span v-if="dealRecord.quoteType == 'FIXED'">{{ '$' + scope.row.quotePrice }}</span>
|
|
186
192
|
<span v-else-if="dealRecord.quoteType == 'CMX'">{{ 'CMX - ' + scope.row.quotePrice }}</span>
|
|
187
193
|
<span v-else>{{ scope.row.quotePriceFormula || scope.row.quotePrice + '%LME' }}</span>
|
|
188
194
|
</template>
|
|
189
195
|
</el-table-column>
|
|
190
|
-
<el-table-column prop="totalQuote" :label="$t('contractDetail.totalQuote')"
|
|
196
|
+
<el-table-column prop="totalQuote" :label="$t('contractDetail.totalQuote')"
|
|
197
|
+
:width="channel === 'official-website' ? 180 : 120"></el-table-column>
|
|
191
198
|
</el-table>
|
|
192
199
|
</el-card>
|
|
193
200
|
</el-form>
|
|
@@ -201,7 +208,7 @@
|
|
|
201
208
|
</el-button>
|
|
202
209
|
<el-button v-if="channel !== 'official-website'" style="padding: 3px 0" type="text" @click="viceDocuments">{{
|
|
203
210
|
$t('contractDetail.viewPaymentInfo')
|
|
204
|
-
|
|
211
|
+
}}</el-button>
|
|
205
212
|
</div>
|
|
206
213
|
<el-table :data="invoiceList" v-if="invoiceActive">
|
|
207
214
|
<el-table-column :label="$t('contractDetail.invoiceNo')" align="center" prop="invoiceNo" width="165" />
|
|
@@ -211,34 +218,45 @@
|
|
|
211
218
|
<dict-tag :options="dict.type.contract_type" :value="scope.row.invoiceType" />
|
|
212
219
|
</template>
|
|
213
220
|
</el-table-column>
|
|
214
|
-
<el-table-column :label="$t('contractDetail.invoiceSpecies')" align="center" prop="invoiceSpecies"
|
|
221
|
+
<el-table-column :label="$t('contractDetail.invoiceSpecies')" align="center" prop="invoiceSpecies"
|
|
222
|
+
width="120">
|
|
215
223
|
<template slot-scope="scope">
|
|
216
224
|
<dict-tag :options="dict.type.invoice_species" :value="scope.row.invoiceSpecies" />
|
|
217
225
|
</template>
|
|
218
226
|
</el-table-column>
|
|
219
227
|
<el-table-column :label="$t('contractDetail.invoiceDate')" prop="createTime" width="120"></el-table-column>
|
|
220
|
-
<el-table-column :label="$t('contractDetail.issuer')" align="center" prop="billCompanyName" width="150"
|
|
221
|
-
|
|
222
|
-
<el-table-column
|
|
223
|
-
|
|
228
|
+
<el-table-column :label="$t('contractDetail.issuer')" align="center" prop="billCompanyName" width="150"
|
|
229
|
+
:show-overflow-tooltip="true" />
|
|
230
|
+
<el-table-column :label="$t('contractDetail.billTo')" align="center" prop="receiveCompanyName" width="150"
|
|
231
|
+
:show-overflow-tooltip="true" />
|
|
232
|
+
<el-table-column v-if="channel !== 'official-website'" label="未付/未收金额" align="center" prop="remainingAmount"
|
|
233
|
+
width="120" />
|
|
234
|
+
<el-table-column v-if="channel !== 'official-website'" label="已付/已收金额" align="center" prop="remainingAmount"
|
|
235
|
+
width="120">
|
|
224
236
|
<template slot-scope="{ row }">{{ row.amount - row.remainingAmount }}</template>
|
|
225
237
|
</el-table-column>
|
|
226
238
|
<el-table-column v-if="channel !== 'official-website'" label="总金额" align="center" prop="amount" width="100" />
|
|
227
239
|
|
|
228
240
|
<!-- 官网 -->
|
|
229
|
-
<el-table-column v-if="channel == 'official-website'" :label="$t('contract.Payable_Amount')" align="center"
|
|
230
|
-
|
|
241
|
+
<el-table-column v-if="channel == 'official-website'" :label="$t('contract.Payable_Amount')" align="center"
|
|
242
|
+
prop="amount" width="140" />
|
|
243
|
+
<el-table-column v-if="channel == 'official-website'" :label="$t('contract.Amount_Paid')" align="center"
|
|
244
|
+
prop="amount" width="100">
|
|
231
245
|
<template slot-scope="{ row }">{{ row.amount - row.remainingAmount }}</template>
|
|
232
246
|
</el-table-column>
|
|
233
|
-
<el-table-column v-if="channel == 'official-website'" :label="$t('contract.Balance_Due')" align="center"
|
|
247
|
+
<el-table-column v-if="channel == 'official-website'" :label="$t('contract.Balance_Due')" align="center"
|
|
248
|
+
prop="remainingAmount" width="100" />
|
|
234
249
|
<el-table-column :label="$t('contractDetail.quoteType')" align="center" prop="quoteType" width="120" />
|
|
235
250
|
|
|
236
|
-
<el-table-column :label="$t('contractDetail.paymentTerms')" align="center" prop="paymentTerms"
|
|
251
|
+
<el-table-column :label="$t('contractDetail.paymentTerms')" align="center" prop="paymentTerms"
|
|
252
|
+
show-overflow-tooltip width="120" />
|
|
237
253
|
|
|
238
|
-
<el-table-column v-if="channel !== 'official-website'" :label="$t('contractDetail.remark')" align="center"
|
|
254
|
+
<el-table-column v-if="channel !== 'official-website'" :label="$t('contractDetail.remark')" align="center"
|
|
255
|
+
prop="remark" show-overflow-tooltip />
|
|
239
256
|
<el-table-column :label="$t('contractDetail.operate')" v-if="channel !== 'official-website'">
|
|
240
257
|
<template slot-scope="{ row }">
|
|
241
|
-
<el-button v-if="contract.contractType == 'sale' && row.invoiceSpecies != 'proforma'" type="text"
|
|
258
|
+
<el-button v-if="contract.contractType == 'sale' && row.invoiceSpecies != 'proforma'" type="text"
|
|
259
|
+
@click="handleUrge(row)">一键催款</el-button>
|
|
242
260
|
</template>
|
|
243
261
|
</el-table-column>
|
|
244
262
|
</el-table>
|
|
@@ -267,23 +285,31 @@
|
|
|
267
285
|
<div class="claim-report" v-for="(claimItem, index) in row.claimList" :key="index">
|
|
268
286
|
<div style="display: flex">
|
|
269
287
|
<div class="claim-report-info-wrap">
|
|
270
|
-
<div class="claim-report-info-wrap-item">{{ $t('contract.Claim_ID') }}:{{ claimItem.claimNo }}
|
|
271
|
-
|
|
272
|
-
<div class="claim-report-info-wrap-item">{{ $t('contract.
|
|
288
|
+
<div class="claim-report-info-wrap-item">{{ $t('contract.Claim_ID') }}:{{ claimItem.claimNo }}
|
|
289
|
+
</div>
|
|
290
|
+
<div class="claim-report-info-wrap-item">{{ $t('contract.Claim_Type') }}:{{
|
|
291
|
+
claimTypeFun(claimItem.type) }}</div>
|
|
292
|
+
<div class="claim-report-info-wrap-item">{{ $t('contract.Claim_status') }}:{{
|
|
293
|
+
claimStatusFun(claimItem.status) }}</div>
|
|
294
|
+
</div>
|
|
295
|
+
<div style="width: 50px" class="view" @click.stop="viewFun(claimItem)">{{ $t('contract.View') }}
|
|
273
296
|
</div>
|
|
274
|
-
<div style="width: 50px" class="view" @click.stop="viewFun(claimItem)">{{ $t('contract.View') }}</div>
|
|
275
297
|
</div>
|
|
276
298
|
<div class="claim-report-info-wrap">
|
|
277
|
-
<div class="claim-report-info-wrap-item">{{ $t('contract.create_time') }}:{{
|
|
278
|
-
|
|
299
|
+
<div class="claim-report-info-wrap-item">{{ $t('contract.create_time') }}:{{
|
|
300
|
+
parseTime(claimItem.createTime) }}</div>
|
|
301
|
+
<div class="claim-report-info-wrap-item">{{ $t('contract.commitTime') }}:{{
|
|
302
|
+
parseTime(claimItem.commitTime) }}</div>
|
|
279
303
|
</div>
|
|
280
304
|
</div>
|
|
281
305
|
</div>
|
|
282
306
|
</template>
|
|
283
307
|
</el-table-column>
|
|
284
|
-
<el-table-column :label="$t('contractDetail.billOfLadingNo')" align="center" prop="billOfLadingNo"
|
|
308
|
+
<el-table-column :label="$t('contractDetail.billOfLadingNo')" align="center" prop="billOfLadingNo"
|
|
309
|
+
width="130">
|
|
285
310
|
<template slot-scope="scope">
|
|
286
|
-
<el-button type="text" @click="openShipmentDetail(scope.row)">{{ scope.row.billOfLadingNo
|
|
311
|
+
<el-button type="text" @click="openShipmentDetail(scope.row)">{{ scope.row.billOfLadingNo
|
|
312
|
+
}}</el-button>
|
|
287
313
|
</template>
|
|
288
314
|
</el-table-column>
|
|
289
315
|
<el-table-column :label="$t('contractDetail.conrainerNo')" align="center" width="130">
|
|
@@ -301,7 +327,8 @@
|
|
|
301
327
|
<dict-tag :options="dict.type.charging_status" :value="scope.row.chargingStatus" />
|
|
302
328
|
</template>
|
|
303
329
|
</el-table-column>
|
|
304
|
-
<el-table-column :label="$t('contractDetail.destination')" align="center" prop="destinationPort"
|
|
330
|
+
<el-table-column :label="$t('contractDetail.destination')" align="center" prop="destinationPort"
|
|
331
|
+
width="150" />
|
|
305
332
|
<el-table-column label="ETD" align="center" prop="etd" width="180">
|
|
306
333
|
<template slot-scope="scope">
|
|
307
334
|
<span>{{ parseTime(scope.row.etd, '{y}-{m}-{d}') }}</span>
|
|
@@ -312,7 +339,8 @@
|
|
|
312
339
|
<span>{{ parseTime(scope.row.eta, '{y}-{m}-{d}') }}</span>
|
|
313
340
|
</template>
|
|
314
341
|
</el-table-column>
|
|
315
|
-
<el-table-column v-if="channel !== 'official-website'" label="实际到港日" align="center"
|
|
342
|
+
<el-table-column v-if="channel !== 'official-website'" label="实际到港日" align="center"
|
|
343
|
+
prop="actualArrivalDate" width="180">
|
|
316
344
|
<template slot-scope="scope">
|
|
317
345
|
<span>
|
|
318
346
|
{{ parseTime(scope.row.actualArrivalDate, '{y}-{m}-{d}') }}
|
|
@@ -323,39 +351,34 @@
|
|
|
323
351
|
<el-table-column label="对应合同" align="center" width="160px" v-if="channel !== 'official-website'">
|
|
324
352
|
<template slot-scope="scope">
|
|
325
353
|
<span v-if="contract.contract == 'sale'">
|
|
326
|
-
<el-button type="text" @click="viewContractDetail(scope.row.saleContractNo)">{{
|
|
354
|
+
<el-button type="text" @click="viewContractDetail(scope.row.saleContractNo)">{{
|
|
355
|
+
scope.row.saleContractNo }}</el-button>
|
|
327
356
|
</span>
|
|
328
357
|
<span v-else>
|
|
329
|
-
<el-button type="text" @click="viewContractDetail(scope.row.purchaseContractNo)">{{
|
|
358
|
+
<el-button type="text" @click="viewContractDetail(scope.row.purchaseContractNo)">{{
|
|
359
|
+
scope.row.purchaseContractNo }}</el-button>
|
|
330
360
|
</span>
|
|
331
361
|
</template>
|
|
332
362
|
</el-table-column>
|
|
333
363
|
|
|
334
|
-
<el-table-column :label="$t('contractDetail.operate')" align="center"
|
|
364
|
+
<el-table-column :label="$t('contractDetail.operate')" align="center"
|
|
365
|
+
class-name="small-padding fixed-width" width="300px">
|
|
335
366
|
<template slot-scope="scope">
|
|
336
|
-
<el-button
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
type="primary"
|
|
340
|
-
style="padding-left: 5px; padding-right: 5px"
|
|
341
|
-
@click.stop="activeNameFun(scope.$index)"
|
|
342
|
-
>{{ $t('contract.Track_Shipment') }}</el-button
|
|
343
|
-
>
|
|
367
|
+
<el-button v-if="channel == 'official-website'" size="mini" type="primary"
|
|
368
|
+
style="padding-left: 5px; padding-right: 5px" @click.stop="activeNameFun(scope.$index)">{{
|
|
369
|
+
$t('contract.Track_Shipment') }}</el-button>
|
|
344
370
|
<!-- v-if="channel == 'official-website' && scope.row.showFallbackQuality" -->
|
|
345
|
-
<el-button
|
|
346
|
-
v-if="channel == 'official-website'"
|
|
347
|
-
size="mini"
|
|
371
|
+
<el-button v-if="channel == 'official-website'" size="mini"
|
|
348
372
|
:type="scope.row.showFallbackQuality ? 'primary' : 'info'"
|
|
349
|
-
style="padding-left: 5px; padding-right: 5px"
|
|
350
|
-
|
|
351
|
-
>{{ $t('contract.Quality_Feedback') }}</el-button
|
|
352
|
-
>
|
|
373
|
+
style="padding-left: 5px; padding-right: 5px" @click.stop="qualityFeedback(scope.row)">{{
|
|
374
|
+
$t('contract.Quality_Feedback') }}</el-button>
|
|
353
375
|
</template>
|
|
354
376
|
</el-table-column>
|
|
355
377
|
</el-table>
|
|
356
378
|
|
|
357
|
-
<el-tabs v-model="activeName" type="card">
|
|
358
|
-
<el-tab-pane v-for="(item, index) in shipmentList" :key="index" :name="index.toString()"
|
|
379
|
+
<el-tabs v-if="accessToken" v-model="activeName" type="card">
|
|
380
|
+
<el-tab-pane v-for="(item, index) in shipmentList" :key="index" :name="index.toString()"
|
|
381
|
+
:label="item.billOfLadingNo">
|
|
359
382
|
<iframe :src="getGeekYumPage(item)" width="1100" height="600"></iframe>
|
|
360
383
|
</el-tab-pane>
|
|
361
384
|
</el-tabs>
|
|
@@ -751,7 +774,7 @@ ${invoiceNoTitleZh}:${invoiceNo}
|
|
|
751
774
|
},
|
|
752
775
|
getGeekYumToken() {
|
|
753
776
|
getGeekYumToken().then((res) => {
|
|
754
|
-
this.accessToken = res.
|
|
777
|
+
this.accessToken = res.message
|
|
755
778
|
})
|
|
756
779
|
},
|
|
757
780
|
getDays(date) {
|
|
@@ -925,24 +948,29 @@ ${invoiceNoTitleZh}:${invoiceNo}
|
|
|
925
948
|
width: 1050px;
|
|
926
949
|
margin-left: 20px;
|
|
927
950
|
}
|
|
951
|
+
|
|
928
952
|
.claim-report {
|
|
929
953
|
background-color: #eee;
|
|
930
954
|
padding: 10px 20px;
|
|
931
955
|
margin-top: 20px;
|
|
956
|
+
|
|
932
957
|
.claim-report-info-wrap {
|
|
933
958
|
flex: 1;
|
|
934
959
|
display: flex;
|
|
935
960
|
flex-wrap: wrap;
|
|
961
|
+
|
|
936
962
|
.claim-report-info-wrap-item {
|
|
937
963
|
width: 300px;
|
|
938
964
|
text-align: left;
|
|
939
965
|
}
|
|
940
966
|
}
|
|
967
|
+
|
|
941
968
|
.view {
|
|
942
969
|
color: #409eff;
|
|
943
970
|
cursor: pointer;
|
|
944
971
|
}
|
|
945
972
|
}
|
|
973
|
+
|
|
946
974
|
.share {
|
|
947
975
|
width: 120px;
|
|
948
976
|
height: 30px;
|
|
@@ -12,31 +12,22 @@
|
|
|
12
12
|
<div class="app-container-left">
|
|
13
13
|
<div class="contract-number">
|
|
14
14
|
<div>{{ $t('contractDetail.Contract_No') }}</div>
|
|
15
|
-
<div>{{ contract.contractNo }}</div>
|
|
15
|
+
<div style="word-wrap: break-word;">{{ contract.contractNo }}</div>
|
|
16
16
|
</div>
|
|
17
17
|
<div class="contract-number">
|
|
18
18
|
<div>
|
|
19
19
|
<span>{{$t('contractDetail.Reference_No')}}</span>
|
|
20
20
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="clickEditReference"></el-button>
|
|
21
21
|
</div>
|
|
22
|
-
<div>{{ contract.reference || '--' }}</div>
|
|
22
|
+
<div style="word-wrap: break-word;">{{ contract.reference || '--' }}</div>
|
|
23
23
|
</div>
|
|
24
24
|
<div class="tab-root">
|
|
25
25
|
<div :class="['tab', activeName == tabsItem.name ? 'active' : '']" v-for="tabsItem in saleTabsArr" :key="tabsItem.id" @click="changeTabs(tabsItem)">
|
|
26
26
|
{{ tabsItem.label }}
|
|
27
27
|
</div>
|
|
28
28
|
</div>
|
|
29
|
-
<div>
|
|
30
|
-
<!-- 选择项 -->
|
|
31
|
-
<div class="selection-root">
|
|
32
|
-
<span>{{ $t('contractDetail.Selected') }} {{ selectFileList.length }} {{ $t('contractDetail.item') }}</span>
|
|
33
|
-
<div class="border-button" @click.stop="downLoadAll">{{ $t('contractDetail.Download_All') }}</div>
|
|
34
|
-
<div class="border-button" @click.stop="deleteAll">{{ $t('contractDetail.Delete_All') }}</div>
|
|
35
|
-
<div class="border-button" @click.stop="cancelAll">{{ $t('contractDetail.Deselect') }}</div>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
29
|
</div>
|
|
39
|
-
<div class="app-container-right">
|
|
30
|
+
<div class="app-container-right" :style="activeName == 'fourth' ? 'overflow:visible' : 'overflow:auto'">
|
|
40
31
|
<contract-summary v-if="activeName == 'first'" :channel="channel"></contract-summary>
|
|
41
32
|
<contract-info v-if="activeName == 'second'" :channel="channel"></contract-info>
|
|
42
33
|
<!-- 提单指令 -->
|
|
@@ -54,7 +45,6 @@
|
|
|
54
45
|
:contract="contract"
|
|
55
46
|
:channel="channel"
|
|
56
47
|
:buyerFlag="buyerFlag"
|
|
57
|
-
:selectFileListProp="selectFileList"
|
|
58
48
|
ref="contractFileRef"
|
|
59
49
|
></contract-file>
|
|
60
50
|
</div>
|
|
@@ -106,7 +96,6 @@ import ContractSummary from './contractSummary.vue'
|
|
|
106
96
|
import BillInfo from './billInfo.vue'
|
|
107
97
|
import ContractFile from '../bizFileInfo/contract.vue'
|
|
108
98
|
import ContractInfo from './contractInfo.vue'
|
|
109
|
-
import { delBizFileInfo } from '../../../api/biz/bizFileInfo'
|
|
110
99
|
|
|
111
100
|
export default {
|
|
112
101
|
name: 'ContractTracingDetail',
|
|
@@ -165,7 +154,6 @@ export default {
|
|
|
165
154
|
}
|
|
166
155
|
],
|
|
167
156
|
|
|
168
|
-
selectFileList: [],
|
|
169
157
|
// 提单指令列表
|
|
170
158
|
blList: null,
|
|
171
159
|
activeBillIndex: null
|
|
@@ -205,46 +193,7 @@ export default {
|
|
|
205
193
|
console.log(e)
|
|
206
194
|
})
|
|
207
195
|
},
|
|
208
|
-
|
|
209
|
-
* @description: 取消全部选择
|
|
210
|
-
* @return {*}
|
|
211
|
-
*/
|
|
212
|
-
cancelAll() {
|
|
213
|
-
this.$refs.contractFileRef.cancelAllSelectFileList()
|
|
214
|
-
},
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* @description: 全部下载
|
|
218
|
-
* @return {*}
|
|
219
|
-
*/
|
|
220
|
-
downLoadAll() {
|
|
221
|
-
if (this.selectFileList.length == 0) {
|
|
222
|
-
return this.$message.warning(this.$t('contractDetail.please_select_file'))
|
|
223
|
-
}
|
|
224
|
-
this.$refs.contractFileRef.downloadZip()
|
|
225
|
-
},
|
|
226
|
-
deleteAll() {
|
|
227
|
-
console.log('==delBizFileInfo==', this.selectFileList)
|
|
228
|
-
if (this.selectFileList.length == 0) {
|
|
229
|
-
return this.$message.warning(this.$t('contractDetail.please_select_file'))
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
this.$confirm('是否删除选中文件', '提示', {
|
|
233
|
-
confirmButtonText: '确定',
|
|
234
|
-
cancelButtonText: '取消',
|
|
235
|
-
type: 'warning'
|
|
236
|
-
})
|
|
237
|
-
.then(() => {
|
|
238
|
-
const ids = this.selectFileList.map((item) => item.fileId)
|
|
239
|
-
delBizFileInfo(ids).then(() => {
|
|
240
|
-
this.$message.success('删除成功')
|
|
241
|
-
this.$refs.contractFileRef.handleRefresh()
|
|
242
|
-
})
|
|
243
|
-
})
|
|
244
|
-
.catch(() => {
|
|
245
|
-
this.$message.info('已取消删除')
|
|
246
|
-
})
|
|
247
|
-
},
|
|
196
|
+
|
|
248
197
|
/**
|
|
249
198
|
* @description: 切换tab
|
|
250
199
|
* @param {*} tab
|
|
@@ -329,29 +278,8 @@ export default {
|
|
|
329
278
|
height: 100%;
|
|
330
279
|
overflow: auto;
|
|
331
280
|
}
|
|
281
|
+
|
|
332
282
|
}
|
|
333
283
|
}
|
|
334
284
|
|
|
335
|
-
.selection-root {
|
|
336
|
-
margin-top: 26px;
|
|
337
|
-
display: flex;
|
|
338
|
-
flex-direction: column;
|
|
339
|
-
justify-content: center;
|
|
340
|
-
align-items: center;
|
|
341
|
-
margin-bottom: 20px;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
.border-button {
|
|
345
|
-
margin-top: 10px;
|
|
346
|
-
padding: 0 10px;
|
|
347
|
-
width: max-content;
|
|
348
|
-
height: 21px;
|
|
349
|
-
text-align: center;
|
|
350
|
-
line-height: 17px;
|
|
351
|
-
background: #ffffff;
|
|
352
|
-
border-radius: 11px;
|
|
353
|
-
font-size: 12px;
|
|
354
|
-
border: 2px solid #d1d3d4;
|
|
355
|
-
cursor: pointer;
|
|
356
|
-
}
|
|
357
285
|
</style>
|
|
@@ -157,22 +157,22 @@
|
|
|
157
157
|
<el-collapse-item name="3">
|
|
158
158
|
<template slot="title">
|
|
159
159
|
<el-row style="width: 75%">
|
|
160
|
-
<el-form-item class="mt20" :label="$t('contract.secondNotifier') + ':'">{{
|
|
160
|
+
<el-form-item class="mt20" :label="$t('contract.secondNotifier') + ':'">{{ secondNotifyInfoInfo ? secondNotifyInfoInfo.companyName : "" }}</el-form-item>
|
|
161
161
|
</el-row>
|
|
162
162
|
</template>
|
|
163
163
|
<el-form-item :label="$t('contract.taxId') + ':'">
|
|
164
|
-
{{
|
|
164
|
+
{{ secondNotifyInfoInfo ? secondNotifyInfoInfo.taxNumber : "" }}
|
|
165
165
|
</el-form-item>
|
|
166
166
|
<el-form-item :label="$t('contract.notifierAddress') + ':'">
|
|
167
|
-
{{
|
|
167
|
+
{{ secondNotifyInfoInfo ? secondNotifyInfoInfo.address : "" }}
|
|
168
168
|
</el-form-item>
|
|
169
169
|
<el-form-item :label="$t('contract.contact') + ':'">
|
|
170
|
-
{{
|
|
170
|
+
{{ secondNotifyInfoInfo ? secondNotifyInfoInfo.contactPerson : "" }}
|
|
171
171
|
</el-form-item>
|
|
172
172
|
<el-form-item :label="$t('contract.phoneNumber') + ':'">
|
|
173
|
-
{{
|
|
173
|
+
{{ secondNotifyInfoInfo ? secondNotifyInfoInfo.phoneNumber : "" }}
|
|
174
174
|
</el-form-item>
|
|
175
|
-
<el-form-item :label="$t('contract.email') + ':'">{{
|
|
175
|
+
<el-form-item :label="$t('contract.email') + ':'">{{ secondNotifyInfoInfo ? secondNotifyInfoInfo.email : "" }}</el-form-item>
|
|
176
176
|
</el-collapse-item>
|
|
177
177
|
</el-collapse>
|
|
178
178
|
|
|
@@ -283,12 +283,11 @@
|
|
|
283
283
|
</template>
|
|
284
284
|
|
|
285
285
|
<script>
|
|
286
|
-
import { getBizDealRecord, updateBizDealRecord } from '../../../api/biz/bizDealRecord'
|
|
287
286
|
import { listBizContractCompany } from '../../../api/biz/bizContractCompany'
|
|
288
287
|
import SubCompanyDialog from './subCompanyDialog.vue'
|
|
289
288
|
import BillGoods from './billGoods.vue'
|
|
290
289
|
import { listCompanyBillGoods } from '../../../api/biz/bizCompanyBillGoods'
|
|
291
|
-
import { getBizContract,
|
|
290
|
+
import { getBizContract, getContractBliDetail, updateContractBli, getSecondNotifyInfo } from '../../../api/biz/bizContract'
|
|
292
291
|
import FileUpload from '../../../components/FileUpload/s3.vue'
|
|
293
292
|
|
|
294
293
|
export default {
|
|
@@ -336,7 +335,8 @@ export default {
|
|
|
336
335
|
notifierCompanyId: [{ required: true, trigger: 'blur', message: this.$t('bill.tip4') }],
|
|
337
336
|
goodsName: [{ required: true, trigger: 'blur' }]
|
|
338
337
|
},
|
|
339
|
-
contract: null
|
|
338
|
+
contract: null,
|
|
339
|
+
secondNotifyInfoInfo: null
|
|
340
340
|
}
|
|
341
341
|
},
|
|
342
342
|
watch: {
|
|
@@ -367,13 +367,16 @@ export default {
|
|
|
367
367
|
}
|
|
368
368
|
}
|
|
369
369
|
},
|
|
370
|
-
created() {
|
|
370
|
+
created() {
|
|
371
|
+
this.getSecondNotifyInfo();
|
|
372
|
+
},
|
|
371
373
|
methods: {
|
|
372
|
-
async handleEdit(contractId,
|
|
374
|
+
async handleEdit(contractId, buyerCompanyId) {
|
|
375
|
+
this.form.buyerCompanyId = buyerCompanyId
|
|
373
376
|
const loading = this.openLoading()
|
|
374
377
|
try {
|
|
375
378
|
// 等待异步方法完成
|
|
376
|
-
await this.
|
|
379
|
+
await this.getBliDetail(contractId)
|
|
377
380
|
await this.getContract(contractId)
|
|
378
381
|
// 异步操作完成后设置open为true
|
|
379
382
|
this.open = true
|
|
@@ -544,13 +547,15 @@ export default {
|
|
|
544
547
|
}
|
|
545
548
|
this.resetForm('form')
|
|
546
549
|
},
|
|
547
|
-
|
|
550
|
+
getBliDetail(contractId) {
|
|
548
551
|
// 将整个方法体封装在返回的Promise中
|
|
552
|
+
const buyerCompanyId = this.form.buyerCompanyId
|
|
549
553
|
return new Promise((resolve, reject) => {
|
|
550
554
|
this.reset()
|
|
551
|
-
|
|
555
|
+
getContractBliDetail(contractId)
|
|
552
556
|
.then((response) => {
|
|
553
|
-
this.form = response.data
|
|
557
|
+
this.form = {...this.form, ...response.data, buyerCompanyId, contractId}
|
|
558
|
+
console.log("getContractBliDetail -- this.form:", this.form)
|
|
554
559
|
if (this.form.buyerCompanyBillGoods) {
|
|
555
560
|
this.form.buyerCompanyBillGoods = JSON.parse(this.form.buyerCompanyBillGoods)
|
|
556
561
|
} else {
|
|
@@ -563,7 +568,7 @@ export default {
|
|
|
563
568
|
this.getContractCompanyList(this.form.buyerCompanyId)
|
|
564
569
|
this.getCompanyBillGoods(this.form.buyerCompanyId)
|
|
565
570
|
|
|
566
|
-
this.form
|
|
571
|
+
this.form?.dealRecordDetailList?.map((item) => {
|
|
567
572
|
if (item.imageList) {
|
|
568
573
|
item.askCover = item.imageList.toString()
|
|
569
574
|
}
|
|
@@ -585,19 +590,22 @@ export default {
|
|
|
585
590
|
submitForm() {
|
|
586
591
|
this.$refs['form'].validate((valid) => {
|
|
587
592
|
if (valid) {
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
})
|
|
597
|
-
}
|
|
593
|
+
var deal = JSON.parse(JSON.stringify(this.form))
|
|
594
|
+
deal.buyerCompanyBillGoods = JSON.stringify(deal.buyerCompanyBillGoods)
|
|
595
|
+
deal.blConfirmFlag = this.confirmFlag
|
|
596
|
+
updateContractBli(deal).then((response) => {
|
|
597
|
+
this.open = false
|
|
598
|
+
this.$modal.msgSuccess('Save Success')
|
|
599
|
+
this.$emit('edit')
|
|
600
|
+
})
|
|
598
601
|
}
|
|
599
602
|
})
|
|
600
|
-
}
|
|
603
|
+
},
|
|
604
|
+
getSecondNotifyInfo() {
|
|
605
|
+
getSecondNotifyInfo().then((res) => {
|
|
606
|
+
this.secondNotifyInfoInfo = res.data;
|
|
607
|
+
})
|
|
608
|
+
},
|
|
601
609
|
}
|
|
602
610
|
}
|
|
603
611
|
</script>
|