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

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 +504 -411
  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,11 +726,14 @@
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>
729
+ <div class="content-root-row">
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
+ </div>
701
737
  <div class="sub-title">
702
738
  <span
703
739
  v-if="
@@ -706,7 +742,9 @@
706
742
  "
707
743
  style="color: #1890ff; cursor: pointer; margin-left: 10px"
708
744
  @click.stop="identifyPageBoth(shipmentFileInfo, 1)"
709
- >{{ identify }}</span>
745
+ >
746
+ <el-divider direction="vertical"></el-divider>
747
+ {{ identify }}</span>
710
748
  </div>
711
749
  <el-col :span="12" v-if="channel == 'official-website' && shipmentFileInfo.salePersonalTemporaryFinallyInvoice && shipmentFileInfo.salePersonalTemporaryFinallyInvoice.length == 0" class="center-status">
712
750
  <i class="el-icon-time"></i>
@@ -738,8 +776,8 @@
738
776
  shipmentFileInfo.shipmentId,
739
777
  'shipment',
740
778
  'sale_personal_temporary_finally_invoice'
741
- )
742
- ":isShowTip="false" :uploadNameStr="$t('contractDetail.saleTemporaryFinallyInvoice')" />
779
+ )"
780
+ :isShowTip="false" :uploadNameStr="$t('contractDetail.saleTemporaryFinallyInvoice')" />
743
781
  </div>
744
782
  <div class="file-list" v-else>
745
783
  <file-show :hiddenOperation="channel == 'official-website'" @refresh="handleRefresh"
@@ -753,8 +791,8 @@
753
791
  shipmentFileInfo.shipmentId,
754
792
  'shipment',
755
793
  'purchase_temporary_finally_invoice'
756
- )
757
- ":isShowTip="false" :uploadNameStr="$t('contractDetail.saleTemporaryFinallyInvoice')" />
794
+ )"
795
+ :isShowTip="false" :uploadNameStr="$t('contractDetail.saleTemporaryFinallyInvoice')" />
758
796
  </div>
759
797
  </div>
760
798
  </el-col>
@@ -792,12 +830,15 @@
792
830
  bgTime: contract.contractType == 'sale' ? getNewInfo && timeFormate(getNewInfo) : shipmentFileInfo.purchaseFinallyInvoice && timeFormate(shipmentFileInfo.purchaseFinallyInvoice),
793
831
  bgcolor: shipProgressInfo.bgcolor
794
832
  }"></ContentTitle>
833
+ <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
834
  <span
796
835
  v-if="
797
836
  channel !== 'official-website' && contract.contractType == 'purchase' && shipmentFileInfo.purchaseFinallyInvoice && shipmentFileInfo.purchaseFinallyInvoice.length > 0"
798
837
  style="color: #1890ff; cursor: pointer; margin-left: 10px;font-size:14px;"
799
838
  @click.stop="identifyPageBoth(shipmentFileInfo, 2)"
800
- >{{ identify }}
839
+ >
840
+ <el-divider direction="vertical"></el-divider>
841
+ {{ identify }}
801
842
  </span>
802
843
  </div>
803
844
  <!-- <div class="sub-title"> -->
@@ -981,11 +1022,14 @@
981
1022
  </el-col>
982
1023
 
983
1024
  <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>
1025
+ <div class="content-root-row">
1026
+ <ContentTitle :contentTitleProp="{
1027
+ bgButton: $t('contractDetail.otherFile'),
1028
+ bgTime: contract.contractType == 'sale' ? shipmentFileInfo.saleShipmentOther && timeFormate(shipmentFileInfo.saleShipmentOther) : shipmentFileInfo.purchaseShipmentOther && timeFormate(shipmentFileInfo.purchaseShipmentOther),
1029
+ bgcolor: shipProgressInfo.bgcolor
1030
+ }"></ContentTitle>
1031
+ <span class="bg-history" @click="handleHistory('sale_shipment_other', shipmentFileInfo.shipmentId, false)">{{ $t('contractDetail.view_history') }}</span>
1032
+ </div>
989
1033
  </el-col>
