doctor-admin-components 1.0.13-pro.0 → 1.0.14-beta.1

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 (46) hide show
  1. package/README.md +10 -2
  2. package/package.json +1 -1
  3. package/packages/index.js +16 -0
  4. package/packages/src/api/biz/bizContract.js +1005 -0
  5. package/packages/src/api/biz/bizFileInfo.js +16 -0
  6. package/packages/src/api/biz/bizInvoice.js +1 -1
  7. package/packages/src/api/biz/bizShipment.js +18 -0
  8. package/packages/src/assets/images/click-show-table.png +0 -0
  9. package/packages/src/assets/images/more.png +0 -0
  10. package/packages/src/assets/images/pdf-new.png +0 -0
  11. package/packages/src/components/DictTag/index.vue +12 -2
  12. package/packages/src/components/FileUpload/contract-drag-new.vue +100 -11
  13. package/packages/src/i18n/en/message.json +305 -0
  14. package/packages/src/i18n/index.js +38 -0
  15. package/packages/src/i18n/zh-CN/message.json +305 -0
  16. package/packages/src/index.js +24 -1
  17. package/packages/src/utils/index.js +35 -0
  18. package/packages/src/views/biz/bizFileInfo/PAYMENT_VOUCHER(/"payment_voucher/", /"/344/273/230/346/254/276/345/207/255/350/257/201.ini" +222 -0
  19. package/packages/src/views/biz/bizFileInfo/contract copy.vue +1711 -0
  20. package/packages/src/views/biz/bizFileInfo/contract.vue +1783 -986
  21. package/packages/src/views/biz/bizFileInfo/contractFile/BillOfLadingNoTab.vue +114 -0
  22. package/packages/src/views/biz/bizFileInfo/contractFile/ContentTitle.vue +102 -0
  23. package/packages/src/views/biz/bizFileInfo/contractFile/IMGPreviewCheckBox.vue +308 -0
  24. package/packages/src/views/biz/bizFileInfo/contractFile/Progress.vue +85 -0
  25. package/packages/src/views/biz/bizFileInfo/contractFile/ProgressDetail.vue +123 -0
  26. package/packages/src/views/biz/bizFileInfo/contractFile/SectionSlot.vue +83 -0
  27. package/packages/src/views/biz/bizFileInfo/contractFile/ShowAndHide.vue +178 -0
  28. package/packages/src/views/biz/bizFileInfo/fileShow copy.vue +321 -0
  29. package/packages/src/views/biz/bizFileInfo/fileShow.vue +143 -47
  30. package/packages/src/views/biz/bizFileInfo/fileShowClaim.vue +1 -1
  31. package/packages/src/views/biz/bizShipment/add.vue +134 -29
  32. package/packages/src/views/biz/bizShipment/referenceAlert.vue +168 -0
  33. package/packages/src/views/biz/contractTracing/billInfo.vue +64 -40
  34. package/packages/src/views/biz/contractTracing/companyBanks.vue +228 -0
  35. package/packages/src/views/biz/contractTracing/contractInfo.vue +1 -1
  36. package/packages/src/views/biz/contractTracing/contractPdf.vue +7 -4
  37. package/packages/src/views/biz/contractTracing/contractSummary.vue +24 -18
  38. package/packages/src/views/biz/contractTracing/contractTracingDetail copy.vue +107 -0
  39. package/packages/src/views/biz/contractTracing/contractTracingDetail.vue +281 -31
  40. package/packages/src/views/biz/contractTracing/editBill.vue +22 -9
  41. package/packages/src/views/biz/contractTracing/purchaseInvoiceUpload.vue +153 -7
  42. package/packages/src/views/biz/contractTracing/shipmentPurchaseAmount.vue +14 -0
  43. package/packages/src/views/biz/contractTracing/subCompanyDialog.vue +8 -2
  44. package/packages/src/views/components/RegionPicker/Distpicker.vue +459 -0
  45. package/packages/src/views/components/RegionPicker/districts.js +4641 -0
  46. package/packages/src/views/test.vue +3 -3
@@ -2,7 +2,7 @@
2
2
  * @Author: zhangpengwei 15038779532@163.com
3
3
  * @Date: 2023-08-28 19:04:39
4
4
  * @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
5
- * @LastEditTime: 2024-03-20 09:46:11
5
+ * @LastEditTime: 2024-07-17 15:35:31
6
6
  * @FilePath: /doctor-admin-components/packages/src/views/biz/contractTracing/contractSummary.vue
7
7
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
8
  -->
@@ -101,7 +101,8 @@
101
101
  <el-form-item :label="$t('contractDetail.paymentType')">{{ dealRecord.paymentType }}</el-form-item>
102
102
  </el-col>
103
103
  <el-col :span="8">
104
- <el-form-item :label="$t('contractDetail.destination')">{{ dealRecord.buyerDestination }}</el-form-item>
104
+ <el-form-item v-if="dealRecord.paymentType != 'EXW'" :label="$t('contractDetail.destination')">{{ dealRecord.buyerDestination }}</el-form-item>
105
+ <el-form-item v-else label="EXW">{{ dealRecord.exw }}</el-form-item>
105
106
  </el-col>
106
107
  </el-row>
107
108
  <el-row>
@@ -221,7 +222,7 @@
221
222
  <el-table-column v-if="channel !== 'official-website'" label="总金额" align="center" prop="amount" width="100" />
222
223
 
223
224
  <!-- 官网 -->
224
- <el-table-column v-if="channel == 'official-website'" :label="$t('contract.Payable_Amount')" align="center" prop="amount" width="100" />
225
+ <el-table-column v-if="channel == 'official-website'" :label="$t('contract.Payable_Amount')" align="center" prop="amount" width="140" />
225
226
  <el-table-column v-if="channel == 'official-website'" :label="$t('contract.Amount_Paid')" align="center" prop="amount" width="100">
226
227
  <template slot-scope="{ row }">{{ row.amount - row.remainingAmount }}</template>
227
228
  </el-table-column>
@@ -338,10 +339,9 @@
338
339
  >
339
340
  <!-- v-if="channel == 'official-website' && scope.row.showFallbackQuality" -->
340
341
  <el-button
341
- v-if="
342
- channel == 'official-website'"
342
+ v-if="channel == 'official-website'"
343
343
  size="mini"
344
- :type="scope.row.showFallbackQuality ? 'primary': 'info'"
344
+ :type="scope.row.showFallbackQuality ? 'primary' : 'info'"
345
345
  style="padding-left: 5px; padding-right: 5px"
346
346
  @click.stop="qualityFeedback(scope.row)"
347
347
  >{{ $t('contract.Quality_Feedback') }}</el-button
@@ -535,6 +535,11 @@ export default {
535
535
  code: 3,
536
536
  en: 'Completed',
537
537
  cn: '已结束'
538
+ },
539
+ 4: {
540
+ code: 4,
541
+ en: 'Obsoleted',
542
+ cn: '已作废'
538
543
  }
539
544
  }
