doctor-admin-components 1.0.14-beta.2 → 1.0.14-beta.21

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
  })
@@ -3,6 +3,7 @@
3
3
  <!-- 添加或修改装运对话框 -->
4
4
  <el-dialog :visible.sync="open" z-index="1000" width="80%" :before-close="handleClose" :title="title">
5
5
  <slot name="">
6
+ <span v-if="isDraft" style="color: red">提示: 当前打开了【{{ form.lastUpdateUserName }}】在【{{ form.updateTime }}】保存的装运草稿</span>
6
7
  <span v-if="voidInvoiceList" style="color: red">【快捷转卖】:系统检测到此销售合同关联的采购合同存在【已作废】的装运,</span>
7
8
  <el-button v-if="voidInvoiceList" @click="handleReference" size="mini" type="text">点击这里直接复制并引用</el-button>
8
9
  </slot>
@@ -210,8 +211,7 @@
210
211
  v-model="scope2.row.packageGrossWeight"
211
212
  placeholder="请输入毛重"
212
213
  size="mini"
213
- type="number"
214
- @input="limitDecimalPlaces(index, scope1.$index, scope2.$index, scope2.row, 'packageGrossWeight')"
214
+ v-decimal="3"
215
215
  ></el-input>
216
216
  </el-form-item>
217
217
  </template>
@@ -229,8 +229,7 @@
229
229
  v-model="scope2.row.packageTareWeight"
230
230
  placeholder="请输入皮重"
231
231
  size="mini"
232
- type="number"
233
- @input="limitDecimalPlaces(index, scope1.$index, scope2.$index, scope2.row, 'packageTareWeight')"
232
+ v-decimal="3"
234
233
  ></el-input>
235
234
  </el-form-item>
236
235
  </template>
@@ -244,7 +243,12 @@
244
243
  :rules="rules.packageNetWeight"
245
244
  :prop="'containerList.' + index + '.containerDetailList.' + scope1.$index + '.packageList.' + scope2.$index + '.packageNetWeight'"
246
245
  >
247
- <el-input v-model="scope2.row.packageNetWeight" placeholder="请输入净重" size="mini" type="number" @input="limitDecimalPlaces(index, scope1.$index, scope2.$index, scope2.row,'packageNetWeight')"></el-input>
246
+ <el-input
247
+ v-model="scope2.row.packageNetWeight"
248
+ placeholder="请输入净重"
249
+ size="mini"
250
+ v-decimal="3"
251
+ ></el-input>
248
252
  </el-form-item>
249
253
  </template>
250
254
  </el-table-column>
@@ -384,7 +388,7 @@
384
388
  </el-row>
385
389
  </el-form>
386
390
  <div slot="footer" class="dialog-footer">
387
- <el-button type="warning" @click="onSaveDraft" style="margin-right: 10px">保存草稿</el-button>
391
+ <el-button type="warning" @click="onSaveDraft" style="margin-right: 10px" v-if="title === '生成装运'">保存草稿</el-button>
388
392
  <el-button type="primary" @click="submitShipment" style="margin-right: 10px">{{ title == '生成装运' ? '仅生成装运' : '保存草稿' }}</el-button>
389
393
  <el-dropdown @command="(command) => handleTemplate(command)" trigger="click" v-if="title == '生成装运'" style="margin-right: 10px">
390
394
  <el-button type="primary">{{ '装运并下载' }}</el-button>
@@ -547,7 +551,8 @@ export default {
547
551
  //编辑开关
548
552
  editSwitch: false,
549
553
  //
550
- currentRow: null
554
+ currentRow: null,
555
+ isDraft: false
551
556
  }
552
557
  },
