bri-components 1.3.96 → 1.3.98

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bri-components",
3
- "version": "1.3.96",
3
+ "version": "1.3.98",
4
4
  "author": "dengshanghui",
5
5
  "description": "a component lib for vue project",
6
6
  "main": "src/index.js",
@@ -1,7 +1,8 @@
1
1
  <template>
2
2
  <div :class="{
3
3
  uploadList: true,
4
- [`uploadList-${showMode}`]: true
4
+ [`uploadList-${showMode}`]: true,
5
+ [`uploadList-${propsObj._fileType}`]: true
5
6
  }">
6
7
  <!-- 普通文本模式 -->
7
8
  <template v-if="showMode ==='old'">
@@ -9,38 +10,57 @@
9
10
  <div
10
11
  v-if="files.length"
11
12
  ref="viewerImage"
12
- class="uploadList-list"
13
+ :class="['uploadList-list', `uploadList-list-${propsObj._fileType}`]"
13
14
  >
14
15
  <div
15
16
  v-for="(fileItem, fileIndex) in files"
16
17
  :key="fileItem._key || fileItem._id"
17
- class="item"
18
+ :class="{
19
+ 'item': propsObj._fileType === 'image',
20
+ [`item-${propsObj._fileType}`]: true
21
+ }"
18
22
  >
19
23
  <!-- 展示图 -->
20
- <div class="item-show">
21
- <img
22
- v-if="fileItem.mimetype.includes('image')"
23
- :data-original="fileItem.url"
24
- :src="$imageResize(fileItem.url, imageResizeConfig)"
25
- :alt="fileItem.name"
26
- >
27
- <img
28
- v-else
29
- :src="getFileImage(fileItem)"
30
- :alt="fileItem.name"
31
- >
32
- </div>
33
-
34
- <!-- 展示名称 -->
35
- <p class="item-name-title">{{ fileItem.name }}</p>
36
-
37
- <!-- 图标 -->
38
- <dsh-icons
39
- class="item-action"
40
- item-class="item-action-icon"
41
- :list="$getOperationList(getBtns(fileItem))"
42
- @click="$dispatchEvent($event, fileItem, fileIndex)"
43
- ></dsh-icons>
24
+ <template v-if="propsObj._fileType === 'image'">
25
+ <div class="item-show">
26
+ <img
27
+ v-if="fileItem.mimetype.includes('image')"
28
+ :data-original="fileItem.url"
29
+ :src="$imageResize(fileItem.url, imageResizeConfig)"
30
+ :alt="fileItem.name"
31
+ >
32
+ <img
33
+ v-else
34
+ :src="getFileImage(fileItem)"
35
+ :alt="fileItem.name"
36
+ >
37
+ </div>
38
+
39
+ <!-- 展示名称 -->
40
+ <p class="item-name-title">{{ fileItem.name }}</p>
41
+
42
+ <!-- 图标 -->
43
+ <dsh-icons
44
+ class="item-action"
45
+ item-class="item-action-icon"
46
+ :list="$getOperationList(getBtns(fileItem))"
47
+ @click="$dispatchEvent($event, fileItem, fileIndex)"
48
+ ></dsh-icons>
49
+ </template>
50
+
51
+ <template v-else>
52
+ <a
53
+ :href="fileItem.downloadUrl"
54
+ target="black"
55
+ >{{ fileItem.name }}</a>
56
+
57
+ <dsh-icons
58
+ class="item-file-action"
59
+ item-class="item-file-action-icon"
60
+ :list="$getOperationList(getBtns(fileItem))"
61
+ @click="$dispatchEvent($event, fileItem, fileIndex)"
62
+ ></dsh-icons>
63
+ </template>
44
64
  </div>
45
65
  </div>
46
66
 
@@ -352,6 +372,36 @@
352
372
  }
353
373
  }
354
374
  }