540
545
  const obj = claimTypeMap[type || '1']
@@ -547,10 +552,10 @@ export default {
547
552
  * @return {*}
548
553
  */
549
554
  qualityFeedback(row) {
550
- this.$buryingPoint({ data: { funcKey: 'click_feedback' } });
551
- if(!row.showFallbackQuality) {
552
- this.$message.warning(this.$t('contract.No_quality_feedback'));
553
- return;
555
+ this.$buryingPoint({ data: { funcKey: 'click_feedback' } })
556
+ if (!row.showFallbackQuality) {
557
+ this.$message.warning(this.$t('contract.No_quality_feedback'))
558
+ return
554
559
  }
555
560
 
556
561
  this.$store.commit('setBillNoInfo', {
@@ -726,17 +731,15 @@ ${invoiceNoTitleZh}:${invoiceNo}
726
731
  })
727
732
  },
728
733
  getGeekYumPage(shipment) {
729
- console.log(shipment)
730
734
  if (shipment.subNo) {
731
735
  let url =
732
736
  'https://tracking.geekyum.com/shipping/detail?bizNo=' +
733
- shipment.bookingNo.toString() +
737
+ (shipment?.bookingNo?.toString() ? shipment?.bookingNo?.toString() : shipment?.billOfLadingNo?.toString()) +
734
738
  '&bizType=1&subNo=' +
735
- shipment.subNo.toString() +
739
+ shipment?.subNo?.toString() +
736
740
  '&access_token=' +
737
741
  this.accessToken
738
742
  url = url + (this.isChina ? '&lang=zh' : '&lang=en')
739
- console.log(url)
740
743
  return url
741
744
  }
742
745
  },
@@ -804,7 +807,7 @@ ${invoiceNoTitleZh}:${invoiceNo}
804
807
  this.dealRecord = response.data
805
808
  this.dealRecord.dealRecordDetailList.map((item) => {
806
809
  if (item.imageList) {
807
- item.askCover = item.imageList.toString()
810
+ item.askCover = item?.imageList?.toString()
808
811
  }
809
812
  })
810
813
 
@@ -825,11 +828,14 @@ ${invoiceNoTitleZh}:${invoiceNo}
825
828
  }
826
829
  })
