doctor-admin-components 1.0.14-beta.1 → 1.0.14-beta.10

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.
@@ -8,7 +8,7 @@
8
8
  -->
9
9
  <template>
10
10
  <div class="bill-no-root" :style="open ? 'height:max-content': ''">
11
- <div :class="'bill-no'" :style="shipmentIndex == shipBillNo ? { color: progressInfo.bgcolor } : ''" v-for="(
11
+ <div :class="'bill-no'" :style="shipmentIndex == shipBillNo ? { color:'white', fontSize: '16px', backgroundColor: progressInfo.bgcolor, border: '0' } : { color: '#231F20', fontSize: '14px', border: '1px solid #231F20', backgroundColor:'transparent' }" v-for="(
12
12
  shipmentFileInfo, shipmentIndex
13
13
  ) in contractFileInfoData.shipmentFileInfoList" :key="shipmentIndex" @click="changeShipBillNo(shipmentIndex)">
14
14
 
@@ -81,10 +81,9 @@ export default {
81
81
  .bill-no-root {
82
82
  display: flex;
83
83
  flex-wrap: wrap;
84
- padding:0 20px;
85
84
  width:100%;
86
85
  position:relative;
87
- height:60px;
86
+ height:55px;
88
87
  overflow:hidden;
89
88
 
90
89
  .billOfLadingNo-more {
@@ -99,11 +98,14 @@ export default {
99
98
  }
100
99
 
101
100
  .bill-no {
102
- width:23%;
103
101
  font-size: 14px;
104
- color: #A7A9AC;
105
- padding:20px 20px 20px 0;
106
- cursor: pointer;
102
+ color: #231F20;
103
+ padding: 0 10px;
104
+ height: 40px;
105
+ align-content: center;
106
+ border-radius: 8px;
107
+ margin-right: 30px;
108
+ margin-bottom: 15px;
107
109
  }
108
110
 
109
111
  .bill-no-active {
@@ -2,7 +2,7 @@
2
2
  * @Author: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
3
3
  * @Date: 2024-02-26 10:03:01
4
4
  * @LastEditors: zhangpengwei@1338418459736990.onaliyun.com zhangpengwei@1338418459736990.onaliyun.com
5
- * @LastEditTime: 2024-05-08 15:22:56
5
+ * @LastEditTime: 2024-07-25 18:37:49
6
6
  * @FilePath: /doctor-admin-components 公共组件/packages/src/views/biz/bizFileInfo/IMGPreviewCheckBox.vue
7
7
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
8
  -->
@@ -64,7 +64,8 @@ export default {
64
64
  imgList: [],
65
65
  srcList:[],
66
66
  loadingInstance: null,
67
- timer: null
67
+ timer: null,
68
+ hasClicked: false,
68
69
  };
69
70
  },
70
71
 
@@ -87,6 +88,17 @@ export default {
87
88
  checkClick(index) {
88
89
  this.imgList[index].checked = !this.imgList[index].checked;
89
90
  },
91
+ clickSelectAll() {
92
+ this.hasClicked = !this.hasClicked
93
+ if (this.hasClicked) {
94
+ this.checkAll1()
95
+ } else {
96
+ this.cancelAll1()
97
+ }
98
+ },
99
+ hasSelectAll() {
100
+ return !this.hasClicked
101
+ },
90
102
  checkAll1() {
91
103
  this.imgList.forEach((item) => {
92
104
  item.checked = true;
@@ -192,9 +204,9 @@ export default {
192
204
  watch: {
193
205
  imgArr: {
194
206
  handler(val) {
207
+ this.imgList = [];
208
+ this.srcList = [];
195
209
  if(val.length) {
196
- this.imgList = [];
197
- this.srcList = [];
198
210
  val.forEach((item) => {
199
211
  let coverUrl = this.othersFile(item.url)
200
212
  this.imgList.push({
@@ -204,6 +216,9 @@ export default {
204
216
  });
205
217
  this.srcList.push(coverUrl);
206
218
  });
219
+ } else {
220
+ this.imgList = []
221
+ this.srcList = []
207
222
  }
208
223
  },
209
224
  deep: true,
@@ -288,7 +303,7 @@ export default {
288
303
  .batch-download {
289
304
  position: absolute;
290
305
  top: -41px;
291
- left: 620px;
306
+ left: 650px;
292
307
  min-width: 80px;
293
308
  width:max-content;
294
309
  padding:0 10px;
@@ -297,11 +312,12 @@ export default {
297
312
  text-align: center;
298
313
  border-radius: 10px;
299
314
  background-color: #54B8FF;
315
+ color: white;
300
316
  cursor: pointer;
301
317
  font-size:12px;
302
318
  }
303
319
  .batch-delete {
304
- left: 710px;
320
+ left: 740px;
305
321
  }
306
322
  }
307
323
 
@@ -8,14 +8,14 @@
8
8
  -->
9
9
  <template>
10
10
  <div>
11
- <div>
11
+ <div @click="clickOpen">
12
12
  <slot name="header"></slot>
13
13
  </div>
14
14
  <div class="slot-content-root" :style="{backgroundColor:info.bgcolor}">
15
15
  <div :style="open ? 'height:max-content' : 'height:0;overflow:hidden'">
16
16
  <slot name="content"></slot>
17
17
  </div>
18
- <div class="arrow" @click="open = !open">
18
+ <div class="arrow" @click="clickOpen">
19
19
  <i v-if="open" class="el-icon-arrow-up"></i>
20
20
  <i v-else class="el-icon-arrow-down"></i>
21
21
  </div>
@@ -46,7 +46,14 @@ export default {
46
46
  },
47
47
 
48
48
  methods: {
49
-
49
+ // 设置状态
50
+ setOpen(isOpen) {
51
+ this.open = isOpen
52
+ },
53
+ clickOpen() {
54
+ this.open = !this.open
55
+ this.$emit('updateOpen', this.open)
56
+ }
50
57
  },
51
58
  watch: {
52
59
  infoPro: {
@@ -64,6 +71,7 @@ export default {
64
71
 
65
72
  .slot-content-root {
66
73
  padding-bottom:25px;
74
+ margin-bottom: 30px;
67
75
  background-color: #fff;
68
76
  position: relative;
69
77
  .arrow {
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="file-info" v-if="fileInfo.url">
3
3
  <div class="main">
4
- <el-checkbox v-if="!this.hiddenOperation" label="" class="checkbox-position" @change="handleCheck" v-model="checkFlag">
4
+ <el-checkbox v-if="!this.hiddenOperation && !hiddenSelect" label="" class="checkbox-position" @change="handleCheck" v-model="checkFlag">
5
5
  </el-checkbox>
6
6
  <div class="area">
7
7
  <div class="area-info">
@@ -109,10 +109,18 @@ export default {
109
109
  type: Boolean,
110
110
  default: false,
111
111
  },
112
+ hiddenSelect: {
113
+ type: Boolean,
114
+ default: false,
115
+ },
112
116
  type: {
113
117
  type: String,
114
118
  default: '',
115
119
  },
120
+ deleteTips: {
121
+ type: String,
122
+ default: null,
123
+ },
116
124
  },
117
125
  data() {
118
126
  return {
@@ -129,7 +137,7 @@ export default {
129
137
  form: {},
130
138
  //上传表单
131
139
  uploadForm: {},
132
- checkFlag: false
140
+ checkFlag: false,
133
141
  }
134
142
  },
135
143
  computed: {
@@ -203,7 +211,7 @@ export default {
203
211
  handleDelete(row) {
204
212
  const fileIds = row.fileId || this.ids
205
213
  this.$modal
206
- .confirm('是否确认删除该文件?')
214
+ .confirm(this.deleteTips || '是否确认删除该文件?')
207
215
  .then(function () {
208
216
  return delBizFileInfo(fileIds)
209
217
  })
@@ -1,9 +1,9 @@
1
1
  <template>
2
2
  <div class="app-container">
3
3
  <!-- 添加或修改装运对话框 -->
4
- <el-dialog :visible.sync="open" z-index="1000" width="80%" :before-close="handleClose">
4
+ <el-dialog :visible.sync="open" z-index="1000" width="80%" :before-close="handleClose" :title="title">
5
5
  <slot name="">
6
- <span>{{ title }}</span>
6
+ <span v-if="isDraft" style="color: red">提示: 当前打开了【{{ form.lastUpdateUserName }}】在【{{ form.updateTime }}】保存的装运草稿</span>
7
7
  <span v-if="voidInvoiceList" style="color: red">【快捷转卖】:系统检测到此销售合同关联的采购合同存在【已作废】的装运,</span>
8
8
  <el-button v-if="voidInvoiceList" @click="handleReference" size="mini" type="text">点击这里直接复制并引用</el-button>
9
9
  </slot>
@@ -17,13 +17,11 @@
17
17
  </el-select>
18
18
  </el-form-item>
19
19
  </el-col>
20
-
21
20
  <el-col :span="6">
22
21
  <el-form-item label="订舱号" prop="bookingNo">
23
22
  <el-input v-model="form.bookingNo" placeholder="请输入订舱号" size="small" />
24
23
  </el-form-item>
25
24
  </el-col>
26
-
27
25
  <el-col :span="6">
28
26
  <el-form-item label="提单号" prop="billOfLadingNo">
29
27
  <el-input v-model="form.billOfLadingNo" placeholder="请输入提单号" size="small" />
@@ -214,7 +212,7 @@
214
212
  placeholder="请输入毛重"
215
213
  size="mini"
216
214
  type="number"
217
- @input="changePackageGrossWeight(index, scope1.$index, scope2.$index)"
215
+ @input="limitDecimalPlaces(index, scope1.$index, scope2.$index, scope2.row, 'packageGrossWeight')"
218
216
  ></el-input>
219
217
  </el-form-item>
220
218
  </template>
@@ -233,7 +231,7 @@
233
231
  placeholder="请输入皮重"
234
232
  size="mini"
235
233
  type="number"
236
- @input="changePackageTareWeight(index, scope1.$index, scope2.$index)"
234
+ @input="limitDecimalPlaces(index, scope1.$index, scope2.$index, scope2.row, 'packageTareWeight')"
237
235
  ></el-input>
238
236
  </el-form-item>
239
237
  </template>
@@ -247,7 +245,13 @@
247
245
  :rules="rules.packageNetWeight"
248
246
  :prop="'containerList.' + index + '.containerDetailList.' + scope1.$index + '.packageList.' + scope2.$index + '.packageNetWeight'"
249
247
  >
250
- <el-input v-model="scope2.row.packageNetWeight" placeholder="请输入净重" size="mini" type="number"></el-input>
248
+ <el-input
249
+ v-model="scope2.row.packageNetWeight"
250
+ placeholder="请输入净重"
251
+ size="mini"
252
+ type="number"
253
+ @input="limitDecimalPlaces(index, scope1.$index, scope2.$index, scope2.row, 'packageNetWeight')"
254
+ ></el-input>
251
255
  </el-form-item>
252
256
  </template>
253
257
  </el-table-column>
@@ -387,6 +391,7 @@
387
391
  </el-row>
388
392
  </el-form>
389
393
  <div slot="footer" class="dialog-footer">
394
+ <el-button type="warning" @click="onSaveDraft" style="margin-right: 10px" v-if="title === '生成装运'">保存草稿</el-button>
390
395
  <el-button type="primary" @click="submitShipment" style="margin-right: 10px">{{ title == '生成装运' ? '仅生成装运' : '保存草稿' }}</el-button>
391
396
  <el-dropdown @command="(command) => handleTemplate(command)" trigger="click" v-if="title == '生成装运'" style="margin-right: 10px">
392
397
  <el-button type="primary">{{ '装运并下载' }}</el-button>
@@ -448,7 +453,9 @@ import {
448
453
  addWithContainer,
449
454
  addContainerCheck,
450
455
  updateWithContainer,
451
- updateWithContainerAndInvoice
456
+ updateWithContainerAndInvoice,
457
+ saveDraft,
458
+ getDraft
452
459
  } from '../../../api/biz/bizShipment'
453
460
  import { generateFinalInvoiceByShipmentId } from '../../../api/biz/bizInvoice'
454
461
  import { updateBizContractDetail } from '../../../api/biz/bizContractDetail'
@@ -547,7 +554,8 @@ export default {
547
554
  //编辑开关
548
555
  editSwitch: false,
549
556
  //
550
- currentRow: null
557
+ currentRow: null,
558
+ isDraft: false
551
559
  }
552
560
  },
553
561
  props: {
@@ -672,6 +680,23 @@ export default {
672
680
  return total + Number(item.goodsNumber)
673
681
  }, 0)
674
682
  },
683
+
684
+ limitDecimalPlaces(index, scope1Index, scope2Index, data, type) {
685
+ let value = data[type]
686
+ const decimalPlaces = 3
687
+ if (!isNaN(value)) {
688
+ value = parseFloat(value).toFixed(decimalPlaces)
689
+ value = parseFloat(value).toString()
690
+ data[type] = value
691
+ }
692
+ if (type == 'packageGrossWeight') {
693
+ this.changePackageGrossWeight(index, scope1Index, scope2Index)
694
+ } else if (type == 'packageTareWeight') {
695
+ this.changePackageTareWeight(index, scope1Index, scope2Index)
696
+ } else if (type == 'packageNetWeight') {
697
+ }
698
+ },
699
+
675
700
  changePackageGrossWeight(index, k, yindex) {
676
701
  this.form.containerList[index].containerDetailList[k].goodsGrossWeight = this.form.containerList[index].containerDetailList[k].packageList.reduce((total, item) => {
677
702
  return total + Number(item.packageGrossWeight)
@@ -890,7 +915,6 @@ export default {
890
915
  /** 新增按钮操作 */
891
916
  handleAdd(contractDetailList, destinationPort, contract) {
892
917
  this.reset()
893
- console.log(contract)
894
918
  if (contract.contractType == 'purchase') {
895
919
  this.$modal.msgError('请选择销售合同')
896
920
  return
@@ -946,6 +970,7 @@ export default {
946
970
  haveVoidShipment(contract.contractId).then((res) => {
947
971
  this.voidInvoiceList = res.rows && res.rows.length > 0 ? res.rows : null
948
972
  })
973
+ this.onGetDraft()
949
974
  // 测试数据
950
975
  // this.voidInvoiceList = [{'contractId': '1', 'contractNo':'合同号1'}]
951
976
  },
@@ -1269,6 +1294,29 @@ export default {
1269
1294
  },
1270
1295
  `bizShipment_${new Date().getTime()}.xlsx`
1271
1296
  )
1297
+ },
1298
+ async onSaveDraft() {
1299
+ if (this.form.contractIds) {
1300
+ this.form.contractId = this.form.contractIds[0]
1301
+ }
1302
+ const res = await saveDraft(this.form)
1303
+ if (res.code === 200) {
1304
+ this.$message.success('保存成功')
1305
+ } else {
1306
+ this.$message.error(res.message)
1307
+ }
1308
+ },
1309
+ async onGetDraft() {
1310
+ if (this.form.contractIds) {
1311
+ const contractId = this.form.contractIds[0]
1312
+ const res = await getDraft(contractId)
1313
+ if (res.data) {
1314
+ this.isDraft = true
1315
+ this.form = res.data
1316
+ } else {
1317
+ this.isDraft = false
1318
+ }
1319
+ }
1272
1320
  }
1273
1321
  }
1274
1322
  }
@@ -42,7 +42,7 @@
42
42
  >
43
43
  <el-table-column label="Description" align="center" prop="askName"></el-table-column>
44
44
  <el-table-column label="Quantity" align="center" prop="weight">
45
- <template slot-scope="scope">{{ scope.row.weight }}MT</template>
45
+ <template slot-scope="scope">{{ CommonFormatNumber(scope.row.weight) }}MT</template>
46
46
  </el-table-column>
47
47
  <el-table-column label="Unit Price/MT" align="center" width="200">
48
48
  <template slot-scope="{ row }">
@@ -193,6 +193,7 @@
193
193
 
194
194
  <script>
195
195
  import { exportPdf } from '../../../utils/pdf'
196
+ import { CommonFormatNumber } from '../../../utils/MycommonUtil'
196
197
 
197
198
  export default {
198
199
  name: 'ContractPdf',
@@ -262,6 +263,7 @@ export default {
262
263
  },
263
264
  created() {},
264
265
  methods: {
266
+ CommonFormatNumber,
265
267
  //设置打印model为true
266
268
  setPrintModel(val) {
267
269
  this.printModel = val
@@ -168,7 +168,11 @@
168
168
  <el-table-column v-if="channel !== 'official-website'" :label="$t('contractDetail.subCategory')" prop="subCategoryName" width="110"></el-table-column>
169
169
  <el-table-column :label="$t('contractDetail.packaging')" prop="packingMethod" width="90" />
170
170
  <el-table-column prop="descriptions" :label="$t('contractDetail.description')" :width="channel === 'official-website' ? 200 : 160"></el-table-column>
171
- <el-table-column prop="weight" :label="$t('contractDetail.weight')" width="120px"></el-table-column>
171
+ <el-table-column prop="weight" :label="$t('contractDetail.weight')" width="120px">
172
+ <template slot-scope="scope">
173
+ {{ CommonFormatNumber(scope.row.weight) }}
174
+ </template>
175
+ </el-table-column>
172
176
  <el-table-column v-if="channel !== 'official-website'" prop="sllerPrice" :label="$t('contractDetail.sellerPrice')" width="120">
173
177
  <template slot-scope="scope">
174
178
  <span v-if="dealRecord.quoteType == 'FIXED'">{{ '$' + scope.row.sllerPrice }}</span>
@@ -372,6 +376,7 @@ import { listBizInvoice, getInfoWithShipment } from '../../../api/biz/bizInvoice
372
376
  import { listBizShipment, getGeekYumToken, updateAllShipmentStatus } from '../../../api/biz/bizShipment'
373
377
  import { listContainerWithInvoice } from '../../../api/biz/bizContainer'
374
378
  import ShipmentDetail from '../bizShipment/detail.vue'
379
+ import { CommonFormatNumber } from '../../../utils/MycommonUtil'
375
380
 
376
381
  export default {
377
382
  name: 'ContractSummary',
@@ -490,6 +495,7 @@ export default {
490
495
  }
491
496
  },
492
497
  methods: {
498
+ CommonFormatNumber,
493
499
  /**
494
500
  * @description: 索赔类别
495
501
  * @param {*} type
@@ -26,17 +26,8 @@
26
26
  {{ tabsItem.label }}
27
27
  </div>
28
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
29
  </div>
39
- <div class="app-container-right">
30
+ <div class="app-container-right" :style="activeName == 'fourth' ? 'overflow:visible' : 'overflow:auto'">
40
31
  <contract-summary v-if="activeName == 'first'" :channel="channel"></contract-summary>
41
32
  <contract-info v-if="activeName == 'second'" :channel="channel"></contract-info>
42
33
  <!-- 提单指令 -->
@@ -54,7 +45,6 @@
54
45
  :contract="contract"
55
46
  :channel="channel"
56
47
  :buyerFlag="buyerFlag"
57
- :selectFileListProp="selectFileList"
58
48
  ref="contractFileRef"
59
49
  ></contract-file>
60
50
  </div>
@@ -106,7 +96,6 @@ import ContractSummary from './contractSummary.vue'
106
96
  import BillInfo from './billInfo.vue'
107
97
  import ContractFile from '../bizFileInfo/contract.vue'
108
98
  import ContractInfo from './contractInfo.vue'
109
- import { delBizFileInfo } from '../../../api/biz/bizFileInfo'
110
99
 
111
100
  export default {
112
101
  name: 'ContractTracingDetail',
@@ -165,7 +154,6 @@ export default {
165
154
  }
166
155
  ],
167
156
 
168
- selectFileList: [],
169
157
  // 提单指令列表
170
158
  blList: null,
171
159
  activeBillIndex: null
@@ -205,46 +193,7 @@ export default {
205
193
  console.log(e)
206
194
  })
207
195
  },
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
- },
196
+
248
197
  /**
249
198
  * @description: 切换tab
250
199
  * @param {*} tab
@@ -329,29 +278,8 @@ export default {
329
278
  height: 100%;
330
279
  overflow: auto;
331
280
  }
281
+
332
282
  }
333
283
  }
334
284
 
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
285
  </style>