bri-components 1.1.4 → 1.1.6

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 (55) hide show
  1. package/lib/0.bri-components.min.js +1 -1
  2. package/lib/1.bri-components.min.js +1 -1
  3. package/lib/2.bri-components.min.js +1 -1
  4. package/lib/4.bri-components.min.js +1 -1
  5. package/lib/5.bri-components.min.js +1 -1
  6. package/lib/6.bri-components.min.js +1 -1
  7. package/lib/7.bri-components.min.js +1 -1
  8. package/lib/bri-components.min.js +5 -5
  9. package/package.json +1 -1
  10. package/src/components/controls/base/DshCascader/DshCascader.vue +202 -160
  11. package/src/components/controls/base/DshCascader/InfoCascader.vue +11 -9
  12. package/src/components/controls/base/DshCoordinates.vue +118 -115
  13. package/src/components/controls/base/DshSelect.vue +8 -6
  14. package/src/components/controls/base/DshSwitch.vue +45 -87
  15. package/src/components/controls/controlMixin.js +26 -6
  16. package/src/components/form/DshDefaultSearch.vue +1 -1
  17. package/src/components/form/DshForm.vue +4 -0
  18. package/src/components/list/BriTable.vue +0 -1
  19. package/src/components/other/BriSvg.vue +28 -0
  20. package/src/components/other/DshEditPanel.vue +33 -11
  21. package/src/components/other/ZLoading.vue +24 -12
  22. package/src/components/small/BriButton.vue +2 -2
  23. package/src/components/small/DshButtons.vue +28 -2
  24. package/src/components/small/DshIcons.vue +1 -1
  25. package/src/components/unit/DshFormItem.vue +2 -2
  26. package/src/index.js +6 -5
  27. package/src/styles/common/control.less +11 -7
  28. package/src/styles/components/controls/base/DshCascader.less +110 -0
  29. package/src/styles/components/controls/base/DshSwitch.less +37 -0
  30. package/src/styles/components/form/DshDefaultSearch.less +41 -9
  31. package/src/styles/components/index.less +19 -19
  32. package/src/styles/components/other/ZLoading.less +5 -7
  33. package/src/styles/components/small/BriButton.less +34 -2
  34. package/src/styles/components/small/DshDropdown.less +1 -7
  35. package/src/styles/components/unit/DshFormItem.less +1 -2
  36. package/src/components/small/DshControlDefine.vue +0 -115
  37. package/src/styles/components/controls/DshCascader.less +0 -79
  38. package/src/styles/components/small/DshControlDefine.less +0 -40
  39. /package/src/styles/components/controls/{BriInputs.less → base/BriInputs.less} +0 -0
  40. /package/src/styles/components/controls/{BriUpload.less → base/BriUpload.less} +0 -0
  41. /package/src/styles/components/controls/{DshCheckbox.less → base/DshCheckbox.less} +0 -0
  42. /package/src/styles/components/controls/{DshCoordinates.less → base/DshCoordinates.less} +0 -0
  43. /package/src/styles/components/controls/{DshDate.less → base/DshDate.less} +0 -0
  44. /package/src/styles/components/controls/{DshDaterange.less → base/DshDaterange.less} +0 -0
  45. /package/src/styles/components/controls/{DshDivider.less → base/DshDivider.less} +0 -0
  46. /package/src/styles/components/controls/{DshEditor.less → base/DshEditor.less} +0 -0
  47. /package/src/styles/components/controls/{DshInput.less → base/DshInput.less} +0 -0
  48. /package/src/styles/components/controls/{DshNumber.less → base/DshNumber.less} +0 -0
  49. /package/src/styles/components/controls/{DshNumberange.less → base/DshNumberange.less} +0 -0
  50. /package/src/styles/components/controls/{DshSelect.less → base/DshSelect.less} +0 -0
  51. /package/src/styles/components/controls/{InfoCascader.less → base/InfoCascader.less} +0 -0
  52. /package/src/styles/components/controls/{BriLabels.less → senior/BriLabels.less} +0 -0
  53. /package/src/styles/components/controls/{DshPackage.less → senior/DshPackage.less} +0 -0
  54. /package/src/styles/components/controls/{cascaderTable.less → senior/cascaderTable.less} +0 -0
  55. /package/src/styles/components/controls/{flatTable.less → senior/flatTable.less} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bri-components",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "author": "dengshanghui",
5
5
  "description": "a component lib for vue project",
6
6
  "main": "src/index.js",
@@ -1,11 +1,11 @@
1
1
  <template>
