doctor-admin-components 1.0.14-beta.5 → 1.0.14-beta.50

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.
Files changed (28) hide show
  1. package/README.md +4 -1
  2. package/package.json +1 -1
  3. package/packages/index.js +14 -4
  4. package/packages/src/api/biz/bizContract.js +36 -9
  5. package/packages/src/api/biz/bizShipment.js +30 -1
  6. package/packages/src/i18n/zh-CN/message.json +1 -1
  7. package/packages/src/index.js +18 -2
  8. package/packages/src/utils/zip.js +29 -11
  9. package/packages/src/views/biz/bizFileInfo/contract.vue +494 -366
  10. package/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue +9 -7
  11. package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +25 -10
  12. package/packages/src/views/biz/bizFileInfo/contractFile/SectionSlot.vue +11 -3
  13. package/packages/src/views/biz/bizFileInfo/fileShow.vue +16 -6
  14. package/packages/src/views/biz/bizShipment/add.vue +82 -42
  15. package/packages/src/views/biz/contractTracing/billInfo.vue +17 -9
  16. package/packages/src/views/biz/contractTracing/changrLogList.vue +67 -0
  17. package/packages/src/views/biz/contractTracing/companyBanks.vue +19 -8
  18. package/packages/src/views/biz/contractTracing/contractClause.vue +285 -0
  19. package/packages/src/views/biz/contractTracing/contractClauseComponenrts/TextContent.vue +53 -0
  20. package/packages/src/views/biz/contractTracing/contractPdf.vue +9 -171
  21. package/packages/src/views/biz/contractTracing/contractSummary.vue +101 -73
  22. package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +5 -77
  23. package/packages/src/views/biz/contractTracing/editBill.vue +35 -27
  24. package/packages/src/views/biz/contractTracing/info.vue +348 -0
  25. package/packages/src/views/biz/contractTracing/purchaseInvoiceUpload.vue +5 -2
  26. package/packages/src/views/biz/contractTracing/queryDeductionRecords.vue +103 -0
  27. package/packages/src/views/biz/contractTracing/shipmentPurchaseAmount.vue +361 -79
  28. package/packages/src/views/biz/contractTracing/shipmentPurchaseAmountEditDialog.vue +176 -0
@@ -0,0 +1,348 @@
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.toleranceFloat * 100 }}%</el-descriptions-item>
130
+ <el-descriptions-item label="Shortage Tolerance"> &lt;{{ form.weightTolerance }}% / {{ 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 === 2) {
245
+ sums[index] += 'MT'
246
+ } else if (index === 1) {
247
+ sums[index] = ''
248
+ } else {
249
+ sums[index] += ''
250
+ }
251
+ } else {
252
+ sums[index] = ''
253
+ }
254
+ })
255
+
256
+ return sums
257
+ }
258
+ }
259
+ }
260
+ </script>
261
+ <style lang="scss" scoped>
262
+ .info {
263
+ border: 1px solid #606676;
264
+ padding: 20px;
265
+
266
+ .type {
267
+ font-size: 13px;
268
+ font-weight: bold;
269
+ }
270
+
271
+ .title {
272
+ text-align: center;
273
+ font-size: 26px;
274
+ font-weight: bold;
275
+ }
276
+
277
+ .sub-title {
278
+ margin-top: 20px;
279
+ text-align: center;
280
+ font-size: 16px;
281
+ }
282
+
283
+ .company {
284
+ margin-top: 20px;
285
+ padding: 10px 20px;
286
+ border: 1px solid #000;
287
+ font-size: 10px;
288
+ height: 130px;
289
+
290
+ &-type {
291
+ font-size: 13px;
292
+ font-weight: bold;
293
+ margin-bottom: 10px;
294
+ }
295
+
296
+ &-text {
297
+ margin-bottom: 10px;
298
+ }
299
+ }
300
+
301
+ .item {
302
+ display: flex;
303
+ justify-content: space-between;
304
+ align-items: center;
305
+
306
+ // 去掉所有的横线
307
+ ::v-deep.el-table__cell {
308
+ border-bottom: none;
309
+ }
310
+
311
+ // 只去除表格的最最底部的横线
312
+ ::v-deep .el-table--border::after,
313
+ ::v-deep .el-table--group::after,
314
+ ::v-deep .el-table::before {
315
+ background-color: transparent;
316
+ }
317
+ }
318
+
319
+ .sign {
320
+ height: 230px;
321
+ display: flex;
322
+ align-items: center;
323
+ }
324
+
325
+ .company-sign {
326
+ margin-top: 20px;
327
+ padding: 10px 20px;
328
+ font-size: 10px;
329
+ height: 130px;
330
+ margin-bottom: 20px;
331
+
332
+ &-title {
333
+ font-size: 13px;
334
+ font-weight: bold;
335
+ margin-bottom: 10px;
336
+ }
337
+
338
+ &-text {
339
+ margin-bottom: 10px;
340
+ }
341
+ }
342
+ }
343
+
344
+ .company-sign-text {
345
+ color: #606266;
346
+ font-size: 14px;
347
+ }
348
+ </style>
@@ -246,13 +246,14 @@
246
246
  </el-form>
247
247
  <div slot="footer" class="dialog-footer">
248
248
  <el-button @click="cancel">取 消</el-button>
