bri-components 1.5.14 → 1.5.16

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 (151) hide show
  1. package/README.md +83 -83
  2. package/lib/0.bri-components.min.js +1 -1
  3. package/lib/1.bri-components.min.js +1 -1
  4. package/lib/10.bri-components.min.js +1 -1
  5. package/lib/2.bri-components.min.js +1 -1
  6. package/lib/3.bri-components.min.js +1 -1
  7. package/lib/4.bri-components.min.js +1 -1
  8. package/lib/5.bri-components.min.js +1 -1
  9. package/lib/6.bri-components.min.js +1 -1
  10. package/lib/7.bri-components.min.js +1 -1
  11. package/lib/8.bri-components.min.js +1 -1
  12. package/lib/9.bri-components.min.js +1 -1
  13. package/lib/bri-components.min.js +4 -4
  14. package/lib/styles/bundle.css +12 -12
  15. package/lib/styles/font/fontello.svg +31 -31
  16. package/package.json +125 -125
  17. package/src/components/Error/Error403.vue +42 -42
  18. package/src/components/Error/Error404.vue +40 -40
  19. package/src/components/Error/Error500.vue +51 -51
  20. package/src/components/Error/error.less +162 -162
  21. package/src/components/Error/errorBack.vue +40 -40
  22. package/src/components/controls/DshControlInput.vue +195 -195
  23. package/src/components/controls/base/BriUpload/BriUpload.vue +434 -434
  24. package/src/components/controls/base/BriUpload/BriUploadImage.vue +377 -377
  25. package/src/components/controls/base/BriUpload/uploadList.vue +727 -727
  26. package/src/components/controls/base/BriUpload/uploadMixin.js +446 -446
  27. package/src/components/controls/base/DshCascader/DshCascader.vue +215 -215
  28. package/src/components/controls/base/DshCascader/components/cascaderModal.vue +366 -366
  29. package/src/components/controls/base/DshCascader/components/cascaderPicker.vue +416 -416
  30. package/src/components/controls/base/DshCascader/components/cascaderSimple.vue +141 -141
  31. package/src/components/controls/base/DshCascader/components/cascaderTree.vue +151 -151
  32. package/src/components/controls/base/DshCoordinates.vue +577 -577
  33. package/src/components/controls/base/DshDate/DshDate.vue +191 -191
  34. package/src/components/controls/base/DshDate/DshDaterange.vue +186 -186
  35. package/src/components/controls/base/DshDivider.vue +201 -201
  36. package/src/components/controls/base/DshEditor.vue +274 -274
  37. package/src/components/controls/base/DshInput/BriInputs.vue +166 -166
  38. package/src/components/controls/base/DshInput/DshInput.vue +260 -260
  39. package/src/components/controls/base/DshNumber/BriInputNumber/BriInputNumber.vue +435 -435
  40. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/emitter.js +34 -34
  41. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/form.js +14 -14
  42. package/src/components/controls/base/DshNumber/BriInputNumber/utils/assist.js +322 -322
  43. package/src/components/controls/base/DshNumber/DshNumber.vue +143 -143
  44. package/src/components/controls/base/DshNumber/DshNumberange.vue +109 -109
  45. package/src/components/controls/base/DshSelect/DshCheckbox.vue +168 -168
  46. package/src/components/controls/base/DshSelect/DshSelect.vue +180 -180
  47. package/src/components/controls/base/DshSwitch/DshSwitch.vue +115 -115
  48. package/src/components/controls/control.less +324 -324
  49. package/src/components/controls/controlMap.js +114 -114
  50. package/src/components/controls/extra/DshColor.vue +81 -81
  51. package/src/components/controls/extra/DshThemeColor.vue +100 -100
  52. package/src/components/controls/extra/DshThemeIcon.vue +122 -122
  53. package/src/components/controls/mixins/cascaderMixin.js +325 -325
  54. package/src/components/controls/mixins/cascaderPickerMixin.js +227 -227
  55. package/src/components/controls/mixins/cascaderTableMixin.js +130 -130
  56. package/src/components/controls/mixins/controlMixin.js +393 -393
  57. package/src/components/controls/mixins/dateMixin.js +149 -149
  58. package/src/components/controls/mixins/flatTableMixin.js +111 -111
  59. package/src/components/controls/mixins/numberMixin.js +112 -112
  60. package/src/components/controls/mixins/selectMixin.js +233 -233
  61. package/src/components/controls/mixins/switchMixin.js +87 -87
  62. package/src/components/controls/mixins/userAndDepartMixin.js +260 -260
  63. package/src/components/controls/senior/DshLabels.vue +333 -333
  64. package/src/components/controls/senior/DshPackage.vue +57 -57
  65. package/src/components/controls/senior/cascaderTable.vue +213 -213
  66. package/src/components/controls/senior/flatTable.vue +138 -138
  67. package/src/components/controls/senior/selectDepartments.vue +399 -399
  68. package/src/components/controls/senior/selectUsers/departMenu.vue +293 -293
  69. package/src/components/controls/senior/selectUsers/selectUsers.vue +712 -712
  70. package/src/components/controls/special/DshBack.vue +42 -42
  71. package/src/components/controls/special/DshUndeveloped.vue +41 -41
  72. package/src/components/form/DshAdvSearch.vue +510 -510
  73. package/src/components/form/DshDefaultSearch.vue +260 -260
  74. package/src/components/form/DshForm.vue +494 -494
  75. package/src/components/form/searchMixin.js +376 -376
  76. package/src/components/list/BriCard.vue +95 -95
  77. package/src/components/list/BriTable.vue +205 -205
  78. package/src/components/list/BriTree.vue +529 -529
  79. package/src/components/list/BriTreeItem.vue +163 -163
  80. package/src/components/list/DshBox/DshBox.vue +219 -219
  81. package/src/components/list/DshBox/DshCard.vue +446 -446
  82. package/src/components/list/DshBox/DshCrossTable.vue +827 -827
  83. package/src/components/list/DshBox/DshList.vue +404 -404
  84. package/src/components/list/DshBox/DshPanel.vue +669 -669
  85. package/src/components/list/DshBox/DshSingleData.vue +119 -119
  86. package/src/components/list/DshBox/DshTable.vue +239 -239
  87. package/src/components/list/DshCascaderTable.vue +115 -115
  88. package/src/components/list/DshFlatTable.vue +337 -337
  89. package/src/components/list/DshPage.vue +194 -194
  90. package/src/components/list/DshTreeTable.vue +113 -113
  91. package/src/components/list/common/importModal.vue +243 -243
  92. package/src/components/list/common/quoteListModal.vue +206 -206
  93. package/src/components/list/mixins/DshCascaderTableMixin.js +278 -278
  94. package/src/components/list/mixins/DshFlatTableMixin.js +509 -509
  95. package/src/components/list/mixins/DshTreeTableMixin.js +286 -286
  96. package/src/components/list/mixins/tableBaseMixin.js +1653 -1653
  97. package/src/components/list/mixins/treeTableBaseMixin.js +145 -145
  98. package/src/components/other/BriAvatar.vue +166 -166
  99. package/src/components/other/BriCode.vue +125 -125
  100. package/src/components/other/BriCollapseTree.vue +207 -207
  101. package/src/components/other/BriGantt.vue +1087 -1087
  102. package/src/components/other/BriIframe.vue +116 -116
  103. package/src/components/other/BriLoading.vue +171 -171
  104. package/src/components/other/BriSvg.vue +27 -27
  105. package/src/components/other/DshColorPanel.vue +128 -128
  106. package/src/components/other/DshMenuNav.vue +188 -188
  107. package/src/components/small/BriButton.vue +71 -71
  108. package/src/components/small/BriDrawer.vue +169 -169
  109. package/src/components/small/BriTooltip.vue +87 -87
  110. package/src/components/small/DshBtnModal.vue +68 -68
  111. package/src/components/small/DshButtons.vue +324 -324
  112. package/src/components/small/DshDropdown.vue +225 -225
  113. package/src/components/small/DshIcons.vue +59 -59
  114. package/src/components/small/DshListRender.js +21 -21
  115. package/src/components/small/DshModal.vue +160 -160
  116. package/src/components/small/DshSteps.vue +141 -141
  117. package/src/components/small/DshTabs.vue +598 -598
  118. package/src/components/small/DshTabsSet.vue +309 -309
  119. package/src/components/small/DshTags.vue +251 -251
  120. package/src/components/small/DshTitle.vue +50 -50
  121. package/src/components/small/render.js +20 -20
  122. package/src/components/unit/DshFormUnit.vue +398 -398
  123. package/src/components/unit/DshListUnit.vue +115 -115
  124. package/src/components/unit/unitMixin.js +86 -86
  125. package/src/data/index.js +4 -4
  126. package/src/index.js +282 -282
  127. package/src/styles/bundle.css +12 -12
  128. package/src/styles/components/BriButton.less +307 -307
  129. package/src/styles/components/BriTable.less +344 -344
  130. package/src/styles/components/DshModal.less +257 -257
  131. package/src/styles/components/index.less +3 -3
  132. package/src/styles/global/animate.less +11 -11
  133. package/src/styles/global/base.less +45 -45
  134. package/src/styles/global/box.less +186 -186
  135. package/src/styles/global/control.less +122 -122
  136. package/src/styles/global/flex.less +282 -282
  137. package/src/styles/global/global.less +8 -8
  138. package/src/styles/global/text.less +59 -59
  139. package/src/styles/global/variables.less +85 -85
  140. package/src/styles/iconfont/iconfont.css +254 -254
  141. package/src/styles/iconfont/iconfont.json +422 -422
  142. package/src/styles/iconfont/iconfont.svg +137 -137
  143. package/src/styles/index.less +26 -26
  144. package/src/styles/reset-easytable.less +21 -21
  145. package/src/styles/reset-iview-controls.less +145 -145
  146. package/src/styles/reset-iview-other.less +49 -49
  147. package/src/styles/reset-iview-variables.less +43 -43
  148. package/src/styles/reset.less +45 -45
  149. package/src/utils/index.js +5 -5
  150. package/src/utils/table.js +175 -175
  151. package/lib/11.bri-components.min.js +0 -1