553
558
  props: {
@@ -674,15 +679,15 @@ export default {
674
679
  },
675
680
 
676
681
  limitDecimalPlaces(index, scope1Index, scope2Index, data, type) {
677
- let value = data[type];
678
- const decimalPlaces = 3;
682
+ let value = data[type]
683
+ const decimalPlaces = 3
679
684
  if (!isNaN(value)) {
680
- value = parseFloat(value).toFixed(decimalPlaces);
681
- value = parseFloat(value).toString();
682
- data[type] = value;
685
+ value = parseFloat(value).toFixed(decimalPlaces)
686
+ value = parseFloat(value).toString()
687
+ data[type] = value
683
688
  }
684
689
  if (type == 'packageGrossWeight') {
685
- this.changePackageGrossWeight(index, scope1Index, scope2Index);
690
+ this.changePackageGrossWeight(index, scope1Index, scope2Index)
686
691
  } else if (type == 'packageTareWeight') {
687
692
  this.changePackageTareWeight(index, scope1Index, scope2Index)
688
693
  } else if (type == 'packageNetWeight') {
@@ -1299,11 +1304,14 @@ export default {
1299
1304
  }
1300
1305
  },
1301
1306
  async onGetDraft() {
1302
- if(this.form.contractIds) {
1307
+ if (this.form.contractIds) {
1303
1308
  const contractId = this.form.contractIds[0]
1304
1309
  const res = await getDraft(contractId)
1305
1310
  if (res.data) {
1311
+ this.isDraft = true
1306
1312
  this.form = res.data
1313
+ } else {
1314
+ this.isDraft = false
1307
1315
  }
1308
1316
  }
1309
1317
  }
@@ -34,15 +34,18 @@
34
34
  <el-col :span="24">
35
35
  <div class="bank-item">Beneficiary Address:{{ bankData.beneficiaryAddress }}</div>
36
36
  </el-col>
37
+ <el-col :span="24">
38
+ <div class="bank-item" style="display:flex;"><p>Remark:</p><p style="white-space: pre-wrap;">{{ bankData.remark }}</p></div>
39
+ </el-col>
37
40
  </el-row>
38
41
  </div>
39
42
  <!-- 添加入口 -->
40
43
  <div v-if="!bankList || bankList.length == 0" style="padding-left: 30px; padding-top: 10px">
41
44
  <span>未添加收款账户信息,</span>
42
- <el-button type="text" size="mini" @click="clickAdd">去添加</el-button>
45
+ <el-button type="text" size="mini" v-hasPermi="['biz:company:payment:account:add']" @click="clickAdd">去添加</el-button>
43
46
  </div>
44
47
  <div v-else-if="bankList && bankList.length < 3" style="padding-left: 30px; padding-top: 10px">
45
- <el-button type="text" size="mini" @click="clickAdd">去添加</el-button>
48
+ <el-button type="text" size="mini" @click="clickAdd" v-hasPermi="['biz:company:payment:account:add']">去添加</el-button>
46
49
  <span>收款账户信息</span>
47
50
  </div>
48
51
  <!-- 添加收款账户弹框 -->
@@ -79,6 +82,11 @@
79
82
  <el-input maxlength="500" v-model="form.beneficiaryAddress" placeholder="请输入内容" />
80
83
  </el-form-item>
81
84
  </el-col>
85
+ <el-col :span="18">
86
+ <el-form-item label="Remark" label-width="150px">
87
+ <el-input maxlength="500" type="textarea" rows="4" v-model="form.remark" placeholder="请输入内容" />
88
+ </el-form-item>
89
+ </el-col>
82
90
  </el-row>
83
91
  </el-form>
84
92
  <div slot="footer" class="dialog-footer">
@@ -137,7 +145,8 @@ export default {
137
145
  bankAddress: null,
138
146
  beneficiaryAccount: null,
139
147
  beneficiary: null,
140
- beneficiaryAddress: null
148
+ beneficiaryAddress: null,
149
+ remark: null,
141
150
  },
142
151
  rules: {}
143
152
  }
@@ -154,7 +163,8 @@ export default {
154
163
  bankAddress: null,
155
164
  beneficiaryAccount: null,
156
165
  beneficiary: null,
157
- beneficiaryAddress: null
166
+ beneficiaryAddress: null,
167
+ remark: null,
158
168
  }
159
169
  },
160
170
  handleCaclSelectIndex() {
@@ -194,7 +204,7 @@ export default {
194
204
  },
195
205
  clickConfirm() {
196
206
  let e = this.form
197
- if (!(e.swiftCode || e.bankName || e.bankAddress || e.beneficiaryAccount || e.beneficiary || e.beneficiaryAddress)) {
207
+ if (!(e.swiftCode || e.bankName || e.bankAddress || e.beneficiaryAccount || e.beneficiary || e.beneficiaryAddress || e.remark)) {
198
208
  this.$modal.msgError('请输入内容')
199
209
  return
200
210
  }
@@ -11,7 +11,7 @@
11
11
  {{ contract.contractType == 'sale' ? 'Sales Order #:' : 'Purchase Order' }}
12
12
  </el-col>
13
13
  <el-col :span="7">{{ contract.contractNo }}</el-col>
14
- <el-col :span="5">{{ `Reference#: ${contract.reference}` }}</el-col>
14
+ <el-col :span="5">Reference#: {{ contract.reference }}</el-col>
15
15
  <el-col :span="7"></el-col>
16
16
  </el-row>
17
17
  <div>
@@ -109,12 +109,7 @@
109
109
  <el-descriptions-item label="Service Fee">{{ contract.serviceFee }}</el-descriptions-item>
110
110
  <el-descriptions-item label="Freight Terms">{{ contract.freightTerms }}</el-descriptions-item>
111
111
  <el-descriptions-item label="Payment Terms">
112
- <div v-if="(contract.balanceDays || contract.balanceDays == 0) && contract.balance && contract.balancePaymentType && contract.balancePaymentForm">
113
- <span v-if="contract.deposit"> Deposit ratio {{ contract.deposit }}% {{ contract.depositDays }} days {{ contract.depositPaymentForm }} and </span>
114
- {{ contract.balance }}% balance {{ contract.balancePaymentType }} paid {{ contract.balanceDays }} days {{ contract.balancePaymentForm }}
115
- {{ contract.otherPaymentTerm }}
116
- </div>
117
- <div v-else>{{ contract.otherPaymentTerm }}</div>
112
+ {{ contract.paymentTermFullText }}
118
113
  </el-descriptions-item>
119
114
  <el-descriptions-item label="Price Fixing Option">
120
115
  <div v-if="contract.livePriceSwitch">
@@ -12,31 +12,22 @@
12
12
  <div class="app-container-left">
13
13
  <div class="contract-number">
14
14
  <div>{{ $t('contractDetail.Contract_No') }}</div>
15
- <div>{{ contract.contractNo }}</div>
15
+ <div style="word-wrap: break-word;">{{ contract.contractNo }}</div>
16
16
  </div>
17
17
  <div class="contract-number">
18
18
  <div>
19
19
  <span>{{$t('contractDetail.Reference_No')}}</span>
20
20
  <el-button size="mini" type="text" icon="el-icon-edit" @click="clickEditReference"></el-button>
21
21
  </div>
22
- <div>{{ contract.reference || '--' }}</div>
22
+ <div style="word-wrap: break-word;">{{ contract.reference || '--' }}</div>
23
23
  </div>
24
24
  <div class="tab-root">
25
25
  <div :class="['tab', activeName == tabsItem.name ? 'active' : '']" v-for="tabsItem in saleTabsArr" :key="tabsItem.id" @click="changeTabs(tabsItem)">
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>