375
+
376
+ // file 模式
377
+ &-file {
378
+ flex-direction: column;
379
+ .item-file {
380
+ flex: 0 0 100%;
381
+ height: auto;
382
+ display: flex;
383
+ flex-direction: row;
384
+ justify-content: space-between;
385
+ align-items: center;
386
+ border-radius: 0px;
387
+ margin: 0px;
388
+ background: transparent;
389
+ line-height: 22px;
390
+ height: 22px !important;
391
+ &:hover {
392
+ background: #f4f5fa;
393
+ }
394
+ a {
395
+ text-overflow: ellipsis;
396
+ overflow: hidden;
397
+ }
398
+ .DshIcons {
399
+ margin-left: 5px;
400
+ color: @textColor;
401
+ white-space: nowrap;
402
+ }
403
+ }
404
+ }
355
405
  }
356
406
 
357
407
  &-inline {
@@ -75,6 +75,17 @@ export default {
75
75
  // 值为不是[]类型用的
76
76
  curVal: {
77
77
  get () {
78
+ // 原选项变动了或选项动态改变时,过滤掉已不存在的选项值
79
+ if (!this.isInTable) {
80
+ if (["select"].includes(this.controlType)) {
81
+ if (!this.$dataType(this.propsObj._filterFunc, "function")) {
82
+ this.value[this.controlKey] = this.listData.some(item => item[this.saveKey] === this.value[this.controlKey])
83
+ ? this.value[this.controlKey]
84
+ : "";
85
+ }
86
+ }
87
+ }
88
+
78
89
  return this.value[this.controlKey];
79
90
  },
80
91
  set (val) {
@@ -90,6 +101,26 @@ export default {
90
101
  // 值为[]类型用的
91
102
  curValList: {
92
103
  get () {
104
+ // 原选项变动了或选项动态改变时,过滤掉已不存在的选项值
105
+ if (!this.isInTable) {
106
+ const valList = this.value[this.controlKey] || [];
107
+ if ((["select"].includes(this.controlType) && this.multipleMode) || ["checkbox"].includes(this.controlType)) {
108
+ this.value[this.controlKey] = valList.some(valKey => !this.listDataKeys.includes(valKey))
109
+ ? valList.filter(valKey => this.listDataKeys.includes(valKey))
110
+ : valList;
111
+ }
112
+ // else if (["region", "cascader"].includes(this.controlType)) {
113
+ // this.value[this.controlKey] = this.$getTreeLinealDatas(valList, this.cascaderAllData, undefined, this.saveKey).length
114
+ // ? valList
115
+ // : [];
116
+ // }
117
+ // else if (["regions", "cascaders"].includes(this.controlType)) {
118
+ // this.value[this.controlKey] = valList.filter(valListItem =>
119
+ // this.$getTreeLinealDatas(valListItem, this.cascaderAllData, undefined, this.saveKey).length
120
+ // );
121
+ // }
122
+ }
123
+
93
124
  return this.value[this.controlKey] || [];
94
125
  },
95
126
  set (valList) {
@@ -115,7 +146,7 @@ export default {
115
146
  },
116
147
  // 字段的真实key
117
148
  fieldKey () {
118
- return this.controlKey === "_default"
149
+ return this.isDftSet
119
150
  ? this.value._key
120
151
  : (this.propsObj.__realKey__ || this.controlKey);
121
152
  },
@@ -192,6 +223,10 @@ export default {
192
223
  // isShare () {
193
224
  // return !!this.propsObj.isShare;
194
225
  // },
226
+ // 是否在设置默认值下
227
+ isDftSet () {
228
+ return this.controlKey === "_default";
229
+ },
195
230
  // 在单元格内
196
231
  isInTable () {
197
232
  return !!this.propsObj.inTable;
@@ -26,6 +26,7 @@ export default {
26
26
  _customData: [],
27
27
  _reverseFilter: false, // 是否反向过滤,默认正向过滤
28
28
  _selectFilterVals: [], // 过滤的数据
29
+ _selectFilterKey: undefined, // 用作过滤的属性,默认用_saveKey对应的属性
29
30
 
30
31
  ...this.propsObj,
31
32
  ...this.commonDealPropsObj
@@ -53,20 +54,27 @@ export default {
53
54
  selectFilterVals () {
54
55
  return this.selfPropsObj._selectFilterVals;
55
56
  },
57
+ selectFilterKey () {
58
+ return this.selfPropsObj._selectFilterKey;
59
+ },
56
60
 
57
61
  listData () {
58
62
  let listData = this.selfPropsObj._data.concat(this.initListData);
59
- if (this.selectFilterVals.length) {
60
- listData = listData.filter(item =>
63
+ listData = this.selectFilterVals.length
64
+ ? listData.filter(item =>
61
65
  this.reverseFilter
62
- ? !this.selectFilterVals.includes(item[this.saveKey])
63
- : this.selectFilterVals.includes(item[this.saveKey])
64
- );
65
- }
66
-
67
- return this.$dataType(this.selfPropsObj._filterFunc, "function")
66
+ ? !this.selectFilterVals.includes(item[this.selectFilterKey || this.saveKey])
67
+ : this.selectFilterVals.includes(item[this.selectFilterKey || this.saveKey])
68
+ )
69
+ : listData;
70
+ listData = this.$dataType(this.selfPropsObj._filterFunc, "function")
68
71
  ? this.selfPropsObj._filterFunc(listData, this.selfPropsObj, this.value)
69
72
  : listData;
73
+
74
+ return listData;
75
+ },
76
+ listDataKeys () {
77
+ return this.listData.map(item => item[this.saveKey]);
70
78
  },
71
79
  curValObj () {
72
80
  return this.getItemObj(this.curVal);
@@ -164,7 +164,7 @@
164
164
  clickInput () {
165
165
  if (this.finalCanEdit) {
166
166
  if (!this.renderList) {
167
- if (this.controlKey === "_default") {
167
+ if (this.isDftSet) {
168
168
  this.listData = this.originLabels.map(item => {
169
169
  return {
170
170
  ...item,
@@ -306,11 +306,10 @@
306
306
  callback: data => {
307
307
  this.loading = false;
308
308
  this.departmentList = this.listFilterVals.length
309
- ? data.list.filter(
310
- item =>
311
- this.reverseFilter
312
- ? !this.listFilterVals.includes(item._key)
313
- : this.listFilterVals.includes(item._key)
309
+ ? data.list.filter(item =>
310
+ this.reverseFilter
311
+ ? !this.listFilterVals.includes(item._key)
312
+ : this.listFilterVals.includes(item._key)
314
313
  )
315
314
  : data.list;
316
315
  }
@@ -348,8 +348,12 @@
348
348
  let rules = [];
349
349
  let ruleConfig = this.$getFieldRuleConfig(formItem);
350
350
 
351
- // 数据格式校验
352
- if (ruleConfig.type) {
351
+ // 数据格式校验 -关联表格类型的会被过滤掉
352
+ if (
353
+ ruleConfig.type &&
354
+ (!ruleConfig.fields || Object.entries(ruleConfig.fields).every(arr => !arr[1].transform)) &&
355
+ (!["date"].includes(formItem._type) || !["daterange", "datetimerange"].includes(formItem._dateType))
356
+ ) {
353
357
  rules.push({
354
358
  message: `${formItem._name}数据格式有错!`,
355
359
  trigger: "blur, change",
@@ -22,10 +22,10 @@
22
22
  }"
23
23
  >
24
24
  <!-- 表头 -->
25
- <dsh-render :render="getTableHeadRender()"></dsh-render>
25
+ <dsh-render :render="tableHeadRender"></dsh-render>
26
26
 
27
27
  <!-- 数据行 -->
28
- <dsh-render :render="getTableBodyRender()"></dsh-render>
28
+ <dsh-render :render="tableBodyRender"></dsh-render>
29
29
  </div>
30
30
  </div>
31
31
 
@@ -61,10 +61,10 @@
61
61
  }"
62
62
  >
63
63
  <!-- 表头 -->
64
- <dsh-render :render="getTableHeadRender()"></dsh-render>
64
+ <dsh-render :render="tableHeadRender"></dsh-render>
65
65
 
66
66
  <!-- 数据行 -->
67
- <dsh-render :render="getTableBodyRender()"></dsh-render>
67
+ <dsh-render :render="tableBodyRender"></dsh-render>
68
68
  </div>
69
69
  </div>
70
70
  </div>