doctor-admin-components 1.0.14-beta.7 → 1.0.14-beta.71

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 (29) hide show
  1. package/README.md +4 -1
  2. package/package.json +1 -1
  3. package/packages/index.js +14 -3
  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/index.js +1 -1
  9. package/packages/src/utils/zip.js +29 -11
  10. package/packages/src/views/biz/bizFileInfo/contract.vue +510 -420
  11. package/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue +9 -7
  12. package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +25 -10
  13. package/packages/src/views/biz/bizFileInfo/contractFile/SectionSlot.vue +11 -3
  14. package/packages/src/views/biz/bizFileInfo/fileShow.vue +11 -5
  15. package/packages/src/views/biz/bizShipment/add.vue +67 -38
  16. package/packages/src/views/biz/contractTracing/billInfo.vue +17 -9
  17. package/packages/src/views/biz/contractTracing/changrLogList.vue +67 -0
  18. package/packages/src/views/biz/contractTracing/companyBanks.vue +19 -8
  19. package/packages/src/views/biz/contractTracing/contractClause.vue +356 -0
  20. package/packages/src/views/biz/contractTracing/contractClauseComponenrts/TextContent.vue +53 -0
  21. package/packages/src/views/biz/contractTracing/contractPdf.vue +16 -175
  22. package/packages/src/views/biz/contractTracing/contractSummary.vue +101 -73
  23. package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +5 -77
  24. package/packages/src/views/biz/contractTracing/editBill.vue +35 -27
  25. package/packages/src/views/biz/contractTracing/info.vue +363 -0
  26. package/packages/src/views/biz/contractTracing/purchaseInvoiceUpload.vue +5 -2
  27. package/packages/src/views/biz/contractTracing/queryDeductionRecords.vue +103 -0
  28. package/packages/src/views/biz/contractTracing/shipmentPurchaseAmount.vue +361 -79
  29. package/packages/src/views/biz/contractTracing/shipmentPurchaseAmountEditDialog.vue +176 -0
@@ -1,13 +1,27 @@
1
1
  <template>
2
- <div class="app-container" v-if="linkId">
3
- <!--合同 装运 收获 进度显示 -->
4
- <div class="progress-root">
2
+ <div style="height: 100%;width: 100%;overflow: hidden;">
3
+ <!--合同 装运 收获 进度显示 -->
4
+ <div class="progress-root">
5
+ <div @click="handleScroll('contract_top_id')">
5
6
  <Progress :infoPro="contractProgressInfo"></Progress>
6
- <Progress :infoPro="shipProgressInfo"></Progress>
7
- <Progress :infoPro="getGoodsProgressInfo"></Progress>
8
7
  </div>
8
+ <div @click="handleScroll('contract_shipping_id')">
9
+ <Progress :infoPro="shipProgressInfo"></Progress>
10
+ </div>
11
+ <div @click="handleScroll('contract_receiving_id')">
12
+ <Progress :infoPro="getGoodsProgressInfo"></Progress>
13
+ </div>
14
+ <!-- 选择项 -->
15
+ <div class="selection-root" v-if="selectFileList.length > 0" style="background-color: rgb(237, 247, 255); border-radius: 18px;padding: 5px 12px;">
16
+ <span style="color: #54B8FF; font-weight: bold;">{{ $t('contractDetail.Selected') }} {{ selectFileList.length }} {{ $t('contractDetail.item') }}</span>
17
+ <div class="border-button border-button-blue" @click.stop="cancelAll">{{ $t('contractDetail.Deselect') }}</div>
18
+ <div class="border-button border-button-blue" @click.stop="downLoadAll">{{ $t('contractDetail.Download_All') }}</div>
19
+ <div class="border-button border-button-blue" @click.stop="deleteAll">{{ $t('contractDetail.Delete_All') }}</div>
20
+ </div>
21
+ </div>
22
+ <div class="app-container-file" style="padding: 0 20px;overflow-y: scroll;height: calc(100% - 60px)" v-if="linkId">
9
23
  <!-- 合同 -->
10
- <div style="margin-top:30px">
24
+ <div id="contract_top_id">
11
25
  <SectionSlot :infoPro="contractProgressInfo">
12
26
  <template v-slot:header>
13
27
  <div>
@@ -17,55 +31,56 @@
17
31
  <template v-slot:content>
18
32
  <div class="content-root">
19
33
  <!-- 提单指令 -->
20
- <ContentTitle :contentTitleProp="{
21
- bgButton: $t('contractDetail.blInfo'),
22
- bgTime:contractFileInfo.personalBillFileInfo && timeFormate(contractFileInfo.personalBillFileInfo),
23
- }"></ContentTitle>
24
- <el-col :span="12">
25
- <div v-if="getLastFileByList(contractFileInfo.latestBillFileInfo)">
26
- <div class="sub-title">{{ $t("contractDetail.blInfo") }}</div>
27
- <div class="file-list">
28
- <file-show
29
- :hiddenOperation="channel == 'official-website'"
30
- @refresh="handleRefresh"
31
- @checked="handleChecked"
32
- @uncheck="handleUncheck"
33
- :selectFileListProp="selectFileList"
34
- :fileInfo="
35
- getLastFileByList(contractFileInfo.latestBillFileInfo)
36
- "
37
- />
34
+ <div class="content-root-row">
35
+ <ContentTitle :contentTitleProp="{
36
+ bgButton: $t('contractDetail.blInfo'),
37
+ bgTime: personalBillFileInfo && timeFormate(personalBillFileInfo),
38
+ }"></ContentTitle>
39
+ <span v-if="contract.dealId" class="bg-history" @click="handleHistory('deal_bill,personal_deal_bill', contract.dealId, false)">{{ $t('contractDetail.view_history') }}</span>
40
+ </div>
41
+ <!-- 一个采购合同关联多个销售合 -->
42
+ <div v-for="(fileInfo, index) in contractFileInfo.bliFileInfoList" :key="'contract_'+index">
43
+ <el-col :span="24">
44
+ <div class="sub-title">{{ $t("contractDetail.blInfo") }}_{{ fileInfo.buyerContractCompanyName }}</div>
45
+ </el-col>
46
+ <el-col :span="12">
47
+ <div class="file-list" v-if="getLastFileByList(fileInfo.latestBillFileInfo)">
48
+ <file-show
49
+ :hiddenOperation="channel == 'official-website'"
50
+ @refresh="handleRefresh"
51
+ @checked="handleChecked"
52
+ @uncheck="handleUncheck"
53
+ :selectFileListProp="selectFileList"
54
+ :fileInfo="
55
+ getLastFileByList(fileInfo.latestBillFileInfo)
56
+ "
57
+ />
38
58
  </div>
39
- </div>
40
- <div class="file-list">
41
- <file-show
42
- :hiddenOperation="channel == 'official-website'"
43
- @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
44
- v-for="(item, i) in contractFileInfo.personalBillFileInfo" :key="i" />
45
- <contract-file-drag-upload
46
- v-show="(!contractFileInfo.personalBillFileInfo || contractFileInfo.personalBillFileInfo.length == 0) && channel !== 'official-website'"
47
- @upload="
48
- handleUpload(
49
- $event,
50
- contract.dealId,
51
- 'dealRecord',
52
- 'personal_deal_bill'
53
- )
54
- ":isShowTip="false"
55
- :uploadNameStr="$t('contractDetail.blInfo')" />
56
- </div>
57
- </el-col>
58
- <el-col :span="12">
59
+ <div class="file-list" style="width: 100%;min-height: 1px;">
60
+ <file-show
61
+ :hiddenOperation="channel == 'official-website'"
62
+ @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
63
+ v-for="(item, i) in fileInfo.personalBillFileInfo" :key="i" />
64
+ <contract-file-drag-upload
65
+ v-if="contract.contractType == 'sale'"
66
+ v-show="(!fileInfo.personalBillFileInfo || fileInfo.personalBillFileInfo.length == 0) && channel !== 'official-website'"
67
+ @upload="
68
+ handleUpload(
69
+ $event,
70
+ contract.dealId,
71
+ 'dealRecord',
72
+ 'personal_deal_bill'
73
+ )"
74
+ :isShowTip="false"
75
+ :uploadNameStr="$t('contractDetail.blInfo')" />
76
+ </div>
77
+ </el-col>
78
+ <el-col :span="12" class="center-status">
79
+ <i :class="fileInfo.blConfirmFlag ? 'el-icon-success success' : 'el-icon-time'"></i>
80
+ {{ fileInfo.blConfirmFlag ? $t('contractDetail.bl_confirm_true') : $t('contractDetail.blInfo_unconfirm') }}
81
+ </el-col>
82
+ </div>
59
83
 