990
1034
  <el-col :span="24" v-if="contract.contractType == 'sale'">
991
1035
  <div class="file-list">
@@ -1019,6 +1063,51 @@
1019
1063
  :uploadNameStr="$t('contractDetail.otherFile')" />
1020
1064
  </div>
1021
1065
  </el-col>
1066
+
1067
+ <div v-if="channel !== 'official-website'">
1068
+ <el-col :span="24" style="padding-top: 20px;">
1069
+ <span>内部文件夹</span>
1070
+ <div class="file-list" v-if="contract.contractType == 'purchase'">
1071
+ <file-show
1072
+ @refresh="handleRefresh"
1073
+ @checked="handleChecked"
1074
+ :hiddenOperation="channel == 'official-website'"
1075
+ @uncheck="handleUncheck"
1076
+ :selectFileListProp="selectFileList"
1077
+ :file-info="item"
1078
+ v-for="(item, i) in shipmentFileInfo.purchaseShipmentInternalFile" :key="i" />
1079
+ <contract-file-drag-upload
1080
+ @upload="
1081
+ handleUpload(
1082
+ $event,
1083
+ shipmentFileInfo.shipmentId,
1084
+ 'shipment',
1085
+ 'purchase_shipment_internal_file'
1086
+ )"
1087
+ :isShowTip="false" uploadNameStr="内部文件" />
1088
+ </div>
1089
+ <div class="file-list" v-else>
1090
+ <file-show
1091
+ @refresh="handleRefresh"
1092
+ @checked="handleChecked"
1093
+ :hiddenOperation="channel == 'official-website'"
1094
+ @uncheck="handleUncheck"
1095
+ :selectFileListProp="selectFileList"
1096
+ :file-info="item"
1097
+ v-for="(item, i) in shipmentFileInfo.saleShipmentInternalFile" :key="i" />
1098
+ <contract-file-drag-upload
1099
+ @upload="
1100
+ handleUpload(
1101
+ $event,
1102
+ shipmentFileInfo.shipmentId,
1103
+ 'shipment',
1104
+ 'sale_shipment_internal_file'
1105
+ )"
1106
+ :isShowTip="false" uploadNameStr="内部文件" />
1107
+ </div>
1108
+ </el-col>
1109
+ </div>
1110
+
1022
1111
  </div>
1023
1112
  </template>
1024
1113
  </SectionSlot>
@@ -1026,17 +1115,12 @@
1026
1115
  </div>
1027
1116
 
1028
1117
  <!-- 收货 -->
1029
- <div>
1030
- <BillOfLadingNoTab
1031
- :contractFileInfo="contractFileInfo"
1032
- @changeShipBillNo="changeShipBillNo"
1033
- :progressInfo="getGoodsProgressInfo"
1034
- :shipBillNoProp="shipBillNo"
1035
- ></BillOfLadingNoTab>
1118
+ <div id="contract_receiving_id">
1036
1119
  <SectionSlot
1120
+ ref="SectionReceiving"
1037
1121
  :infoPro="getGoodsProgressInfo" v-for="(
1038
1122
  shipmentFileInfo, shipmentIndex
1039
- ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex" v-if="shipmentIndex == shipBillNo"
1123
+ ) in contractFileInfo.shipmentFileInfoList" :key="'receiving'+shipmentIndex" v-if="shipmentIndex == shipBillNo"
1040
1124
  >
1041
1125
  <template v-slot:header>
1042
1126
  <div>
@@ -1046,76 +1130,18 @@
1046
1130
  <template v-slot:content>
1047
1131
  <div class="content-root">
1048
1132
  <div>
