doctor-admin-components 1.0.14-beta.46 → 1.0.14-beta.48
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/package.json +1 -1
- package/packages/index.js +10 -3
- package/packages/src/index.js +12 -3
- package/packages/src/views/biz/contractTracing/contractClause.vue +284 -0
- package/packages/src/views/biz/contractTracing/contractClauseComponenrts/TextContent.vue +53 -0
- package/packages/src/views/biz/contractTracing/contractPdf.vue +8 -165
- package/packages/src/views/biz/contractTracing/info.vue +346 -0
package/package.json
CHANGED
package/packages/index.js
CHANGED
|
@@ -55,7 +55,10 @@ import {
|
|
|
55
55
|
VDistpicker,
|
|
56
56
|
ContractFileDragUpload,
|
|
57
57
|
FileShow,
|
|
58
|
-
ShipmentPurchaseAmount
|
|
58
|
+
ShipmentPurchaseAmount,
|
|
59
|
+
ContractClause,
|
|
60
|
+
ContractInfo
|
|
61
|
+
|
|
59
62
|
|
|
60
63
|
} from "./src";
|
|
61
64
|
// 组件列表
|
|
@@ -71,7 +74,9 @@ const components = [
|
|
|
71
74
|
VDistpicker,
|
|
72
75
|
ContractFileDragUpload,
|
|
73
76
|
FileShow,
|
|
74
|
-
ShipmentPurchaseAmount
|
|
77
|
+
ShipmentPurchaseAmount,
|
|
78
|
+
ContractClause,
|
|
79
|
+
ContractInfo
|
|
75
80
|
];
|
|
76
81
|
|
|
77
82
|
// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,那么所有的组件都会被注册
|
|
@@ -145,5 +150,7 @@ export default {
|
|
|
145
150
|
VDistpicker,
|
|
146
151
|
ContractFileDragUpload,
|
|
147
152
|
FileShow,
|
|
148
|
-
ShipmentPurchaseAmount
|
|
153
|
+
ShipmentPurchaseAmount,
|
|
154
|
+
ContractClause,
|
|
155
|
+
ContractInfo
|
|
149
156
|
};
|
package/packages/src/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: error: git config user.name && git config user.email & please set dead value or install git
|
|
3
3
|
* @Date: 2022-07-25 11:24:53
|
|
4
4
|
* @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
|
|
5
|
-
* @LastEditTime:
|
|
5
|
+
* @LastEditTime: 2025-05-13 17:25:39
|
|
6
6
|
* @FilePath: /zpw-com-test/src/lib-components/index.js
|
|
7
7
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
8
8
|
*/
|
|
@@ -24,6 +24,8 @@ import VDistpicker from "./views/components/RegionPicker/Distpicker.vue";
|
|
|
24
24
|
import ContractFileDragUpload from '../src/components/FileUpload/contract-drag-new.vue';
|
|
25
25
|
import FileShow from '../src/views/biz/bizFileInfo/fileShow.vue'
|
|
26
26
|
import ShipmentPurchaseAmount from '../src/views/biz/contractTracing/shipmentPurchaseAmount.vue'
|
|
27
|
+
import ContractClause from '../src/views/biz/contractTracing/contractClause.vue'
|
|
28
|
+
import ContractInfo from '../src/views/biz/contractTracing/info.vue'
|
|
27
29
|
|
|
28
30
|
// 为组件提供 install 安装方法,供按需引入
|
|
29
31
|
|
|
@@ -69,7 +71,12 @@ FileShow.install = function (Vue) {
|
|
|
69
71
|
ShipmentPurchaseAmount.install = function (Vue) {
|
|
70
72
|
Vue.component(ShipmentPurchaseAmount.name, ShipmentPurchaseAmount);
|
|
71
73
|
};
|
|
72
|
-
|
|
74
|
+
ContractClause.install = function (Vue) {
|
|
75
|
+
Vue.component(ContractClause.name, ContractClause);
|
|
76
|
+
};
|
|
77
|
+
ContractInfo.install = function (Vue) {
|
|
78
|
+
Vue.component(ContractInfo.name, ContractInfo);
|
|
79
|
+
};
|
|
73
80
|
|
|
74
81
|
// 导出组件
|
|
75
82
|
export {
|
|
@@ -83,5 +90,7 @@ export {
|
|
|
83
90
|
VDistpicker,
|
|
84
91
|
ContractFileDragUpload,
|
|
85
92
|
FileShow,
|
|
86
|
-
ShipmentPurchaseAmount
|
|
93
|
+
ShipmentPurchaseAmount,
|
|
94
|
+
ContractClause,
|
|
95
|
+
ContractInfo
|
|
87
96
|
};
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<h3 style="text-align: center">Additional Agreement</h3>
|
|
4
|
+
<div style="text-align: right;padding-right: 20px" v-if="editable">
|
|
5
|
+
<el-button type="text" @click="disable = !disable">{{ disable ? 'Edit' : 'View' }}</el-button>
|
|
6
|
+
</div>
|
|
7
|
+
<div v-if="form">
|
|
8
|
+
<div v-if="form.contractType == 'sale'">
|
|
9
|
+
<h3>ARTICLE 1 – DEFINITIONS</h3>
|
|
10
|
+
<div>
|
|
11
|
+
<text-content :form="form" :disable="disable" keys="definitions"></text-content>
|
|
12
|
+
</div>
|
|
13
|
+
<h3>ARTICLE 2 – Annexure of Inquiry Page Content</h3>
|
|
14
|
+
<div>
|
|
15
|
+
<text-content :form="form" :disable="disable" keys="annexure"></text-content>
|
|
16
|
+
</div>
|
|
17
|
+
<h3>ARTICLE 3 – ACCEPTANCE</h3>
|
|
18
|
+
<div>
|
|
19
|
+
<text-content :form="form" :disable="disable" keys="acceptance"></text-content>
|
|
20
|
+
</div>
|
|
21
|
+
<h3>ARTICLE 4 – INCONSISTENT COMMODITY NAMES</h3>
|
|
22
|
+
<div>
|
|
23
|
+
<text-content :form="form" :disable="disable" keys="inconsistent"></text-content>
|
|
24
|
+
</div>
|
|
25
|
+
<h3>ARTICLE 5 – QUALITY, CUSTOMS REJECTION</h3>
|
|
26
|
+
<div>
|
|
27
|
+
<text-content :form="form" :disable="disable" keys="quality"></text-content>
|
|
28
|
+
</div>
|
|
29
|
+
<h3>ARTICLE 6 – CLAIM</h3>
|
|
30
|
+
<div>
|
|
31
|
+
<text-content :form="form" :disable="disable" keys="claim"></text-content>
|
|
32
|
+
</div>
|
|
33
|
+
<h3>ARTICLE 7 – LOADING REQUIREMENT</h3>
|
|
34
|
+
<div>
|
|
35
|
+
<text-content :form="form" :disable="disable" keys="loadingRequirement"></text-content>
|
|
36
|
+
</div>
|
|
37
|
+
<h3>ARTICLE 8 – PAYMENT</h3>
|
|
38
|
+
<div>
|
|
39
|
+
<div v-if="form.quoteType != 'FIXED'">
|
|
40
|
+
The Buyer shall pay a deposit of {{form.deposit}} TTYY within {{form.depositDays}} days {{form.depositPaymentForm}}
|
|
41
|
+
The remaining {{form.balance}}% balance of the total Contract Price shall be paid by the Buyer to TTYY via Telegraphic Transfer ({{form.balanceDays}}) days no later than {{form.balancePaymentType}} days {{form.balancePaymentForm}}.
|
|
42
|
+
</div>
|
|
43
|
+
<div v-else>
|
|
44
|
+
The Buyer shall pay a deposit of {{form.deposit}} of the total Contract Price to TTYY within {{form.depositDays}} days {{form.depositPaymentForm}}
|
|
45
|
+
The remaining {{form.balance}}% balance of the total Contract Price shall be paid by the Buyer to TTYY via Telegraphic Transfer ({{form.balancePaymentType}}) no later than {{form.balanceDays}} days {{form.balancePaymentForm}}.
|
|
46
|
+
</div>
|
|
47
|
+
The Buyer shall ensure that all payments are made free and clear of any deductions, charges, fees, or withholdings imposed by any governmental or regulatory authority. If any such deductions or withholdings are required by law, the Buyer shall increase the amount payable to TTYY so that, after any such deductions or withholdings, TTYY receives an amount equal to the Contract Price.
|
|
48
|
+
If the Buyer fails to make any payment within the stipulated time frames, TTYY shall be entitled to charge interest on the overdue amount at a rate of 0.05% per day from the due date until the date of actual payment.
|
|
49
|
+
</div>
|
|
50
|
+
<h3>ARTICLE 9 – FLOATING PRICE</h3>
|
|
51
|
+
<div v-if="form.quoteType != 'FIXED'">
|
|
52
|
+
Price Period: The {{form.livePriceUsertype}} has the pricing authority option from container loaded date until {{form.livePriceDays}} days {{form.livePriceForm}} it arrives at the port.
|
|
53
|
+
FOR PRICING the Buyer and TTYY can communicate through email, Wechat group, WhatsApp group, phone call or the pricing function button of the APP.
|
|
54
|
+
The pricing will be determined based on the local working hours of either the Seller or the Buyer who provides the price option.
|
|
55
|
+
If the Buyer is unable to fix the price within the agreed Price Fixing Period, the Buyer may request an extension. The request for extension must be submitted in writing to TTYY before the expiration of the initial Price Fixing Period.
|
|
56
|
+
The Buyer acknowledges and agrees that an extension of the Price Fixing Period shall be subject to supplier’s allowance.
|
|
57
|
+
The Buyer shall make a prompt payment (within two working days) to the Seller, amounting to 110% of the provisional pricing formula based on the LME/CME reference price on the day and at the time the Buyer declared the exercise of the Extension Option.
|
|
58
|
+
TTYY’s supplier reserves the right to approve or deny any request for an extension of the Price Fixing Period in its sole discretion. The granting of an extension does not constitute a waiver of TTYY's rights under this Contract.
|
|
59
|
+
If the Buyer fails to fix the price within the Price Fixing Period, including any extended period granted by TTYY, TTYY shall have the right to determine the contract price based on the Market Closing Price of the Price Fixing Deadline.
|
|
60
|
+
Any extension of the Price Fixing Period shall be the final extension, and no further extensions shall be granted unless otherwise agreed upon in writing by the parties.
|
|
61
|
+
</div>
|
|
62
|
+
<h3>ARTICLE 10 – MARGIN CALL</h3>
|
|
63
|
+
<div>
|
|
64
|
+
<text-content :form="form" :disable="disable" keys="saleMarginCall"></text-content>
|
|
65
|
+
</div>
|
|
66
|
+
<h3>ARTICLE 11 – PRICE ADJUSTMENT</h3>
|
|
67
|
+
<div>
|
|
68
|
+
<text-content :form="form" :disable="disable" keys="priceAdjustment"></text-content>
|
|
69
|
+
</div>
|
|
70
|
+
<h3>ARTICLE 12 - PACKING, DELIVERY, SHIPPING & RISK OF LOSS</h3>
|
|
71
|
+
<div>
|
|
72
|
+
The delivery terms shall be set forth on the first page of the Contract. The Contract includes standard commercial packaging for the goods. When special or export packaging is required or requested, the cost of the special packaging will be separately invoiced.
|
|
73
|
+
<br/><br/>
|
|
74
|
+
If the Buyer pays the deposit late (if the delay is within {{form.latestShipment}} days of the original contract deposit, the contract will be extended; if the delay exceeds {{form.latestShipment}} days, the delivery time cannot be guaranteed), the goods will be shipped within {{form.latestShipment}} days from the date of deposit payment.
|
|
75
|
+
<br/><br/>
|
|
76
|
+
To be arranged by the Seller within {{form.latestShipment}} days from the date of signature of this Agreement. (For sake of clarity, within the above deadline, the Seller shall be obliged to arrange for the loading of the Material in the containers, not for the loading onboard the vessel (which will be reflected in the Shipped on Board date of BL). Seller has no control over shipping delays caused by the carrier and can therefore be responsible only for the date by which the material is loaded in the container, not for the date of loading onboard the vessel or for the sailing date. If container sailing is delayed due to delays by the shipping lines, by customs, and/or by causes of force majeure, if by the expiry of the above deadline, the Material has not yet been loaded into the respective containers, In the event that the Buyer does not exercise its cancellation notice to the seller 3 days’ before deadline as per above, this Agreement shall be automatically extended for additional 45 days. In any case, the Buyer shall not be entitled to cancel this Agreement once the Material is loaded into the containers and notice thereof has been given by the Seller to the Buyer.
|
|
77
|
+
</div>
|
|
78
|
+
<h3>ARTICLE 13 - AS IS; NO WARRANTY</h3>
|
|
79
|
+
<div>
|
|
80
|
+
<text-content :form="form" :disable="disable" keys="saleNoWarranty"></text-content>
|
|
81
|
+
</div>
|
|
82
|
+
<h3>ARTICLE 14 - TAXES, DUTIES, FEES</h3>
|
|
83
|
+
<div>
|
|
84
|
+
<text-content :form="form" :disable="disable" keys="saleTaxes"></text-content>
|
|
85
|
+
</div>
|
|
86
|
+
<h3>ARTICLE 15 - LICENSES/PERMITS</h3>
|
|
87
|
+
<div>
|
|
88
|
+
<text-content :form="form" :disable="disable" keys="licenses"></text-content>
|
|
89
|
+
</div>
|
|
90
|
+
<h3>ARTICLE 16 - COMPLIANCE WITH LAWS AND STATUTORY REGULATIONS</h3>
|
|
91
|
+
<div>
|
|
92
|
+
<text-content :form="form" :disable="disable" keys="complianceWithLaws"></text-content>
|
|
93
|
+
</div>
|
|
94
|
+
<h3>ARTICLE 17 - CANCELLATION AND TERMINATION</h3>
|
|
95
|
+
<div>
|
|
96
|
+
<text-content :form="form" :disable="disable" keys="cancellation"></text-content>
|
|
97
|
+
</div>
|
|
98
|
+
<h3>ARTICLE 18 - LIMITATION OF LIABILITY</h3>
|
|
99
|
+
<div>
|
|
100
|
+
<text-content :form="form" :disable="disable" keys="limitation"></text-content>
|
|
101
|
+
</div>
|
|
102
|
+
<h3>ARTICLE 19 – DISPUTES</h3>
|
|
103
|
+
<div>
|
|
104
|
+
<text-content :form="form" :disable="disable" keys="disputes"></text-content>
|
|
105
|
+
</div>
|
|
106
|
+
<h3>ARTICLE 20 - LAW GOVERNING CONTRACT</h3>
|
|
107
|
+
<div>
|
|
108
|
+
<text-content :form="form" :disable="disable" keys="lawGoverning"></text-content>
|
|
109
|
+
</div>
|
|
110
|
+
<h3>ARTICLE 21 – SEVERABILITY</h3>
|
|
111
|
+
<div>
|
|
112
|
+
<text-content :form="form" :disable="disable" keys="severability"></text-content>
|
|
113
|
+
</div>
|
|
114
|
+
<h3>ARTICLE 22 – ASSIGNMENT</h3>
|
|
115
|
+
<div>
|
|
116
|
+
<text-content :form="form" :disable="disable" keys="assignment"></text-content>
|
|
117
|
+
</div>
|
|
118
|
+
<h3>ARTICLE 23 – WAIVER</h3>
|
|
119
|
+
<div>
|
|
120
|
+
<text-content :form="form" :disable="disable" keys="waiver"></text-content>
|
|
121
|
+
</div>
|
|
122
|
+
<h3>ARTICLE 24 – NONDISCLOSURE</h3>
|
|
123
|
+
<div>
|
|
124
|
+
<text-content :form="form" :disable="disable" keys="saleNoNdisclosure"></text-content>
|
|
125
|
+
</div>
|
|
126
|
+
<h3>ARTICLE 25 - EXCUSABLE DELAYS</h3>
|
|
127
|
+
<div>
|
|
128
|
+
<text-content :form="form" :disable="disable" keys="excusable"></text-content>
|
|
129
|
+
</div>
|
|
130
|
+
<h3>ARTICLE 26 – LANGUAGE</h3>
|
|
131
|
+
<div>
|
|
132
|
+
<text-content :form="form" :disable="disable" keys="language"></text-content>
|
|
133
|
+
</div>
|
|
134
|
+
<h3>ARTICLE 27 – MISCELLANEOUS</h3>
|
|
135
|
+
<div>
|
|
136
|
+
<text-content :form="form" :disable="disable" keys="miscellaneous"></text-content>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
<div v-else>
|
|
140
|
+
<h3>ARTICLE 1 – DEFINITIONS</h3>
|
|
141
|
+
<div>
|
|
142
|
+
<text-content :form="form" :disable="disable" keys="definitions"></text-content>
|
|
143
|
+
</div>
|
|
144
|
+
<h3>ARTICLE 2 – Annexure of Inquiry Page Content</h3>
|
|
145
|
+
<div>
|
|
146
|
+
<text-content :form="form" :disable="disable" keys="annexure"></text-content>
|
|
147
|
+
</div>
|
|
148
|
+
<h3>ARTICLE 3 – ACCEPTANCE</h3>
|
|
149
|
+
<div>
|
|
150
|
+
<text-content :form="form" :disable="disable" keys="acceptance"></text-content>
|
|
151
|
+
</div>
|
|
152
|
+
<h3>ARTICLE 4 – INCONSISTENT COMMODITY NAMES</h3>
|
|
153
|
+
<div>
|
|
154
|
+
<text-content :form="form" :disable="disable" keys="inconsistent"></text-content>
|
|
155
|
+
</div>
|
|
156
|
+
<h3>ARTICLE 5 – QUALITY, CUSTOMS REJECTION</h3>
|
|
157
|
+
<div>
|
|
158
|
+
<text-content :form="form" :disable="disable" keys="quality"></text-content>
|
|
159
|
+
</div>
|
|
160
|
+
<h3>ARTICLE 6 – CLAIM</h3>
|
|
161
|
+
<div>
|
|
162
|
+
<text-content :form="form" :disable="disable" keys="claim"></text-content>
|
|
163
|
+
</div>
|
|
164
|
+
<h3>ARTICLE 7 – LOADING REQUIREMENT</h3>
|
|
165
|
+
<div>
|
|
166
|
+
<text-content :form="form" :disable="disable" keys="loadingRequirement"></text-content>
|
|
167
|
+
</div>
|
|
168
|
+
<h3>ARTICLE 8 – PAYMENT</h3>
|
|
169
|
+
<div>
|
|
170
|
+
<div v-if="form.quoteType != 'FIXED'">TTYY's downstream customers shall pay a deposit of {{form.deposit}} the Seller within {{form.depositDays}} days {{form.depositPaymentForm}}.</div>
|
|
171
|
+
<div> TTYY's downstream customers shall pay a deposit of {{form.deposit}} of the total Contract Price to the Seller within {{form.depositDays}} days {{form.depositPaymentForm}}.</div>
|
|
172
|
+
The remaining {{form.balance}}% balance of the total Contract Price shall be paid to the Seller via Telegraphic Transfer ({{form.balancePaymentType}}) no later than {{form.balanceDays}} days {{form.balancePaymentForm}}.
|
|
173
|
+
</div>
|
|
174
|
+
<h3>AARTICLE 9 – FLOATING PRICE</h3>
|
|
175
|
+
<div v-if="form.quoteType != 'FIXED'">
|
|
176
|
+
Price Period: The {{form.livePriceUserType}} has the pricing option from container loaded date until {{form.livePriceDays}} days {{form.livePriceForm}} it arrives at the port.
|
|
177
|
+
FOR PRICING the Seller and TTYY can communicate through email, Wechat group, WhatsApp group,Make a phone call or the pricing function button of the APP.
|
|
178
|
+
The pricing will be determined based on the local working hours of either the Seller or the Buyer who provides the price option.
|
|
179
|
+
If one party is unable to fix the price within the agreed Price Fixing Period, it is permitted to apply for an extension pricing period application.The other party have the right to evaluate and offer extension pricing period or not.
|
|
180
|
+
</div>
|
|
181
|
+
<h3>ARTICLE 10 – PRICE ADJUSTMENT</h3>
|
|
182
|
+
<div>
|
|
183
|
+
<text-content :form="form" :disable="disable" keys="priceAdjustment"></text-content>
|
|
184
|
+
</div>
|
|
185
|
+
<h3>ARTICLE 11 – PACKING, DELIVERY, SHIPPING & RISK OF LOSS</h3>
|
|
186
|
+
<div>
|
|
187
|
+
<text-content :form="form" :disable="disable" keys="purchasePacking"></text-content>
|
|
188
|
+
</div>
|
|
189
|
+
<h3>ARTICLE 12 - SHIPMENT PERIOD</h3>
|
|
190
|
+
<div>
|
|
191
|
+
<text-content :form="form" :disable="disable" keys="purchaseShipmentPeriod"></text-content>
|
|
192
|
+
</div>
|
|
193
|
+
<h3>ARTICLE 13 - TAXES, DUTIES, FEES</h3>
|
|
194
|
+
<div>
|
|
195
|
+
<text-content :form="form" :disable="disable" keys="saleTaxes"></text-content>
|
|
196
|
+
</div>
|
|
197
|
+
<h3>ARTICLE 14 - LICENSES/PERMITS</h3>
|
|
198
|
+
<div>
|
|
199
|
+
<text-content :form="form" :disable="disable" keys="licenses"></text-content>
|
|
200
|
+
</div>
|
|
201
|
+
<h3>ARTICLE 15 - COMPLIANCE WITH LAWS AND STATUTORY REGULATIONS</h3>
|
|
202
|
+
<div>
|
|
203
|
+
<text-content :form="form" :disable="disable" keys="complianceWithLaws"></text-content>
|
|
204
|
+
</div>
|
|
205
|
+
<h3>AARTICLE 16 - CANCELLATION AND TERMINATION</h3>
|
|
206
|
+
<div>
|
|
207
|
+
<text-content :form="form" :disable="disable" keys="cancellation"></text-content>
|
|
208
|
+
</div>
|
|
209
|
+
<h3>ARTICLE 17 - LIMITATION OF LIABILITY</h3>
|
|
210
|
+
<div>
|
|
211
|
+
<text-content :form="form" :disable="disable" keys="limitation"></text-content>
|
|
212
|
+
</div>
|
|
213
|
+
<h3>ARTICLE 18 – DISPUTES</h3>
|
|
214
|
+
<div>
|
|
215
|
+
<text-content :form="form" :disable="disable" keys="disputes"></text-content>
|
|
216
|
+
</div>
|
|
217
|
+
<h3>ARTICLE 19 - LAW GOVERNING CONTRACT</h3>
|
|
218
|
+
<div>
|
|
219
|
+
<text-content :form="form" :disable="disable" keys="lawGoverning"></text-content>
|
|
220
|
+
</div>
|
|
221
|
+
<h3>ARTICLE 20 – SEVERABILITY</h3>
|
|
222
|
+
<div>
|
|
223
|
+
<text-content :form="form" :disable="disable" keys="severability"></text-content>
|
|
224
|
+
</div>
|
|
225
|
+
<h3>ARTICLE 21 – ASSIGNMENT</h3>
|
|
226
|
+
<div>
|
|
227
|
+
<text-content :form="form" :disable="disable" keys="assignment"></text-content>
|
|
228
|
+
</div>
|
|
229
|
+
<h3>ARTICLE 22 – WAIVER</h3>
|
|
230
|
+
<div>
|
|
231
|
+
<text-content :form="form" :disable="disable" keys="waiver"></text-content>
|
|
232
|
+
</div>
|
|
233
|
+
<h3>ARTICLE 23 - EXCUSABLE DELAYS</h3>
|
|
234
|
+
<div>
|
|
235
|
+
<text-content :form="form" :disable="disable" keys="excusable"></text-content>
|
|
236
|
+
</div>
|
|
237
|
+
<h3>ARTICLE 24 – INSURANCE</h3>
|
|
238
|
+
<div>
|
|
239
|
+
<text-content :form="form" :disable="disable" keys="purchaseInsurance"></text-content>
|
|
240
|
+
</div>
|
|
241
|
+
<h3>ARTICLE 25 – LANGUAGE</h3>
|
|
242
|
+
<div>
|
|
243
|
+
<text-content :form="form" :disable="disable" keys="language"></text-content>
|
|
244
|
+
</div>
|
|
245
|
+
<h3>ARTICLE 26 – MISCELLANEOUS</h3>
|
|
246
|
+
<div>
|
|
247
|
+
<text-content :form="form" :disable="disable" keys="miscellaneous"></text-content>
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
</div>
|
|
251
|
+
</div>
|
|
252
|
+
</template>
|
|
253
|
+
<script>
|
|
254
|
+
import TextContent from './contractClauseComponenrts/TextContent'
|
|
255
|
+
export default {
|
|
256
|
+
name: 'ContractClause',
|
|
257
|
+
props: {
|
|
258
|
+
form: {
|
|
259
|
+
type: Object,
|
|
260
|
+
default: null
|
|
261
|
+
},
|
|
262
|
+
editable: {
|
|
263
|
+
type: Boolean,
|
|
264
|
+
default: false
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
components: {
|
|
268
|
+
TextContent
|
|
269
|
+
},
|
|
270
|
+
data() {
|
|
271
|
+
return {
|
|
272
|
+
disable: true
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
created() {
|
|
276
|
+
},
|
|
277
|
+
methods: {
|
|
278
|
+
disableEdit() {
|
|
279
|
+
this.disable = true
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
</script>
|
|
284
|
+
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="text-content-text" v-if="disable">{{ form['contractClause'][keys] }}</div>
|
|
4
|
+
<el-input v-else type="textarea" v-model="form['contractClause'][keys]" :autosize="{ minRows: 3}"></el-input>
|
|
5
|
+
</div>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script>
|
|
9
|
+
export default {
|
|
10
|
+
name: 'TextContent',
|
|
11
|
+
props: {
|
|
12
|
+
form: {
|
|
13
|
+
type: Object,
|
|
14
|
+
default: () => {}
|
|
15
|
+
},
|
|
16
|
+
disable: {
|
|
17
|
+
type: Boolean,
|
|
18
|
+
default: true
|
|
19
|
+
},
|
|
20
|
+
keys: {
|
|
21
|
+
type: String,
|
|
22
|
+
default: ''
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
data() {
|
|
27
|
+
return {
|
|
28
|
+
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
mounted() {
|
|
33
|
+
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
methods: {
|
|
37
|
+
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<style lang="scss" scoped>
|
|
43
|
+
.text-content-text {
|
|
44
|
+
white-space: pre-wrap;
|
|
45
|
+
word-break:break-word;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.contract-textarea {
|
|
49
|
+
width: 100%;
|
|
50
|
+
height: max-content;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
</style>
|
|
@@ -14,170 +14,8 @@
|
|
|
14
14
|
<el-col :span="5">Reference#: {{ contract.reference }}</el-col>
|
|
15
15
|
<el-col :span="7"></el-col>
|
|
16
16
|
</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
|
-
{{ contract.paymentTermFullText }}
|
|
113
|
-
</el-descriptions-item>
|
|
114
|
-
<el-descriptions-item label="Price Fixing Option">
|
|
115
|
-
<div v-if="contract.livePriceSwitch">
|
|
116
|
-
{{ contract.livePriceDays }} Days {{ contract.livePriceForm }} cargo arrives at POD in
|
|
117
|
-
{{ contract.livePriceUsertype }}
|
|
118
|
-
{{ contract.livePriceType }}'s option
|
|
119
|
-
</div>
|
|
120
|
-
</el-descriptions-item>
|
|
121
|
-
|
|
122
|
-
<el-descriptions-item label="Origin Country/Region">{{ contract.originCountry }}</el-descriptions-item>
|
|
123
|
-
<el-descriptions-item label="Loading Country/Region">{{ contract.loadingCountry }}</el-descriptions-item>
|
|
124
|
-
<el-descriptions-item v-if="contract.freightTerms != 'EXW'" label="Destination">{{ contract.destination }}</el-descriptions-item>
|
|
125
|
-
<el-descriptions-item v-else label="EXW Address">{{ contract.exw }}</el-descriptions-item>
|
|
126
|
-
<el-descriptions-item label="Special Instructions">
|
|
127
|
-
{{ contract.numberOfContainersForTwenty }}x 20' Container
|
|
128
|
-
<br />
|
|
129
|
-
{{ contract.numberOfContainersForForty }}x 40' Container
|
|
130
|
-
<br />
|
|
131
|
-
{{ contract.numberOfContainersForTwentyOrForty }}x 20'/40' Container
|
|
132
|
-
<br />
|
|
133
|
-
More or less < {{ contract.toleranceFloat * 100 }}%
|
|
134
|
-
<br />
|
|
135
|
-
</el-descriptions-item>
|
|
136
|
-
<el-descriptions-item label="Latest shipment"> within {{ contract.latestShipment }} days of the contract signed date </el-descriptions-item>
|
|
137
|
-
<el-descriptions-item label="Required documents">
|
|
138
|
-
<el-tag :key="tag" v-for="tag in dynamicTags" class="mr5">{{ tag }}</el-tag>
|
|
139
|
-
</el-descriptions-item>
|
|
140
|
-
<el-descriptions-item label="Weight Tolerance">{{ contract.weightTolerance }}%</el-descriptions-item>
|
|
141
|
-
|
|
142
|
-
<el-descriptions-item label="Quality certificate" v-if="contract.qualityCertificateSwitch">{{ contract.qualityCertificate }}</el-descriptions-item>
|
|
143
|
-
<el-descriptions-item label="Claim" v-if="contract.claimSwitch">{{ contract.claim }}</el-descriptions-item>
|
|
144
|
-
|
|
145
|
-
<el-descriptions-item label="Arbitration" v-if="contract.arbitrationSwitch">{{ contract.arbitration }}</el-descriptions-item>
|
|
146
|
-
<el-descriptions-item label="Memo " v-if="contract.memoSwitch">{{ contract.memo }}</el-descriptions-item>
|
|
147
|
-
<el-descriptions-item v-for="(item, index) in this.customClause" :label="item.title" :key="index">{{ item.content }}</el-descriptions-item>
|
|
148
|
-
</el-descriptions>
|
|
149
|
-
<div class="sign">Please sign below and return.</div>
|
|
150
|
-
<el-row :gutter="20">
|
|
151
|
-
<el-col :span="12">
|
|
152
|
-
<div class="company-sign">
|
|
153
|
-
<el-row>
|
|
154
|
-
<el-col :span="5">
|
|
155
|
-
<div class="company-sign-title">Seller</div>
|
|
156
|
-
</el-col>
|
|
157
|
-
</el-row>
|
|
158
|
-
<div class="company-sign-title">Company Name:</div>
|
|
159
|
-
<div class="company-sign-text">{{ contract.supplierContractCompany.companyEnglishName }}</div>
|
|
160
|
-
<div class="company-sign-title">Signature:</div>
|
|
161
|
-
<div class="company-sign-title">Date:</div>
|
|
162
|
-
<div class="company-sign-text">{{ parseTime(contract.createTime, '{m}/{d}/{y}') }}</div>
|
|
163
|
-
</div>
|
|
164
|
-
</el-col>
|
|
165
|
-
<el-col :span="12">
|
|
166
|
-
<div class="company-sign">
|
|
167
|
-
<el-row>
|
|
168
|
-
<el-col :span="5">
|
|
169
|
-
<div class="company-sign-title">Buyer</div>
|
|
170
|
-
</el-col>
|
|
171
|
-
</el-row>
|
|
172
|
-
<div class="company-sign-title">Company Name:</div>
|
|
173
|
-
<div class="company-sign-text">{{ contract.buyContractCompany.companyEnglishName }}</div>
|
|
174
|
-
<div class="company-sign-title">Signature:</div>
|
|
175
|
-
<div class="company-sign-title">Date:</div>
|
|
176
|
-
<div class="company-sign-text">{{ parseTime(contract.createTime, '{m}/{d}/{y}') }}</div>
|
|
177
|
-
</div>
|
|
178
|
-
</el-col>
|
|
179
|
-
</el-row>
|
|
180
|
-
</div>
|
|
17
|
+
<info :form="contract" :dynamicTags="dynamicTags" :customClause="customClause"></info>
|
|
18
|
+
<contract-clause style="margin-top:60px" :form="contract.contractClause"></contract-clause>
|
|
181
19
|
<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>
|
|
182
20
|
</div>
|
|
183
21
|
<div class="footer" v-if="!printModel">
|
|
@@ -189,6 +27,8 @@
|
|
|
189
27
|
<script>
|
|
190
28
|
import { exportPdf } from '../../../utils/pdf'
|
|
191
29
|
import { CommonFormatNumber } from '../../../utils/MycommonUtil'
|
|
30
|
+
import ContractClause from './contractClause'
|
|
31
|
+
import Info from './info'
|
|
192
32
|
|
|
193
33
|
export default {
|
|
194
34
|
name: 'ContractPdf',
|
|
@@ -223,7 +63,10 @@ export default {
|
|
|
223
63
|
default: () => []
|
|
224
64
|
}
|
|
225
65
|
},
|
|
226
|
-
components: {
|
|
66
|
+
components: {
|
|
67
|
+
ContractClause,
|
|
68
|
+
Info
|
|
69
|
+
},
|
|
227
70
|
data() {
|
|
228
71
|
return {
|
|
229
72
|
//争议选项
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div v-if="form">
|
|
3
|
+
<el-row :gutter="20">
|
|
4
|
+
<el-col :span="12">
|
|
5
|
+
<div class="company">
|
|
6
|
+
<div class="company-type">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">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 }}MT</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/MT" align="center">
|
|
55
|
+
<template slot-scope="scope">${{ scope.row.serviceFee }}</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 }}</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
|
+
{{ form.livePriceDays }} Days {{ form.livePriceForm }} cargo arrives at POD in
|
|
100
|
+
{{ form.livePriceUsertype }}
|
|
101
|
+
{{ form.livePriceType }}'s option
|
|
102
|
+
</el-descriptions-item>
|
|
103
|
+
|
|
104
|
+
<el-descriptions-item label="Origin Country/Region">{{ form.originCountry }}</el-descriptions-item>
|
|
105
|
+
<el-descriptions-item label="Loading Country/Region">{{ form.loadingCountry }}</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.weightTolerance * 100 }}%</el-descriptions-item>
|
|
130
|
+
<el-descriptions-item label="Shortage Tolerance"> <{{ form.toleranceFloat }}% or {{ form.weightToleranceWeight }} kg</el-descriptions-item>
|
|
131
|
+
<el-descriptions-item label="Packing Type"> {{ form.packingMethod ? form.packingMethod.replace(',', '/') : '' }}</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="Claim" v-if="form.claimSwitch">{{ form.claim }}</el-descriptions-item>
|
|
136
|
+
<el-descriptions-item label="Timeline of document submission" v-if="form.arbitrationSwitch">{{ form.arbitration }}</el-descriptions-item>
|
|
137
|
+
<el-descriptions-item label="Specification" v-if="form.memoSwitch">{{ form.memo }}</el-descriptions-item>
|
|
138
|
+
<el-descriptions-item v-for="(item, index) in this.customClause" :label="item.title" :key="index">{{ item.content }}</el-descriptions-item>
|
|
139
|
+
</el-descriptions>
|
|
140
|
+
<!-- <div class="sign">Please sign below and return.</div> -->
|
|
141
|
+
<el-row :gutter="20">
|
|
142
|
+
<el-col :span="12">
|
|
143
|
+
<div class="company-sign">
|
|
144
|
+
<el-row>
|
|
145
|
+
<el-col :span="isMobile ? 8 : 5">
|
|
146
|
+
<div class="company-sign-title">Seller</div>
|
|
147
|
+
</el-col>
|
|
148
|
+
<slot name="seller" />
|
|
149
|
+
</el-row>
|
|
150
|
+
<div class="company-sign-title">Company Name:</div>
|
|
151
|
+
<div class="company-sign-text">{{ form.supplierContractCompany.companyEnglishName }}</div>
|
|
152
|
+
<div class="company-sign-title">Signature:</div>
|
|
153
|
+
<div class="company-sign-title">Date:</div>
|
|
154
|
+
<div class="company-sign-text">{{ parseTime(form.createTime, '{m}/{d}/{y}') }}</div>
|
|
155
|
+
</div>
|
|
156
|
+
</el-col>
|
|
157
|
+
<el-col :span="12">
|
|
158
|
+
<div class="company-sign">
|
|
159
|
+
<el-row>
|
|
160
|
+
<el-col :span="isMobile ? 8 : 5">
|
|
161
|
+
<div class="company-sign-title">Buyer</div>
|
|
162
|
+
</el-col>
|
|
163
|
+
<slot name="buyer" />
|
|
164
|
+
</el-row>
|
|
165
|
+
<div class="company-sign-title">Company Name:</div>
|
|
166
|
+
<div class="company-sign-text">{{ form.buyContractCompany.companyEnglishName }}</div>
|
|
167
|
+
<div class="company-sign-title">Signature:</div>
|
|
168
|
+
<div class="company-sign-title">Date:</div>
|
|
169
|
+
<div class="company-sign-text">{{ parseTime(form.createTime, '{m}/{d}/{y}') }}</div>
|
|
170
|
+
</div>
|
|
171
|
+
</el-col>
|
|
172
|
+
</el-row>
|
|
173
|
+
<slot name="select-contract-company"></slot>
|
|
174
|
+
</div>
|
|
175
|
+
</template>
|
|
176
|
+
|
|
177
|
+
<script>
|
|
178
|
+
|
|
179
|
+
export default {
|
|
180
|
+
name: 'ContractInfo',
|
|
181
|
+
props: {
|
|
182
|
+
form: {
|
|
183
|
+
type: Object,
|
|
184
|
+
default: null
|
|
185
|
+
},
|
|
186
|
+
dynamicTags: {
|
|
187
|
+
type: Array,
|
|
188
|
+
default: () => []
|
|
189
|
+
},
|
|
190
|
+
customClause: {
|
|
191
|
+
type: Array,
|
|
192
|
+
default: () => []
|
|
193
|
+
},
|
|
194
|
+
printModel: {
|
|
195
|
+
type: Boolean,
|
|
196
|
+
default: false
|
|
197
|
+
},
|
|
198
|
+
isMobile: {
|
|
199
|
+
type: Boolean,
|
|
200
|
+
default: false
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
components: { },
|
|
204
|
+
data() {
|
|
205
|
+
return {}
|
|
206
|
+
},
|
|
207
|
+
methods: {
|
|
208
|
+
//确认公司
|
|
209
|
+
confirmCompany(company, type) {
|
|
210
|
+
company.email = company.email && company.email.length > 0 ? company.email[0] : ''
|
|
211
|
+
company.phoneNumber = company.phoneNumber && company.phoneNumber.length > 0 ? company.phoneNumber[0] : ''
|
|
212
|
+
if (type == 'seller') {
|
|
213
|
+
this.$set(this.form, 'supplierContractCompany', company)
|
|
214
|
+
this.form.supplierContractCompanyId = company.contractCompanyId
|
|
215
|
+
this.form.supplierCompanyId = company.companyId
|
|
216
|
+
} else if (type == 'buyer') {
|
|
217
|
+
this.$set(this.form, 'buyContractCompany', company)
|
|
218
|
+
this.form.buyContractCompanyId = company.contractCompanyId
|
|
219
|
+
this.form.buyCompanyId = company.companyId
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
//选择合同公司
|
|
223
|
+
selectContractCompany(companyId, type) {
|
|
224
|
+
this.$refs.selectContractCompany.handleShow(companyId, type)
|
|
225
|
+
},
|
|
226
|
+
getSummaries(param) {
|
|
227
|
+
const { columns, data } = param
|
|
228
|
+
const sums = []
|
|
229
|
+
columns.forEach((column, index) => {
|
|
230
|
+
if (index === 0) {
|
|
231
|
+
sums[index] = 'Total'
|
|
232
|
+
return
|
|
233
|
+
}
|
|
234
|
+
const values = data.map((item) => Number(item[column.property]))
|
|
235
|
+
if (!values.every((value) => isNaN(value))) {
|
|
236
|
+
sums[index] = values.reduce((prev, curr) => {
|
|
237
|
+
const value = Number(curr)
|
|
238
|
+
if (!isNaN(value)) {
|
|
239
|
+
return prev + curr
|
|
240
|
+
} else {
|
|
241
|
+
return prev
|
|
242
|
+
}
|
|
243
|
+
}, 0)
|
|
244
|
+
if (index === 1) {
|
|
245
|
+
sums[index] += 'MT'
|
|
246
|
+
} else {
|
|
247
|
+
sums[index] += ''
|
|
248
|
+
}
|
|
249
|
+
} else {
|
|
250
|
+
sums[index] = ''
|
|
251
|
+
}
|
|
252
|
+
})
|
|
253
|
+
|
|
254
|
+
return sums
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
</script>
|
|
259
|
+
<style lang="scss" scoped>
|
|
260
|
+
.info {
|
|
261
|
+
border: 1px solid #606676;
|
|
262
|
+
padding: 20px;
|
|
263
|
+
|
|
264
|
+
.type {
|
|
265
|
+
font-size: 13px;
|
|
266
|
+
font-weight: bold;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.title {
|
|
270
|
+
text-align: center;
|
|
271
|
+
font-size: 26px;
|
|
272
|
+
font-weight: bold;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.sub-title {
|
|
276
|
+
margin-top: 20px;
|
|
277
|
+
text-align: center;
|
|
278
|
+
font-size: 16px;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.company {
|
|
282
|
+
margin-top: 20px;
|
|
283
|
+
padding: 10px 20px;
|
|
284
|
+
border: 1px solid #000;
|
|
285
|
+
font-size: 10px;
|
|
286
|
+
height: 130px;
|
|
287
|
+
|
|
288
|
+
&-type {
|
|
289
|
+
font-size: 13px;
|
|
290
|
+
font-weight: bold;
|
|
291
|
+
margin-bottom: 10px;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
&-text {
|
|
295
|
+
margin-bottom: 10px;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.item {
|
|
300
|
+
display: flex;
|
|
301
|
+
justify-content: space-between;
|
|
302
|
+
align-items: center;
|
|
303
|
+
|
|
304
|
+
// 去掉所有的横线
|
|
305
|
+
::v-deep.el-table__cell {
|
|
306
|
+
border-bottom: none;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// 只去除表格的最最底部的横线
|
|
310
|
+
::v-deep .el-table--border::after,
|
|
311
|
+
::v-deep .el-table--group::after,
|
|
312
|
+
::v-deep .el-table::before {
|
|
313
|
+
background-color: transparent;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.sign {
|
|
318
|
+
height: 230px;
|
|
319
|
+
display: flex;
|
|
320
|
+
align-items: center;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.company-sign {
|
|
324
|
+
margin-top: 20px;
|
|
325
|
+
padding: 10px 20px;
|
|
326
|
+
font-size: 10px;
|
|
327
|
+
height: 130px;
|
|
328
|
+
margin-bottom: 20px;
|
|
329
|
+
|
|
330
|
+
&-title {
|
|
331
|
+
font-size: 13px;
|
|
332
|
+
font-weight: bold;
|
|
333
|
+
margin-bottom: 10px;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
&-text {
|
|
337
|
+
margin-bottom: 10px;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.company-sign-text {
|
|
343
|
+
color: #606266;
|
|
344
|
+
font-size: 14px;
|
|
345
|
+
}
|
|
346
|
+
</style>
|