60
- </el-col>
61
- <el-col :span="12" v-if="contractFileInfo.bliConfirmFlag" class="center-status">
62
- <i class="el-icon-success success"></i>
63
- {{ $t('contractDetail.bl_confirm_true') }}
64
- </el-col>
65
- <el-col :span="12" v-else class="center-status">
66
- <i class="el-icon-time"></i>
67
- {{ $t('contractDetail.blInfo_unconfirm') }}
68
- </el-col>
69
84
  <!-- 销售合同-回签合同 -->
70
85
  <el-col :span="24">
71
86
  <div class="hr-class"></div>
@@ -79,7 +94,7 @@
79
94
  : $t('contractDetail.purchaseContract'),
80
95
  bgTime:contractFileInfo.latestContractFileInfo && timeFormate(contractFileInfo.latestContractFileInfo)
81
96
  }"></ContentTitle>
82
- <span class="bg-history" @click="handleHistory('contract_formal')">{{ $t('contractDetail.view_history') }}</span>
97
+ <span class="bg-history" @click="handleHistory('contract_draft,contract_formal,contract_sign', linkId)">{{ $t('contractDetail.view_history') }}</span>
83
98
  </div>
84
99
  </el-col>
85
100
  <el-col :span="12" v-if="contractFileInfo.signContractFileInfo && contractFileInfo.signContractFileInfo.length">
@@ -138,7 +153,8 @@
138
153
  bgTime:contractFileInfo.proformaInvoiceFileInfo && timeFormate(contractFileInfo.proformaInvoiceFileInfo) || contractFileInfo.personalProformaInvoiceFileInfo && timeFormate(contractFileInfo.personalProformaInvoiceFileInfo)
139
154
  }">
140
155
  </ContentTitle>
141
- <span class="bg-history" v-if="channel !== 'official-website'" @click="skipInvoiceList">{{ $t('contractDetail.invoice_list') }}</span>
156
+ <span class="bg-history" @click="handleHistory('personal_proforma_invoice,proforma_invoice', contractFileInfo.proformaInvoice.id)">{{ $t('contractDetail.view_history') }}</span>
157
+ <span class="bg-history" style="padding-left: 20px;" v-if="channel !== 'official-website'" @click="skipInvoiceList">{{ $t('contractDetail.invoice_list') }}</span>
142
158
  </div>
143
159
  </el-col>
144
160
  <!-- 支付凭证 -->
@@ -283,10 +299,13 @@
283
299
  <div class="hr-class"></div>
284
300
  </el-col>
285
301
  <el-col :span="24">
286
- <ContentTitle :contentTitleProp="{
287
- bgButton: $t('contractDetail.otherFile'),
288
- bgTime: contract.contractType == 'sale' ? contractFileInfo.saleContractOtherFile && timeFormate(contractFileInfo.saleContractOtherFile) : contractFileInfo.purchaseContractOtherFile && timeFormate(contractFileInfo.purchaseContractOtherFile)
289
- }"></ContentTitle>
302
+ <div class="content-root-row">
303
+ <ContentTitle :contentTitleProp="{
304
+ bgButton: $t('contractDetail.otherFile'),
305
+ bgTime: contract.contractType == 'sale' ? contractFileInfo.saleContractOtherFile && timeFormate(contractFileInfo.saleContractOtherFile) : contractFileInfo.purchaseContractOtherFile && timeFormate(contractFileInfo.purchaseContractOtherFile)
306
+ }"></ContentTitle>
307
+ <span class="bg-history" @click="handleHistory(contract.contractType == 'sale' ? 'sale_contract_other_file' : 'purchase_contract_other_file', linkId, false)">{{ $t('contractDetail.view_history') }}</span>
308
+ </div>
290
309
  </el-col>
291
310
  <el-col :span="24">
292
311
  <!-- 销售-其他文件 -->
@@ -319,33 +338,40 @@
319
338
  />
320
339
  </div>
321
340
  </el-col>
341
+ <el-col :span="24" v-if="channel !== 'official-website'" style="padding-top: 20px;">
342
+ <span>内部文件夹</span>
343
+ <div class="file-list">
344
+ <file-show @refresh="handleRefresh" @checked="handleChecked" :hiddenOperation="channel == 'official-website'" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
345
+ v-for="(item, i) in contractFileInfo.contractInternalFile" :key="i" />
346
+ <contract-file-drag-upload
347
+ @upload="
348
+ handleUpload(
349
+ $event,
350
+ contract.contractId,
351
+ 'contract',
352
+ 'contract_internal_file'
353
+ )"
354
+ :isShowTip="false" uploadNameStr="内部文件" />
355
+ </div>
356
+ </el-col>
322
357
  </div>
323
358
  </template>
324
359
  </SectionSlot>
325
360
  </div>
326
- <!-- 装运 -->
327
- <div>
328
- <BillOfLadingNoTab
361
+ <!-- 提单号分栏 -->
362
+ <BillOfLadingNoTab
329
363
  :contractFileInfo="contractFileInfo"
330
364
  @changeShipBillNo="changeShipBillNo"
331
365
  :progressInfo="shipProgressInfo"
332
366
  :shipBillNoProp="shipBillNo"
333
367
  ></BillOfLadingNoTab>
368
+ <!-- 装运 -->
369
+ <div id="contract_shipping_id">
334
370
  <!-- 生成装运 -->
335
- <SectionSlot :infoPro="shipProgressInfo" v-if="contractFileInfo && !contractFileInfo.shipmentFileInfoList">
371
+ <SectionSlot @updateOpen="handleShippingUpdateOpen" :infoPro="shipProgressInfo" v-if="contractFileInfo && !contractFileInfo.shipmentFileInfoList">
336
372
  <template v-slot:header>
337
373
  <div style="position:relative">
338
374
  <ProgressDetail :infoPro="shipProgressInfo"></ProgressDetail>
339
- <!-- <div class="addshipment" @click.stop="handleGenerate"
340
- v-if="
341
- channel !== 'official-website' && contract.contractType == 'sale'
342
- "
343
- >生成装运</div> -->
344
- <!-- <div class="addshipment" @click.stop="handleGeneratePurchase"
345
- v-if="
346
- channel !== 'official-website' && contract.contractType == 'purchase'
347
- "
348
- >{{ $t("contractDetail.Generate_shipment") }}</div> -->
349
375
  </div>
350
376
  </template>
351
377
  <template v-slot:content>
@@ -363,22 +389,12 @@
363
389
  </template>
364
390
  </SectionSlot>
365
391
  <div v-else>
366
- <SectionSlot :infoPro="shipProgressInfo" v-for="(
392
+ <SectionSlot @updateOpen="handleShippingUpdateOpen" :infoPro="shipProgressInfo" v-for="(
367
393
  shipmentFileInfo, shipmentIndex
368
- ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex" v-if="shipmentIndex == shipBillNo">
394
+ ) in contractFileInfo.shipmentFileInfoList" :key="'shipment'+shipmentIndex" v-if="shipmentIndex == shipBillNo">
369
395
  <template v-slot:header>
370
396
  <div style="position:relative">
371
397
  <ProgressDetail :infoPro="shipProgressInfo"></ProgressDetail>
372
- <!-- <div class="addshipment" @click.stop="handleGenerate"
373
- v-if="
374
- channel !== 'official-website' && contract.contractType == 'sale'
375
- "
376
- >增加装运</div> -->
377
- <!-- <div class="addshipment" @click.stop="handleGeneratePurchase"
378
- v-if="
379
- channel !== 'official-website' && contract.contractType == 'purchase'
380
- "
381
- >{{ $t('contractDetail.add_shipment') }}</div> -->
382
398
  </div>
383
399
  </template>
384
400
  <template v-slot:content>
@@ -407,48 +423,55 @@
407
423
  <div class="preview-download" @click="editShipment(shipmentItemData)">{{ $t('contractDetail.edit_shipment') }}</div>
408
424
  </div>
409
425
  <!-- 订舱资料 -->
410
- <ContentTitle :contentTitleProp="{
426
+ <div class="content-root-row">
427
+ <ContentTitle :contentTitleProp="{
411
428
  bgButton: $t('contractDetail.bookingConfirmation'),
412
429
  bgTime: shipmentFileInfo.bookingConfirmation && timeFormate(shipmentFileInfo.bookingConfirmation),
413
430
  bgcolor: shipProgressInfo.bgcolor
414
-
415
431
  }">
416
432
  </ContentTitle>