1049
- <!-- <div v-if="channel !== 'official-website'" style="color: #1890ff">
1050
- {{
1051
- contract.contractType == "sale"
1052
- ? "尾款收款"
1053
- : $t("contractDetail.Final_payment")
1054
- }}
1133
+ <div class="content-root-row">
1134
+ <ContentTitle :contentTitleProp="{
1135
+ bgButton: $t('contractDetail.tip7'),
1136
+ bgTime: shipmentFileInfo.deliveryReceipt && timeFormate(shipmentFileInfo.deliveryReceipt),
1137
+ bgcolor: getGoodsProgressInfo.bgcolor
1138
+ }"></ContentTitle>
1139
+ <span class="bg-history" @click="handleHistory('shipment_delivery_receipt', shipmentFileInfo.shipmentId, false)">{{ $t('contractDetail.view_history') }}</span>
1055
1140
  </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
1141
  <el-col :span="24">
1117
1142
  <div class="file-list">
1118
1143
  <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck"
1144
+ deleteTips="你确定要删除文件吗?删除后,电放状态将会回退到未电放?"
1119
1145
  :hiddenOperation="channel == 'official-website'"
1120
1146
  :selectFileListProp="selectFileList"
1121
1147
  :file-info="item" v-for="(item, i) in shipmentFileInfo.deliveryReceipt" :key="i" />
@@ -1146,17 +1172,12 @@
1146
1172
  </div>
1147
1173
  <!-- 索赔 -->
1148
1174
  <div v-if="contractFileInfo.claimCreateFlag">
1149
- <BillOfLadingNoTab
1150
- :contractFileInfo="contractFileInfo"
1151
- @changeShipBillNo="changeShipBillNo"
1152
- :progressInfo="shipProgressInfo"
1153
- :shipBillNoProp="shipBillNo"
1154
- ></BillOfLadingNoTab>
1155
1175
  <SectionSlot
1176
+ ref="SectionClaim"
1156
1177
  :infoPro="claimProgressInfo"
1157
1178
  v-for="(
1158
1179
  shipmentFileInfo, shipmentIndex
1159
- ) in contractFileInfo.shipmentFileInfoList" :key="shipmentIndex"
1180
+ ) in contractFileInfo.shipmentFileInfoList" :key="'claim'+shipmentIndex"
1160
1181
  v-if="shipmentIndex == shipBillNo"
1161
1182
  >
1162
1183
  <template v-slot:header>
@@ -1167,30 +1188,22 @@
1167
1188
  <template v-slot:content>
1168
1189
  <div class="content-root">
1169
1190
  <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>
1191
+ <div class="content-root-row">
1192
+ <ContentTitle :contentTitleProp="{
1193
+ bgButton: !buyerFlag
1194
+ ? $t('contractDetail.Credit_Note')
1195
+ : $t('contractDetail.Debit_Note'),
1196
+ bgTime: claimFileInfoCom && timeFormate(claimFileInfoCom),
1197
+ bgcolor: claimProgressInfo.bgcolor
1198
+ }"></ContentTitle>
1199
+ <!-- <span class="bg-history" @click="handleHistory(!buyerFlag ? 'claim_credit_note' : 'claim_debit_note', linkId, false)">{{ $t('contractDetail.view_history') }}</span> -->
1200
+ </div>
1177
1201
  <el-col :span="24">
1178
1202
  <div class="file-list" v-if="claimFileInfoCom">
1179
1203
  <file-show @refresh="handleRefresh" @checked="handleChecked" @uncheck="handleUncheck"
1180
1204
  :selectFileListProp="selectFileList"
1181
- :hiddenOperation="channel == 'official-website'"
1205
+ :hiddenOperation="true"
1182
1206
  :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
1207
  </div>
1195
1208
  <div v-else class="center-status">
1196
1209
  <i class="el-icon-time"></i>
@@ -1203,8 +1216,9 @@
1203
1216
  </SectionSlot>
1204
1217
  </div>
1205
1218
  <!-- cndn -->
