doctor-admin-components 1.0.14-beta.45 → 1.0.14-beta.47

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "doctor-admin-components",
3
3
  "version1": "1.0.11",
4
- "version": "1.0.14-beta.45",
4
+ "version": "1.0.14-beta.47",
5
5
  "private": false,
6
6
  "main1": "lib/index.umd.min.js",
7
7
  "main": "packages/index.js",
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
  };
@@ -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: 2024-08-23 16:19:29
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
  };
@@ -12,7 +12,7 @@
12
12
  v-for="(bankData, i) in bankList"
13
13
  :key="i"
14
14
  class="bank-container"
15
- :class="{ 'bank-container-select': !disableSelect && sellectIndex == i, 'bank-container-unselect': disableSelect || sellectIndex != i }"
15
+ :class="{ 'bank-container-select': sellectIndex == i, 'bank-container-unselect': sellectIndex != i }"
16
16
  @click="clickSelct(i)"
17
17
  >
18
18
  <el-row style="padding-bottom: 20px">
@@ -168,9 +168,10 @@ export default {
168
168
  }
169
169
  },
170
170
  handleCaclSelectIndex() {
171
- if (!this.disableSelect && this.accountId) {
171
+ if (this.accountId) {
172
172
  this.sellectIndex = this.bankList.findIndex((item) => item.accountId == this.accountId)
173
- if (this.sellectIndex == -1) {
173
+ console.log('---sellectIndex:', this.sellectIndex)
174
+ if (this.sellectIndex == -1 && !this.disableSelect) {
174
175
  console.log('pre accountId invalide')
175
176
  this.$emit('selectBank', null)
176
177
  }
@@ -0,0 +1,301 @@
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
+ The Buyer shall pay a deposit of {{ form.depositAmount != null ? '$' + form.depositAMount : form.deposit + '% of the total Contract Price to' }} TTYY within
40
+ {{ form.depositDays }} days {{ form.depositPaymentForm }}<br />
41
+ The remaining {{ form.balance }}% balance of the total Contract Price shall be paid by the Buyer to TTYY via Telegraphic Transfer ({{ form.balanceDays }}) no
42
+ later than {{ form.balancePaymentType }} days {{ form.balancePaymentForm }}. <br />
43
+ 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
44
+ 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
45
+ withholdings, TTYY receives an amount equal to the Contract Price.<br />
46
+ 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
47
+ day from the due date until the date of actual payment.<br />
48
+ </div>
49
+ <h3>ARTICLE 9 – FLOATING PRICE</h3>
50
+ <div v-if="form.quoteType != 'FIXED'">
51
+ Price Period: The {{ form.livePriceUsertype }} has the pricing authority option from container loaded date until {{ form.livePriceDays }} days
52
+ {{ form.livePriceForm }} it arrives at the port.<br />
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.<br />
54
+ The pricing will be determined based on the local working hours of either the Seller or the Buyer who provides the price option. <br />
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
56
+ writing to TTYY before the expiration of the initial Price Fixing Period.<br />
57
+ The Buyer acknowledges and agrees that an extension of the Price Fixing Period shall be subject to supplier’s allowance.<br />
58
+ 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
59
+ price on the day and at the time the Buyer declared the exercise of the Extension Option.<br />
60
+ 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
61
+ does not constitute a waiver of TTYY's rights under this Contract.<br />
62
+ 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
63
+ contract price based on the Market Closing Price of the Price Fixing Deadline.<br />
64
+ 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
65
+ parties. <br />
66
+ </div>
67
+ <h3>ARTICLE 10 – MARGIN CALL</h3>
68
+ <div>
69
+ <text-content :form="form" :disable="disable" keys="saleMarginCall"></text-content>
70
+ </div>
71
+ <h3>ARTICLE 11 – PRICE ADJUSTMENT</h3>
72
+ <div>
73
+ <text-content :form="form" :disable="disable" keys="priceAdjustment"></text-content>
74
+ </div>
75
+ <h3>ARTICLE 12 - PACKING, DELIVERY, SHIPPING & RISK OF LOSS</h3>
76
+ <div>
77
+ 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
78
+ packaging is required or requested, the cost of the special packaging will be separately invoiced. <br /><br />
79
+
80
+ 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
81
+ delay exceeds{{ form.latestShipment }}days, the delivery time cannot be guaranteed), the goods will be shipped within{{ form.latestShipment }}days from the date
82
+ of deposit payment.<br /><br />
83
+
84
+ 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,
85
+ 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
86
+ 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
87
+ 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
88
+ 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
89
+ 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
90
+ 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
91
+ containers and notice thereof has been given by the Seller to the Buyer.
92
+ </div>
93
+ <h3>ARTICLE 13 - AS IS; NO WARRANTY</h3>
94
+ <div>
95
+ <text-content :form="form" :disable="disable" keys="saleNoWarranty"></text-content>
96
+ </div>
97
+ <h3>ARTICLE 14 - TAXES, DUTIES, FEES</h3>
98
+ <div>
99
+ <text-content :form="form" :disable="disable" keys="saleTaxes"></text-content>
100
+ </div>
101
+ <h3>ARTICLE 15 - LICENSES/PERMITS</h3>
102
+ <div>
103
+ <text-content :form="form" :disable="disable" keys="licenses"></text-content>
104
+ </div>
105
+ <h3>ARTICLE 16 - COMPLIANCE WITH LAWS AND STATUTORY REGULATIONS</h3>
106
+ <div>
107
+ <text-content :form="form" :disable="disable" keys="complianceWithLaws"></text-content>
108
+ </div>
109
+ <h3>ARTICLE 17 - CANCELLATION AND TERMINATION</h3>
110
+ <div>
111
+ <text-content :form="form" :disable="disable" keys="cancellation"></text-content>
112
+ </div>
113
+ <h3>ARTICLE 18 - LIMITATION OF LIABILITY</h3>
114
+ <div>
115
+ <text-content :form="form" :disable="disable" keys="limitation"></text-content>
116
+ </div>
117
+ <h3>ARTICLE 19 – DISPUTES</h3>
118
+ <div>
119
+ <text-content :form="form" :disable="disable" keys="disputes"></text-content>
120
+ </div>
121
+ <h3>ARTICLE 20 - LAW GOVERNING CONTRACT</h3>
122
+ <div>
123
+ <text-content :form="form" :disable="disable" keys="lawGoverning"></text-content>
124
+ </div>
125
+ <h3>ARTICLE 21 – SEVERABILITY</h3>
126
+ <div>
127
+ <text-content :form="form" :disable="disable" keys="severability"></text-content>
128
+ </div>
129
+ <h3>ARTICLE 22 – ASSIGNMENT</h3>
130
+ <div>
131
+ <text-content :form="form" :disable="disable" keys="assignment"></text-content>
132
+ </div>
133
+ <h3>ARTICLE 23 – WAIVER</h3>
134
+ <div>
135
+ <text-content :form="form" :disable="disable" keys="waiver"></text-content>
136
+ </div>
137
+ <h3>ARTICLE 24 – NONDISCLOSURE</h3>
138
+ <div>
139
+ <text-content :form="form" :disable="disable" keys="saleNoNdisclosure"></text-content>
140
+ </div>
141
+ <h3>ARTICLE 25 - EXCUSABLE DELAYS</h3>
142
+ <div>
143
+ <text-content :form="form" :disable="disable" keys="excusable"></text-content>
144
+ </div>
145
+ <h3>ARTICLE 26 – LANGUAGE</h3>
146
+ <div>
147
+ <text-content :form="form" :disable="disable" keys="language"></text-content>
148
+ </div>
149
+ <h3>ARTICLE 27 – MISCELLANEOUS</h3>
150
+ <div>
151
+ <text-content :form="form" :disable="disable" keys="miscellaneous"></text-content>
152
+ </div>
153
+ </div>
154
+ <div v-else>
155
+ <h3>ARTICLE 1 – DEFINITIONS</h3>
156
+ <div>
157
+ <text-content :form="form" :disable="disable" keys="definitions"></text-content>
158
+ </div>
159
+ <h3>ARTICLE 2 – Annexure of Inquiry Page Content</h3>
160
+ <div>
161
+ <text-content :form="form" :disable="disable" keys="annexure"></text-content>
162
+ </div>
163
+ <h3>ARTICLE 3 – ACCEPTANCE</h3>
164
+ <div>
165
+ <text-content :form="form" :disable="disable" keys="acceptance"></text-content>
166
+ </div>
167
+ <h3>ARTICLE 4 – INCONSISTENT COMMODITY NAMES</h3>
168
+ <div>
169
+ <text-content :form="form" :disable="disable" keys="inconsistent"></text-content>
170
+ </div>
171
+ <h3>ARTICLE 5 – QUALITY, CUSTOMS REJECTION</h3>
172
+ <div>
173
+ <text-content :form="form" :disable="disable" keys="quality"></text-content>
174
+ </div>
175
+ <h3>ARTICLE 6 – CLAIM</h3>
176
+ <div>
177
+ <text-content :form="form" :disable="disable" keys="claim"></text-content>
178
+ </div>
179
+ <h3>ARTICLE 7 – LOADING REQUIREMENT</h3>
180
+ <div>
181
+ <text-content :form="form" :disable="disable" keys="loadingRequirement"></text-content>
182
+ </div>
183
+ <h3>ARTICLE 8 – PAYMENT</h3>
184
+ <div>
185
+ TTYY's downstream customers shall pay a deposit of {{ form.deposit }} the Seller within {{ form.depositDays }} days {{ form.depositPaymentForm }}.<br />
186
+ The remaining {{ form.balance }}% balance of the total Contract Price shall be paid to the Seller via Telegraphic Transfer ({{ form.balancePaymentType }}) no
187
+ later than {{ form.balanceDays }} days {{ form.balancePaymentForm }}.
188
+ </div>
189
+ <h3>AARTICLE 9 – FLOATING PRICE</h3>
190
+ <div v-if="form.quoteType != 'FIXED'">
191
+ Price Period: The {{ form.livePriceUserType }} has the pricing option from container loaded date until {{ form.livePriceDays }} days {{ form.livePriceForm }} it
192
+ arrives at the port.<br />
193
+ 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.<br />
194
+ The pricing will be determined based on the local working hours of either the Seller or the Buyer who provides the price option. <br />
195
+ 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
196
+ party have the right to evaluate and offer extension pricing period or not.
197
+ </div>
198
+ <h3>ARTICLE 10 – PRICE ADJUSTMENT</h3>
199
+ <div>
200
+ <text-content :form="form" :disable="disable" keys="priceAdjustment"></text-content>
201
+ </div>
202
+ <h3>ARTICLE 11 – PACKING, DELIVERY, SHIPPING & RISK OF LOSS</h3>
203
+ <div>
204
+ <text-content :form="form" :disable="disable" keys="purchasePacking"></text-content>
205
+ </div>
206
+ <h3>ARTICLE 12 - SHIPMENT PERIOD</h3>
207
+ <div>
208
+ <text-content :form="form" :disable="disable" keys="purchaseShipmentPeriod"></text-content>
209
+ </div>
210
+ <h3>ARTICLE 13 - TAXES, DUTIES, FEES</h3>
211
+ <div>
212
+ <text-content :form="form" :disable="disable" keys="saleTaxes"></text-content>
213
+ </div>
214
+ <h3>ARTICLE 14 - LICENSES/PERMITS</h3>
215
+ <div>
216
+ <text-content :form="form" :disable="disable" keys="licenses"></text-content>
217
+ </div>
218
+ <h3>ARTICLE 15 - COMPLIANCE WITH LAWS AND STATUTORY REGULATIONS</h3>
219
+ <div>
220
+ <text-content :form="form" :disable="disable" keys="complianceWithLaws"></text-content>
221
+ </div>
222
+ <h3>AARTICLE 16 - CANCELLATION AND TERMINATION</h3>
223
+ <div>
224
+ <text-content :form="form" :disable="disable" keys="cancellation"></text-content>
225
+ </div>
226
+ <h3>ARTICLE 17 - LIMITATION OF LIABILITY</h3>
227
+ <div>
228
+ <text-content :form="form" :disable="disable" keys="limitation"></text-content>
229
+ </div>
230
+ <h3>ARTICLE 18 – DISPUTES</h3>
231
+ <div>
232
+ <text-content :form="form" :disable="disable" keys="disputes"></text-content>
233
+ </div>
234
+ <h3>ARTICLE 19 - LAW GOVERNING CONTRACT</h3>
235
+ <div>
236
+ <text-content :form="form" :disable="disable" keys="lawGoverning"></text-content>
237
+ </div>
238
+ <h3>ARTICLE 20 – SEVERABILITY</h3>
239
+ <div>
240
+ <text-content :form="form" :disable="disable" keys="severability"></text-content>
241
+ </div>
242
+ <h3>ARTICLE 21 – ASSIGNMENT</h3>
243
+ <div>
244
+ <text-content :form="form" :disable="disable" keys="assignment"></text-content>
245
+ </div>
246
+ <h3>ARTICLE 22 – WAIVER</h3>
247
+ <div>
248
+ <text-content :form="form" :disable="disable" keys="waiver"></text-content>
249
+ </div>
250
+ <h3>ARTICLE 23 - EXCUSABLE DELAYS</h3>
251
+ <div>
252
+ <text-content :form="form" :disable="disable" keys="excusable"></text-content>
253
+ </div>
254
+ <h3>ARTICLE 24 – INSURANCE</h3>
255
+ <div>
256
+ <text-content :form="form" :disable="disable" keys="purchaseInsurance"></text-content>
257
+ </div>
258
+ <h3>ARTICLE 25 – LANGUAGE</h3>
259
+ <div>
260
+ <text-content :form="form" :disable="disable" keys="language"></text-content>
261
+ </div>
262
+ <h3>ARTICLE 26 – MISCELLANEOUS</h3>
263
+ <div>
264
+ <text-content :form="form" :disable="disable" keys="miscellaneous"></text-content>
265
+ </div>
266
+ </div>
267
+ </div>
268
+ </div>
269
+ </template>
270
+ <script>
271
+ import TextContent from './contractClauseComponenrts/TextContent'
272
+ export default {
273
+ name: 'ContractClause',
274
+ props: {
275
+ form: {
276
+ type: Object,
277
+ default: null
278
+ },
279
+ editable: {
280
+ type: Boolean,
281
+ default: false
282
+ }
283
+ },
284
+ components: {
285
+ TextContent
286
+ },
287
+ data() {
288
+ return {
289
+ disable: true
290
+ }
291
+ },
292
+ created() {
293
+ },
294
+ methods: {
295
+ disableEdit() {
296
+ this.disable = true
297
+ }
298
+ }
299
+ }
300
+ </script>
301
+ <style lang="scss" scoped></style>
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <div>
3
+ <div class="text-content-text" v-if="disable">{{ form[keys] }}</div>
4
+ <el-input v-else type="textarea" v-model="form[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
- <div>
18
- <el-row :gutter="20">
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 &lt; {{ 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"> &lt;{{ 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>