417
- <div>
418
- </div>
419
- <el-col :span="24">
420
- <div class="file-list">
421
- <el-col v-if=" contract.contractType == 'sale' && (!shipmentFileInfo.bookingConfirmation || shipmentFileInfo.bookingConfirmation && shipmentFileInfo.bookingConfirmation.length == 0)" :span="12" class="center-status">
422
- <i class="el-icon-time"></i>
423
- {{ $t('contractDetail.Booking_information_to_be_updated') }}
424
- </el-col>
425
- <file-show @refresh="handleRefresh" @checked="handleChecked" :hiddenOperation="channel == 'official-website'" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
426
- v-for="(item, i) in shipmentFileInfo.bookingConfirmation" :key="i" />
427
- <!-- 6. 销售去掉订舱资料上传功能 https://udswem7m8c.feishu.cn/wiki/Tm4SwKcqviRkTUkKNCxc2bnBnVb -->
428
- <contract-file-drag-upload
429
- v-if="channel !== 'official-website' && contract.contractType == 'purchase'"
430
- @upload="
431
- handleUpload(
432
- $event,
433
- shipmentFileInfo.shipmentId,
434
- 'shipment',
435
- 'shipment_booking_confirmation'
436
- )
437
- " :isShowTip="false" :uploadNameStr="$t('contractDetail.bookingConfirmation')" />
438
- </div>
439
- </el-col>
433
+ <span class="bg-history" v-if="channel !== 'official-website'" @click="handleHistory(contract.contractType == 'sale' ? 'shipment_booking_confirmation,sale_shipment_internal_file' : 'shipment_booking_confirmation,purchase_shipment_internal_file', shipmentFileInfo.shipmentId, false)">{{ $t('contractDetail.view_history') }}</span>
434
+ <span class="bg-history" v-else @click="handleHistory('shipment_booking_confirmation', shipmentFileInfo.shipmentId, false)">{{ $t('contractDetail.view_history') }}</span>
435
+ </div>
436
+ <el-row>
437
+ <el-col :span="24">
438
+ <div class="file-list">
439
+ <el-col v-if=" contract.contractType == 'sale' && (!shipmentFileInfo.bookingConfirmation || shipmentFileInfo.bookingConfirmation && shipmentFileInfo.bookingConfirmation.length == 0)" :span="12" class="center-status">
440
+ <i class="el-icon-time"></i>
441
+ {{ $t('contractDetail.Booking_information_to_be_updated') }}
442
+ </el-col>
443
+ <file-show @refresh="handleRefresh" @checked="handleChecked" :hiddenOperation="channel == 'official-website'" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item"
444
+ v-for="(item, i) in shipmentFileInfo.bookingConfirmation" :key="i" />
445
+ <!-- 6. 销售去掉订舱资料上传功能 https://udswem7m8c.feishu.cn/wiki/Tm4SwKcqviRkTUkKNCxc2bnBnVb -->
446
+ <contract-file-drag-upload
447
+ v-if="channel !== 'official-website' && contract.contractType == 'purchase'"
448
+ @upload="
449
+ handleUpload(
450
+ $event,
451
+ shipmentFileInfo.shipmentId,
452
+ 'shipment',
453
+ 'shipment_booking_confirmation'
454
+ )
455
+ " :isShowTip="false" :uploadNameStr="$t('contractDetail.bookingConfirmation')" />
456
+ </div>
457
+ </el-col>
458
+ </el-row>
459
+
440
460
  <el-col :span="24">
441
461
  <div class="hr-class"></div>
442
462
  </el-col>
463
+
443
464
  <!-- 装箱单 -->
444
- <ContentTitle :contentTitleProp="{
445
- bgButton: $t('contractDetail.packingList'),
446
- bgTime: contract.contractType == 'purchase' ? shipmentFileInfo.purchasePersonalPackingList && timeFormate(shipmentFileInfo.purchasePersonalPackingList) : shipmentFileInfo.packingList && timeFormate(shipmentFileInfo.packingList),
447
- bgcolor: shipProgressInfo.bgcolor
448
- }"></ContentTitle>
449
- <el-row v-if="contract.contractType == 'purchase'">
450
- <div>
451
- <div class="sub-title">
465
+ <el-row>
466
+ <el-col :span="24">
467
+ <div class="content-root-row">
468
+ <ContentTitle :contentTitleProp="{
469
+ bgButton: $t('contractDetail.packingList'),
470
+ bgTime: contract.contractType == 'purchase' ? shipmentFileInfo.purchasePersonalPackingList && timeFormate(shipmentFileInfo.purchasePersonalPackingList) : shipmentFileInfo.packingList && timeFormate(shipmentFileInfo.packingList),
471
+ bgcolor: shipProgressInfo.bgcolor
472
+ }"></ContentTitle>
473
+ <span class="bg-history" @click="handleHistory(contract.contractType == 'purchase' ? 'purchase_personal_shipment_packing_list' : 'shipment_packing_list', shipmentFileInfo.shipmentId)">{{ $t('contractDetail.view_history') }}</span>
474
+ <div class="sub-title" style="margin-bottom: 0;" v-if="contract.contractType == 'purchase'">
452
475
  <span style="color: #1890ff; cursor: pointer" v-if="shipmentFileInfo &&
453
476
  shipmentFileInfo.purchasePersonalPackingList &&
454
477
  shipmentFileInfo.purchasePersonalPackingList[0] &&
@@ -465,41 +488,49 @@
465
488
  shipmentFileInfo && shipmentFileInfo.shipmentId,
466
489
  'packing'
467
490
  )
468
- ">{{ identify }}
491
+ ">
492
+ <el-divider direction="vertical"></el-divider>
493
+ {{ identify }}
469
494
  </span>
470
495
  </div>
471
- <ShowAndHide :dataInfoArr="shipmentFileInfo.purchasePersonalPackingList" heightStr="100px" :HideAmount="2">
496
+ </div>
497
+ </el-col>
498
+ </el-row>
499
+ <el-row v-if="contract.contractType == 'purchase'">
500
+ <div>
501
+ <ShowAndHide :dataInfoArr="shipmentFileInfo.purchasePersonalPackingList" heightStr="94px" :HideAmount="2">
472
502
  <template>
473
- <el-col :span="24">
474
- <div class="file-list">
475
- <!-- <el-col :span="12" v-if="!shipmentFileInfo.purchasePersonalPackingList || shipmentFileInfo.purchasePersonalPackingList.length == 0" class="center-status">
476
- <i class="el-icon-time"></i>
477
- 装箱单待更新
478
- </el-col> -->
479
- <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
480
- @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
481
- item, i
482
- ) in shipmentFileInfo.purchasePersonalPackingList" :key="i" />
483
-
484
- <contract-file-drag-upload
485
- @upload="handleUpload(
486
- $event,
487
- shipmentFileInfo.shipmentId,
488
- 'shipment',
489
- 'purchase_personal_shipment_packing_list'
490
- )"
491
- :isShowTip="false"
492
- :uploadNameStr="$t('contractDetail.packingList')"
493
- />
494
- </div>
495
- </el-col>
503
+ <div style="display: flex; justify-content: space-between;width: 100%;">
504
+ <el-col :span="12" v-if="shipmentFileInfo.purchasePersonalPackingList && shipmentFileInfo.purchasePersonalPackingList.length > 0">
505
+ <div class="file-list">
506
+ <file-show :hiddenOperation=" channel == 'official-website'" @refresh="handleRefresh"
507
+ @checked="handleChecked" @uncheck="handleUncheck" :selectFileListProp="selectFileList" :file-info="item" v-for="(
508
+ item, i
509
+ ) in shipmentFileInfo.purchasePersonalPackingList" :key="i" />
510
+ </div>
511
+ </el-col>
512
+ <el-col :span="12">
513
+ <div class="file-list">
514
+ <contract-file-drag-upload
515
+ @upload="handleUpload(
516
+ $event,
517
+ shipmentFileInfo.shipmentId,
518
+ 'shipment',
519
+ 'purchase_personal_shipment_packing_list'
520
+ )"
521
+ :isShowTip="false"
522
+ :uploadNameStr="$t('contractDetail.packingList')"
523
+ />
524
+ </div>
525
+ </el-col>
526
+ </div>
496
527
  </template>
497
528
  </ShowAndHide>
498
529
  </div>
499
530
  </el-row>
500
531
  <el-row v-if="contract.contractType == 'sale'">
501
532
  <div>
502
- <ShowAndHide :dataInfoArr="shipmentFileInfo.packingList || []" heightStr="100px" :HideAmount="2">
533
+ <ShowAndHide :dataInfoArr="shipmentFileInfo.packingList || []" heightStr="94px" :HideAmount="2">
503
534
  <el-col :span="24">
504
535
  <div class="file-list">
505
536
  <el-col :span="12" v-if="!shipmentFileInfo.packingList || shipmentFileInfo.packingList.length == 0" class="center-status">
@@ -542,14 +573,15 @@
542
573
  bgTime: containerFile.packingPhoto && timeFormate(containerFile.packingPhoto),
543
574
  bgcolor: shipProgressInfo.bgcolor
544
575
  }"></ContentTitle>
576
+ <span class="bg-history" @click="handleHistory('container_packing_photo', containerFile.containerId, false)">{{ $t('contractDetail.view_history') }}</span>
545
577
  <div v-if="containerFile && containerFile.packingPhoto.length" style="display:flex">