@@ -1,325 +1,325 @@
1
- import controlMixin from "./controlMixin.js";
2
- import { resourceData, regionDataMap, userIndustryData } from "bri-datas";
3
-
4
- export default {
5
- mixins: [
6
- controlMixin
7
- ],
8
- components: {},
9
- props: {},
10
- data () {
11
- return {};
12
- },
13
- computed: {
14
- basePropsObj () {
15
- const _joinSymbol = this.propsObj._joinSymbol || "/";
16
- return {
17
- _regionType: "default", // "default", "benji"
18
- _showMode: "default", // "default", "custom", "simple"
19
- _searchShowMode: undefined, // "tree", "default", "custom", "simple"
20
-
21
- _saveKey: "_key",
22
- _valueKey: "code",
23
- _nameKey: "name",
24
- colorMap: resourceData.colorMap,
25
- _useColor: false,
26
- _filterable: true, // 是否支持搜索
27
- _cascaderLevel: undefined, // 级联数据取到第几级
28
- _reverseFilter: false, // 是否反向过滤,默认正向过滤
29
- _cascaderFilterVals: [], // 过滤的数据的第一级选项
30
- _cascaderSelectVals: [], // 过滤的数据的级联选项
31
- _renderFormat: (labels) => labels.join(_joinSymbol),
32
- _data: [],
33
-
34
- ...this.propsObj,
35
- ...this.commonDealPropsObj,
36
-
37
- _changeOnSelect: this.isInAnySearch
38
- ? true
39
- : this.propsObj._changeOnSelect == undefined ? false : this.propsObj._changeOnSelect, // 每级菜单都可取值 -默认取末级
40
- _joinSymbol: _joinSymbol // 级联拼接符
41
- };
42
- },
43
- subType () {
44
- return this.selfPropsObj._regionType;
45
- },
46
- showMode () {
47
- return this.isInAnySearch
48
- ? this.selfPropsObj._searchShowMode || this.selfPropsObj._showMode
49
- : this.selfPropsObj._showMode;
50
- },
51
-
52
- saveKey () {
53
- return this.selfPropsObj._saveKey;
54
- },
55
- valueKey () {
56
- return this.selfPropsObj._valueKey;
57
- },
58
- nameKey () {
59
- return this.selfPropsObj._nameKey;
60
- },
61
- colorMap () {
62
- return this.selfPropsObj.colorMap;
63
- },
64
- useColor () {
65
- return this.selfPropsObj._useColor;
66
- },
67
- // filterable () {
68
- // return this.selfPropsObj._filterable;
69
- // },
70
- cascaderLevel () {
71
- return this.selfPropsObj._cascaderLevel;
72
- },
73
- reverseFilter () {
74
- return this.selfPropsObj._reverseFilter;
75
- },
76
- filterVals () {
77
- return this.selfPropsObj._cascaderFilterVals;
78
- },
79
- cascaderVals () {
80
- return this.selfPropsObj._cascaderSelectVals;
81
- },
82
- renderFormat () {
83
- return this.selfPropsObj._renderFormat;
84
- },
85
-
86
- originData () {
87
- return ["userIndustry"].includes(this.controlType)
88
- ? userIndustryData
89
- : ["region", "regions"].includes(this.controlType)
90
- ? regionDataMap[this.subType] || regionDataMap.default
91
- : this.selfPropsObj._data;
92
- },
93
- cascaderAllData () {
94
- const loop = (arr = [], level, parentKeys = [], filterVals = [], cascaderVals = [], reverseFilter = false, isMb = false, saveKey = "_key", valueKey = "code", nameKey = "name") => {
95
- arr = cascaderVals.length
96
- ? arr.filter(item => {
97
- const itemKey = item[saveKey];
98
- const keys = [...parentKeys, itemKey]; // !!此处就是用_key拼,不会用别的属性
99
-
100
- return reverseFilter
101
- ? !cascaderVals.some(valArr =>
102
- keys.length < valArr.length
103
- ? false
104
- : valArr.every((valArrKey, index) => valArrKey === keys[index])
105
- )
106
- : cascaderVals.some(valArr =>
107
- keys.length < valArr.length
108
- ? keys.every((levelKey, index) => levelKey === valArr[index])
109
- : valArr.every((valArrKey, index) => valArrKey === keys[index])
110
- );
111
- })
112
- : filterVals.length
113
- ? arr.filter(item =>
114
- reverseFilter
115
- ? !filterVals.includes(item[saveKey])
116
- : filterVals.includes(item[saveKey])
117
- )
118
- : arr;
119
-
120
- return arr.reduce((newArr, item) => {
121
- const itemKey = item[saveKey];
122
- const keys = [...parentKeys, itemKey]; // !!此处就是用_key拼,不会用别的属性
123
- let newItem = {
124
- keys: keys,
125
- code: keys.join(""),
126
- ...item
127
- };
128
- newItem = {
129
- ...newItem,
130
- value: newItem[valueKey],
131
- label: newItem[nameKey]
132
- };
133
-
134
- if (this.showMode === "tree") {
135
- newItem.title = newItem[nameKey];
136
- newItem.checked = this.multipleMode
137
- ? this.curValList.some(valListItem => valListItem.join("") === newItem.code)
138
- : this.curValList.join("") === newItem.code;
139
- newItem.expand = !!newItem.expand;
140
- }
141
-
142
- if (
143
- (!level || level > newItem.level) &&
144
- (newItem.children && newItem.children.length)
145
- ) {
146
- newItem.children = loop(newItem.children, level, newItem.keys, [], cascaderVals, reverseFilter, isMb, saveKey, valueKey, nameKey);
147
-
148
- if (newItem.children.length) {
149
- newItem.loading = false; // 此代码pc端在用:为了所请求的级,出现继续加载的箭头图标
150
- newItem.isLeaf = false;
151
-
152
- if (this.showMode === "tree") {
153
- newItem.expand = newItem.expand || newItem.checked || newItem.children.some(childItem => childItem.expand || childItem.checked);
154
- }
155
- } else {
156
- newItem.children = isMb ? undefined : [];
157
- newItem.isLeaf = true;
158
- }
159
- } else {
160
- newItem.children = isMb ? undefined : [];
161
- newItem.isLeaf = true;
162
- }
163
-
164
- return [
165
- ...newArr,
166
- newItem
167
- ];
168
- }, []);
169
- };
170
-
171
- return loop(this.originData, this.cascaderLevel, [], this.filterVals, this.cascaderVals, this.reverseFilter, this.isMb, this.saveKey, this.valueKey, this.nameKey);
172
- },
173
- cascaderData () {
174
- const loop = (arr = [], isMb) => {
175
- return arr
176
- ? arr.reduce((newArr, item) => {
177
- if (item.rm !== 1) {
178
- let newItem = {
179
- ...item
180
- };
181
-
182
- if (newItem.children && newItem.children.length) {
183
- newItem.children = loop(newItem.children, isMb);
184
-
185
- if (newItem.children.length) {
186
- // 无需处理
187
- } else {
188
- newItem.children = isMb ? undefined : [];
189
- }
190
- } else {
191
- newItem.children = isMb ? undefined : [];
192
- }
193
-
194
- newArr.push(newItem);
195
- }
196
-
197
- return newArr;
198
- }, [])
199
- : [];
200
- };
201
-
202
- return loop(this.cascaderAllData, this.isMobile);
203
- },
204
-
205
- curValObj () {
206
- return this.getItemObj(this.curValList);
207
- },
208
- curValName: {
209
- get () {
210
- return this.curValObj
211
- ? this.curValObj[this.nameKey]
212
- : "";
213
- },
214
- set (val) {
215
- if (!val) {
216
- this.clickClear();
217
- }
218
- }
219
- },
220
- showVal () {
221
- return this.$isEmptyData(this.curValList)
222
- ? this.emptyShowVal
223
- : this.curValName;
224
- },
225
- // 已选择项的对象列表
226
- curValObjList () {
227
- return this.curValList.map((item, index) =>
228
- index < this.curValList.length - 1
229
- ? this.getItemObj(item, { marginRight: "4px" })
230
- : this.getItemObj(item)
231
- );
232
- },
233
- curValNameList () {
234
- return this.curValObjList.map(item => item[this.nameKey]);
235
- },
236
- showMulVal () {
237
- return this.$isEmptyData(this.curValList)
238
- ? this.emptyShowVal
239
- : this.curValNameList.join("、");
240
- }
241
- },
242
- created () { },
243
- methods: {
244
- // 单选 -确认回调
245
- confirmCb (selectedValue, selectedOptions) {
246
- this.curValList = selectedValue;
247
-
248
- this.closeModal();
249
- },
250
- // 多选 -追加的确认回调
251
- confirmAddCb (selectedValue, selectedOptions) {
252
- if (this.curValList.some(item => JSON.stringify(item) === JSON.stringify(selectedValue))) {
253
- this.$Message.error({
254
- content: `请勿重复选择"${this.transformFullName(selectedValue)}"!`,
255
- duration: 4
256
- });
257
- } else {
258
- this.curValList = [...this.curValList, selectedValue];
259
-
260
- this.closeModal();
261
- }
262
- },
263
- // 多选 -整体多选的回调
264
- confirmMulCb (selectedValueArr, selectedOptionsArr) {
265
- this.curValList = ["eq", "ne"].includes(this.value.fieldOperator)
266
- ? [...selectedValueArr]
267
- : selectedValueArr.reduce((newNodeArr, node, nodeIndex) => (
268
- newNodeArr.every(newNode => !node.join("").startsWith(newNode.join("")))
269
- ? [
270
- ...newNodeArr,
271
- node
272
- ]
273
- : newNodeArr
274
- ), []);
275
-
276
- this.closeModal();
277
- },
278
- // 删除
279
- clickDeleteItem (nameItem, index) {
280
- this.curValList.splice(index, 1);
281
- this.curValList = [...this.curValList];
282
- },
283
-
284
- /* --------- 工具类 -------- */
285
- getItemObj (val, selfStyle = {}) {
286
- const objArr = this.$getTreeLinealDatas(val, this.cascaderAllData, undefined, this.saveKey);
287
- const obj = objArr.length
288
- ? {
289
- ...objArr.slice(-1)[0],
290
- [this.nameKey]: this.transformFullName(val)
291
- }
292
- : {
293
- [this.saveKey]: val,
294
- [this.nameKey]: `提示:选项${val}已不存在`
295
- };
296
-
297
- return !this.$isEmptyData(val)
298
- ? {
299
- name: obj[this.nameKey], // 查看状态时tag用
300
- ...obj,
301
- style: {
302
- ...this.tagStyle,
303
- ...this.getItemColorStyle(obj),
304
- ...selfStyle
305
- }, // 查看状态时tag用
306
- color: undefined
307
- }
308
- : undefined;
309
- },
310
- // 每项的颜色相关style --flat方式在用
311
- getItemColorStyle (item = {}) {
312
- const color = this.colorMap[item.color] || this.colorMap["color-default"];
313
- return this.useColor
314
- ? {
315
- backgroundColor: this.$getColor(color, 0.1),
316
- color: color
317
- }
318
- : {};
319
- },
320
- // 转化出级联全名
321
- transformFullName (val) {
322
- return this.renderFormat(this.$getTreeLinealDatas(val, this.cascaderAllData, this.nameKey, this.saveKey));
323
- }
324
- }
325
- };
1
+ import controlMixin from "./controlMixin.js";
2
+ import { resourceData, regionDataMap, userIndustryData } from "bri-datas";
3
+
4
+ export default {
5
+ mixins: [
6
+ controlMixin
7
+ ],
8
+ components: {},
9
+ props: {},
10
+ data () {
11
+ return {};
12
+ },
13
+ computed: {
14
+ basePropsObj () {
15
+ const _joinSymbol = this.propsObj._joinSymbol || "/";
16
+ return {
17
+ _regionType: "default", // "default", "benji"
18
+ _showMode: "default", // "default", "custom", "simple"
19
+ _searchShowMode: undefined, // "tree", "default", "custom", "simple"
20
+
21
+ _saveKey: "_key",
22
+ _valueKey: "code",
23
+ _nameKey: "name",
24
+ colorMap: resourceData.colorMap,
25
+ _useColor: false,
26
+ _filterable: true, // 是否支持搜索
27
+ _cascaderLevel: undefined, // 级联数据取到第几级
28
+ _reverseFilter: false, // 是否反向过滤,默认正向过滤
29
+ _cascaderFilterVals: [], // 过滤的数据的第一级选项
30
+ _cascaderSelectVals: [], // 过滤的数据的级联选项
31
+ _renderFormat: (labels) => labels.join(_joinSymbol),
32
+ _data: [],
33
+
34
+ ...this.propsObj,
35
+ ...this.commonDealPropsObj,
36
+
37
+ _changeOnSelect: this.isInAnySearch
38
+ ? true
39
+ : this.propsObj._changeOnSelect == undefined ? false : this.propsObj._changeOnSelect, // 每级菜单都可取值 -默认取末级
40
+ _joinSymbol: _joinSymbol // 级联拼接符
41
+ };
42
+ },
43
+ subType () {
44
+ return this.selfPropsObj._regionType;
45
+ },
46
+ showMode () {
47
+ return this.isInAnySearch
48
+ ? this.selfPropsObj._searchShowMode || this.selfPropsObj._showMode
49
+ : this.selfPropsObj._showMode;
50
+ },
51
+
52
+ saveKey () {
53
+ return this.selfPropsObj._saveKey;
54
+ },
55
+ valueKey () {
56
+ return this.selfPropsObj._valueKey;
57
+ },
58
+ nameKey () {
59
+ return this.selfPropsObj._nameKey;
60
+ },
61
+ colorMap () {
62
+ return this.selfPropsObj.colorMap;
63
+ },
64
+ useColor () {
65
+ return this.selfPropsObj._useColor;
66
+ },
67
+ // filterable () {
68
+ // return this.selfPropsObj._filterable;
69
+ // },
70
+ cascaderLevel () {
71
+ return this.selfPropsObj._cascaderLevel;
72
+ },
73
+ reverseFilter () {
74
+ return this.selfPropsObj._reverseFilter;
75
+ },
76
+ filterVals () {
77
+ return this.selfPropsObj._cascaderFilterVals;
78
+ },
79
+ cascaderVals () {
80
+ return this.selfPropsObj._cascaderSelectVals;
81
+ },
82
+ renderFormat () {
83
+ return this.selfPropsObj._renderFormat;
84
+ },
85
+
86
+ originData () {
87
+ return ["userIndustry"].includes(this.controlType)
88
+ ? userIndustryData
89
+ : ["region", "regions"].includes(this.controlType)
90
+ ? regionDataMap[this.subType] || regionDataMap.default
91
+ : this.selfPropsObj._data;
92
+ },
93
+ cascaderAllData () {
94
+ const loop = (arr = [], level, parentKeys = [], filterVals = [], cascaderVals = [], reverseFilter = false, isMb = false, saveKey = "_key", valueKey = "code", nameKey = "name") => {
95
+ arr = cascaderVals.length
96
+ ? arr.filter(item => {
97
+ const itemKey = item[saveKey];
98
+ const keys = [...parentKeys, itemKey]; // !!此处就是用_key拼,不会用别的属性
99
+
100
+ return reverseFilter
101
+ ? !cascaderVals.some(valArr =>
102
+ keys.length < valArr.length
103
+ ? false
104
+ : valArr.every((valArrKey, index) => valArrKey === keys[index])
105
+ )
106
+ : cascaderVals.some(valArr =>
107
+ keys.length < valArr.length
108
+ ? keys.every((levelKey, index) => levelKey === valArr[index])
109
+ : valArr.every((valArrKey, index) => valArrKey === keys[index])
110
+ );
111
+ })
112
+ : filterVals.length
113
+ ? arr.filter(item =>
114
+ reverseFilter
115
+ ? !filterVals.includes(item[saveKey])
116
+ : filterVals.includes(item[saveKey])
117
+ )
118
+ : arr;
119
+
120
+ return arr.reduce((newArr, item) => {
121
+ const itemKey = item[saveKey];
122
+ const keys = [...parentKeys, itemKey]; // !!此处就是用_key拼,不会用别的属性
123
+ let newItem = {
124
+ keys: keys,
125
+ code: keys.join(""),
126
+ ...item
127
+ };
128
+ newItem = {
129
+ ...newItem,
130
+ value: newItem[valueKey],
131
+ label: newItem[nameKey]
132
+ };
133
+
134
+ if (this.showMode === "tree") {
135
+ newItem.title = newItem[nameKey];
136
+ newItem.checked = this.multipleMode
137
+ ? this.curValList.some(valListItem => valListItem.join("") === newItem.code)
138
+ : this.curValList.join("") === newItem.code;
139
+ newItem.expand = !!newItem.expand;
140
+ }
141
+
142
+ if (
143
+ (!level || level > newItem.level) &&
144
+ (newItem.children && newItem.children.length)
145
+ ) {
146
+ newItem.children = loop(newItem.children, level, newItem.keys, [], cascaderVals, reverseFilter, isMb, saveKey, valueKey, nameKey);
147
+
148
+ if (newItem.children.length) {
149
+ newItem.loading = false; // 此代码pc端在用:为了所请求的级,出现继续加载的箭头图标
150
+ newItem.isLeaf = false;
151
+
152
+ if (this.showMode === "tree") {
153
+ newItem.expand = newItem.expand || newItem.checked || newItem.children.some(childItem => childItem.expand || childItem.checked);
154
+ }
155
+ } else {
156
+ newItem.children = isMb ? undefined : [];
157
+ newItem.isLeaf = true;
158
+ }
159
+ } else {
160
+ newItem.children = isMb ? undefined : [];
161
+ newItem.isLeaf = true;
162
+ }
163
+
164
+ return [
165
+ ...newArr,
166
+ newItem
167
+ ];
168
+ }, []);
169
+ };
170
+
171
+ return loop(this.originData, this.cascaderLevel, [], this.filterVals, this.cascaderVals, this.reverseFilter, this.isMb, this.saveKey, this.valueKey, this.nameKey);
172
+ },
173
+ cascaderData () {
174
+ const loop = (arr = [], isMb) => {
175
+ return arr
176
+ ? arr.reduce((newArr, item) => {
177
+ if (item.rm !== 1) {
178
+ let newItem = {
179
+ ...item
180
+ };
181
+
182
+ if (newItem.children && newItem.children.length) {
183
+ newItem.children = loop(newItem.children, isMb);
184
+
185
+ if (newItem.children.length) {
186
+ // 无需处理
187
+ } else {
188
+ newItem.children = isMb ? undefined : [];
189
+ }
190
+ } else {
191
+ newItem.children = isMb ? undefined : [];
192
+ }
193
+
194
+ newArr.push(newItem);
195
+ }
196
+
197
+ return newArr;
198
+ }, [])
199
+ : [];
200
+ };
201
+
202
+ return loop(this.cascaderAllData, this.isMobile);
203
+ },
204
+
205
+ curValObj () {
206
+ return this.getItemObj(this.curValList);
207
+ },
208
+ curValName: {
209
+ get () {
210
+ return this.curValObj
211
+ ? this.curValObj[this.nameKey]
212
+ : "";
213
+ },
214
+ set (val) {
215
+ if (!val) {
216
+ this.clickClear();
217
+ }
218
+ }
219
+ },
220
+ showVal () {
221
+ return this.$isEmptyData(this.curValList)
222
+ ? this.emptyShowVal
223
+ : this.curValName;
224
+ },
225
+ // 已选择项的对象列表
226
+ curValObjList () {
227
+ return this.curValList.map((item, index) =>
228
+ index < this.curValList.length - 1
229
+ ? this.getItemObj(item, { marginRight: "4px" })
230
+ : this.getItemObj(item)
231
+ );
232
+ },
233
+ curValNameList () {
234
+ return this.curValObjList.map(item => item[this.nameKey]);
235
+ },
236
+ showMulVal () {
237
+ return this.$isEmptyData(this.curValList)
238
+ ? this.emptyShowVal
239
+ : this.curValNameList.join("、");
240
+ }
241
+ },
242
+ created () { },
243
+ methods: {
244
+ // 单选 -确认回调
245
+ confirmCb (selectedValue, selectedOptions) {
246
+ this.curValList = selectedValue;
247
+
248
+ this.closeModal();
249
+ },
250
+ // 多选 -追加的确认回调
251
+ confirmAddCb (selectedValue, selectedOptions) {
252
+ if (this.curValList.some(item => JSON.stringify(item) === JSON.stringify(selectedValue))) {
253
+ this.$Message.error({
254
+ content: `请勿重复选择"${this.transformFullName(selectedValue)}"!`,
255
+ duration: 4
256
+ });
257
+ } else {
258
+ this.curValList = [...this.curValList, selectedValue];
259
+
260
+ this.closeModal();
261
+ }
262
+ },
263
+ // 多选 -整体多选的回调
264
+ confirmMulCb (selectedValueArr, selectedOptionsArr) {
265
+ this.curValList = ["eq", "ne"].includes(this.value.fieldOperator)
266
+ ? [...selectedValueArr]
267
+ : selectedValueArr.reduce((newNodeArr, node, nodeIndex) => (
268
+ newNodeArr.every(newNode => !node.join("").startsWith(newNode.join("")))
269
+ ? [
270
+ ...newNodeArr,
271
+ node
272
+ ]
273
+ : newNodeArr
274
+ ), []);
275
+
276
+ this.closeModal();
277
+ },
278
+ // 删除
279
+ clickDeleteItem (nameItem, index) {
280
+ this.curValList.splice(index, 1);
281
+ this.curValList = [...this.curValList];
282
+ },
283
+
284
+ /* --------- 工具类 -------- */
285
+ getItemObj (val, selfStyle = {}) {
286
+ const objArr = this.$getTreeLinealDatas(val, this.cascaderAllData, undefined, this.saveKey);
287
+ const obj = objArr.length
288
+ ? {
289
+ ...objArr.slice(-1)[0],
290
+ [this.nameKey]: this.transformFullName(val)
291
+ }
292
+ : {
293
+ [this.saveKey]: val,
294
+ [this.nameKey]: `提示:选项${val}已不存在`
295
+ };
296
+
297
+ return !this.$isEmptyData(val)
298
+ ? {
299
+ name: obj[this.nameKey], // 查看状态时tag用
300
+ ...obj,
301
+ style: {
302
+ ...this.tagStyle,
303
+ ...this.getItemColorStyle(obj),
304
+ ...selfStyle
305
+ }, // 查看状态时tag用
306
+ color: undefined
307
+ }
308
+ : undefined;
309
+ },
310
+ // 每项的颜色相关style --flat方式在用
311
+ getItemColorStyle (item = {}) {
312
+ const color = this.colorMap[item.color] || this.colorMap["color-default"];
313
+ return this.useColor
314
+ ? {
315
+ backgroundColor: this.$getColor(color, 0.1),
316
+ color: color
317
+ }
318
+ : {};
319
+ },
320
+ // 转化出级联全名
321
+ transformFullName (val) {
322
+ return this.renderFormat(this.$getTreeLinealDatas(val, this.cascaderAllData, this.nameKey, this.saveKey));
323
+ }
324
+ }
325
+ };