2
- <div :class="`DshCascader`">
3
- <!-- 编辑和disabled模式 -->
2
+ <div class="DshCascader">
3
+ <!-- 编辑 -->
4
4
  <template v-if="canEdit">
5
- <!-- 多选 多选模式的filterable必须是false,不然出bug -->
5
+ <!-- 多选 多选的filterable必须是false,不然出bug -->
6
6
  <template v-if="useMultiple === true">
7
7
  <Cascader
8
- style="width: 100%;"
8
+ class="DshCascader-multiple"
9
9
  :value="multipleSelectVal"
10
10
  :data="renderCascaderData"
11
11
  :disabled="!finalCanEdit"
@@ -19,101 +19,167 @@
19
19
  @on-visible-change="multipleVisibleChange"
20
20
  @on-change="createItem"
21
21
  >
22
- <dsh-control-define
23
- :value="valTags"
24
- :canEdit="canEdit"
25
- :finalCanEdit="finalCanEdit"
26
- :propsObj="{
27
- ...selfPropsObj,
28
- _multiplerow: selfPropsObj._span == 24 || !selfPropsObj._span
22
+ <div
23
+ :class="{
24
+ ...commonClass,
25
+ 'DshCascader-multiple-input': true,
26
+ 'DshCascader-multiplerow': isSelfRow,
29
27
  }"
30
- @delete="deleteItem"
31
- ></dsh-control-define>
28
+ @click="clickInput"
29
+ >
30
+ <!-- 有值 -->
31
+ <div
32
+ v-if="!$isEmptyData(curVal)"
33
+ class="hasdata"
34
+ >
35
+ <dsh-tags
36
+ class="hasdata-multiple"
37
+ :list="curValNameList"
38
+ :propsObj="{
39
+ closable: canEdit,
40
+ size: isSelfRow ? 'medium' : 'default'
41
+ }"
42
+ @delete="deleteItem"
43
+ ></dsh-tags>
44
+ </div>
45
+
46
+ <!-- 无值 -->
47
+ <span
48
+ v-else
49
+ class="nodata"
50
+ >
51
+ {{ emptyShowVal }}
52
+ </span>
53
+ </div>
32
54
  </Cascader>
33
55
  </template>
34
56
 
35
57
  <!-- 单选 -->
36
58
  <template v-else>
37
- <!-- 弹框模式 -->
38
- <template v-if="selfPropsObj._showMode === 'custom'">
59
+ <!-- 弹框方式 -->
60
+ <template v-if="showMode === 'custom'">
39
61
  <div
40
- :class="commonClass"
62
+ :class="{
63
+ ...commonClass,
64
+ 'DshCascader-custom-input': true
65
+ }"
66
+ class
41
67
  @click="openModal"
42
68
  >
69
+ <!-- 有值 -->
43
70
  <div
44
- v-if="value[controlKey] && value[controlKey].length"
45
- class="DshCascader-single-val"
71
+ v-if="!$isEmptyData(curValList)"
72
+ class="hasdata"
73
+ @mouseenter="isHover = true"
74
+ @mouseleave="isHover = false"
46
75
  >
47
- <span :class="{
48
- 'DshCascader-single-val-text': true,
49
- 'DshCascader-single-val-text-disabled': !finalCanEdit,
50
- }">
51
- {{ $getTreeLinealDatas(value[controlKey], cascaderData, "name").join("/") }}
76
+ <span class="hasdata-text">
77
+ {{ curValNameStr }}
52
78
  </span>
79
+
53
80
  <Icon
54
- v-if="selfPropsObj._clearable"
55
- class="DshCascader-single-val-clear"
81
+ v-if="selfPropsObj._clearable && isHover"
82
+ class="hasdata-clear"
56
83
  type="md-close"
57
84
  @click.stop="clickClear"
58
85
  />
86
+ <Icon
87
+ v-else
88
+ class="hasdata-clear"
89
+ type="ios-arrow-down"
90
+ />
59
91
  </div>
60
92
 
93
+ <!-- 无值 -->
61
94
  <span
62
95
  v-else
63
- class="DshCascader-single-placeholder"
96
+ class="nodata"
64
97
  >
65
- {{ selfPropsObj._placeholder }}
98
+ {{ emptyShowVal }}
66
99
  </span>
67
100
  </div>
68
101
 