546
- <!-- <div style="display:flex"> -->
547
- <div class="border-button" @click.stop="allSelectContainerPackingPhoto(containerFile.containerId)">
548
- {{ $t('contractDetail.select_all') }} </div>
549
- <div class="border-button" @click.stop="cancelContainerPackingPhoto(containerFile.containerId)">{{ $t('contractDetail.Deselect') }}
550
- </div>
551
578
  <div class="border-button border-button-share"
552
- @click.stop="shareContainerUrl(containerFile.containerId)">{{ $t('contractDetail.share') }}</div>
579
+ @click.stop="shareContainerUrl(containerFile.containerId)">{{ $t('contractDetail.share') }}
580
+ </div>
581
+ <el-divider direction="vertical"></el-divider>
582
+ <div :class="hasSelectAllContainer(containerFile.containerId) ? 'border-button' : 'border-button border-button-blue'" @click.stop="clickSelectAllContainer(containerFile.containerId)">
583
+ {{ hasSelectAllContainer(containerFile.containerId) ? $t('contractDetail.Deselect') : $t('contractDetail.select_all') }}
584
+ </div>
553
585
  </div>
554
586
  </div>
555
587
  </el-col>
@@ -586,30 +618,28 @@
586
618
  <div class="hr-class"></div>
587
619
  </el-col>
588
620
  <el-col :span="24" style="display:flex;align-items:center">
589
- <ContentTitle :contentTitleProp="{
590
- bgButton: $t('contractDetail.draftBillOfLading'),
591
- bgTime: shipmentFileInfo.draftBillOfLading && timeFormate(shipmentFileInfo.draftBillOfLading),
592
- bgcolor: shipProgressInfo.bgcolor
593
- }"></ContentTitle>
594
- <span
621
+ <div class="content-root-row">
622
+ <ContentTitle :contentTitleProp="{
623
+ bgButton: $t('contractDetail.draftBillOfLading'),
624
+ bgTime: shipmentFileInfo.draftBillOfLading && timeFormate(shipmentFileInfo.draftBillOfLading),
625
+ bgcolor: shipProgressInfo.bgcolor
626
+ }"></ContentTitle>
627
+ <span class="bg-history" @click="handleHistory('draft_bill_of_lading', shipmentFileInfo.shipmentId, false)">{{ $t('contractDetail.view_history') }}</span>
628
+ </div>
629
+
630
+ <span
595
631
  style="color: #1890ff; cursor: pointer;font-size:14px"
596
- v-if="
597
- shipmentFileInfo &&
598
- shipmentFileInfo.draftBillOfLading &&
599
- shipmentFileInfo.draftBillOfLading[0] &&
600
- shipmentFileInfo.draftBillOfLading[0].url
601
- "
632
+ v-if="draftBillOfLadingUrl(shipmentFileInfo)"
602
633
  @click="
603
634
  identifyPage(
604
- shipmentFileInfo &&
605
- shipmentFileInfo.draftBillOfLading &&
606
- shipmentFileInfo.draftBillOfLading[0] &&
607
- shipmentFileInfo.draftBillOfLading[0].url,
635
+ draftBillOfLadingUrl(shipmentFileInfo),
608
636
  shipmentFileInfo && shipmentFileInfo.shipmentId,
609
637
  'draft_bill'
610
638
  )
611
639
  "
612
- >{{ identify }}</span>
640
+ >
641
+ <el-divider direction="vertical"></el-divider>
642
+ {{ identify }}</span>
613
643
  </el-col>
614
644
  <el-col :span="24">
615
645
  <el-col :span="12">
@@ -659,11 +689,14 @@
659
689
  <div class="hr-class"></div>
660
690
  </el-col>
661
691
  <el-col :span="24">
662
- <ContentTitle :contentTitleProp="{
663
- bgButton: $t('contractDetail.Copy_of_formal_bill_of_lading'),
664
- bgTime: shipmentFileInfo.originalBillOfLadingCopy && timeFormate(shipmentFileInfo.originalBillOfLadingCopy),
665
- bgcolor: shipProgressInfo.bgcolor
666
- }"></ContentTitle>
692
+ <div class="content-root-row">
693
+ <ContentTitle :contentTitleProp="{
694
+ bgButton: $t('contractDetail.Copy_of_formal_bill_of_lading'),
695
+ bgTime: shipmentFileInfo.originalBillOfLadingCopy && timeFormate(shipmentFileInfo.originalBillOfLadingCopy),
696
+ bgcolor: shipProgressInfo.bgcolor
697
+ }"></ContentTitle>
698
+ <span class="bg-history" @click="handleHistory('original_bill_of_lading_copy', shipmentFileInfo.shipmentId, false)">{{ $t('contractDetail.view_history') }}</span>
699
+ </div>
667
700
  </el-col>
668
701
  <el-col :span="24">
669
702
  <div class="file-list">
@@ -693,21 +726,23 @@
693
726
  <div class="hr-class"></div>
694
727
  </el-col>
695
728
  <el-col :span="24" v-if="contract.quoteType != 'FIXED'">
696
- <ContentTitle :contentTitleProp="{
697
- bgButton: $t('contractDetail.saleTemporaryFinallyInvoice'),
698
- bgTime: shipmentFileInfo.salePersonalTemporaryFinallyInvoice && timeFormate(shipmentFileInfo.salePersonalTemporaryFinallyInvoice),
699
- bgcolor: shipProgressInfo.bgcolor
700
- }"></ContentTitle>
701
- <div class="sub-title">
702
- <span
703
- v-if="
704
- channel !== 'official-website' &&
705
- contract.contractType == 'purchase'
706
- "
707
- style="color: #1890ff; cursor: pointer; margin-left: 10px"
708
- @click.stop="identifyPageBoth(shipmentFileInfo, 1)"
709
- >{{ identify }}</span>
710
- </div>
729
+ <div class="content-root-row" style="display: flex;">
730
+ <ContentTitle :contentTitleProp="{
731
+ bgButton: $t('contractDetail.saleTemporaryFinallyInvoice'),
732
+ bgTime: shipmentFileInfo.salePersonalTemporaryFinallyInvoice && timeFormate(shipmentFileInfo.salePersonalTemporaryFinallyInvoice),
733
+ bgcolor: shipProgressInfo.bgcolor
734
+ }"></ContentTitle>
735
+ <span class="bg-history" @click="handleHistory(contract.contractType == 'sale' ? 'sale_personal_temporary_finally_invoice' : 'purchase_temporary_finally_invoice', shipmentFileInfo.shipmentId)">{{ $t('contractDetail.view_history') }}</span>
736
+ <span
737
+ v-if="
738
+ channel !== 'official-website' &&
739
+ contract.contractType == 'purchase'
740
+ "
741
+ style="color: #1890ff; cursor: pointer; margin-left: 10px"
742
+ @click.stop="identifyPageBoth(shipmentFileInfo, 1)"
743
+ >
744
+ {{ identify }}</span>
745
+ </div>
711
746
  <el-col :span="12" v-if="channel == 'official-website' && shipmentFileInfo.salePersonalTemporaryFinallyInvoice && shipmentFileInfo.salePersonalTemporaryFinallyInvoice.length == 0" class="center-status">
712
747
  <i class="el-icon-time"></i>
713
748
  {{ $t('contractDetail.Temporary_final_payment_invoice_to_be_updated') }}
@@ -738,8 +773,8 @@
738
773
  shipmentFileInfo.shipmentId,
739
774
  'shipment',
740
775
  'sale_personal_temporary_finally_invoice'
741
- )
742
- ":isShowTip="false" :uploadNameStr="$t('contractDetail.saleTemporaryFinallyInvoice')" />
776
+ )"
777
+ :isShowTip="false" :uploadNameStr="$t('contractDetail.saleTemporaryFinallyInvoice')" />
743
778
  </div>
744
779
  <div class="file-list" v-else>
745
780
  <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
@@ -753,8 +788,8 @@
753
788
  shipmentFileInfo.shipmentId,
754
789
  'shipment',
755
790
  'purchase_temporary_finally_invoice'
756
- )
757
- ":isShowTip="false" :uploadNameStr="$t('contractDetail.saleTemporaryFinallyInvoice')" />
791
+ )"
792
+ :isShowTip="false" :uploadNameStr="$t('contractDetail.saleTemporaryFinallyInvoice')" />
758
793
  </div>
759
794
  </div>
760
795
  </el-col>
@@ -792,12 +827,15 @@
792
827
  bgTime: contract.contractType == 'sale' ? getNewInfo && timeFormate(getNewInfo) : shipmentFileInfo.purchaseFinallyInvoice && timeFormate(shipmentFileInfo.purchaseFinallyInvoice),
793
828
  bgcolor: shipProgressInfo.bgcolor
794
829
  }"></ContentTitle>
830
+ <span class="bg-history" @click="handleHistory(contract.contractType == 'sale' ? 'sale_personal_finally_invoice,sale_finally_invoice' : 'purchase_finally_invoice', shipmentFileInfo.shipmentId)">{{ $t('contractDetail.view_history') }}</span>
795
831
  <span
796
832
  v-if="