827
830
  listBizInvoice({
828
- contractId: this.contractId
831
+ contractId: this.contractId,
832
+ voidFlagSearch: this.channel == 'official-website' ? [0] : []
829
833
  }).then((response) => {
830
834
  this.invoiceList = response.rows
831
835
  })
832
- var queryParams = {}
836
+ var queryParams = {
837
+ voidStatus: this.channel == 'official-website' ? 0 : null
838
+ }
833
839
  if (this.contract.contractType == 'sale') {
834
840
  queryParams.saleContractId = this.contractId
835
841
  } else {
@@ -891,7 +897,7 @@ ${invoiceNoTitleZh}:${invoiceNo}
891
897
  this.dealRecord = response.data
892
898
  this.dealRecord.dealRecordDetailList.map((item) => {
893
899
  if (item.imageList) {
894
- item.askCover = item.imageList.toString()
900
+ item.askCover = item?.imageList?.toString()
895
901
  }
896
902
  })
897
903
  })
@@ -0,0 +1,107 @@
1
+ <!--
2
+ * @Author: zhangpengwei 15038779532@163.com
3
+ * @Date: 2023-07-20 17:13:54
4
+ * @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
5
+ * @LastEditTime: 2024-01-19 13:54:56
6
+ * @FilePath: /recycle-vue-ui再生博士后台管理/src/views/biz/contractTracing/contractTracingDetail.vue
7
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
+ -->
9
+ <template>
10
+ <div class="app-container">
11
+ <div style="position: relative">
12
+ <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
13
+ <el-tab-pane :label="$t('contractDetail.summary')" name="first">
14
+ <contract-summary v-if="activeName == 'first'" :channel="channel"></contract-summary>
15
+ </el-tab-pane>
16
+ <el-tab-pane :label="$t('contractDetail.info')" name="second">
17
+ <contract-info v-if="activeName == 'second'" :channel="channel"></contract-info>
18
+ </el-tab-pane>
19
+ <el-tab-pane
20
+ v-if="contract.contractType == 'sale'"
21
+ :label="$t('contractDetail.blInfo')"
22
+ name="third"
23
+ >
24
+ <bill-info :contract="contract" v-if="activeName == 'third'"
25
+ :channel="channel"
26
+ ></bill-info>
27
+ </el-tab-pane>
28
+ <el-tab-pane :label="$t('contractDetail.fileManage')" name="fourth">
29
+ <contract-file
30
+ v-if="activeName == 'fourth'"
31
+ :contract="contract"
32
+ :channel="channel"
33
+ :buyerFlag="buyerFlag"
34
+ ></contract-file>
35
+ </el-tab-pane>
36
+ </el-tabs>
37
+
38
+ <!-- 这里添加合同编号的显示 -->
39
+ <div
40
+ style="
41
+ position: absolute;
42
+ right: 10px;
43
+ top: 5px;
44
+ margin-top: 10px;
45
+ font-weight: bold;
46
+ "
47
+ >{{$t('contractDetail.Contract_No')}}:{{ contract.contractNo }}</div>
48
+ </div>
49
+ </div>
50
+ </template>
51
+
52
+ <script>
53
+ import { getBizContract } from '../../../api/biz/bizContract';
54
+ import ContractSummary from './contractSummary.vue';
55
+ import BillInfo from './billInfo.vue';
56
+ import ContractFile from '../bizFileInfo/contract.vue';
57
+ import ContractInfo from './contractInfo.vue';
58
+
59
+ export default {
60
+ name: 'ContractTracingDetail',
61
+ mixins: [],
62
+ components: {
63
+ ContractSummary,
64
+ BillInfo,
65
+ ContractFile,
66
+ ContractInfo,
67
+ },
68
+ props: {
69
+ channel: '',
70
+ },
71
+ data() {
72
+ return {
73
+ activeName: 'first',
74
+ contract: {},
75
+ buyerFlag: true,
76
+ };
77
+ },
78
+ computed: {},
79
+ watch: {},
80
+ created() {
81
+ const contractId = this.$route.params && this.$route.params.contractId;
82
+ this.getContract(contractId);
83
+ const activeName = this.$route.query && this.$route.query.activeName;
84
+ this.activeName = activeName || 'first';
85
+ localStorage.setItem('contractDetail', location.href);
86
+ location.href;
87
+ },
88
+ mounted() {},
89
+ methods: {
90
+ getContract(contractId) {
91
+ getBizContract(contractId).then((res) => {
92
+ this.contract = res.data;
93
+ // Debit note是给卖家的,要放在 ARS 下
94
+ // Credit note是给买家的,要放在 ARP 下
95
+ this.buyerFlag = this.contract?.contractNo
96
+ ?.toLowerCase()
97
+ ?.includes('arp');
98
+ });
99
+ },
100
+ handleClick(tab, event) {
101
+ console.log(tab, event);
102
+ },
103
+ },
104
+ };
105
+ </script>
106
+
107
+ <style scoped lang="scss"></style>
@@ -2,14 +2,65 @@
2
2
  * @Author: zhangpengwei 15038779532@163.com