249
- <el-button type="primary" @click="submitForm">确认上传</el-button>
249
+ <!-- <el-button type="primary" @click="submitForm">确认上传</el-button>
250
250
  <el-button
251
251
  v-if="type == 'deposit'"
252
252
  type="primary"
253
253
  @click="uploadAndGenerate"
254
254
  >上传并生成收付款</el-button
255
- >
255
+ > -->
256
+ <el-button type="primary" @click="submitForm">上传并发起审核</el-button>
256
257
  </div>
257
258
  <el-dialog
258
259
  title="系统计算金额和发票金额不一致"
@@ -385,6 +386,7 @@ export default {
385
386
  this.$refs["form"].validate((valid) => {
386
387
  if (valid) {
387
388
  console.log('type', this.type);
389
+ // deposit 定金; finally尾款
388
390
  if (this.type == "finally") {
389
391
  if(comfirmClickFlag) {
390
392
  if(this.form.fixedInvoiceList[0].amount && this.purchaseBalanceMoney && this.form.fixedInvoiceList[0].amount != this.purchaseBalanceMoney) {
@@ -421,6 +423,7 @@ export default {
421
423
  },
422
424
  /** 展示按钮操作 */
423
425
  handleUpload(row, type, shipmentId) {
426
+ // deposit 定金; finally尾款
424
427
  console.log('row:', row)
425
428
  this.reset();
426
429
  this.type = type;
@@ -0,0 +1,103 @@
1
+ <!--
2
+ * @Author: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
3
+ * @Date: 2024-08-20 10:37:30
4
+ * @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
5
+ * @LastEditTime: 2024-08-23 13:49:18
6
+ * @FilePath: /doctor-admin-components 公共组件/packages/src/views/biz/contractTracing/queryDeductionRecords.vue
7
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
+ -->
9
+ <template>
10
+ <el-dialog
11
+ title="定金扣减记录"
12
+ :visible.sync="dialogVisible"
13
+ width="1200px"
14
+ :modal="false"
15
+ >
16
+ <el-table
17
+ :data="tableList"
18
+ :cell-style="{'text-align': 'center'}"
19
+ :header-cell-style="{'text-align': 'center'}"
20
+ >
21
+ <el-table-column
22
+ prop="billOfLadingNo"
23
+ label="提单号"
24
+ width="180">
25
+ </el-table-column>
26
+ <el-table-column
27
+ prop="containerNumber"
28
+ label="柜数"
29
+ width="180">
30
+ </el-table-column>
31
+ <el-table-column
32
+ prop="purchaseDepositTotalAmount"
33
+ label="定金总额">
34
+ <template slot-scope="{ row }">
35
+ {{ row.purchaseDepositTotalAmount ? "$" + $formatNumber(row.purchaseDepositTotalAmount, 2) : '0' }}
36
+ </template>
37
+ </el-table-column>
38
+ <el-table-column
39
+ prop="purchaseDepositBalance"
40
+ label="上次剩余定金">
41
+ <template slot-scope="{ row }">
42
+ {{ row.purchaseDepositBalance ? "$" + $formatNumber(row.purchaseDepositBalance,2) : '0' }}
43
+ </template>
44
+ </el-table-column>
45
+ <el-table-column
46
+ prop="purchaseDepositAmount"
47
+ label="扣减定金">
48
+ <template slot-scope="{ row }">
49
+ <span class="edit-style" v-if="row.purchaseDepositAmount" @click.stop="jumpFileManage(row)">{{ row.purchaseDepositAmount ? "$" + $formatNumber(row.purchaseDepositAmount, 2) : '0' }}</span>
50
+ <span v-else>0</span>
51
+ </template>
52
+ </el-table-column>
53
+ <el-table-column
54
+ prop="purchaseDepositRemainAmount"
55
+ label="定金余额">
56
+ <template slot-scope="{ row }">
57
+ {{ row.purchaseDepositRemainAmount ? "$" + $formatNumber(row.purchaseDepositRemainAmount, 2) : '0' }}
58
+ </template>
59
+ </el-table-column>
60
+ </el-table>
61
+ </el-dialog>
62
+ </template>
63
+
64
+ <script>
65
+ import { deductionRecords } from '../../../api/biz/bizShipment'
66
+
67
+ export default {
68
+ name: 'DoctorAdminComponentsQueryDeductionRecords',
69
+
70
+ data() {
71
+ return {
72
+ tableList:[],
73
+ dialogVisible: false
74
+ };
75
+ },
76
+
77
+ mounted() {
78
+
79
+ },
80
+
81
+ methods: {
82
+ handlerOpen(shipmentId) {
83
+ this.dialogVisible = true
84
+ deductionRecords({shipmentId}).then((res) => {
85
+ this.tableList = res.rows
86
+ })
87
+ },
88
+ jumpFileManage(row) {
89
+ window.open(`/contract/tracing/detail/${row.purchaseContractId}?activeName=fourth&deductionRecordsShipmentId=${row.shipmentId}`)
90
+ }
91
+
92
+
93
+ },
94
+ };
95
+ </script>
96
+
97
+ <style lang="scss" scoped>
98
+ .edit-style {
99
+ cursor: pointer;
100
+ color: #409eff;
101
+ }
102
+
103
+ </style>