797
833
  channel !== 'official-website' && contract.contractType == 'purchase' && shipmentFileInfo.purchaseFinallyInvoice && shipmentFileInfo.purchaseFinallyInvoice.length > 0"
798
834
  style="color: #1890ff; cursor: pointer; margin-left: 10px;font-size:14px;"
799
835
  @click.stop="identifyPageBoth(shipmentFileInfo, 2)"
800
- >{{ identify }}
836
+ >
837
+ <el-divider direction="vertical"></el-divider>
838
+ {{ identify }}
801
839
  </span>
802
840
  </div>
803
841
  <!-- <div class="sub-title"> -->
@@ -981,11 +1019,14 @@
981
1019
  </el-col>
982
1020
 
983
1021
  <el-col :span="24">
984
- <ContentTitle :contentTitleProp="{
985
- bgButton: $t('contractDetail.otherFile'),
986
- bgTime: contract.contractType == 'sale' ? shipmentFileInfo.saleShipmentOther && timeFormate(shipmentFileInfo.saleShipmentOther) : shipmentFileInfo.purchaseShipmentOther && timeFormate(shipmentFileInfo.purchaseShipmentOther),
987
- bgcolor: shipProgressInfo.bgcolor
988
- }"></ContentTitle>
1022
+ <div class="content-root-row">
1023
+ <ContentTitle :contentTitleProp="{
1024
+ bgButton: $t('contractDetail.otherFile'),
1025
+ bgTime: contract.contractType == 'sale' ? shipmentFileInfo.saleShipmentOther && timeFormate(shipmentFileInfo.saleShipmentOther) : shipmentFileInfo.purchaseShipmentOther && timeFormate(shipmentFileInfo.purchaseShipmentOther),
1026
+ bgcolor: shipProgressInfo.bgcolor
1027
+ }"></ContentTitle>
1028
+ <span class="bg-history" @click="handleHistory('sale_shipment_other', shipmentFileInfo.shipmentId, false)">{{ $t('contractDetail.view_history') }}</span>
1029
+ </div>
989
1030
  </el-col>
990
1031
  <el-col :span="24" v-if="contract.contractType == 'sale'">
991
1032
  <div class="file-list">
@@ -1019,6 +1060,51 @@
1019
1060
  :uploadNameStr="$t('contractDetail.otherFile')" />
1020
1061
  </div>
1021
1062
  </el-col>
1063
+
1064
+ <div v-if="channel !== 'official-website'">
1065
+ <el-col :span="24" style="padding-top: 20px;">
1066
+ <span>内部文件夹</span>
1067
+ <div class="file-list" v-if="contract.contractType == 'purchase'">
1068
+ <file-show
1069
+ @refresh="handleRefresh"
1070
+ @checked="handleChecked"
1071
+ :hiddenOperation="channel == 'official-website'"
1072
+ @uncheck="handleUncheck"
1073
+ :selectFileListProp="selectFileList"
1074
+ :file-info="item"
1075
+ v-for="(item, i) in shipmentFileInfo.purchaseShipmentInternalFile" :key="i" />
1076
+ <contract-file-drag-upload
1077
+ @upload="
1078
+ handleUpload(
1079
+ $event,
1080
+ shipmentFileInfo.shipmentId,
1081
+ 'shipment',
1082
+ 'purchase_shipment_internal_file'
1083
+ )"
1084
+ :isShowTip="false" uploadNameStr="内部文件" />
1085
+ </div>
1086
+ <div class="file-list" v-else>
1087
+ <file-show
1088
+ @refresh="handleRefresh"
1089
+ @checked="handleChecked"
1090
+ :hiddenOperation="channel == 'official-website'"
1091
+ @uncheck="handleUncheck"
1092
+ :selectFileListProp="selectFileList"
1093
+ :file-info="item"
1094
+ v-for="(item, i) in shipmentFileInfo.saleShipmentInternalFile" :key="i" />
1095
+ <contract-file-drag-upload
1096
+ @upload="
1097
+ handleUpload(
1098
+ $event,
1099
+ shipmentFileInfo.shipmentId,
1100
+ 'shipment',
1101
+ 'sale_shipment_internal_file'
1102
+ )"
1103
+ :isShowTip="false" uploadNameStr="内部文件" />
1104
+ </div>
1105
+ </el-col>
1106
+ </div>
1107
+
1022
1108
  </div>
1023
1109
  </template>
1024
1110
  </SectionSlot>
@@ -1026,17 +1112,12 @@
1026
1112
  </div>
1027
1113
 
1028
1114
  <!-- 收货 -->
1029
- <div>
1030
- <BillOfLadingNoTab
1031
- :contractFileInfo="contractFileInfo"
1032
- @changeShipBillNo="changeShipBillNo"
1033
- :progressInfo="getGoodsProgressInfo"
1034
- :shipBillNoProp="shipBillNo"
1035
- ></BillOfLadingNoTab>
1115
+ <div id="contract_receiving_id">
1036
1116
  <SectionSlot
1117
+ ref="SectionReceiving"
1037
1118
  :infoPro="getGoodsProgressInfo" v-for="(
1038
1119
  shipmentFileInfo, shipmentIndex
1039
- ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex" v-if="shipmentIndex == shipBillNo"
1120
+ ) in contractFileInfo.shipmentFileInfoList" :key="'receiving'+shipmentIndex" v-if="shipmentIndex == shipBillNo"
1040
1121
  >
1041
1122
  <template v-slot:header>
1042
1123
  <div>
@@ -1046,76 +1127,18 @@
1046
1127
  <template v-slot:content>
1047
1128
  <div class="content-root">
1048
1129
  <div>
1049
- <!-- <div v-if="channel !== 'official-website'" style="color: #1890ff">
1050
- {{
1051
- contract.contractType == "sale"
1052
- ? "尾款收款"
1053
- : $t("contractDetail.Final_payment")
1054
- }}
1130
+ <div class="content-root-row">
1131
+ <ContentTitle :contentTitleProp="{
1132
+ bgButton: $t('contractDetail.tip7'),
1133
+ bgTime: shipmentFileInfo.deliveryReceipt && timeFormate(shipmentFileInfo.deliveryReceipt),
1134
+ bgcolor: getGoodsProgressInfo.bgcolor
1135
+ }"></ContentTitle>
1136
+ <span class="bg-history" @click="handleHistory('shipment_delivery_receipt', shipmentFileInfo.shipmentId, false)">{{ $t('contractDetail.view_history') }}</span>
1055
1137
  </div>
1056
- <div v-else class="sub-title">{{ $t("contractDetail.Final_payment") }}</div> -->
1057
- <!-- 尾款水单 -->
1058
- <!-- <el-row>
1059
- <el-col :span="24">
1060
- <div>
1061
- <ContentTitle :contentTitleProp="{
1062
- bgButton: $t('contractDetail.finalPaymentMemo'),
1063
- bgTime: shipmentFileInfo.waterBill && timeFormate(shipmentFileInfo.waterBill),
1064
- bgcolor: getGoodsProgressInfo.bgcolor
1065
- }"></ContentTitle>
1066
-
1067
- <div class="file-list" v-if="shipmentFileInfo.waterBill && shipmentFileInfo.waterBill.length">
1068
- <file-show
1069
- :hiddenOperation="channel == 'official-website'"
1070
- @refresh="handleRefresh"
1071
- @checked="handleChecked"
1072
- @uncheck="handleUncheck"
1073
- :file-info="item"
1074
- v-for="(item, i) in shipmentFileInfo.waterBill"
1075
- :key="i"
1076
- />
1077
- </div>
1078
- <div v-else class="center-status">
1079
- <i class="el-icon-time"></i>
1080
- 暂无文件
1081
- </div>
1082
- </div>
1083
- </el-col>
1084
- </el-row> -->
1085
- <!-- 汇款凭证 -->
1086
- <!-- <el-row>
1087
- <div>
1088
- <ContentTitle :contentTitleProp="{
1089
- bgButton: $t('contractDetail.swift'),
1090
- bgTime: shipmentFileInfo.voucher && timeFormate(shipmentFileInfo.voucher),
1091
- bgcolor: getGoodsProgressInfo.bgcolor
1092
- }"></ContentTitle>
1093
- <div class="file-list" v-if="shipmentFileInfo.voucher && shipmentFileInfo.voucher.length">
1094
- <file-show
1095
- :hiddenOperation="channel == 'official-website'"
1096
- @refresh="handleRefresh"
1097
- @checked="handleChecked"
1098
- @uncheck="handleUncheck"
1099
- :file-info="item"
1100
- v-for="(item, i) in shipmentFileInfo.voucher"
1101
- :key="i"
1102
- />
1103
- </div>
1104
- <div v-else class="center-status">
1105
- <i class="el-icon-time"></i>
1106
- 暂无文件
1107
- </div>
1108
- </div>
1109
- </el-row> -->
1110
- <!-- 提货凭证 -->
1111
- <ContentTitle :contentTitleProp="{
1112
- bgButton: $t('contractDetail.tip7'),
1113
- bgTime: shipmentFileInfo.deliveryReceipt && timeFormate(shipmentFileInfo.deliveryReceipt),
1114
- bgcolor: getGoodsProgressInfo.bgcolor
1115
- }"></ContentTitle>
1116
1138
  <el-col :span="24">