3
3
  * @Date: 2023-07-20 17:13:54
4
4
  * @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
5
- * @LastEditTime: 2024-01-19 13:54:56
5
+ * @LastEditTime: 2024-05-08 14:21:04
6
6
  * @FilePath: /recycle-vue-ui再生博士后台管理/src/views/biz/contractTracing/contractTracingDetail.vue
7
7
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
8
  -->
9
9
  <template>
10
10
  <div class="app-container">
11
- <div style="position: relative">
12
- <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
11
+ <div class="app-container-container">
12
+ <div class="app-container-left">
13
+ <div class="contract-number">
14
+ <div>{{ $t('contractDetail.Contract_No') }}</div>
15
+ <div>{{ contract.contractNo }}</div>
16
+ </div>
17
+ <div class="contract-number">
18
+ <div>
19
+ <span>{{$t('contractDetail.Reference_No')}}</span>
20
+ <el-button size="mini" type="text" icon="el-icon-edit" @click="clickEditReference"></el-button>
21
+ </div>
22
+ <div>{{ contract.reference || '--' }}</div>
23
+ </div>
24
+ <div class="tab-root">
25
+ <div :class="['tab', activeName == tabsItem.name ? 'active' : '']" v-for="tabsItem in saleTabsArr" :key="tabsItem.id" @click="changeTabs(tabsItem)">
26
+ {{ tabsItem.label }}
27
+ </div>
28
+ </div>
29
+ <div>
30
+ <!-- 选择项 -->
31
+ <div class="selection-root">
32
+ <span>{{ $t('contractDetail.Selected') }} {{ selectFileList.length }} {{ $t('contractDetail.item') }}</span>
33
+ <div class="border-button" @click.stop="downLoadAll">{{ $t('contractDetail.Download_All') }}</div>
34
+ <div class="border-button" @click.stop="deleteAll">{{ $t('contractDetail.Delete_All') }}</div>
35
+ <div class="border-button" @click.stop="cancelAll">{{ $t('contractDetail.Deselect') }}</div>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ <div class="app-container-right">
40
+ <contract-summary v-if="activeName == 'first'" :channel="channel"></contract-summary>
41
+ <contract-info v-if="activeName == 'second'" :channel="channel"></contract-info>
42
+ <!-- 提单指令 -->
43
+ <div v-if="activeName == 'third'">
44
+ <!-- 标题分栏 -->
45
+ <el-tabs v-model="activeBillIndex">
46
+ <el-tab-pane v-for="(bill, i) in blList" :key="i" :label="contract.contractNo + ' 提单指令'" :name="i.toString()">
47
+ <bill-info @refresh="getBlList" :contract="contract" :billData="bill" :channel="channel"></bill-info>
48
+ </el-tab-pane>
49
+ </el-tabs>
50
+ </div>
51
+
52
+ <contract-file
53
+ v-if="activeName == 'fourth' && contract.contractType"
54
+ :contract="contract"
55
+ :channel="channel"
56
+ :buyerFlag="buyerFlag"
57
+ :selectFileListProp="selectFileList"
58
+ ref="contractFileRef"
59
+ ></contract-file>
60
+ </div>
61
+ </div>
62
+ <!-- <div style="position: relative">
63
+ <el-tabs tabPosition="left" v-model="activeName" type="card" @tab-click="handleClick">
13
64
  <el-tab-pane :label="$t('contractDetail.summary')" name="first">
