doctor-admin-components 1.0.14-beta.8 → 1.0.14-beta.81
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 +25 -48
- 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/api/biz/dictData.js +4 -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 +131 -151
- package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +8 -6
- package/packages/src/views/biz/bizFileInfo/fileShow.vue +5 -3
- package/packages/src/views/biz/bizShipment/add.vue +234 -142
- 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/contractChangeLog.vue +29 -2
- 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 +2 -2
- package/packages/src/views/biz/contractTracing/editBill.vue +35 -27
- package/packages/src/views/biz/contractTracing/info.vue +365 -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
|
@@ -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>
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div v-if="form" style="margin-bottom:40px">
|
|
3
|
+
<el-row :gutter="20">
|
|
4
|
+
<el-col :span="12">
|
|
5
|
+
<div class="company">
|
|
6
|
+
<div class="company-type">Party A (Seller):</div>
|
|
7
|
+
<div class="company-text">{{ form.supplierContractCompany.companyEnglishName }}</div>
|
|
8
|
+
<div class="company-text">{{ form.supplierContractCompany.address }}</div>
|
|
9
|
+
</div>
|
|
10
|
+
</el-col>
|
|
11
|
+
<el-col :span="12">
|
|
12
|
+
<div class="company">
|
|
13
|
+
<div class="company-type">Party B (Buyer):</div>
|
|
14
|
+
<div class="company-text">{{ form.buyContractCompany.companyEnglishName }}</div>
|
|
15
|
+
<div class="company-text">{{ form.buyContractCompany.address }}</div>
|
|
16
|
+
</div>
|
|
17
|
+
</el-col>
|
|
18
|
+
</el-row>
|
|
19
|
+
<el-divider></el-divider>
|
|
20
|
+
<div class="item">
|
|
21
|
+
<el-table
|
|
22
|
+
:data="form.contractDetailList"
|
|
23
|
+
:header-cell-style="{ backgroundColor: '#ffffff' }"
|
|
24
|
+
:row-style="{ border: 'none' }"
|
|
25
|
+
:summary-method="getSummaries"
|
|
26
|
+
show-summary
|
|
27
|
+
>
|
|
28
|
+
<el-table-column label="Description" align="center" prop="askName"></el-table-column>
|
|
29
|
+
<el-table-column label="Commodity Name" align="center" prop="askAliasName"></el-table-column>
|
|
30
|
+
<el-table-column label="Quantity" align="center" prop="weight">
|
|
31
|
+
<template slot-scope="scope">{{ scope.row.weight }}</template>
|
|
32
|
+
</el-table-column>
|
|
33
|
+
<el-table-column label="Unit Price/MT" align="center" width="200">
|
|
34
|
+
<template slot-scope="{ row }">
|
|
35
|
+
<div v-if="form.quoteType == 'FIXED'">
|
|
36
|
+
<span v-if="form.contractType == 'sale'">${{ row.quotePrice }}</span> <span v-else>${{ row.sllerPrice }}</span>
|
|
37
|
+
</div>
|
|
38
|
+
<div v-if="isCmx(form.quoteType)">
|
|
39
|
+
<span v-if="form.contractType == 'sale'">{{ `$(${form.quoteType}-${row.quotePrice})*2204.62` }}</span>
|
|
40
|
+
<span v-else>{{ `$(${form.quoteType}-${row.sllerPrice})*2204.62` }}</span>
|
|
41
|
+
</div>
|
|
42
|
+
<div v-if="isLme(form.quoteType)">
|
|
43
|
+
<div v-if="checkElementItem(row.elementContent)">
|
|
44
|
+
{{ form.contractType == 'sale' ? row.quotePriceFormula : row.sellerPriceFormula }}
|
|
45
|
+
</div>
|
|
46
|
+
<div v-else>
|
|
47
|
+
<span v-if="form.contractType == 'sale'">{{ ` $(${form.quoteType} *${row.quotePrice}%) ` }}</span>
|
|
48
|
+
<span v-else>{{ `$(${form.quoteType} *${row.sllerPrice}%)` }}</span>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</template>
|
|
52
|
+
</el-table-column>
|
|
53
|
+
|
|
54
|
+
<el-table-column label="Service fee" align="center">
|
|
55
|
+
<template slot-scope="scope">{{ scope.row.serviceFee ? `$${scope.row.serviceFee}/MT` : '' }}</template>
|
|
56
|
+
</el-table-column>
|
|
57
|
+
|
|
58
|
+
<!-- 总价 -->
|
|
59
|
+
<el-table-column label="Net Unit Price/MT" align="center">
|
|
60
|
+
<template slot-scope="scope">
|
|
61
|
+
<span v-if="form.quoteType == 'FIXED' && form.contractType == 'purchase'">{{ '$' + (scope.row.sllerPrice - Number(scope.row.serviceFee)) }}</span>
|
|
62
|
+
<span v-else-if="form.quoteType == 'FIXED' && form.contractType == 'sale'">
|
|
63
|
+
{{ '$' + (Number(scope.row.quotePrice) + Number(scope.row.serviceFee)) }}
|
|
64
|
+
</span>
|
|
65
|
+
<span v-else-if="isLme(form.quoteType) && form.contractType == 'purchase'">
|
|
66
|
+
<div v-if="checkElementItem(scope.row.elementContent)">
|
|
67
|
+
{{ scope.row.sellerPriceFormula + '- $' + Number(scope.row.serviceFee) }}
|
|
68
|
+
</div>
|
|
69
|
+
<div v-else>
|
|
70
|
+
{{ '$(' + form.quoteType + ' * ' + scope.row.sllerPrice + '%) - $' + Number(scope.row.serviceFee) }}
|
|
71
|
+
</div>
|
|
72
|
+
</span>
|
|
73
|
+
<span v-else-if="isLme(form.quoteType) && form.contractType == 'sale'">
|
|
74
|
+
<div v-if="checkElementItem(scope.row.elementContent)">
|
|
75
|
+
{{ scope.row.quotePriceFormula + '+ $' + Number(scope.row.serviceFee) }}
|
|
76
|
+
</div>
|
|
77
|
+
<div v-else>
|
|
78
|
+
{{ '$(' + form.quoteType + ' * ' + scope.row.quotePrice + '%) + $' + Number(scope.row.serviceFee) }}
|
|
79
|
+
</div>
|
|
80
|
+
</span>
|
|
81
|
+
<span v-else-if="isCmx(form.quoteType) && form.contractType == 'purchase'">
|
|
82
|
+
{{ '${(' + form.quoteType + '-' + scope.row.sllerPrice + ')*2204.62} - $' + Number(scope.row.serviceFee) }}
|
|
83
|
+
</span>
|
|
84
|
+
<span v-else>
|
|
85
|
+
{{ '${(' + form.quoteType + '-' + scope.row.quotePrice + ')*2204.62} + $' + Number(scope.row.serviceFee) }}
|
|
86
|
+
</span>
|
|
87
|
+
</template>
|
|
88
|
+
</el-table-column>
|
|
89
|
+
</el-table>
|
|
90
|
+
</div>
|
|
91
|
+
<el-divider></el-divider>
|
|
92
|
+
|
|
93
|
+
<el-descriptions :column="1" :labelStyle="{ fontWeight: 'bold' }">
|
|
94
|
+
<el-descriptions-item label="Freight Terms">{{ form.freightTerms ? `Incoterms2020 ${form.freightTerms}` : '' }}</el-descriptions-item>
|
|
95
|
+
<el-descriptions-item label="Payment Terms">
|
|
96
|
+
<div>{{ form.paymentTermFullText }}</div>
|
|
97
|
+
</el-descriptions-item>
|
|
98
|
+
<el-descriptions-item label="Price Fixing Option" v-if="form.livePriceSwitch">
|
|
99
|
+
From the loading date to {{form.livePriceDays}} days {{form.livePriceForm}} cargo arrives at POD in {{form.livePriceUsertype}} option.
|
|
100
|
+
<span v-if="form.contractType == 'sale'">Time based on China Standard Time (UTC+8).</span>
|
|
101
|
+
</el-descriptions-item>
|
|
102
|
+
|
|
103
|
+
<el-descriptions-item label="Origin Country/Region">{{ form.originCountry }}</el-descriptions-item>
|
|
104
|
+
<el-descriptions-item label="Loading Country/Region">{{ form.loadingCountry }}</el-descriptions-item>
|
|
105
|
+
<el-descriptions-item label="Loading Port" v-if="form.freightTerms != 'EXW'">{{ form.originPort }}</el-descriptions-item>
|
|
106
|
+
<el-descriptions-item v-if="form.freightTerms != 'EXW'" label="Destination">{{ form.destination }}</el-descriptions-item>
|
|
107
|
+
<el-descriptions-item v-else label="EXW Address">{{ form.exw }}</el-descriptions-item>
|
|
108
|
+
<el-descriptions-item label="Containers">
|
|
109
|
+
{{ form.numberOfContainersForTwenty }}x 20' Container
|
|
110
|
+
<br />
|
|
111
|
+
{{ form.numberOfContainersForForty }}x 40' Container
|
|
112
|
+
<br />
|
|
113
|
+
{{ form.numberOfContainersForTwentyOrForty }}x 20'/40' Container
|
|
114
|
+
<br />
|
|
115
|
+
</el-descriptions-item>
|
|
116
|
+
<el-descriptions-item label="Latest shipment"
|
|
117
|
+
>The goods shall be fully loaded within {{ form.latestShipment }} days as of the date when the contract is signed</el-descriptions-item
|
|
118
|
+
>
|
|
119
|
+
<el-descriptions-item label="Required documents" v-if="isMobile">
|
|
120
|
+
<div style="display: flex; flex-direction: column">
|
|
121
|
+
<el-tag :key="tag" v-for="tag in dynamicTags" class="mr5" style="margin-top: 5px">{{ tag }}</el-tag>
|
|
122
|
+
</div>
|
|
123
|
+
</el-descriptions-item>
|
|
124
|
+
<el-descriptions-item label="Required documents" v-else>
|
|
125
|
+
<div style="display: flex; flex-wrap: wrap">
|
|
126
|
+
<el-tag :key="tag" v-for="tag in dynamicTags" class="mr5" style="margin-top: 5px">{{ tag }}</el-tag>
|
|
127
|
+
</div>
|
|
128
|
+
</el-descriptions-item>
|
|
129
|
+
<el-descriptions-item label="Shipment Quantity Tolerance"> ± {{ form.toleranceFloat * 100 }}%</el-descriptions-item>
|
|
130
|
+
<el-descriptions-item label="Shortage Tolerance"> <{{ form.weightTolerance }}%{{ form.weightToleranceWeight > 0 ? ` / ${form.weightToleranceWeight}kg` : '' }}</el-descriptions-item>
|
|
131
|
+
<el-descriptions-item label="Packing Type"> {{ form.packingMethod ? form.packingMethod.replace(/,/g, '/') : '' }}</el-descriptions-item>
|
|
132
|
+
<el-descriptions-item label="Partial Shipment"> {{ form.partialShipment }}</el-descriptions-item>
|
|
133
|
+
<el-descriptions-item label="Transshipment"> {{ form.transshipment }}</el-descriptions-item>
|
|
134
|
+
<el-descriptions-item label="Quality" v-if="form.qualityCertificateSwitch">{{ form.qualityCertificate }}</el-descriptions-item>
|
|
135
|
+
<el-descriptions-item label="Customs Rejection" v-if="form.returnedBearer">{{ form.returnedBearer && form.returnedBearer.toUpperCase() }} shall bear the return costs if goods are not in compliance with the required standards of the import country and are rejected by customs authoritie</el-descriptions-item>
|
|
136
|
+
<el-descriptions-item label="Claim" v-if="form.claimSwitch">
|
|
137
|
+
<div v-html="form.claim" style="white-space: pre-wrap; word-break: break-word;"></div>
|
|
138
|
+
</el-descriptions-item>
|
|
139
|
+
<el-descriptions-item label="Timeline of document submission" v-if="form.arbitrationSwitch">
|
|
140
|
+
<div v-html="form.arbitration" style="white-space: pre-wrap; word-break: break-word;"></div>
|
|
141
|
+
</el-descriptions-item>
|
|
142
|
+
<el-descriptions-item label="Specification" v-if="form.memoSwitch">{{ form.memo }}</el-descriptions-item>
|
|
143
|
+
<el-descriptions-item v-for="(item, index) in this.customClause" :label="item.title" :key="index">{{ item.content }}</el-descriptions-item>
|
|
144
|
+
</el-descriptions>
|
|
145
|
+
<!-- <div class="sign">Please sign below and return.</div> -->
|
|
146
|
+
<el-row :gutter="20">
|
|
147
|
+
<el-col :span="12">
|
|
148
|
+
<div class="company-sign">
|
|
149
|
+
<el-row>
|
|
150
|
+
<el-col :span="isMobile ? 12 : 6">
|
|
151
|
+
<div class="company-sign-title">Party A ({{form.contractType == 'sale' ? 'TTYY' : 'Seller'}})</div>
|
|
152
|
+
</el-col>
|
|
153
|
+
<slot name="seller" />
|
|
154
|
+
</el-row>
|
|
155
|
+
<div class="company-sign-title">Company Name:</div>
|
|
156
|
+
<div class="company-sign-text">{{ form.supplierContractCompany.companyEnglishName }}</div>
|
|
157
|
+
<div class="company-sign-title">Signature:</div>
|
|
158
|
+
<div class="company-sign-title">Print Name:
|
|
159
|
+
{{ form.contractType == 'sale' ? form.printName : ''}}
|
|
160
|
+
</div>
|
|
161
|
+
<div class="company-sign-title">Title:
|
|
162
|
+
{{ form.contractType == 'sale' ? form.printTitle : ''}}
|
|
163
|
+
</div>
|
|
164
|
+
<div class="company-sign-title">Date:</div>
|
|
165
|
+
<div class="company-sign-text">{{ parseTime(form.createTime, '{m}/{d}/{y}') }}</div>
|
|
166
|
+
</div>
|
|
167
|
+
</el-col>
|
|
168
|
+
<el-col :span="12">
|
|
169
|
+
<div class="company-sign">
|
|
170
|
+
<el-row>
|
|
171
|
+
<el-col :span="isMobile ? 12 : 6">
|
|
172
|
+
<div class="company-sign-title">Party B ({{form.contractType == 'sale' ? 'Buyer' : 'TTYY'}})</div>
|
|
173
|
+
</el-col>
|
|
174
|
+
<slot name="buyer" />
|
|
175
|
+
</el-row>
|
|
176
|
+
<div class="company-sign-title">Company Name:</div>
|
|
177
|
+
<div class="company-sign-text">{{ form.buyContractCompany.companyEnglishName }}</div>
|
|
178
|
+
<div class="company-sign-title">Signature:</div>
|
|
179
|
+
<div class="company-sign-title">Print Name:
|
|
180
|
+
{{ form.contractType != 'sale' ? form.printName : ''}}
|
|
181
|
+
</div>
|
|
182
|
+
<div class="company-sign-title">Title:
|
|
183
|
+
{{ form.contractType != 'sale' ? form.printTitle : ''}}
|
|
184
|
+
</div>
|
|
185
|
+
<div class="company-sign-title">Date:</div>
|
|
186
|
+
<div class="company-sign-text">{{ parseTime(form.createTime, '{m}/{d}/{y}') }}</div>
|
|
187
|
+
</div>
|
|
188
|
+
</el-col>
|
|
189
|
+
</el-row>
|
|
190
|
+
<slot name="select-contract-company"></slot>
|
|
191
|
+
</div>
|
|
192
|
+
</template>
|
|
193
|
+
|
|
194
|
+
<script>
|
|
195
|
+
|
|
196
|
+
export default {
|
|
197
|
+
name: 'ContractInfo',
|
|
198
|
+
props: {
|
|
199
|
+
form: {
|
|
200
|
+
type: Object,
|
|
201
|
+
default: null
|
|
202
|
+
},
|
|
203
|
+
dynamicTags: {
|
|
204
|
+
type: Array,
|
|
205
|
+
default: () => []
|
|
206
|
+
},
|
|
207
|
+
customClause: {
|
|
208
|
+
type: Array,
|
|
209
|
+
default: () => []
|
|
210
|
+
},
|
|
211
|
+
printModel: {
|
|
212
|
+
type: Boolean,
|
|
213
|
+
default: false
|
|
214
|
+
},
|
|
215
|
+
isMobile: {
|
|
216
|
+
type: Boolean,
|
|
217
|
+
default: false
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
components: { },
|
|
221
|
+
data() {
|
|
222
|
+
return {}
|
|
223
|
+
},
|
|
224
|
+
methods: {
|
|
225
|
+
//确认公司
|
|
226
|
+
confirmCompany(company, type) {
|
|
227
|
+
company.email = company.email && company.email.length > 0 ? company.email[0] : ''
|
|
228
|
+
company.phoneNumber = company.phoneNumber && company.phoneNumber.length > 0 ? company.phoneNumber[0] : ''
|
|
229
|
+
if (type == 'seller') {
|
|
230
|
+
this.$set(this.form, 'supplierContractCompany', company)
|
|
231
|
+
this.form.supplierContractCompanyId = company.contractCompanyId
|
|
232
|
+
this.form.supplierCompanyId = company.companyId
|
|
233
|
+
} else if (type == 'buyer') {
|
|
234
|
+
this.$set(this.form, 'buyContractCompany', company)
|
|
235
|
+
this.form.buyContractCompanyId = company.contractCompanyId
|
|
236
|
+
this.form.buyCompanyId = company.companyId
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
//选择合同公司
|
|
240
|
+
selectContractCompany(companyId, type) {
|
|
241
|
+
this.$refs.selectContractCompany.handleShow(companyId, type)
|
|
242
|
+
},
|
|
243
|
+
getSummaries(param) {
|
|
244
|
+
const { columns, data } = param
|
|
245
|
+
const sums = []
|
|
246
|
+
columns.forEach((column, index) => {
|
|
247
|
+
if (index === 0) {
|
|
248
|
+
sums[index] = 'Total'
|
|
249
|
+
return
|
|
250
|
+
}
|
|
251
|
+
const values = data.map((item) => Number(item[column.property]))
|
|
252
|
+
if (!values.every((value) => isNaN(value))) {
|
|
253
|
+
sums[index] = values.reduce((prev, curr) => {
|
|
254
|
+
const value = Number(curr)
|
|
255
|
+
if (!isNaN(value)) {
|
|
256
|
+
return prev + curr
|
|
257
|
+
} else {
|
|
258
|
+
return prev
|
|
259
|
+
}
|
|
260
|
+
}, 0)
|
|
261
|
+
if (index === 2) {
|
|
262
|
+
sums[index] += ''
|
|
263
|
+
} else if (index === 1) {
|
|
264
|
+
sums[index] = ''
|
|
265
|
+
} else {
|
|
266
|
+
sums[index] += ''
|
|
267
|
+
}
|
|
268
|
+
} else {
|
|
269
|
+
sums[index] = ''
|
|
270
|
+
}
|
|
271
|
+
})
|
|
272
|
+
|
|
273
|
+
return sums
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
</script>
|
|
278
|
+
<style lang="scss" scoped>
|
|
279
|
+
.info {
|
|
280
|
+
border: 1px solid #606676;
|
|
281
|
+
padding: 20px;
|
|
282
|
+
|
|
283
|
+
.type {
|
|
284
|
+
font-size: 13px;
|
|
285
|
+
font-weight: bold;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.title {
|
|
289
|
+
text-align: center;
|
|
290
|
+
font-size: 26px;
|
|
291
|
+
font-weight: bold;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.sub-title {
|
|
295
|
+
margin-top: 20px;
|
|
296
|
+
text-align: center;
|
|
297
|
+
font-size: 16px;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.company {
|
|
301
|
+
margin-top: 20px;
|
|
302
|
+
padding: 10px 20px;
|
|
303
|
+
border: 1px solid #000;
|
|
304
|
+
font-size: 10px;
|
|
305
|
+
height: 130px;
|
|
306
|
+
|
|
307
|
+
&-type {
|
|
308
|
+
font-size: 13px;
|
|
309
|
+
font-weight: bold;
|
|
310
|
+
margin-bottom: 10px;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
&-text {
|
|
314
|
+
margin-bottom: 10px;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.item {
|
|
319
|
+
display: flex;
|
|
320
|
+
justify-content: space-between;
|
|
321
|
+
align-items: center;
|
|
322
|
+
|
|
323
|
+
// 去掉所有的横线
|
|
324
|
+
::v-deep.el-table__cell {
|
|
325
|
+
border-bottom: none;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// 只去除表格的最最底部的横线
|
|
329
|
+
::v-deep .el-table--border::after,
|
|
330
|
+
::v-deep .el-table--group::after,
|
|
331
|
+
::v-deep .el-table::before {
|
|
332
|
+
background-color: transparent;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.sign {
|
|
337
|
+
height: 230px;
|
|
338
|
+
display: flex;
|
|
339
|
+
align-items: center;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.company-sign {
|
|
343
|
+
margin-top: 20px;
|
|
344
|
+
padding: 10px 20px;
|
|
345
|
+
font-size: 10px;
|
|
346
|
+
height: 130px;
|
|
347
|
+
margin-bottom: 20px;
|
|
348
|
+
|
|
349
|
+
&-title {
|
|
350
|
+
font-size: 13px;
|
|
351
|
+
font-weight: bold;
|
|
352
|
+
margin-bottom: 10px;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
&-text {
|
|
356
|
+
margin-bottom: 10px;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
.company-sign-text {
|
|
362
|
+
color: #606266;
|
|
363
|
+
font-size: 14px;
|
|
364
|
+
}
|
|
365
|
+
</style>
|
|
@@ -246,13 +246,14 @@
|
|
|
246
246
|
</el-form>
|
|
247
247
|
<div slot="footer" class="dialog-footer">
|
|
248
248
|
<el-button @click="cancel">取 消</el-button>
|
|
249
|
-
<el-button type="primary" @click="submitForm">确认上传</el-button>
|
|
249
|
+
<!-- <el-button type="primary" @click="submitForm">确认上传</el-button>
|
|
250
250
|
<el-button
|
|
251
251
|
v-if="type == 'deposit'"
|
|
252
252
|
type="primary"
|
|
253
253
|
@click="uploadAndGenerate"
|
|
254
254
|
>上传并生成收付款</el-button
|
|
255
|
-
>
|
|
255
|
+
> -->
|
|
256
|
+
<el-button type="primary" @click="submitForm">上传并发起审核</el-button>
|
|
256
257
|
</div>
|
|
257
258
|
<el-dialog
|
|
258
259
|
title="系统计算金额和发票金额不一致"
|
|
@@ -385,6 +386,7 @@ export default {
|
|
|
385
386
|
this.$refs["form"].validate((valid) => {
|
|
386
387
|
if (valid) {
|
|
387
388
|
console.log('type', this.type);
|
|
389
|
+
// deposit 定金; finally尾款
|
|
388
390
|
if (this.type == "finally") {
|
|
389
391
|
if(comfirmClickFlag) {
|
|
390
392
|
if(this.form.fixedInvoiceList[0].amount && this.purchaseBalanceMoney && this.form.fixedInvoiceList[0].amount != this.purchaseBalanceMoney) {
|
|
@@ -421,6 +423,7 @@ export default {
|
|
|
421
423
|
},
|
|
422
424
|
/** 展示按钮操作 */
|
|
423
425
|
handleUpload(row, type, shipmentId) {
|
|
426
|
+
// deposit 定金; finally尾款
|
|
424
427
|
console.log('row:', row)
|
|
425
428
|
this.reset();
|
|
426
429
|
this.type = type;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
3
|
+
* @Date: 2024-08-20 10:37:30
|
|
4
|
+
* @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
5
|
+
* @LastEditTime: 2024-08-23 13:49:18
|
|
6
|
+
* @FilePath: /doctor-admin-components 公共组件/packages/src/views/biz/contractTracing/queryDeductionRecords.vue
|
|
7
|
+
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
8
|
+
-->
|
|
9
|
+
<template>
|
|
10
|
+
<el-dialog
|
|
11
|
+
title="定金扣减记录"
|
|
12
|
+
:visible.sync="dialogVisible"
|
|
13
|
+
width="1200px"
|
|
14
|
+
:modal="false"
|
|
15
|
+
>
|
|
16
|
+
<el-table
|
|
17
|
+
:data="tableList"
|
|
18
|
+
:cell-style="{'text-align': 'center'}"
|
|
19
|
+
:header-cell-style="{'text-align': 'center'}"
|
|
20
|
+
>
|
|
21
|
+
<el-table-column
|
|
22
|
+
prop="billOfLadingNo"
|
|
23
|
+
label="提单号"
|
|
24
|
+
width="180">
|
|
25
|
+
</el-table-column>
|
|
26
|
+
<el-table-column
|
|
27
|
+
prop="containerNumber"
|
|
28
|
+
label="柜数"
|
|
29
|
+
width="180">
|
|
30
|
+
</el-table-column>
|
|
31
|
+
<el-table-column
|
|
32
|
+
prop="purchaseDepositTotalAmount"
|
|
33
|
+
label="定金总额">
|
|
34
|
+
<template slot-scope="{ row }">
|
|
35
|
+
{{ row.purchaseDepositTotalAmount ? "$" + $formatNumber(row.purchaseDepositTotalAmount, 2) : '0' }}
|
|
36
|
+
</template>
|
|
37
|
+
</el-table-column>
|
|
38
|
+
<el-table-column
|
|
39
|
+
prop="purchaseDepositBalance"
|
|
40
|
+
label="上次剩余定金">
|
|
41
|
+
<template slot-scope="{ row }">
|
|
42
|
+
{{ row.purchaseDepositBalance ? "$" + $formatNumber(row.purchaseDepositBalance,2) : '0' }}
|
|
43
|
+
</template>
|
|
44
|
+
</el-table-column>
|
|
45
|
+
<el-table-column
|
|
46
|
+
prop="purchaseDepositAmount"
|
|
47
|
+
label="扣减定金">
|
|
48
|
+
<template slot-scope="{ row }">
|
|
49
|
+
<span class="edit-style" v-if="row.purchaseDepositAmount" @click.stop="jumpFileManage(row)">{{ row.purchaseDepositAmount ? "$" + $formatNumber(row.purchaseDepositAmount, 2) : '0' }}</span>
|
|
50
|
+
<span v-else>0</span>
|
|
51
|
+
</template>
|
|
52
|
+
</el-table-column>
|
|
53
|
+
<el-table-column
|
|
54
|
+
prop="purchaseDepositRemainAmount"
|
|
55
|
+
label="定金余额">
|
|
56
|
+
<template slot-scope="{ row }">
|
|
57
|
+
{{ row.purchaseDepositRemainAmount ? "$" + $formatNumber(row.purchaseDepositRemainAmount, 2) : '0' }}
|
|
58
|
+
</template>
|
|
59
|
+
</el-table-column>
|
|
60
|
+
</el-table>
|
|
61
|
+
</el-dialog>
|
|
62
|
+
</template>
|
|
63
|
+
|
|
64
|
+
<script>
|
|
65
|
+
import { deductionRecords } from '../../../api/biz/bizShipment'
|
|
66
|
+
|
|
67
|
+
export default {
|
|
68
|
+
name: 'DoctorAdminComponentsQueryDeductionRecords',
|
|
69
|
+
|
|
70
|
+
data() {
|
|
71
|
+
return {
|
|
72
|
+
tableList:[],
|
|
73
|
+
dialogVisible: false
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
mounted() {
|
|
78
|
+
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
methods: {
|
|
82
|
+
handlerOpen(shipmentId) {
|
|
83
|
+
this.dialogVisible = true
|
|
84
|
+
deductionRecords({shipmentId}).then((res) => {
|
|
85
|
+
this.tableList = res.rows
|
|
86
|
+
})
|
|
87
|
+
},
|
|
88
|
+
jumpFileManage(row) {
|
|
89
|
+
window.open(`/contract/tracing/detail/${row.purchaseContractId}?activeName=fourth&deductionRecordsShipmentId=${row.shipmentId}`)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
</script>
|
|
96
|
+
|
|
97
|
+
<style lang="scss" scoped>
|
|
98
|
+
.edit-style {
|
|
99
|
+
cursor: pointer;
|
|
100
|
+
color: #409eff;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
</style>
|