1206
- <div style="margin-top:50px" v-if="CNbillsCom.length || DNbillsCom.length">
1219
+ <div style="margin-top:20px" v-if="CNbillsCom.length || DNbillsCom.length">
1207
1220
  <SectionSlot
1221
+ ref="SectionCNDN"
1208
1222
  :infoPro="cndnProgressInfo"
1209
1223
  >
1210
1224
  <template v-slot:header>
@@ -1227,17 +1241,6 @@
1227
1241
  :selectFileListProp="selectFileList"
1228
1242
  :hiddenOperation="true"
1229
1243
  :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
1244
  </div>
1242
1245
  <!-- <div v-else class="center-status">
1243
1246
  <i class="el-icon-time"></i>
@@ -1258,17 +1261,6 @@
1258
1261
  :selectFileListProp="selectFileList"
1259
1262
  :hiddenOperation="true"
1260
1263
  :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
1264
  </div>
1273
1265
  <!-- <div v-else class="center-status">
1274
1266
  <i class="el-icon-time"></i>
@@ -1278,7 +1270,7 @@
1278
1270
  </div>
1279
1271
  </div>
1280
1272
  </template>
1281
- </SectionSlot>
1273
+ </SectionSlot>
1282
1274
  </div>
1283
1275
 
1284
1276
  <deposit-invoice ref="depositInvoice"></deposit-invoice>
@@ -1317,6 +1309,7 @@
1317
1309
  :getContractFileInfoCallback="getContractFileInfoCallback"
1318
1310
  ></shipment-purchase-amount>
1319
1311
  </div>
1312
+ </div>
1320
1313
  </template>
1321
1314
 
1322
1315
  <script>
@@ -1360,6 +1353,7 @@ import ContentTitle from './contractFile/ContentTitle.vue';
1360
1353
  import IMGPreviewCheckBox from './contractFile/IMGPreviewCheckBox.vue'
1361
1354
  import BillOfLadingNoTab from './contractFile/BillOfLadingNoTab.vue'
1362
1355
  import ShowAndHide from './contractFile/ShowAndHide.vue'
1356
+ import { delBizFileInfo } from '../../../api/biz/bizFileInfo'
1363
1357
 
1364
1358
  let handleGenerateflag = false;
1365
1359
  let handleGenerateflag1 = false;
@@ -1400,12 +1394,12 @@ export default {
1400
1394
  type: Boolean,
1401
1395
  default: true,
1402
1396
  },
1403
- selectFileListProp: {
1404
- type: Array,
1405
- default: () => {
1406
- return [];
1407
- },
1408
- },
1397
+ // selectFileListProp: {
1398
+ // type: Array,
1399
+ // default: () => {
1400
+ // return [];
1401
+ // },
1402
+ // },
1409
1403
  },