14
65
  <contract-summary v-if="activeName == 'first'" :channel="channel"></contract-summary>
15
66
  </el-tab-pane>
@@ -33,10 +84,10 @@
33
84
  :buyerFlag="buyerFlag"
34
85
  ></contract-file>
35
86
  </el-tab-pane>
36
- </el-tabs>
87
+ </el-tabs> -->
37
88
 
38
- <!-- 这里添加合同编号的显示 -->
39
- <div
89
+ <!-- 这里添加合同编号的显示 -->
90
+ <!-- <div
40
91
  style="
41
92
  position: absolute;
42
93
  right: 10px;
@@ -45,16 +96,17 @@
45
96
  font-weight: bold;
46
97
  "
47
98
  >{{$t('contractDetail.Contract_No')}}:{{ contract.contractNo }}</div>
48
- </div>
99
+ </div> -->
49
100
  </div>
50
101
  </template>
51
102
 
52
103
  <script>
53
- import { getBizContract } from '../../../api/biz/bizContract';
54
- import ContractSummary from './contractSummary.vue';
55
- import BillInfo from './billInfo.vue';
56
- import ContractFile from '../bizFileInfo/contract.vue';
57
- import ContractInfo from './contractInfo.vue';
104
+ import { getBizContract, getContractBlList, editReferenceNo } from '../../../api/biz/bizContract'
105
+ import ContractSummary from './contractSummary.vue'
106
+ import BillInfo from './billInfo.vue'
107
+ import ContractFile from '../bizFileInfo/contract.vue'
108
+ import ContractInfo from './contractInfo.vue'
109
+ import { delBizFileInfo } from '../../../api/biz/bizFileInfo'
58
110
 