1117
1139
  <div class="file-list">
1118
1140
  <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck"
1141
+ deleteTips="你确定要删除文件吗?删除后,电放状态将会回退到未电放?"
1119
1142
  :hiddenOperation="channel == 'official-website'"
1120
1143
  :selectFileListProp="selectFileList"
1121
1144
  :file-info="item" v-for="(item, i) in shipmentFileInfo.deliveryReceipt" :key="i" />
@@ -1146,17 +1169,12 @@
1146
1169
  </div>
1147
1170
  <!-- 索赔 -->
1148
1171
  <div v-if="contractFileInfo.claimCreateFlag">
1149
- <BillOfLadingNoTab
1150
- :contractFileInfo="contractFileInfo"
1151
- @changeShipBillNo="changeShipBillNo"
1152
- :progressInfo="shipProgressInfo"
1153
- :shipBillNoProp="shipBillNo"
1154
- ></BillOfLadingNoTab>
1155
1172
  <SectionSlot
1173
+ ref="SectionClaim"
1156
1174
  :infoPro="claimProgressInfo"
1157
1175
  v-for="(
1158
1176
  shipmentFileInfo, shipmentIndex
1159
- ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex"
1177
+ ) in contractFileInfo.shipmentFileInfoList" :key="'claim'+shipmentIndex"
1160
1178
  v-if="shipmentIndex == shipBillNo"
1161
1179
  >
1162
1180
  <template v-slot:header>
@@ -1167,30 +1185,22 @@
1167
1185
  <template v-slot:content>
1168
1186
  <div class="content-root">
1169
1187
  <div>
1170
- <ContentTitle :contentTitleProp="{
1171
- bgButton: !buyerFlag
1172
- ? $t('contractDetail.Credit_Note')
1173
- : $t('contractDetail.Debit_Note'),
1174
- bgTime: claimFileInfoCom && timeFormate(claimFileInfoCom),
1175
- bgcolor: claimProgressInfo.bgcolor
1176
- }"></ContentTitle>
1188
+ <div class="content-root-row">
1189
+ <ContentTitle :contentTitleProp="{
1190
+ bgButton: !buyerFlag
1191
+ ? $t('contractDetail.Credit_Note')
1192
+ : $t('contractDetail.Debit_Note'),
1193
+ bgTime: claimFileInfoCom && timeFormate(claimFileInfoCom),
1194
+ bgcolor: claimProgressInfo.bgcolor
1195
+ }"></ContentTitle>
1196
+ <!-- <span class="bg-history" @click="handleHistory(!buyerFlag ? 'claim_credit_note' : 'claim_debit_note', linkId, false)">{{ $t('contractDetail.view_history') }}</span> -->
1197
+ </div>
1177
1198
  <el-col :span="24">
1178
1199
  <div class="file-list" v-if="claimFileInfoCom">
1179
1200
  <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck"
1180
1201
  :selectFileListProp="selectFileList"
1181
- :hiddenOperation="channel == 'official-website'"
1202
+ :hiddenOperation="true"
1182
1203
  :file-info="item" v-for="(item, i) in claimFileInfoCom" :key="i" />
1183
- <!-- <contract-file-drag-upload
1184
- @upload="
1185
- handleUpload(
1186
- $event,
1187
- shipmentFileInfo.shipmentId,
1188
- 'shipment',
1189
- 'shipment_delivery_receipt'
1190
- )
1191
- "
1192
- :isShowTip="false"
1193
- /> -->
1194
1204
  </div>
1195
1205
  <div v-else class="center-status">
1196
1206
  <i class="el-icon-time"></i>
@@ -1203,8 +1213,9 @@
1203
1213
  </SectionSlot>
1204
1214
  </div>
1205
1215
  <!-- cndn -->
1206
- <div style="margin-top:50px" v-if="CNbillsCom.length || DNbillsCom.length">
1216
+ <div style="margin-top:20px" v-if="CNbillsCom.length || DNbillsCom.length">
1207
1217
  <SectionSlot
1218
+ ref="SectionCNDN"
1208
1219
  :infoPro="cndnProgressInfo"
1209
1220
  >
1210
1221
  <template v-slot:header>
@@ -1227,17 +1238,6 @@
1227
1238
  :selectFileListProp="selectFileList"
1228
1239
  :hiddenOperation="true"
1229
1240
  :file-info="item" v-for="(item, i) in DNbillsCom" :key="i" />
1230
- <!-- <contract-file-drag-upload
1231
- @upload="
1232
- handleUpload(
1233
- $event,
1234
- shipmentFileInfo.shipmentId,
1235
- 'shipment',
1236
- 'shipment_delivery_receipt'
1237
- )
1238
- "
1239
- :isShowTip="false"
1240
- /> -->
1241
1241
  </div>
1242
1242
  <!-- <div v-else class="center-status">
1243
1243
  <i class="el-icon-time"></i>
@@ -1258,17 +1258,6 @@
1258
1258
  :selectFileListProp="selectFileList"
1259
1259
  :hiddenOperation="true"
1260
1260
  :file-info="item" v-for="(item, i) in CNbillsCom" :key="i" />
1261
- <!-- <contract-file-drag-upload
1262
- @upload="
1263
- handleUpload(
1264
- $event,
1265
- shipmentFileInfo.shipmentId,
1266
- 'shipment',
1267
- 'shipment_delivery_receipt'
1268
- )
1269
- "
1270
- :isShowTip="false"
1271
- /> -->
1272
1261
  </div>
1273
1262
  <!-- <div v-else class="center-status">
1274
1263
  <i class="el-icon-time"></i>
@@ -1278,7 +1267,7 @@
1278
1267
  </div>
1279
1268
  </div>
1280
1269
  </template>
1281
- </SectionSlot>
1270
+ </SectionSlot>
1282
1271
  </div>
1283
1272
 
1284
1273
  <deposit-invoice ref="depositInvoice"></deposit-invoice>
@@ -1317,6 +1306,7 @@
1317
1306
  :getContractFileInfoCallback="getContractFileInfoCallback"
1318
1307
  ></shipment-purchase-amount>
1319
1308
  </div>
1309
+ </div>
1320
1310
  </template>
1321
1311
 
1322
1312
  <script>
@@ -1360,6 +1350,7 @@ import ContentTitle from './contractFile/ContentTitle.vue';
1360
1350
  import IMGPreviewCheckBox from './contractFile/IMGPreviewCheckBox.vue'
1361
1351
  import BillOfLadingNoTab from './contractFile/BillOfLadingNoTab.vue'
1362
1352
  import ShowAndHide from './contractFile/ShowAndHide.vue'
1353
+ import { delBizFileInfo } from '../../../api/biz/bizFileInfo'
1363
1354
 
1364
1355
  let handleGenerateflag = false;
1365
1356
  let handleGenerateflag1 = false;
@@ -1400,12 +1391,12 @@ export default {
1400
1391
  type: Boolean,
1401
1392
  default: true,
1402
1393
  },
1403
- selectFileListProp: {
1404
- type: Array,
1405
- default: () => {
1406
- return [];
1407
- },
1408
- },
1394
+ // selectFileListProp: {
1395
+ // type: Array,
1396
+ // default: () => {
1397
+ // return [];
1398
+ // },
1399
+ // },
1409
1400
  },
