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
|
@@ -1,188 +1,24 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="app-container">
|
|
3
3
|
<div class="info" id="printPdf">
|
|
4
|
-
<div
|
|
5
|
-
|
|
4
|
+
<div style="display: flex; justify-content: space-between; align-items: center">
|
|
5
|
+
<div class="type">
|
|
6
|
+
{{ contract.contractType == 'sale' ? 'Sales Contract' : 'Purchase Contract' }}
|
|
7
|
+
</div>
|
|
8
|
+
<div class="type" style="text-align: right">Contract Date: {{ $formatDate(contract.createTime) && $formatDate(contract.createTime).split(' ')[0] }}</div>
|
|
6
9
|
</div>
|
|
7
10
|
<div class="title">TTYY INTERNATIONAL LIMITED</div>
|
|
8
11
|
<div class="sub-title mb20">FLAT/RM 07, 12/F, CHEVALIER COMMERCIAL CENTRE 8, WANG HOI ROAD, KOWLOON BAY, KL, HONG KONG</div>
|
|
9
12
|
<el-row class="mb10">
|
|
10
13
|
<el-col :span="5">
|
|
11
|
-
{{ contract.contractType == 'sale' ? 'Sales Order
|
|
14
|
+
{{ contract.contractType == 'sale' ? 'Sales Order#:' : 'Purchase Order#:' }}
|
|
12
15
|
</el-col>
|
|
13
16
|
<el-col :span="7">{{ contract.contractNo }}</el-col>
|
|
14
|
-
<el-col :span="
|
|
15
|
-
<el-col :span="
|
|
17
|
+
<el-col :span="7">Reference#: </el-col>
|
|
18
|
+
<el-col :span="5">{{ contract.reference }}</el-col>
|
|
16
19
|
</el-row>
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
<el-col :span="12">
|
|
20
|
-
<div class="company">
|
|
21
|
-
<div class="company-type">Seller</div>
|
|
22
|
-
<div class="company-text">{{ contract.supplierContractCompany.companyEnglishName }}</div>
|
|
23
|
-
<div class="company-text">{{ contract.supplierContractCompany.address }}</div>
|
|
24
|
-
</div>
|
|
25
|
-
</el-col>
|
|
26
|
-
<el-col :span="12">
|
|
27
|
-
<div class="company">
|
|
28
|
-
<div class="company-type">Buyer</div>
|
|
29
|
-
<div class="company-text">{{ contract.buyContractCompany.companyEnglishName }}</div>
|
|
30
|
-
<div class="company-text">{{ contract.buyContractCompany.address }}</div>
|
|
31
|
-
</div>
|
|
32
|
-
</el-col>
|
|
33
|
-
</el-row>
|
|
34
|
-
<el-divider></el-divider>
|
|
35
|
-
<div class="item">
|
|
36
|
-
<el-table
|
|
37
|
-
:data="contract.contractDetailList"
|
|
38
|
-
:header-cell-style="{ backgroundColor: '#ffffff' }"
|
|
39
|
-
:row-style="{ border: 'none' }"
|
|
40
|
-
:summary-method="getSummaries"
|
|
41
|
-
show-summary
|
|
42
|
-
>
|
|
43
|
-
<el-table-column label="Description" align="center" prop="askName"></el-table-column>
|
|
44
|
-
<el-table-column label="Quantity" align="center" prop="weight">
|
|
45
|
-
<template slot-scope="scope">{{ CommonFormatNumber(scope.row.weight) }}MT</template>
|
|
46
|
-
</el-table-column>
|
|
47
|
-
<el-table-column label="Unit Price/MT" align="center" width="200">
|
|
48
|
-
<template slot-scope="{ row }">
|
|
49
|
-
<div v-if="contract.quoteType == 'FIXED'">
|
|
50
|
-
<span v-if="contract.contractType == 'sale'">${{ row.quotePrice }}</span>
|
|
51
|
-
<span v-else>${{ row.sllerPrice }}</span>
|
|
52
|
-
</div>
|
|
53
|
-
<div v-if="isCmx(contract.quoteType)">
|
|
54
|
-
<span v-if="contract.contractType == 'sale'">{{ `$(${contract.quoteType}-${row.quotePrice})*2204.62` }}</span>
|
|
55
|
-
<span v-else>{{ `$(${contract.quoteType}-${row.sllerPrice})*2204.62` }}</span>
|
|
56
|
-
</div>
|
|
57
|
-
<div v-if="isLme(contract.quoteType)">
|
|
58
|
-
<div v-if="checkElementItem(row.elementContent)">
|
|
59
|
-
{{ contract.contractType == 'sale' ? row.quotePriceFormula : row.sellerPriceFormula }}
|
|
60
|
-
</div>
|
|
61
|
-
<div v-else>
|
|
62
|
-
<span v-if="contract.contractType == 'sale'">{{ ` $(${contract.quoteType} *${row.quotePrice}%) ` }}</span>
|
|
63
|
-
<span v-else>{{ `$(${contract.quoteType} *${row.sllerPrice}%)` }}</span>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
</template>
|
|
67
|
-
</el-table-column>
|
|
68
|
-
|
|
69
|
-
<el-table-column label="Service fee/MT" align="center">
|
|
70
|
-
<template slot-scope="scope">${{ scope.row.serviceFee }}</template>
|
|
71
|
-
</el-table-column>
|
|
72
|
-
|
|
73
|
-
<!--总价-->
|
|
74
|
-
<el-table-column label="Net Unit Price/MT" align="center">
|
|
75
|
-
<template slot-scope="scope">
|
|
76
|
-
<span v-if="contract.quoteType == 'FIXED' && contract.contractType == 'purchase'">{{ '$' + (scope.row.sllerPrice - Number(scope.row.serviceFee)) }}</span>
|
|
77
|
-
<span v-else-if="contract.quoteType == 'FIXED' && contract.contractType == 'sale'">
|
|
78
|
-
{{ '$' + (Number(scope.row.quotePrice) + Number(scope.row.serviceFee)) }}
|
|
79
|
-
</span>
|
|
80
|
-
<span v-else-if="isLme(contract.quoteType) && contract.contractType == 'purchase'">
|
|
81
|
-
<div v-if="checkElementItem(scope.row.elementContent)">
|
|
82
|
-
{{ scope.row.sellerPriceFormula + '- $' + Number(scope.row.serviceFee) }}
|
|
83
|
-
</div>
|
|
84
|
-
<div v-else>
|
|
85
|
-
{{ '$(' + contract.quoteType + ' * ' + scope.row.sllerPrice + '%) - $' + Number(scope.row.serviceFee) }}
|
|
86
|
-
</div>
|
|
87
|
-
</span>
|
|
88
|
-
<span v-else-if="isLme(contract.quoteType) && contract.contractType == 'sale'">
|
|
89
|
-
<div v-if="checkElementItem(scope.row.elementContent)">
|
|
90
|
-
{{ scope.row.quotePriceFormula + '+ $' + Number(scope.row.serviceFee) }}
|
|
91
|
-
</div>
|
|
92
|
-
<div v-else>
|
|
93
|
-
{{ '$(' + contract.quoteType + ' * ' + scope.row.quotePrice + '%) + $' + Number(scope.row.serviceFee) }}
|
|
94
|
-
</div>
|
|
95
|
-
</span>
|
|
96
|
-
<span v-else-if="isCmx(contract.quoteType) && contract.contractType == 'purchase'">
|
|
97
|
-
{{ '${(' + contract.quoteType + '-' + scope.row.sllerPrice + ')*2204.62} - $' + Number(scope.row.serviceFee) }}
|
|
98
|
-
</span>
|
|
99
|
-
<span v-else>
|
|
100
|
-
{{ '${(' + contract.quoteType + '-' + scope.row.quotePrice + ')*2204.62} + $' + Number(scope.row.serviceFee) }}
|
|
101
|
-
</span>
|
|
102
|
-
</template>
|
|
103
|
-
</el-table-column>
|
|
104
|
-
</el-table>
|
|
105
|
-
</div>
|
|
106
|
-
<el-divider></el-divider>
|
|
107
|
-
|
|
108
|
-
<el-descriptions :column="1" :labelStyle="{ fontWeight: 'bold' }">
|
|
109
|
-
<el-descriptions-item label="Service Fee">{{ contract.serviceFee }}</el-descriptions-item>
|
|
110
|
-
<el-descriptions-item label="Freight Terms">{{ contract.freightTerms }}</el-descriptions-item>
|
|
111
|
-
<el-descriptions-item label="Payment Terms">
|
|
112
|
-
<div v-if="(contract.balanceDays || contract.balanceDays == 0) && contract.balance && contract.balancePaymentType && contract.balancePaymentForm">
|
|
113
|
-
<span v-if="contract.deposit"> Deposit ratio {{ contract.deposit }}% {{ contract.depositDays }} days {{ contract.depositPaymentForm }} and </span>
|
|
114
|
-
{{ contract.balance }}% balance {{ contract.balancePaymentType }} paid {{ contract.balanceDays }} days {{ contract.balancePaymentForm }}
|
|
115
|
-
{{ contract.otherPaymentTerm }}
|
|
116
|
-
</div>
|
|
117
|
-
<div v-else>{{ contract.otherPaymentTerm }}</div>
|
|
118
|
-
</el-descriptions-item>
|
|
119
|
-
<el-descriptions-item label="Price Fixing Option">
|
|
120
|
-
<div v-if="contract.livePriceSwitch">
|
|
121
|
-
{{ contract.livePriceDays }} Days {{ contract.livePriceForm }} cargo arrives at POD in
|
|
122
|
-
{{ contract.livePriceUsertype }}
|
|
123
|
-
{{ contract.livePriceType }}'s option
|
|
124
|
-
</div>
|
|
125
|
-
</el-descriptions-item>
|
|
126
|
-
|
|
127
|
-
<el-descriptions-item label="Origin Country/Region">{{ contract.originCountry }}</el-descriptions-item>
|
|
128
|
-
<el-descriptions-item label="Loading Country/Region">{{ contract.loadingCountry }}</el-descriptions-item>
|
|
129
|
-
<el-descriptions-item v-if="contract.freightTerms != 'EXW'" label="Destination">{{ contract.destination }}</el-descriptions-item>
|
|
130
|
-
<el-descriptions-item v-else label="EXW Address">{{ contract.exw }}</el-descriptions-item>
|
|
131
|
-
<el-descriptions-item label="Special Instructions">
|
|
132
|
-
{{ contract.numberOfContainersForTwenty }}x 20' Container
|
|
133
|
-
<br />
|
|
134
|
-
{{ contract.numberOfContainersForForty }}x 40' Container
|
|
135
|
-
<br />
|
|
136
|
-
{{ contract.numberOfContainersForTwentyOrForty }}x 20'/40' Container
|
|
137
|
-
<br />
|
|
138
|
-
More or less < {{ contract.toleranceFloat * 100 }}%
|
|
139
|
-
<br />
|
|
140
|
-
</el-descriptions-item>
|
|
141
|
-
<el-descriptions-item label="Latest shipment"> within {{ contract.latestShipment }} days of the contract signed date </el-descriptions-item>
|
|
142
|
-
<el-descriptions-item label="Required documents">
|
|
143
|
-
<el-tag :key="tag" v-for="tag in dynamicTags" class="mr5">{{ tag }}</el-tag>
|
|
144
|
-
</el-descriptions-item>
|
|
145
|
-
<el-descriptions-item label="Weight Tolerance">{{ contract.weightTolerance }}%</el-descriptions-item>
|
|
146
|
-
|
|
147
|
-
<el-descriptions-item label="Quality certificate" v-if="contract.qualityCertificateSwitch">{{ contract.qualityCertificate }}</el-descriptions-item>
|
|
148
|
-
<el-descriptions-item label="Claim" v-if="contract.claimSwitch">{{ contract.claim }}</el-descriptions-item>
|
|
149
|
-
|
|
150
|
-
<el-descriptions-item label="Arbitration" v-if="contract.arbitrationSwitch">{{ contract.arbitration }}</el-descriptions-item>
|
|
151
|
-
<el-descriptions-item label="Memo " v-if="contract.memoSwitch">{{ contract.memo }}</el-descriptions-item>
|
|
152
|
-
<el-descriptions-item v-for="(item, index) in this.customClause" :label="item.title" :key="index">{{ item.content }}</el-descriptions-item>
|
|
153
|
-
</el-descriptions>
|
|
154
|
-
<div class="sign">Please sign below and return.</div>
|
|
155
|
-
<el-row :gutter="20">
|
|
156
|
-
<el-col :span="12">
|
|
157
|
-
<div class="company-sign">
|
|
158
|
-
<el-row>
|
|
159
|
-
<el-col :span="5">
|
|
160
|
-
<div class="company-sign-title">Seller</div>
|
|
161
|
-
</el-col>
|
|
162
|
-
</el-row>
|
|
163
|
-
<div class="company-sign-title">Company Name:</div>
|
|
164
|
-
<div class="company-sign-text">{{ contract.supplierContractCompany.companyEnglishName }}</div>
|
|
165
|
-
<div class="company-sign-title">Signature:</div>
|
|
166
|
-
<div class="company-sign-title">Date:</div>
|
|
167
|
-
<div class="company-sign-text">{{ parseTime(contract.createTime, '{m}/{d}/{y}') }}</div>
|
|
168
|
-
</div>
|
|
169
|
-
</el-col>
|
|
170
|
-
<el-col :span="12">
|
|
171
|
-
<div class="company-sign">
|
|
172
|
-
<el-row>
|
|
173
|
-
<el-col :span="5">
|
|
174
|
-
<div class="company-sign-title">Buyer</div>
|
|
175
|
-
</el-col>
|
|
176
|
-
</el-row>
|
|
177
|
-
<div class="company-sign-title">Company Name:</div>
|
|
178
|
-
<div class="company-sign-text">{{ contract.buyContractCompany.companyEnglishName }}</div>
|
|
179
|
-
<div class="company-sign-title">Signature:</div>
|
|
180
|
-
<div class="company-sign-title">Date:</div>
|
|
181
|
-
<div class="company-sign-text">{{ parseTime(contract.createTime, '{m}/{d}/{y}') }}</div>
|
|
182
|
-
</div>
|
|
183
|
-
</el-col>
|
|
184
|
-
</el-row>
|
|
185
|
-
</div>
|
|
20
|
+
<info :form="contract" :dynamicTags="dynamicTags" :customClause="customClause"></info>
|
|
21
|
+
<contract-clause v-if="contract.contractClause" style="margin-top:60px" :form="contract"></contract-clause>
|
|
186
22
|
<div style="margin-left: 100px; margin-top: 20px">FLAT/RM 07, 12/F, CHEVALIER COMMERCIAL CENTRE 8, WANG HOI ROAD, KOWLOON BAY, KL, HONG KONG</div>
|
|
187
23
|
</div>
|
|
188
24
|
<div class="footer" v-if="!printModel">
|
|
@@ -194,6 +30,8 @@
|
|
|
194
30
|
<script>
|
|
195
31
|
import { exportPdf } from '../../../utils/pdf'
|
|
196
32
|
import { CommonFormatNumber } from '../../../utils/MycommonUtil'
|
|
33
|
+
import ContractClause from './contractClause'
|
|
34
|
+
import Info from './info'
|
|
197
35
|
|
|
198
36
|
export default {
|
|
199
37
|
name: 'ContractPdf',
|
|
@@ -228,7 +66,10 @@ export default {
|
|
|
228
66
|
default: () => []
|
|
229
67
|
}
|
|
230
68
|
},
|
|
231
|
-
components: {
|
|
69
|
+
components: {
|
|
70
|
+
ContractClause,
|
|
71
|
+
Info
|
|
72
|
+
},
|
|
232
73
|
data() {
|
|
233
74
|
return {
|
|
234
75
|
//争议选项
|
|
@@ -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,14 +12,14 @@
|
|
|
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)">
|