59
111
  export default {
60
112
  name: 'ContractTracingDetail',
@@ -63,45 +115,243 @@ export default {
63
115
  ContractSummary,
64
116
  BillInfo,
65
117
  ContractFile,
66
- ContractInfo,
118
+ ContractInfo
67
119
  },
68
120
  props: {
69
- channel: '',
121
+ channel: ''
70
122
  },
71
123
  data() {
72
124
  return {
73
125
  activeName: 'first',
74
126
  contract: {},
75
127
  buyerFlag: true,
76
- };
128
+ saleTabsArr: [
129
+ {
130
+ label: this.$t('contractDetail.summary'),
131
+ name: 'first',
132
+ id: 0
133
+ },
134
+ {
135
+ label: this.$t('contractDetail.info'),
136
+ name: 'second',
137
+ id: 1
138
+ },
139
+ {
140
+ label: this.$t('contractDetail.blInfo'),
141
+ name: 'third',
142
+ id: 2
143
+ },
144
+ {
145
+ label: this.$t('contractDetail.fileManage'),
146
+ name: 'fourth',
147
+ id: 3
148
+ }
149
+ ],
150
+ purchaseTabsArr: [
151
+ {
152
+ label: this.$t('contractDetail.summary'),
153
+ name: 'first',
154
+ id: 0
155
+ },
156
+ {
157
+ label: this.$t('contractDetail.info'),
158
+ name: 'second',
159
+ id: 1
160
+ },
161
+ {
162
+ label: this.$t('contractDetail.fileManage'),
163
+ name: 'fourth',
164
+ id: 2
165
+ }
166
+ ],
167
+
168
+ selectFileList: [],
169
+ // 提单指令列表
170
+ blList: null,
171
+ activeBillIndex: null
172
+ }
77
173
  },
78
174
  computed: {},
79
175
  watch: {},
80
176
  created() {
81
- const contractId = this.$route.params && this.$route.params.contractId;
82
- this.getContract(contractId);
83
- const activeName = this.$route.query && this.$route.query.activeName;
84
- this.activeName = activeName || 'first';
85
- localStorage.setItem('contractDetail', location.href);
86
- location.href;
177
+ const contractId = this.$route.params && this.$route.params.contractId
178
+ this.getContract(contractId)
179
+ const activeName = this.$route.query && this.$route.query.activeName
180
+ this.activeName = activeName || 'first'
181
+ // this.activeName = 'fourth'
182
+ localStorage.setItem('contractDetail', location.href)
183
+ location.href
87
184
  },
88
185
  mounted() {},
89
186
  methods: {
187
+ // 编辑合同参考号
188
+ clickEditReference() {
189
+ const contractId = this.$route.params && this.$route.params.contractId;
190
+ this.$prompt('请在下方填写合同参考号', '编辑合同参考号', {
191
+ confirmButtonText: '确认',
192
+ cancelButtonText: '取消',
193
+ inputType: 'text',
194
+ inputValue: this.contract.reference,
195
+ inputPlaceholder: '请填写合同参考号'
196
+ })
197
+ .then(({ value }) => {
198
+ return editReferenceNo({reference: value, contractId:contractId})
199
+ })
200
+ .then(() => {
201
+ this.$modal.msgSuccess('编辑成功')
202
+ this.getContract(contractId)
203
+ })
204
+ .catch((e) => {
205
+ console.log(e)
206
+ })
207
+ },
208
+ /**
209
+ * @description: 取消全部选择
210
+ * @return {*}
211
+ */
212
+ cancelAll() {
213
+ this.$refs.contractFileRef.cancelAllSelectFileList()
214
+ },
215
+
216
+ /**
217
+ * @description: 全部下载
218
+ * @return {*}
219
+ */
220
+ downLoadAll() {
221
+ if (this.selectFileList.length == 0) {
222
+ return this.$message.warning(this.$t('contractDetail.please_select_file'))
223
+ }
224
+ this.$refs.contractFileRef.downloadZip()
225
+ },
226
+ deleteAll() {
227
+ console.log('==delBizFileInfo==', this.selectFileList)
228
+ if (this.selectFileList.length == 0) {
229
+ return this.$message.warning(this.$t('contractDetail.please_select_file'))
230
+ }
231
+
232
+ this.$confirm('是否删除选中文件', '提示', {
233
+ confirmButtonText: '确定',
234
+ cancelButtonText: '取消',
235
+ type: 'warning'
236
+ })
237
+ .then(() => {
238
+ const ids = this.selectFileList.map((item) => item.fileId)
239
+ delBizFileInfo(ids).then(() => {
240
+ this.$message.success('删除成功')
241
+ this.$refs.contractFileRef.handleRefresh()
242
+ })
243
+ })
244
+ .catch(() => {
245
+ this.$message.info('已取消删除')
246
+ })
247
+ },
248
+ /**
249
+ * @description: 切换tab
250
+ * @param {*} tab
251
+ * @return {*}
252
+ */
253
+ changeTabs(tab) {
254
+ this.activeName = tab.name
255
+ },
90
256
  getContract(contractId) {
91
257
  getBizContract(contractId).then((res) => {
92
- this.contract = res.data;
258
+ this.contract = res.data
93
259
  // Debit note是给卖家的,要放在 ARS 下
94
260
  // Credit note是给买家的,要放在 ARP 下
95
- this.buyerFlag = this.contract?.contractNo
96
- ?.toLowerCase()
97
- ?.includes('arp');
98
- });
261
+ this.buyerFlag = this.contract?.contractNo?.toLowerCase()?.includes('arp')
262
+ // 获取提单指令
263
+ this.getBlList()
264
+ })
99
265
  },