1410
1401
  data() {
1411
1402
  return {
@@ -1416,7 +1407,7 @@ export default {
1416
1407
  contractProgressInfo: {
1417
1408
  text: this.$t('contractDetail.contract'),
1418
1409
  rate: 0,
1419
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/805524d45f964ad0b3f51437d3b5750e.png',
1410
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/805524d45f964ad0b3f51437d3b5750e.png',
1420
1411
  bgcolor: '#FBB040',
1421
1412
  textArr:[],
1422
1413
  hidden: false
@@ -1424,7 +1415,7 @@ export default {
1424
1415
  shipProgressInfo: {
1425
1416
  text: this.$t('contractDetail.shipment'),
1426
1417
  rate: 0,
1427
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/8517dbf0444542d5bf100279231c9597.png',
1418
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/8517dbf0444542d5bf100279231c9597.png',
1428
1419
  bgcolor: '#54B8FF',
1429
1420
  textArr:[this.$t('contractDetail.Waiting_for_the_seller_to_ship')],
1430
1421
  hidden: false
@@ -1432,7 +1423,7 @@ export default {
1432
1423
  getGoodsProgressInfo: {
1433
1424
  text: this.$t('contractDetail.receiving'),
1434
1425
  rate: 0,
1435
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/a43ef25e953747efa9b88d3d9bbe674f.png',
1426
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/a43ef25e953747efa9b88d3d9bbe674f.png',
1436
1427
  bgcolor: '#7CCF48',
1437
1428
  textArr:[],
1438
1429
  hidden: false
@@ -1440,7 +1431,7 @@ export default {
1440
1431
  claimProgressInfo: {
1441
1432
  text: this.$t('contractDetail.claim'),
1442
1433
  rate: 0,
1443
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1434
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1444
1435
  bgcolor: '#adadad',
1445
1436
  textArr:[],
1446
1437
  hidden: false
@@ -1448,7 +1439,7 @@ export default {
1448
1439
  cndnProgressInfo: {
1449
1440
  text: this.$t('contractDetail.cndn'),
1450
1441
  rate: 100,
1451
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1442
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1452
1443
  bgcolor: '#c47afc',
1453
1444
  textArr:[],
1454
1445
  hidden: true
@@ -1514,6 +1505,7 @@ export default {
1514
1505
  url: null,
1515
1506
  ext: null,
1516
1507
  },
1508
+ selectFileList: [],
1517
1509
  // 表单参数
1518
1510
  form: {},
1519
1511
  //上传表单
@@ -1545,10 +1537,72 @@ export default {
1545
1537
  this.contractId = contractId;
1546
1538
  this.getContractFileInfo(contractId);
1547
1539
  this.queryParams.linkId = contractId;
1540
+ if(this.$route.query.deductionRecordsShipmentId) {
1541
+ const timer = setTimeout(() => {
1542
+ this.$refs.shipmentPurchaseAmount.handleShow(this.$route.query.deductionRecordsShipmentId);
1543
+ clearTimeout(timer);
1544
+ }, 1000)
1545
+ }
1548
1546
  }
1549
1547
  },
1550
1548
  mounted() { },
1551
1549
  methods: {
1550
+ // 装运模块状态变化,需要同步关联模块
1551
+ handleShippingUpdateOpen(isOpen) {
1552
+ this.$refs.SectionReceiving && this.$refs.SectionReceiving[0]?.setOpen(isOpen)
1553
+ this.$refs.SectionClaim && this.$refs.SectionClaim[0]?.setOpen(isOpen)
1554
+ this.$refs.SectionCNDN?.setOpen(isOpen)
1555
+ },
1556
+ handleScroll(elementId) {
1557
+ document.getElementById(elementId).scrollIntoView()
1558
+ },
1559
+ /**
1560
+ * @description: 取消全部选择
1561
+ * @return {*}
1562
+ */
1563
+ cancelAll() {
1564
+ this.cancelAllSelectFileList()
1565
+ },
1566
+
1567
+ /**
1568
+ * @description: 全部下载
1569
+ * @return {*}
1570
+ */
1571
+ downLoadAll() {
1572
+ if (this.selectFileList.length == 0) {
1573
+ return this.$message.warning(this.$t('contractDetail.please_select_file'))
1574
+ }
1575
+ this.downloadZip()
1576
+ },
1577
+
1578
+ deleteAll() {
1579
+ console.log('==delBizFileInfo==', this.selectFileList)
1580
+ if (this.selectFileList.length == 0) {
1581
+ return this.$message.warning(this.$t('contractDetail.please_select_file'))
1582
+ }
1583
+
1584
+ this.$confirm('是否删除选中文件', '提示', {
1585
+ confirmButtonText: '确定',
1586
+ cancelButtonText: '取消',
1587
+ type: 'warning'
1588
+ })
1589
+ .then(() => {
1590
+ const ids = this.selectFileList.map((item) => item.fileId)
1591
+ delBizFileInfo(ids).then(() => {
1592
+ this.$message.success('删除成功')
1593
+ this.selectFileList = []
1594
+ this.handleRefresh()
1595
+ })
1596
+ })
1597
+ .catch(() => {
1598
+ this.$message.info('已取消删除')
1599
+ })
1600
+ },
1601
+
1602
+ draftBillOfLadingUrl(shipmentFileInfo) {
1603
+ return shipmentFileInfo && shipmentFileInfo.draftBillOfLading && shipmentFileInfo.draftBillOfLading[0] && shipmentFileInfo.draftBillOfLading[0].url
1604
+ },
1605
+
1552
1606
  /**
1553
1607
  * @description:
1554
1608
  * @param {*} info
@@ -1562,11 +1616,22 @@ export default {
1562
1616
  }
1563
1617
  },
1564
1618
 
1565
- allSelectContainerPackingPhoto(containerId) {
1566
- this.$refs['container_packing_photo_' + containerId][0].checkAll1()
1619
+ // allSelectContainerPackingPhoto(containerId) {
1620
+ // this.$refs['container_packing_photo_' + containerId][0].checkAll1()
1621
+ // },
1622
+ // cancelContainerPackingPhoto(containerId) {
1623
+ // this.$refs['container_packing_photo_' + containerId][0].cancelAll1()
1624
+ // },
1625
+
1626
+ clickSelectAllContainer(containerId) {
1627
+ return this.$refs['container_packing_photo_' + containerId][0].clickSelectAll()
1567
1628
  },
1568
- cancelContainerPackingPhoto(containerId) {
1569
- this.$refs['container_packing_photo_' + containerId][0].cancelAll1()
1629
+
1630
+ hasSelectAllContainer(containerId) {
1631
+ // setTimeout(() => {
1632
+ let res = this.$refs['container_packing_photo_' + containerId] && this.$refs['container_packing_photo_' + containerId][0]?.hasSelectAll()
1633
+ return res
1634
+ // }, 1000);
1570
1635
  },
1571
1636
 
1572
1637
  changeShipBillNo(index) {
@@ -1611,15 +1676,8 @@ export default {
1611
1676
  },
1612
1677
  identifyPage(url, shipmentId, type) {
1613
1678
  if (type == 'summary') {
1614
- return this.$router.push({
1615
- path: '/jxxg/ocr/index',
1616
- query: {
1617
- // url: url,
1618
- shipmentId,
1619
- shipmentOcrType: type,
1620
- contractId: this.contractId,
1621
- },
1622
- });
1679
+ window.open(`/jxxg/ocr/index?shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1680
+ return;
1623
1681
  }
1624
1682
 
1625
1683
  if (!url) {
@@ -1627,51 +1685,23 @@ export default {
1627
1685
  }
1628
1686
 
1629
1687
  if (type == 'draft_bill') {
1630
- return this.$router.push({
1631
- path: '/jxxg/ocr/draft-bill',
1632
- query: {
1633
- url: url,
1634
- shipmentId,
1635
- shipmentOcrType: type,
1636
- contractId: this.contractId,
1637
- },
1638
- });
1688
+ window.open(`/jxxg/ocr/draft-bill?url=${url}&shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1689
+ return;
1639
1690
  }
1640
1691
 
1641
1692
  if (type == 'packing') {
1642
- return this.$router.push({
1643
- path: '/jxxg/ocr/packing-list',
1644
- query: {
1645
- url: url,
1646
- shipmentId,
1647
- shipmentOcrType: type,
1648
- contractId: this.contractId,
1649
- },
1650
- });
1693
+ window.open(`/jxxg/ocr/packing-list?url=${url}&shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1694
+ return;
1651
1695
  }
1652
1696
 
1653
1697
  if (type == 'temporary_invoice') {
1654
- return this.$router.push({
1655
- path: '/jxxg/ocr/invoice-balance-temp',
1656
- query: {
1657
- url: url,
1658
- shipmentId,
1659
- shipmentOcrType: type,
1660
- contractId: this.contractId,
1661
- },
1662
- });
1698
+ window.open(`/jxxg/ocr/invoice-balance-temp?url=${url}&shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1699
+ return;
1663
1700
  }
1664
1701
 
1665
1702
  if (type == 'final_invoice') {
1666
- return this.$router.push({
1667
- path: '/jxxg/ocr/invoice-balance',
1668
- query: {
1669
- url: url,
1670
- shipmentId,
1671
- shipmentOcrType: type,
1672
- contractId: this.contractId,
1673
- },
1674
- });
1703
+ window.open(`/jxxg/ocr/invoice-balance?url=${url}&shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1704
+ return;
1675
1705
  }
1676
1706
  },
1677
1707
 
@@ -2070,17 +2100,12 @@ export default {
2070
2100
 
2071
2101
  // 索赔进度
2072
2102
  let claimTextArr = []
2073
- if(this.contractFileInfo.claimCreateFlag && !this.contractFileInfo.claimProcessFlag && !this.contractFileInfo.claimCloseFlag) {
2103
+ if(this.contractFileInfo.claimCreateFlag && !this.contractFileInfo.claimCloseFlag) {
2074
2104
  // 索赔中(英文:Claiming)
2075
2105
  claimTextArr.push(this.$t('contractDetail.claiming'))
2076
2106
  }
2077
2107
 
2078
- if(this.contractFileInfo.claimCreateFlag && this.contractFileInfo.claimProcessFlag && !this.contractFileInfo.claimCloseFlag) {
2079
- // 文件已更新(英文:Claiming-CN/DN issued
2080
- claimTextArr.push(this.$t('contractDetail.claiming_update'))
2081
- }
2082
-
2083
- if(this.contractFileInfo.claimCreateFlag && this.contractFileInfo.claimProcessFlag && this.contractFileInfo.claimCloseFlag) {
2108
+ if(this.contractFileInfo.claimCreateFlag && this.contractFileInfo.claimCloseFlag) {
2084
2109
  // 索赔已关闭(英文:Claim closed)
2085
2110
  claimTextArr.push(this.$t('contractDetail.claiming_closed'))
2086
2111
  }
@@ -2111,12 +2136,15 @@ export default {
2111
2136
  this.setRate(this.shipBillNo)
2112
2137
  });
2113
2138
  },
2114
- handleHistory(fileType) {
2139
+ // 合同 定金发票 尾款发票 装箱单 不需要传 visible=false,其余的均需要传
2140
+ handleHistory(fileType, linkId, visible) {
2141
+ console.log('handleHistory', fileType, linkId, visible)
2115
2142
  this.$router.push({
2116
2143
  path: '/contract/file/history',
2117
2144
  query: {
2118
- linkId: this.linkId,
2145
+ linkId: linkId,
2119
2146
  fileType: fileType,
2147
+ visible: visible === false ? "0" : null,
2120
2148
  },
2121
2149
  });
2122
2150
  },
@@ -2255,6 +2283,19 @@ export default {
2255
2283
  },
2256
2284
  },
2257
2285
  computed: {
2286
+ personalBillFileInfo: function() {
2287
+ if (this.contractFileInfo.bliFileInfoList && this.contractFileInfo.bliFileInfoList.length > 0) {
2288
+ return this.contractFileInfo.bliFileInfoList[0].personalBillFileInfo
2289
+ }
2290
+ return null
2291
+ },
2292
+ latestBillFileInfo: function() {
2293
+ if (this.contractFileInfo.bliFileInfoList && this.contractFileInfo.bliFileInfoList.length > 0) {
2294
+ return this.contractFileInfo.bliFileInfoList[0].latestBillFileInfo
2295
+ }
2296
+ return null
2297
+ },
2298
+
2258
2299
  // 销售获取最新的尾款发票
2259
2300
  getNewInfo() {
2260
2301
  // 时间比较
@@ -2281,24 +2322,37 @@ export default {
2281
2322
 
2282
2323
  },
2283
2324
  claimFileInfoCom() {
2284
- if (
2285
- (this.contractFileInfo &&
2286
- this.contractFileInfo.claimCreditNoteFileList &&
2287
- this.contractFileInfo.claimCreditNoteFileList[0]) ||
2288
- (this.contractFileInfo &&
2289
- this.contractFileInfo.claimDebitNoteFileList &&
2290
- this.contractFileInfo.claimDebitNoteFileList[0])
2291
- ) {
2292
- return !this.buyerFlag
2293
- ? this.contractFileInfo &&
2294
- this.contractFileInfo.claimCreditNoteFileList &&
2295
- this.contractFileInfo.claimCreditNoteFileList
2296
- : this.contractFileInfo &&
2297
- this.contractFileInfo.claimDebitNoteFileList &&
2298
- this.contractFileInfo.claimDebitNoteFileList;
2299
- } else {
2300
- false;
2301
- }
2325
+ // if (
2326
+ // (this.contractFileInfo &&
2327
+ // this.contractFileInfo.claimCreditNoteFileList &&
2328
+ // this.contractFileInfo.claimCreditNoteFileList[0]) ||
2329
+ // (this.contractFileInfo &&
2330
+ // this.contractFileInfo.claimDebitNoteFileList &&
2331
+ // this.contractFileInfo.claimDebitNoteFileList[0])
2332
+ // ) {
2333
+ // return !this.buyerFlag
2334
+ // ? this.contractFileInfo &&
2335
+ // this.contractFileInfo.claimCreditNoteFileList &&
2336
+ // this.contractFileInfo.claimCreditNoteFileList
2337
+ // : this.contractFileInfo &&
2338
+ // this.contractFileInfo.claimDebitNoteFileList &&
2339
+ // this.contractFileInfo.claimDebitNoteFileList;
2340
+ // } else {
2341
+ // false;
2342
+ // }
2343
+ if(this.contractFileInfo?.bills) {
2344
+ return this.contractFileInfo.bills.map(item => {
2345
+ let name = item.billType == 'receipt' ? 'DebitNote' : 'CreditNote'
2346
+ item.url = item.billNo + '.pdf'
2347
+ item.fileName = name + item.billNo + '.pdf'
2348
+ item.downloadUrl = '/bill/download?id=' + item.id
2349
+ return item
2350
+ }).filter(item => {
2351
+ return item.businessType == 1
2352
+ })
2353
+ } else {
2354
+ return false
2355
+ }
2302
2356
  },
2303
2357
  // 采购获取最新的尾款发票
2304
2358
  DNbillsCom() {
@@ -2310,6 +2364,8 @@ export default {
2310
2364
  item.downloadUrl = '/bill/download?id=' + item.id
2311
2365
  return item
2312
2366
  }
2367
+ }).filter(item => {
2368
+ return item.businessType != 1
2313
2369
  })
2314
2370
  } else {
2315
2371
  return false
@@ -2324,6 +2380,8 @@ export default {
2324
2380
  item.downloadUrl = '/bill/download?id=' + item.id
2325
2381
  return item
2326
2382
  }
2383
+ }).filter(item => {
2384
+ return item.businessType != 1
2327
2385
  })
2328
2386
  } else {
2329
2387
  return false
@@ -2331,13 +2389,13 @@ export default {
2331
2389
  },
2332
2390
  },
2333
2391
  watch: {
2334
- selectFileListProp: {
2335
- handler(val) {
2336
- this.selectFileList = val
2337
- },
2338
- immediate: true,
2339
- deep: true
2340
- },
2392
+ // selectFileListProp: {
2393
+ // handler(val) {
2394
+ // this.selectFileList = val
2395
+ // },
2396
+ // immediate: true,
2397
+ // deep: true
2398
+ // },
2341
2399
  },
2342
2400
  destroyed() {
2343
2401
  clearTimeout(this.timer);
@@ -2354,15 +2412,18 @@ export default {
2354
2412
  }
2355
2413
 
2356
2414
  .progress-root {
2415
+ padding: 0 20px;
2357
2416
  display: flex;
2417
+ height: 60px;
2418
+ background-color: white;
2419
+ width: 100%;
2420
+ align-items: center;
2358
2421
  }
2359
2422
 
2360
2423
  .selection-root {
2361
2424
  display: flex;
2362
- margin-top: 26px;
2363
2425
  justify-content: flex-start;
2364
2426
  align-items: center;
2365
- margin-bottom: 20px;
2366
2427
  }
2367
2428
 
2368
2429
  .border-button {
@@ -2370,7 +2431,7 @@ export default {
2370
2431
  min-width: 45px;
2371
2432
  padding: 0 10px;
2372
2433
  width: max-content;
2373
- height: 21px;
2434
+ min-height: 21px;
2374
2435
  text-align: center;
2375
2436
  line-height: 17px;
2376
2437
  background: #FFFFFF;
@@ -2380,9 +2441,18 @@ export default {
2380
2441
  cursor: pointer;
2381
2442
  }
2382
2443
 
2444
+ .border-button-blue {
2445
+ background-color: #54B8FF;
2446
+ color: white;
2447
+ border: 0;
2448
+ line-height: 21px;
2449
+ }
2450
+
2383
2451
  .border-button-share {
2384
- background: #84db4c;
2385
- border: 2px solid transparent;
2452
+ margin-right: 5px;
2453
+ background-color: #84db4c;
2454
+ border: 0;
2455
+ line-height: 21px;
2386
2456
  }
2387
2457
 
2388
2458
  .slot-content {
@@ -2408,6 +2478,26 @@ export default {
2408
2478
  }
2409
2479
  }
2410
2480
 
2481
+ .selection-root {
2482
+ margin-left: 16px;
2483
+ display: flex;
2484
+ flex-direction: row;
2485
+ align-items: center;
2486
+ margin-right: 16px;
2487
+ }
2488
+
2489
+ // .border-button {
2490
+ // padding: 0 10px;
2491
+ // width: max-content;
2492
+ // height: 21px;
2493
+ // text-align: center;
2494
+ // line-height: 17px;
2495
+ // background: #ffffff;
2496
+ // border-radius: 11px;
2497
+ // font-size: 12px;
2498
+ // border: 2px solid #d1d3d4;
2499
+ // cursor: pointer;
2500
+ // }
2411
2501
 
2412
2502
  .content-root {
2413
2503
  overflow: hidden;