69
- <template v-if="showModal">
70
- <info-cascader
71
- v-model="value[controlKey]"
72
- :showModal="showModal"
73
- :propsObj="selfPropsObj"
74
- :data="cascaderData"
75
- @change="change"
76
- @changeShowModal="changeShowModal"
77
- ></info-cascader>
78
- </template>
102
+ <!-- 内容弹框 -->
103
+ <info-cascader
104
+ v-if="showModal"
105
+ :showModal="showModal"
106
+ v-model="curValList"
107
+ :data="cascaderData"
108
+ :propsObj="selfPropsObj"
109
+ @change="change"
110
+ @changeShowModal="changeShowModal"
111
+ ></info-cascader>
79
112
  </template>
80
113
 
81
- <!-- 输入框模式 -->
82
- <Cascader
83
- v-else
84
- style="width: 100%;"
85
- :class="{
86
- 'DshCascader-disabled': !finalCanEdit
87
- }"
88
- :value="value[controlKey]"
89
- :data="renderCascaderData"
90
- :placeholder="selfPropsObj._placeholder"
91
- :disabled="!finalCanEdit"
92
- :change-on-select="selfPropsObj._changeOnSelect"
93
- :clearable="selfPropsObj._clearable"
94
- :size="selfPropsObj._size"
95
- :filterable="selfPropsObj._filterable && finalCanEdit"
96
- :transfer="selfPropsObj._transfer"
97
- :transfer-class-name="selfPropsObj._transferClassName"
98
- :load-data="loadData"
99
- @on-visible-change="visibleChange"
100
- @on-change="changeVal"
101
- @click.native.stop="clickInput"
102
- ></Cascader>
114
+ <!-- 输入框方式 -->
115
+ <template v-else>
116
+ <Cascader
117
+ class="DshCascader-single"
118
+ :value="curValList"
119
+ :data="renderCascaderData"
120
+ :placeholder="selfPropsObj._placeholder"
121
+ :disabled="!finalCanEdit"
122
+ :change-on-select="selfPropsObj._changeOnSelect"
123
+ :clearable="selfPropsObj._clearable"
124
+ :size="selfPropsObj._size"
125
+ :filterable="selfPropsObj._filterable"
126
+ :transfer="selfPropsObj._transfer"
127
+ :transfer-class-name="selfPropsObj._transferClassName"
128
+ :load-data="loadData"
129
+ @on-visible-change="visibleChange"
130
+ @on-change="changeVal"
131
+ @click.stop="clickCascader"
132
+ ></Cascader>
133
+ </template>
103
134
  </template>
104
135
  </template>
105
136
 
106
- <!-- 查看模式 -->
107
- <dsh-control-define
108
- v-else
109
- :value="valTags"
110
- :canEdit="canEdit"
111
- :finalCanEdit="finalCanEdit"
112
- :propsObj="{
113
- ...selfPropsObj,
114
- _multiplerow: selfPropsObj._span == 24 || !selfPropsObj._span
115
- }"
116
- ></dsh-control-define>
137
+ <!-- 查看 -->
138
+ <template v-else>
139
+ <div :class="{
140
+ ...commonClass,
141
+ 'DshCascader-show': true,
142
+ 'DshCascader-multiplerow': isSelfRow,
143
+ }">
144
+ <!-- 有值 -->
145
+ <div
146
+ v-if="!$isEmptyData(curVal)"
147
+ class="hasdata"
148
+ >
149
+ <!-- 多选 -->
150
+ <dsh-tags
151
+ v-if="useMultiple"
152
+ class="hasdata-multiple"
153
+ :list="curValNameList"
154
+ :propsObj="{
155
+ closable: !canEdit,
156
+ size: isSelfRow ? 'medium' : 'default'
157
+ }"
158
+ ></dsh-tags>
159
+
160
+ <!-- 单选 -->
161
+ <Ctooltip
162
+ v-else
163
+ :content="curValNameStr"
164
+ placement="top"
165
+ maxWidth="200"
166
+ :transfer="true"
167
+ >
168
+ <div class="hasdata-single">
169
+ {{ curValNameStr }}
170
+ </div>
171
+ </Ctooltip>
172
+ </div>
173
+
174
+ <!-- 无值 -->
175
+ <span
176
+ v-else
177
+ class="nodata"
178
+ >
179
+ {{ emptyShowVal }}
180
+ </span>
181
+ </div>
182
+ </template>
117
183
  </div>
118
184
  </template>
119
185
 
@@ -161,33 +227,32 @@
161
227
  renderDataFlag: true,
162
228
  clickInputFlag: true,
163
229
  isVisible: false,
164
- multipleSelectVal: [],
230
+ multipleSelectVal: [], // 必须要,每次选完之后再选,需清空上次选的
165
231
  selectVal: [],
166
232
 
233
+ isHover: false,
167
234
  showModal: false,