100
- handleClick(tab, event) {
101
- console.log(tab, event);
266
+ getBlList() {
267
+ const contractId = this.$route.params && this.$route.params.contractId
268
+ if (contractId) {
269
+ getContractBlList(contractId).then((res) => {
270
+ this.blList = res.rows
271
+ // 默认选中第一个
272
+ if (!this.activeBillIndex) {
273
+ this.activeBillIndex = '0'
274
+ }
275
+ })
276
+ }
102
277
  },
103
- },
104
- };
278
+
279
+ handleClick(tab, event) {
280
+ console.log(tab, event)
281
+ }
282
+ }
283
+ }
105
284
  </script>
106
285
 
107
- <style scoped lang="scss"></style>
286
+ <style scoped lang="scss">
287
+ .app-container {
288
+ .app-container-container {
289
+ display: flex;
290
+ height: calc(100vh - 126px);
291
+ .app-container-left {
292
+ width: 141px;
293
+ height: 100%;
294
+ margin-right: 10px;
295
+ background-color: #d9dfe8;
296
+ .contract-number {
297
+ font-size: 12px;
298
+ font-weight: normal;
299
+ color: #000000;
300
+ line-height: 14px;
301
+ text-align: left;
302
+ padding: 10px 0 0 15px;
303
+ }
304
+ .tab-root {
305
+ margin-top: 40px;
306
+ display: flex;
307
+ flex-direction: column;
308
+ align-items: flex-end;
309
+ .tab {
310
+ height: 48px;
311
+ font-size: 14px;
312
+ font-weight: normal;
313
+ color: #000;
314
+ line-height: 48px;
315
+ text-align: right;
316
+ width: max-content;
317
+ padding: 0 20px;
318
+ box-sizing: border-box;
319
+ }
320
+ .active {
321
+ background: #eff5ff;
322
+ border-radius: 5px 0px 0px 5px;
323
+ color: #009444;
324
+ }
325
+ }
326
+ }
327
+ .app-container-right {
328
+ flex: 1;
329
+ height: 100%;
330
+ overflow: auto;
331
+ }
332
+ }
333
+ }
334
+
335
+ .selection-root {
336
+ margin-top: 26px;
337
+ display: flex;
338
+ flex-direction: column;
339
+ justify-content: center;
340
+ align-items: center;
341
+ margin-bottom: 20px;
342
+ }
343
+
344
+ .border-button {
345
+ margin-top: 10px;
346
+ padding: 0 10px;
347
+ width: max-content;
348
+ height: 21px;
349
+ text-align: center;
350
+ line-height: 17px;
351
+ background: #ffffff;
352
+ border-radius: 11px;
353
+ font-size: 12px;
354
+ border: 2px solid #d1d3d4;
355
+ cursor: pointer;
356
+ }
357
+ </style>
@@ -4,11 +4,18 @@
4
4
  <div class="contract">