1410
1404
  data() {
1411
1405
  return {
@@ -1416,7 +1410,7 @@ export default {
1416
1410
  contractProgressInfo: {
1417
1411
  text: this.$t('contractDetail.contract'),
1418
1412
  rate: 0,
1419
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/805524d45f964ad0b3f51437d3b5750e.png',
1413
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/805524d45f964ad0b3f51437d3b5750e.png',
1420
1414
  bgcolor: '#FBB040',
1421
1415
  textArr:[],
1422
1416
  hidden: false
@@ -1424,7 +1418,7 @@ export default {
1424
1418
  shipProgressInfo: {
1425
1419
  text: this.$t('contractDetail.shipment'),
1426
1420
  rate: 0,
1427
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/8517dbf0444542d5bf100279231c9597.png',
1421
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/8517dbf0444542d5bf100279231c9597.png',
1428
1422
  bgcolor: '#54B8FF',
1429
1423
  textArr:[this.$t('contractDetail.Waiting_for_the_seller_to_ship')],
1430
1424
  hidden: false
@@ -1432,7 +1426,7 @@ export default {
1432
1426
  getGoodsProgressInfo: {
1433
1427
  text: this.$t('contractDetail.receiving'),
1434
1428
  rate: 0,
1435
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/a43ef25e953747efa9b88d3d9bbe674f.png',
1429
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/a43ef25e953747efa9b88d3d9bbe674f.png',
1436
1430
  bgcolor: '#7CCF48',
1437
1431
  textArr:[],
1438
1432
  hidden: false
@@ -1440,7 +1434,7 @@ export default {
1440
1434
  claimProgressInfo: {
1441
1435
  text: this.$t('contractDetail.claim'),
1442
1436
  rate: 0,
1443
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1437
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1444
1438
  bgcolor: '#adadad',
1445
1439
  textArr:[],
1446
1440
  hidden: false
@@ -1448,7 +1442,7 @@ export default {
1448
1442
  cndnProgressInfo: {
1449
1443
  text: this.$t('contractDetail.cndn'),
1450
1444
  rate: 100,
1451
- img: 'https://s3.cdn.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1445
+ img: 'https://s3.doctorscrap.com/dev/user/image_9/b427331405604eeb8ec368130f00c5e6.png',
1452
1446
  bgcolor: '#c47afc',
1453
1447
  textArr:[],
1454
1448
  hidden: true
@@ -1514,6 +1508,7 @@ export default {
1514
1508
  url: null,
1515
1509
  ext: null,
1516
1510
  },
1511
+ selectFileList: [],
1517
1512
  // 表单参数
1518
1513
  form: {},
1519
1514
  //上传表单
@@ -1545,10 +1540,72 @@ export default {
1545
1540
  this.contractId = contractId;
1546
1541
  this.getContractFileInfo(contractId);
1547
1542
  this.queryParams.linkId = contractId;
1543
+ if(this.$route.query.deductionRecordsShipmentId) {
1544
+ const timer = setTimeout(() => {
1545
+ this.$refs.shipmentPurchaseAmount.handleShow(this.$route.query.deductionRecordsShipmentId);
1546
+ clearTimeout(timer);
1547
+ }, 1000)
1548
+ }
1548
1549
  }
1549
1550
  },
1550
1551
  mounted() { },
1551
1552
  methods: {
1553
+ // 装运模块状态变化,需要同步关联模块
1554
+ handleShippingUpdateOpen(isOpen) {
1555
+ this.$refs.SectionReceiving && this.$refs.SectionReceiving[0]?.setOpen(isOpen)
1556
+ this.$refs.SectionClaim && this.$refs.SectionClaim[0]?.setOpen(isOpen)
1557
+ this.$refs.SectionCNDN?.setOpen(isOpen)
1558
+ },
1559
+ handleScroll(elementId) {
1560
+ document.getElementById(elementId).scrollIntoView()
1561
+ },
1562
+ /**
1563
+ * @description: 取消全部选择
1564
+ * @return {*}
1565
+ */
1566
+ cancelAll() {
1567
+ this.cancelAllSelectFileList()
1568
+ },
1569
+
1570
+ /**
1571
+ * @description: 全部下载
1572
+ * @return {*}
1573
+ */
1574
+ downLoadAll() {
1575
+ if (this.selectFileList.length == 0) {
1576
+ return this.$message.warning(this.$t('contractDetail.please_select_file'))
1577
+ }
1578
+ this.downloadZip()
1579
+ },
1580
+
1581
+ deleteAll() {
1582
+ console.log('==delBizFileInfo==', this.selectFileList)
1583
+ if (this.selectFileList.length == 0) {
1584
+ return this.$message.warning(this.$t('contractDetail.please_select_file'))
1585
+ }
1586
+
1587
+ this.$confirm('是否删除选中文件', '提示', {
1588
+ confirmButtonText: '确定',
1589
+ cancelButtonText: '取消',
1590
+ type: 'warning'
1591
+ })
1592
+ .then(() => {
1593
+ const ids = this.selectFileList.map((item) => item.fileId)
1594
+ delBizFileInfo(ids).then(() => {
1595
+ this.$message.success('删除成功')
1596
+ this.selectFileList = []
1597
+ this.handleRefresh()
1598
+ })
1599
+ })
1600
+ .catch(() => {
1601
+ this.$message.info('已取消删除')
1602
+ })
1603
+ },
1604
+
1605
+ draftBillOfLadingUrl(shipmentFileInfo) {
1606
+ return shipmentFileInfo && shipmentFileInfo.draftBillOfLading && shipmentFileInfo.draftBillOfLading[0] && shipmentFileInfo.draftBillOfLading[0].url
1607
+ },
1608
+
1552
1609
  /**
1553
1610
  * @description:
1554
1611
  * @param {*} info
@@ -1562,11 +1619,22 @@ export default {
1562
1619
  }
1563
1620
  },
1564
1621
 
1565
- allSelectContainerPackingPhoto(containerId) {
1566
- this.$refs['container_packing_photo_' + containerId][0].checkAll1()
1622
+ // allSelectContainerPackingPhoto(containerId) {
1623
+ // this.$refs['container_packing_photo_' + containerId][0].checkAll1()
1624
+ // },
1625
+ // cancelContainerPackingPhoto(containerId) {
1626
+ // this.$refs['container_packing_photo_' + containerId][0].cancelAll1()
1627
+ // },
1628
+
1629
+ clickSelectAllContainer(containerId) {
1630
+ return this.$refs['container_packing_photo_' + containerId][0].clickSelectAll()
1567
1631
  },
1568
- cancelContainerPackingPhoto(containerId) {
1569
- this.$refs['container_packing_photo_' + containerId][0].cancelAll1()
1632
+
1633
+ hasSelectAllContainer(containerId) {
1634
+ // setTimeout(() => {
1635
+ let res = this.$refs['container_packing_photo_' + containerId] && this.$refs['container_packing_photo_' + containerId][0]?.hasSelectAll()
1636
+ return res
1637
+ // }, 1000);
1570
1638
  },
1571
1639
 
1572
1640
  changeShipBillNo(index) {
@@ -1611,15 +1679,8 @@ export default {
1611
1679
  },
1612
1680
  identifyPage(url, shipmentId, type) {
1613
1681
  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
- });
1682
+ window.open(`/jxxg/ocr/index?shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1683
+ return;
1623
1684
  }
1624
1685
 
1625
1686
  if (!url) {
@@ -1627,51 +1688,23 @@ export default {
1627
1688
  }
1628
1689
 
1629
1690
  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
- });
1691
+ window.open(`/jxxg/ocr/draft-bill?url=${url}&shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1692
+ return;
1639
1693
  }
1640
1694
 
1641
1695
  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
- });
1696
+ window.open(`/jxxg/ocr/packing-list?url=${url}&shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1697
+ return;
1651
1698
  }
1652
1699
 
1653
1700
  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
- });
1701
+ window.open(`/jxxg/ocr/invoice-balance-temp?url=${url}&shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1702
+ return;
1663
1703
  }
1664
1704
 
1665
1705
  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
- });
1706
+ window.open(`/jxxg/ocr/invoice-balance?url=${url}&shipmentId=${shipmentId}&shipmentOcrType=${type}&contractId=${this.contractId}`, '_blank');
1707
+ return;
1675
1708
  }
1676
1709
  },
1677
1710
 
@@ -2070,17 +2103,12 @@ export default {
2070
2103
 
2071
2104
  // 索赔进度
2072
2105
  let claimTextArr = []
2073
- if(this.contractFileInfo.claimCreateFlag && !this.contractFileInfo.claimProcessFlag && !this.contractFileInfo.claimCloseFlag) {
2106
+ if(this.contractFileInfo.claimCreateFlag && !this.contractFileInfo.claimCloseFlag) {
2074
2107
  // 索赔中(英文:Claiming)
2075
2108
  claimTextArr.push(this.$t('contractDetail.claiming'))
2076
2109
  }
2077
2110
 
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) {
2111
+ if(this.contractFileInfo.claimCreateFlag && this.contractFileInfo.claimCloseFlag) {
2084
2112
  // 索赔已关闭(英文:Claim closed)
2085
2113
  claimTextArr.push(this.$t('contractDetail.claiming_closed'))
2086
2114
  }
@@ -2111,12 +2139,15 @@ export default {
2111
2139
  this.setRate(this.shipBillNo)
2112
2140
  });
2113
2141
  },
2114
- handleHistory(fileType) {
2142
+ // 合同 定金发票 尾款发票 装箱单 不需要传 visible=false,其余的均需要传
2143
+ handleHistory(fileType, linkId, visible) {
2144
+ console.log('handleHistory', fileType, linkId, visible)
2115
2145
  this.$router.push({
2116
2146
  path: '/contract/file/history',
2117
2147
  query: {
2118
- linkId: this.linkId,
2148
+ linkId: linkId,
2119
2149
  fileType: fileType,
2150
+ visible: visible === false ? "0" : null,
2120
2151
  },
2121
2152
  });
2122
2153
  },
@@ -2255,6 +2286,19 @@ export default {
2255
2286
  },
2256
2287
  },
2257
2288
  computed: {
2289
+ personalBillFileInfo: function() {
2290
+ if (this.contractFileInfo.bliFileInfoList && this.contractFileInfo.bliFileInfoList.length > 0) {
2291
+ return this.contractFileInfo.bliFileInfoList[0].personalBillFileInfo
2292
+ }
2293
+ return null
2294
+ },
2295
+ latestBillFileInfo: function() {
2296
+ if (this.contractFileInfo.bliFileInfoList && this.contractFileInfo.bliFileInfoList.length > 0) {
2297
+ return this.contractFileInfo.bliFileInfoList[0].latestBillFileInfo
2298
+ }
2299
+ return null
2300
+ },
2301
+
2258
2302
  // 销售获取最新的尾款发票
2259
2303
  getNewInfo() {
2260
2304
  // 时间比较
@@ -2281,24 +2325,37 @@ export default {
2281
2325
 
2282
2326
  },
2283
2327
  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
- }
2328
+ // if (
2329
+ // (this.contractFileInfo &&
2330
+ // this.contractFileInfo.claimCreditNoteFileList &&
2331
+ // this.contractFileInfo.claimCreditNoteFileList[0]) ||
2332
+ // (this.contractFileInfo &&
2333
+ // this.contractFileInfo.claimDebitNoteFileList &&
2334
+ // this.contractFileInfo.claimDebitNoteFileList[0])
2335
+ // ) {
2336
+ // return !this.buyerFlag
2337
+ // ? this.contractFileInfo &&
2338
+ // this.contractFileInfo.claimCreditNoteFileList &&
2339
+ // this.contractFileInfo.claimCreditNoteFileList
2340
+ // : this.contractFileInfo &&
2341
+ // this.contractFileInfo.claimDebitNoteFileList &&
2342
+ // this.contractFileInfo.claimDebitNoteFileList;
2343
+ // } else {
2344
+ // false;
2345
+ // }
2346
+ if(this.contractFileInfo?.bills) {
2347
+ return this.contractFileInfo.bills.map(item => {
2348
+ let name = item.billType == 'receipt' ? 'DebitNote' : 'CreditNote'
2349
+ item.url = item.billNo + '.pdf'
2350
+ item.fileName = name + item.billNo + '.pdf'
2351
+ item.downloadUrl = '/bill/download?id=' + item.id
2352
+ return item
2353
+ }).filter(item => {
2354
+ return item.businessType == 1
2355
+ })
2356
+ } else {
2357
+ return false
2358
+ }
2302
2359
  },
2303
2360
  // 采购获取最新的尾款发票
2304
2361
  DNbillsCom() {
@@ -2310,6 +2367,8 @@ export default {
2310
2367
  item.downloadUrl = '/bill/download?id=' + item.id
2311
2368
  return item
2312
2369
  }
2370
+ }).filter(item => {
2371
+ return item.businessType != 1
2313
2372
  })
2314
2373
  } else {
2315
2374
  return false
@@ -2324,6 +2383,8 @@ export default {
2324
2383
  item.downloadUrl = '/bill/download?id=' + item.id
2325
2384
  return item
2326
2385
  }
2386
+ }).filter(item => {
2387
+ return item.businessType != 1
2327
2388
  })
2328
2389
  } else {
2329
2390
  return false
@@ -2331,13 +2392,13 @@ export default {
2331
2392
  },
2332
2393
  },
2333
2394
  watch: {
2334
- selectFileListProp: {
2335
- handler(val) {
2336
- this.selectFileList = val
2337
- },
2338
- immediate: true,
2339
- deep: true
2340
- },
2395
+ // selectFileListProp: {
2396
+ // handler(val) {
2397
+ // this.selectFileList = val
2398
+ // },
2399
+ // immediate: true,
2400
+ // deep: true
2401
+ // },
2341
2402
  },
2342
2403
  destroyed() {
2343
2404
  clearTimeout(this.timer);
@@ -2354,15 +2415,18 @@ export default {
2354
2415
  }
2355
2416
 
2356
2417
  .progress-root {
2418
+ padding: 0 20px;
2357
2419
  display: flex;
2420
+ height: 60px;
2421
+ background-color: white;
2422
+ width: 100%;
2423
+ align-items: center;
2358
2424
  }
2359
2425
 
2360
2426
  .selection-root {
2361
2427
  display: flex;
2362
- margin-top: 26px;
2363
2428
  justify-content: flex-start;
2364
2429
  align-items: center;
2365
- margin-bottom: 20px;
2366
2430
  }
2367
2431
 
2368
2432
  .border-button {
@@ -2370,7 +2434,7 @@ export default {
2370
2434
  min-width: 45px;
2371
2435
  padding: 0 10px;
2372
2436
  width: max-content;
2373
- height: 21px;
2437
+ min-height: 21px;
2374
2438
  text-align: center;
2375
2439
  line-height: 17px;
2376
2440
  background: #FFFFFF;
@@ -2380,9 +2444,18 @@ export default {
2380
2444
  cursor: pointer;
2381
2445
  }
2382
2446
 
2447
+ .border-button-blue {
2448
+ background-color: #54B8FF;
2449
+ color: white;
2450
+ border: 0;
2451
+ line-height: 21px;
2452
+ }
2453
+
2383
2454
  .border-button-share {
2384
- background: #84db4c;
2385
- border: 2px solid transparent;
2455
+ margin-right: 5px;
2456
+ background-color: #84db4c;
2457
+ border: 0;
2458
+ line-height: 21px;
2386
2459
  }
2387
2460
 
2388
2461
  .slot-content {
@@ -2408,6 +2481,26 @@ export default {
2408
2481
  }
2409
2482
  }
2410
2483
 
2484
+ .selection-root {
2485
+ margin-left: 16px;
2486
+ display: flex;
2487
+ flex-direction: row;
2488
+ align-items: center;
2489
+ margin-right: 16px;
2490
+ }
2491
+
2492
+ // .border-button {
2493
+ // padding: 0 10px;
2494
+ // width: max-content;
2495
+ // height: 21px;
2496
+ // text-align: center;
2497
+ // line-height: 17px;
2498
+ // background: #ffffff;
2499
+ // border-radius: 11px;
2500
+ // font-size: 12px;
2501
+ // border: 2px solid #d1d3d4;
2502
+ // cursor: pointer;
2503
+ // }
2411
2504
 
2412
2505
  .content-root {
2413
2506
  overflow: hidden;