168
- modalVal: [],
169
- operationMap: {
170
- cancel: {
171
- name: "取消",
172
- type: "clickCancel",
173
- event: "clickCancel",
174
- class: "z-default"
175
- },
176
- confirm: {
177
- name: "确定",
178
- btnType: "primary",
179
- type: "clickConfirm",
180
- event: "clickConfirm",
181
- class: "z-primary"
182
- }
183
- }
235
+ modalVallist: []
184
236
  };
185
237
  },
186
238
  computed: {
239
+ // 是否多选模式
240
+ useMultiple () {
241
+ return ["regions", "cascaders"].includes(this.propsObj._type);
242
+ },
243
+ selfPropsObj () {
244
+ return {
245
+ _filterable: true,
246
+ _showMode: false,
247
+ _transfer: true,
248
+ ...this.propsObj,
249
+ ...this.commonDealPropsObj
250
+ };
251
+ },
187
252
  cascaderData: {
188
253
  get () {
189
254
  return loop(
190
- ["region", "regions"].includes(this.selfPropsObj._type) ? regionData : this.selfPropsObj._data,
255
+ ["region", "regions"].includes(this.propsObj._type) ? regionData : this.selfPropsObj._data,
191
256
  this.selfPropsObj._cascaderLevel,
192
257
  undefined,
193
258
  this.selfPropsObj._cascaderFilterVals
@@ -206,45 +271,26 @@
206
271
  : this.cascaderData;
207
272
  },
208
273
 
209
- selfPropsObj () {
210
- return {
211
- _filterable: true,
212
- _showMode: false,
213
- _transfer: true,
214
- ...this.propsObj,
215
- ...this.commonDealPropsObj
216
- };
274
+ showMode () {
275
+ return this.selfPropsObj._showMode;
217
276
  },
218
- useMultiple () {
219
- return ["regions", "cascaders"].includes(this.selfPropsObj._type);
277
+ isSelfRow () {
278
+ return this.selfPropsObj._span === 24 || !this.selfPropsObj._span;
220
279
  },
221
- valTags () {
222
- return this.value[this.controlKey]
223
- ? this.value[this.controlKey].map(item => this.$getTreeLinealDatas(item, this.cascaderData, "name").join("/"))
224
- : [];
225
- }
226
280
 
227
- // selfModalPropsObj () {
228
- // return {
229
- // mode: "default",
230
- // title: this.selfPropsObj._placeholder
231
- // };
232
- // },
233
- // showVal () {
234
- // return this.useMultiple
235
- // ? this.valTags.join("、")
236
- // : this.$getTreeLinealDatas(this.value[this.controlKey], this.cascaderData, "name").join(["region"].includes(this.selfPropsObj._type) ? "" : "/");
237
- // }
238
- },
239
- created () {
240
- this.init();
281
+ // 单选用的展示文字
282
+ curValNameStr () {
283
+ return this.$getTreeLinealDatas(this.curValList, this.cascaderData, "name").join("/");
284
+ },
285
+ // 多选用的展示文字
286
+ curValNameList () {
287
+ return this.curValList.map(item =>
288
+ this.$getTreeLinealDatas(item, this.cascaderData, "name").join("/")
289
+ );
290
+ }
241
291
  },
292
+ created () {},
242
293
  methods: {
243
- init () {
244
- if (!this.value[this.controlKey]) {
245
- this.$set(this.value, this.controlKey, []);
246
- }
247
- },
248
294
  // 动态加载数据
249
295
  loadData (treeItem, cb) {
250
296
  let list = this.$getTreeLinealDatas(treeItem.codeArr, this.cascaderData);
@@ -253,21 +299,25 @@
253
299
  cb();
254
300
  },
255
301
 
256
- /* 多选使用 */
302
+ /* --------- 多选使用 -------- */
303
+ clickInput (e) {
304
+ if (!this.finalCanEdit) {
305
+ e.stopPropagation();
306
+ }
307
+ },
257
308
  // 展开和关闭弹窗时触发
258
309
  multipleVisibleChange (bool) {
259
310
  this.isVisible = bool;
260
311
 
261
312
  if (bool === false) {
262
313
  if (this.selectVal.length) {
263
- if (this.value[this.controlKey].some(item => JSON.stringify(item) == JSON.stringify(this.selectVal))) {
314
+ if (this.curValList.some(item => JSON.stringify(item) == JSON.stringify(this.selectVal))) {
264
315
  this.$Message.error({
265
316
  content: `"${this.$getTreeLinealDatas(this.selectVal, this.cascaderData, "name").join("/")}"已选择,请勿重复选择!`,
266
317
  duration: 5
267
318
  });
268
319
  } else {
269
- this.value[this.controlKey] = [...this.value[this.controlKey], this.selectVal];
270
- this.change();
320
+ this.curValList = [...this.curValList, this.selectVal];
271
321
  }
272
322
  }
273
323
 
@@ -283,12 +333,29 @@
283
333
  },
284
334
  // 删除
285
335
  deleteItem (item, index) {
286
- this.value[this.controlKey].splice(index, 1);
287
- this.change();
336
+ this.curValList.splice(index, 1);
337
+ this.curValList = [...this.curValList];
288
338
  },
289
339
 
290
- /* ----------- 单选使用 ---------- */
291
- clickInput () {
340
+ /* -------- 单选使用 ------- */
341
+ // 弹窗方式的 -打开模态框
342
+ openModal () {
343
+ if (this.finalCanEdit) {
344
+ this.modalVallist = this.curValList;
345
+ this.showModal = true;
346
+ }
347
+ },
348
+ // 弹窗方式的 -关闭模态框
349
+ changeShowModal (bool) {
350
+ this.showModal = bool;
351
+ },
352
+ // 弹窗方式的 -点击清除
353
+ clickClear () {
354
+ this.curValList = [];
355
+ },
356
+
357
+ // 默认方式的
358
+ clickCascader () {
292
359
  if (this.finalCanEdit) {
293
360
  if (
294
361
  ["cascader"].includes(this.selfPropsObj._type) &&
@@ -303,7 +370,7 @@
303
370
  }
304
371
  }
305
372
  },
306
- // 展开和关闭弹窗时触发
373
+ // 默认方式的 -展开和关闭弹窗时触发
307
374
  visibleChange (bool) {
308
375
  if (bool) {
309
376
  this.isVisible = bool;
@@ -313,41 +380,16 @@
313
380
  }, 0);
314
381
  }
315
382
  },
316
- changeVal (selectVal, ...params) {
317
- if (this.isVisible || !selectVal.length) {
318
- this.value[this.controlKey] = selectVal;
319
- this.$emit("change", this.value[this.controlKey], ...params);
320
- }
321
- },
322
-
323
- // 点击清除
324
- clickClear () {
325
- this.value[this.controlKey] = [];
326
- this.change();
327
- },
328
- openModal () {
329
- if (this.finalCanEdit) {
330
- this.modalVal = this.value[this.controlKey];
331
- this.showModal = true;
383
+ // 默认方式的 -值改变
384
+ changeVal (val, ...params) {
385
+ if (this.isVisible || !val.length) {
386
+ this.curValList = val;
332
387
  }
333
- },
334
- changeShowModal (val) {
335
- this.showModal = val;
336
- },
337
- clickConfirm () {
338
- this.value[this.controlKey] = this.modalVal;
339
- this.showModal = false;
340
-
341
- this.change();
342
- },
343
- clickCancel () {
344
- this.showModal = false;
345
388
  }
346
389
  },
347
390
  watch: {
348
391
  "propsObj._cascaderLevel" () {
349
392
  this.value[this.controlKey] = [];
350
- this.init();
351
393
  }
352
394
  }
353
395
  };
@@ -9,8 +9,8 @@
9
9
  class="InfoCascader-search"
10
10
  :value="searchData"
11
11
  :propsObj="inputPropsObj"
12
- >
13
- </dsh-input>
12
+ ></dsh-input>
13
+
14
14
  <div class="InfoCascader-content">
15
15
  <div class="InfoCascader-content-left">
16
16
  <Tree
@@ -30,6 +30,7 @@
30
30
  </p>
31
31
  </div>
32
32
  </div>
33
+
33
34
  <div class="InfoCascader-footer">
34
35
  <dsh-buttons
35
36
  class="InfoCascader-footer-btns"
@@ -45,25 +46,26 @@
45
46
  export default {
46
47
  name: "InfoCascader",
47
48
  props: {
49
+ showModal: Boolean,
50
+
48
51
  value: {
49
52
  type: Array,
50
53
  default () {
51
54
  return [];
52
55
  }
53
56
  },
54
- propsObj: {
55
- type: Object,
56
- default () {
57
- return {};
58
- }
59
- },
60
57
  data: {
61
58
  type: Array,
62
59
  default () {
63
60
  return [];
64
61
  }
65
62
  },
66
- showModal: Boolean
63
+ propsObj: {
64
+ type: Object,
65
+ default () {
66
+ return {};
67
+ }
68
+ }
67
69
  },
68
70
  data () {
69
71
  return {