5
5
  <div class="info" id="printPdf">
6
6
  <!-- <div class="title">{{ $t("contract.billTip") }}</div> -->
7
- <div style="padding-bottom: 20px">
8
- <span style="font-size: 16px; font-weight: bold"> {{ $t('contractDetail.BLConfirm') + ':' }} </span>
9
- <el-switch v-model="confirmFlag" :inactive-text="$t('contractDetail.BL_Not_Confirm')" :active-text="$t('contractDetail.BL_Confirmed')"> </el-switch>
10
- </div>
11
- <el-form :model="form" ref="form" size="mini" :rules="rules" label-width="130px">
7
+ <el-row>
8
+ <el-col :span="12" v-if="voidFlag" style="padding-bottom: 20px">
9
+ <span style="font-size: 16px; color: red; font-weight: bold"> 已作废 </span>
10
+ </el-col>
11
+ <el-col :span="12" v-else>
12
+ <div style="padding-bottom: 20px">
13
+ <span style="font-size: 16px; font-weight: bold"> {{ $t('contractDetail.BLConfirm') + ':' }} </span>
14
+ <el-switch v-model="confirmFlag" :inactive-text="$t('contractDetail.BL_Not_Confirm')" :active-text="$t('contractDetail.BL_Confirmed')"> </el-switch>
15
+ </div>
16
+ </el-col>
17
+ </el-row>
18
+ <el-form :disabled="voidFlag" :model="form" ref="form" size="mini" :rules="rules" label-width="130px">
12
19
  <el-collapse v-model="expandItems">
13
20
  <el-collapse-item name="0" v-if="channel !== 'official-website'">
14
21
  <template slot="title">
@@ -169,10 +176,13 @@
169
176
  </el-collapse-item>
170
177
  </el-collapse>
171
178
 
172
- <el-form-item :label="$t('contract.destination') + ':'">
179
+ <el-form-item v-if="contract && contract.freightTerms && contract.freightTerms != 'EXW'" :label="$t('contract.destination') + ':'">
173
180
  {{ this.contract && this.contract.destination ? this.contract.destination : '' }}
174
181
  </el-form-item>
175
- <el-form-item :label="$t('contract.terminal') + ':'" prop="terminal">
182
+ <el-form-item v-else :label="'EXW Address' + ':'">
183
+ {{ this.contract && this.contract.exw ? this.contract.exw : '' }}
184
+ </el-form-item>
185
+ <el-form-item v-if="contract && contract.freightTerms && contract.freightTerms != 'EXW'" :label="$t('contract.terminal') + ':'" prop="terminal">
176
186
  <el-input v-model="form.terminal" type="textarea" autosize :placeholder="$t('contract.terminalTip')"></el-input>
177
187
  </el-form-item>
178
188
 
@@ -260,7 +270,7 @@
260
270
  </el-form-item>
261
271
  </el-form>
262
272
  </div>
263
- <div class="footer" v-if="!printModel">
273
+ <div class="footer" v-if="!printModel && !voidFlag">
264
274
  <el-button type="primary" @click="submitForm">{{ $t('button.saveDraft') }}</el-button>
265
275
  </div>
266
276
  </div>
@@ -298,6 +308,8 @@ export default {
298
308
  open: false,
299
309
  // 是否已确认
300
310
  confirmFlag: false,
311
+ // 是否已作废
312
+ voidFlag: false,
301
313
  // 表单参数
302
314
  form: {
303
315
  //买家公司提单货物名称
@@ -379,7 +391,8 @@ export default {
379
391
  getBizContract(contractId)
380
392
  .then((response) => {
381
393
  this.contract = response.data
382
- this.confirmFlag = this.contract.blConfirmFlag ?? false
394
+ this.confirmFlag = this.contract.blConfirmFlag == '1'
395
+ this.voidFlag = this.contract.blConfirmFlag == '2'
383
396
  resolve(response) // 异步操作成功,解决Promise
384
397
  })
385
398
  .catch((error) => {