bri-components 1.2.57 → 1.2.59

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 (42) hide show
  1. package/package.json +2 -2
  2. package/src/components/controls/base/BriUpload/BriUpload.vue +1 -1
  3. package/src/components/controls/base/DshCascader/DshCascader.vue +68 -231
  4. package/src/components/controls/base/DshCascader/{cascaderModal.vue → components/cascaderModal.vue} +22 -31
  5. package/src/components/controls/base/DshCascader/{cascaderPicker.vue → components/cascaderPicker.vue} +22 -18
  6. package/src/components/controls/base/DshCascader/components/cascaderSimple.vue +141 -0
  7. package/src/components/controls/base/DshCoordinates.vue +1 -1
  8. package/src/components/controls/base/DshDate/DshDate.vue +1 -1
  9. package/src/components/controls/base/DshDate/DshDaterange.vue +1 -1
  10. package/src/components/controls/base/DshDivider.vue +1 -1
  11. package/src/components/controls/base/DshEditor.vue +1 -1
  12. package/src/components/controls/base/DshInput/BriInputs.vue +1 -1
  13. package/src/components/controls/base/DshInput/DshInput.vue +1 -1
  14. package/src/components/controls/base/DshNumber/DshNumber.vue +1 -1
  15. package/src/components/controls/base/DshNumber/DshNumberange.vue +1 -1
  16. package/src/components/controls/base/DshSelect/DshCheckbox.vue +187 -185
  17. package/src/components/controls/base/DshSelect/DshSelect.vue +140 -137
  18. package/src/components/controls/base/DshSwitch/switchMixin.js +1 -1
  19. package/src/components/controls/extra/themeColor.vue +1 -1
  20. package/src/components/controls/extra/themeIcon.vue +1 -1
  21. package/src/components/controls/{base/DshCascader → mixins}/cascaderMixin.js +16 -33
  22. package/src/components/controls/{base/DshCascader → mixins}/cascaderPickerMixin.js +52 -44
  23. package/src/components/controls/{controlMixin.js → mixins/controlMixin.js} +25 -4
  24. package/src/components/controls/mixins/selectMixin.js +192 -0
  25. package/src/components/controls/senior/BriLabels.vue +1 -1
  26. package/src/components/controls/senior/DshPackage.vue +1 -1
  27. package/src/components/controls/senior/cascaderTable.vue +1 -1
  28. package/src/components/controls/senior/flatTable.vue +1 -1
  29. package/src/components/controls/senior/selectDepartments.vue +1 -1
  30. package/src/components/controls/senior/selectUsers/selectUsers.vue +1 -1
  31. package/src/components/controls/special/DshBack.vue +1 -1
  32. package/src/components/controls/special/DshUndeveloped.vue +1 -1
  33. package/src/components/form/DshAdvSearch.vue +1 -1
  34. package/src/components/list/DshBox/DshCard.vue +153 -38
  35. package/src/components/list/DshBox/DshPanel.vue +260 -93
  36. package/src/components/small/BriTooltip.vue +2 -3
  37. package/src/components/unit/DshFormUnit.vue +7 -19
  38. package/src/styles/components/index.less +0 -2
  39. package/src/components/controls/base/DshSelect/selectMixin.js +0 -239
  40. package/src/styles/components/list/DshBox/DshCard.less +0 -59
  41. package/src/styles/components/list/DshBox/DshPanel.less +0 -107
  42. package/src/styles/components/small/BriTooltip.less +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bri-components",
3
- "version": "1.2.57",
3
+ "version": "1.2.59",
4
4
  "author": "dengshanghui",
5
5
  "description": "a component lib for vue project",
6
6
  "main": "src/index.js",
@@ -32,7 +32,7 @@
32
32
  "dependencies": {
33
33
  "ali-oss": "^6.13.1",
34
34
  "axios": "^0.23.0",
35
- "bri-datas": "^1.0.47",
35
+ "bri-datas": "^1.0.48",
36
36
  "jshint": "^2.12.0",
37
37
  "jsonlint": "^1.6.3",
38
38
  "minio": "7.1.0",
@@ -89,7 +89,7 @@
89
89
  </template>
90
90
 
91
91
  <script>
92
- import controlMixin from "../../controlMixin.js";
92
+ import controlMixin from "../../mixins/controlMixin.js";
93
93
  import uploadMixin from "./uploadMixin.js";
94
94
  import BriUploadImage from "./BriUploadImage.vue";
95
95
  import uploadList from "./uploadList.vue";
@@ -4,80 +4,40 @@
4
4
  v-if="!multipleMode && canEdit"
5
5
  class="DshCascader"
6
6
  >
7
- <!-- 简洁方式 -->
8
- <template v-if="showType === 'simple'">
9
- <Cascader
10
- :value="curValKeyList"
11
- :data="renderCascaderData"
12
- :placeholder="selfPropsObj._placeholder"
13
- :disabled="selfPropsObj._disabled"
14
- :clearable="selfPropsObj._clearable"
15
- :size="selfPropsObj._size"
16
- :filterable="filterable"
17
- :render-format="renderFormat"
18
- :change-on-select="changeOnSelect"
19
- :transfer="selfPropsObj._transfer"
20
- :transfer-class-name="selfPropsObj._transferClassName"
21
- :load-data="loadData"
22
- @on-visible-change="changeVisible"
23
- @on-change="changeSelect"
24
- @click.native="clickCascader"
25
- ></Cascader>
26
- </template>
27
-
28
- <!-- 弹框方式 -->
29
- <template v-else-if="showType === 'custom'">
30
- <cascader-modal
31
- v-model="showModal"
32
- :activeValue="curValList"
33
- :data="cascaderData"
34
- :propsObj="selfPropsObj"
35
- @confirm="confirmCb"
36
- >
37
- <dsh-control-input
38
- :class="commonClass"
39
- :value="curValName"
40
- :disabled="inputPropsObj._disabled"
41
- :propsObj="inputPropsObj"
42
- @clear="clickClear"
43
- ></dsh-control-input>
44
- </cascader-modal>
45
- </template>
46
-
47
- <!-- 确认面板方式 -->
48
- <template v-else>
49
- <cascader-picker
50
- v-model="showModal"
51
- :activeValue="curValList"
52
- :data="cascaderData"
53
- :propsObj="selfPropsObj"
54
- @confirm="confirmCb"
55
- >
56
- <dsh-control-input
57
- :class="commonClass"
58
- :value="curValName"
59
- :disabled="inputPropsObj._disabled"
60
- :propsObj="inputPropsObj"
61
- @clear="clickClear"
62
- ></dsh-control-input>
63
- </cascader-picker>
64
- </template>
7
+ <component
8
+ :is="showTypeMap[showType]"
9
+ v-model="showModal"
10
+ :activeValue="curValList"
11
+ :data="cascaderData"
12
+ :propsObj="selfPropsObj"
13
+ @confirm="confirmCb"
14
+ >
15
+ <dsh-control-input
16
+ v-if="!['simple'].includes(showType)"
17
+ :class="commonClass"
18
+ :value="curValName"
19
+ :disabled="inputPropsObj._disabled"
20
+ :propsObj="inputPropsObj"
21
+ @clear="clickClear"
22
+ ></dsh-control-input>
23
+ </component>
65
24
  </div>
66
25
 
67
26
  <!-- 单选模式 查看 -->
68
27
  <div
69
28
  v-else-if="!multipleMode && !canEdit"
70
- class="DshCascader"
29
+ class="DshCascader-show"
71
30
  >
72
31
  <!-- 有值 -->
73
32
  <bri-tooltip
74
33
  v-if="!$isEmptyData(curValList)"
75
34
  :content="showVal"
76
- placement="top"
77
- maxWidth="200"
78
35
  :transfer="true"
79
36
  >
80
- <div :class="commonClass">
37
+ <div :class="{
38
+ commonClass,
39
+ 'DshCascader-show-ellipsis': true
40
+ }">
81
41
  {{ showVal }}
82
42
  </div>
83
43
  </bri-tooltip>
@@ -96,70 +56,23 @@
96
56
  v-else-if="multipleMode && canEdit"
97
57
  class="DshCascaders"
98
58
  >
99
- <!-- 简洁方式 多选的filterable必须是false,不然出bug -->
100
- <template v-if="showType === 'simple'">
101
- <Cascader
102
- :data="renderCascaderData"
103
- :disabled="selfPropsObj._disabled"
104
- :clearable="selfPropsObj._clearable"
105
- :size="selfPropsObj._size"
106
- :filterable="filterable"
107
- :render-format="renderFormat"
108
- :change-on-select="changeOnSelect"
109
- :transfer="selfPropsObj._transfer"
110
- :transfer-class-name="selfPropsObj._transferClassName"
111
- :load-data="loadData"
112
- @on-visible-change="changeMulVisible"
113
- @on-change="changeMulSelect"
114
- >
115
- <dsh-control-input
116
- :class="commonClass"
117
- :value="curValNameList"
118
- :disabled="inputPropsObj._disabled"
119
- :propsObj="inputPropsObj"
120
- @deleteItem="clickDeleteItem"
121
- @clear="clickClear"
122
- ></dsh-control-input>
123
- </Cascader>
124
- </template>
125
-
126
- <!-- 弹框方式 -->
127
- <template v-else-if="showType === 'custom'">
128
- <cascader-modal
129
- v-model="showModal"
130
- :data="cascaderData"
131
- :propsObj="selfPropsObj"
132
- @confirm="confirmMulCb"
133
- >
134
- <dsh-control-input
135
- :class="commonClass"
136
- :value="curValNameList"
137
- :disabled="inputPropsObj._disabled"
138
- :propsObj="inputPropsObj"
139
- @deleteItem="clickDeleteItem"
140
- @clear="clickClear"
141
- ></dsh-control-input>
142
- </cascader-modal>
143
- </template>
144
-
145
- <!-- 确认面板方式 -->
146
- <template v-else>
147
- <cascader-picker
148
- v-model="showModal"
149
- :data="cascaderData"
150
- :propsObj="selfPropsObj"
151
- @confirm="confirmMulCb"
152
- >
153
- <dsh-control-input
154
- :class="commonClass"
155
- :value="curValNameList"
156
- :disabled="inputPropsObj._disabled"
157
- :propsObj="inputPropsObj"
158
- @deleteItem="clickDeleteItem"
159
- @clear="clickClear"
160
- ></dsh-control-input>
161
- </cascader-picker>
162
- </template>
59
+ <component
60
+ :is="showTypeMap[showType]"
61
+ v-model="showModal"
62
+ :multipleMode="multipleMode"
63
+ :data="cascaderData"
64
+ :propsObj="selfPropsObj"
65
+ @confirm="confirmMulCb"
66
+ >
67
+ <dsh-control-input
68
+ :class="commonClass"
69
+ :value="curValNameList"
70
+ :disabled="inputPropsObj._disabled"
71
+ :propsObj="inputPropsObj"
72
+ @deleteItem="clickDeleteItem"
73
+ @clear="clickClear"
74
+ ></dsh-control-input>
75
+ </component>
163
76
  </div>
164
77
 
165
78
  <!-- 多选模式 查看 -->
@@ -171,19 +84,15 @@
171
84
  <bri-tooltip
172
85
  v-if="!$isEmptyData(curValList)"
173
86
  :content="showMulVal"
174
- placement="top"
175
- maxWidth="200"
176
87
  :transfer="true"
177
88
  >
178
- <div :class="{
179
- ...commonClass,
180
- 'DshCascader-show-row': isFullRow && !isUnitShow
181
- }">
182
- <dsh-tags
183
- class="text"
184
- :list="curValNameList"
185
- ></dsh-tags>
186
- </div>
89
+ <dsh-tags
90
+ :class="{
91
+ ...commonClass,
92
+ 'DshCascaders-show-ellipsis': !(isDetailShow && isFullRow)
93
+ }"
94
+ :list="curValNameList"
95
+ ></dsh-tags>
187
96
  </bri-tooltip>
188
97
 
189
98
  <!-- 无值 -->
@@ -199,9 +108,10 @@
199
108
  </template>
200
109
 
201
110
  <script>
202
- import cascaderMixin from "./cascaderMixin.js";
203
- import cascaderPicker from "./cascaderPicker.vue";
204
- import cascaderModal from "./cascaderModal.vue";
111
+ import cascaderMixin from "../../mixins/cascaderMixin.js";
112
+ import cascaderPicker from "./components/cascaderPicker.vue";
113
+ import cascaderModal from "./components/cascaderModal.vue";
114
+ import cascaderSimple from "./components/cascaderSimple.vue";
205
115
 
206
116
  export default {
207
117
  name: "DshCascader",
@@ -210,106 +120,38 @@
210
120
  ],
211
121
  components: {
212
122
  cascaderPicker,
213
- cascaderModal
123
+ cascaderModal,
124
+ cascaderSimple
214
125
  },
215
126
  props: {},
216
127
  data () {
217
128
  return {
218
- // renderAll: false,
219
- // clickFlag: true,
220
- isVisible: false,
221
- curSelectVal: []
129
+ showTypeMap: {
130
+ default: cascaderPicker, // 确认面板方式(默认)
131
+ custom: cascaderModal, // 弹框方式
132
+ simple: cascaderSimple // 简易方式
133
+ }
222
134
  };
223
135
  },
224
136
  computed: {
225
137
  selfPropsObj () {
226
138
  return {
227
- _showMode: "default", // 只有单选模式有效,值为"default", "custom", "simple"
139
+ _showMode: "default", // 值为"default", "custom", "simple"
228
140
  _transfer: true,
229
141
  _transferClassName: "",
230
142
 
231
- ...this.basePropsObj,
232
-
233
- // 默认模式-多选时 暂不支持搜索
234
- _filterable: this.basePropsObj._showMode === "simple" && this.multipleMode
235
- ? false
236
- : this.basePropsObj._filterable
143
+ ...this.basePropsObj
237
144
  };
238
145
  },
239
146
  inputPropsObj () {
240
147
  return {
241
- _icon: this.isVisible ? "ios-arrow-up" : "ios-arrow-down",
148
+ _icon: this.showModal ? "ios-arrow-up" : "ios-arrow-down",
242
149
  ...this.selfPropsObj
243
150
  };
244
- },
245
-
246
- renderCascaderData () {
247
- return this.renderAll
248
- ? this.cascaderData
249
- : this.cascaderData.map(item => {
250
- return {
251
- ...item,
252
- children: []
253
- };
254
- });
255
151
  }
256
152
  },
257
153
  created () {},
258
- methods: {
259
- /* --------- 简洁方式 ------- */
260
- // 动态加载数据
261
- loadData (treeItem, cb) {
262
- const linealDatas = this.$getTreeLinealDatas(treeItem.keys, this.cascaderData, undefined, this.saveKey);
263
- const lastData = linealDatas.slice(-1)[0];
264
- treeItem.children = lastData.children.map(item =>
265
- ({
266
- ...item,
267
- children: []
268
- })
269
- );
270
-
271
- cb();
272
- },
273
- clickCascader () {
274
- // if (
275
- // !this.selfPropsObj._disabled &&
276
- // this.filterable === true &&
277
- // this.renderAll === false &&
278
- // this.clickFlag === true
279
- // ) {
280
- // this.clickFlag = false; // 这个处理其实觉大概率没必要,有没有不受影响
281
- // setTimeout(() => {
282
- // this.renderAll = true;
283
- // }, 0);
284
- // }
285
- },
286
- // 简洁方式-单选 -展开和关闭弹窗时触发
287
- changeVisible (bool) {
288
- this.isVisible = bool;
289
- },
290
- // 简洁方式-单选 -选项变化
291
- changeSelect (value, selectedOptions) {
292
- if (this.isVisible || !value.length) {
293
- this.curValList = selectedOptions.map(item => item[this.saveKey]);
294
- }
295
- },
296
- // 简洁方式-多选 -展开和关闭弹窗时触发
297
- changeMulVisible (bool) {
298
- this.isVisible = bool;
299
-
300
- if (bool === false && this.curSelectVal.length) {
301
- this.confirmMulCb(this.curSelectVal);
302
-
303
- this.curSelectVal = [];
304
- }
305
- },
306
- // 简洁方式-多选 -选项变化
307
- changeMulSelect (value, selectedOptions) {
308
- if (this.isVisible) {
309
- this.curSelectVal = selectedOptions.map(item => item[this.saveKey]);
310
- }
311
- }
312
- },
154
+ methods: {},
313
155
  watch: {
314
156
  "cascaderLevel" () {
315
157
  this.value[this.controlKey] = [];
@@ -320,23 +162,18 @@
320
162
 
321
163
  <style lang="less">
322
164
  .DshCascader {
323
-
165
+ &-show {
166
+ &-ellipsis {
167
+ .dsh-ellipsis();
168
+ }
169
+ }
324
170
  }
325
171
 
326
172
  // 多选
327
173
  .DshCascaders {
328
174
  &-show {
329
- height: auto;
330
-
331
- &-row {
332
- .text,
333
- .overflow {
334
- .bri-scrollbar3();
335
- width: 100%;
336
- height: 100%;
337
- white-space: normal;
338
- overflow: auto;
339
- }
175
+ &-ellipsis {
176
+ .dsh-ellipsis();
340
177
  }
341
178
  }
342
179
  }
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="cascaderModal">
3
- <div @click.stop="clickInput">
3
+ <div @click="clickInput">
4
4
  <slot>
5
5
  <Input
6
6
  v-model="inputStr"
@@ -84,7 +84,7 @@
84
84
  :key="nodeItem[valueKey]"
85
85
  :class="{
86
86
  'item': true,
87
- 'item-active': selectedLastOption && nodeItem[valueKey] === selectedLastOption[valueKey],
87
+ 'item-active': selectedObj && nodeItem[valueKey] === selectedObj[valueKey],
88
88
  'item-disabled': nodeItem.disabled
89
89
  }"
90
90
  @click="clickItem(nodeItem)"
@@ -95,7 +95,7 @@
95
95
 
96
96
  <span class="item-icon">
97
97
  <dsh-icons :list="[{
98
- icon: selectedLastOption && nodeItem[valueKey] === selectedLastOption[valueKey]
98
+ icon: selectedObj && nodeItem[valueKey] === selectedObj[valueKey]
99
99
  ? 'md-checkmark'
100
100
  : ''
101
101
  }]" />
@@ -136,7 +136,7 @@
136
136
  </template>
137
137
 
138
138
  <script>
139
- import cascaderPickerMixin from "./cascaderPickerMixin.js";
139
+ import cascaderPickerMixin from "../../../mixins/cascaderPickerMixin.js";
140
140
 
141
141
  export default {
142
142
  name: "cascaderModal",
@@ -147,6 +147,7 @@
147
147
  props: {},
148
148
  data () {
149
149
  return {
150
+ inputStr: "",
150
151
  description: ""
151
152
  };
152
153
  },
@@ -159,8 +160,8 @@
159
160
  },
160
161
 
161
162
  initData () {
162
- const loop = (data = [], newData = []) => {
163
- return data.reduce((newData, item) => {
163
+ const loop = (arr = [], newArr = []) => {
164
+ return arr.reduce((newArr, item) => {
164
165
  const newItem = {
165
166
  ...item,
166
167
  value: item[this.valueKey],
@@ -186,8 +187,8 @@
186
187
  children: loop(item.children)
187
188
  };
188
189
 
189
- return [...newData, newItem];
190
- }, newData);
190
+ return [...newArr, newItem];
191
+ }, newArr);
191
192
  };
192
193
 
193
194
  return loop(this.data);
@@ -198,40 +199,30 @@
198
199
  },
199
200
  methods: {
200
201
  init () {
201
- this.selectedValue = this.activeValue;
202
202
  this.selectedOptions.forEach(item => {
203
203
  item.expand = true;
204
204
  });
205
- this.dealDescription();
205
+ this.getDescription(this.selectedValue);
206
206
  },
207
207
 
208
208
  search () {
209
209
  this.selectedValue = [];
210
210
  this.showMode = "default";
211
211
  },
212
- clickItemCb (node) {
213
- this.dealDescription();
214
- },
215
- dealDescription () {
216
- if (this.selectedValue.length && this.selectedLastOption.description == undefined) {
212
+ clickItem (node) {
213
+ // 避免重复点击
214
+ if (JSON.stringify(this.selectedValue) !== JSON.stringify(node.keys)) {
215
+ this.selectedValue = node.keys;
216
+
217
+ const obj = {
218
+ value: this.selectedValue,
219
+ selectedOptions: this.selectedOptions
220
+ };
221
+ this.$emit("change", obj);
222
+ !node.children.length && this.$emit("finish", obj);
223
+
217
224
  this.getDescription(this.selectedValue);
218
225
  }
219
- },
220
- getDescription (nodeKeys) {
221
- this.$https({
222
- url: {
223
- module: "sheet",
224
- name: "getResourceDescription"
225
- },
226
- params: {
227
- resourceKey: this.resourceKey,
228
- nodeKeys
229
- },
230
- callback: data => {
231
- this.description = data;
232
- this.selectedLastOption.description = data;
233
- }
234
- });
235
226
  }
236
227
  }
237
228
  };
@@ -5,7 +5,7 @@
5
5
  v-clickoutside="clickCancel"
6
6
  trigger="custom"
7
7
  :visible="showModal"
8
- :placement="placement"
8
+ :placement="'bottom-start'"
9
9
  :transfer="true"
10
10
  :transfer-class-name="`cascaderPicker-down ${selfPropsObj._transferClassName}`"
11
11
  :stop-propagation="true"
@@ -118,7 +118,7 @@
118
118
  :key="nodeItem[valueKey]"
119
119
  :class="{
120
120
  'item': true,
121
- 'item-active': selectedLastOption && nodeItem[valueKey] === selectedLastOption[valueKey],
121
+ 'item-active': selectedObj && nodeItem[valueKey] === selectedObj[valueKey],
122
122
  'item-disabled': nodeItem.disabled
123
123
  }"
124
124
  @click="clickItem(nodeItem)"
@@ -129,7 +129,7 @@
129
129
 
130
130
  <span class="item-icon">
131
131
  <dsh-icons :list="[{
132
- icon: selectedLastOption && nodeItem[valueKey] === selectedLastOption[valueKey]
132
+ icon: selectedObj && nodeItem[valueKey] === selectedObj[valueKey]
133
133
  ? 'md-checkmark'
134
134
  : ''
135
135
  }]" />
@@ -181,7 +181,7 @@
181
181
  </template>
182
182
 
183
183
  <script>
184
- import cascaderPickerMixin from "./cascaderPickerMixin.js";
184
+ import cascaderPickerMixin from "../../../mixins/cascaderPickerMixin.js";
185
185
 
186
186
  export default {
187
187
  name: "cascaderPicker",
@@ -189,21 +189,13 @@
189
189
  cascaderPickerMixin
190
190
  ],
191
191
  components: {},
192
- props: {
193
- placement: {
194
- type: String,
195
- default: "bottom-start"
196
- }
197
- },
192
+ props: {},
198
193
  data () {
199
194
  return {
200
195
  curTabIndex: 0
201
196
  };
202
197
  },
203
198
  computed: {
204
- initData () {
205
- return this.data;
206
- },
207
199
  selectedLinealDatas () {
208
200
  const arr = this.selectedOptions.map((item, index, list) => {
209
201
  return {
@@ -217,10 +209,10 @@
217
209
 
218
210
  ...(
219
211
  this.selectedOptions.length
220
- ? this.selectedLastOption.children.length && this.curTabIndex + 1 > this.selectedOptions.length
212
+ ? this.selectedObj.children.length && this.curTabIndex + 1 > this.selectedOptions.length
221
213
  ? [
222
214
  {
223
- data: this.selectedLastOption.children
215
+ data: this.selectedObj.children
224
216
  }
225
217
  ]
226
218
  : []
@@ -242,9 +234,8 @@
242
234
  methods: {
243
235
  // 初始化
244
236
  init () {
245
- this.selectedValue = this.activeValue;
246
237
  this.curTabIndex = this.selectedOptions.length
247
- ? this.selectedLastOption.children.length
238
+ ? this.selectedObj.children.length
248
239
  ? this.selectedOptions.length
249
240
  : this.selectedOptions.length - 1
250
241
  : 0;
@@ -255,7 +246,20 @@
255
246
  this.showMode = "default";
256
247
  this.curTabIndex = 0;
257
248
  },
258
- clickItemCb (node) {
249
+ clickItem (node) {
250
+ // 避免重复点击
251
+ if (JSON.stringify(this.selectedValue) !== JSON.stringify(node.keys)) {
252
+ this.selectedValue = node.keys;
253
+
254
+ const obj = {
255
+ value: this.selectedValue,
256
+ selectedOptions: this.selectedOptions,
257
+ tabIndex: this.curTabIndex
258
+ };
259
+ this.$emit("change", obj);
260
+ !node.children.length && this.$emit("finish", obj);
261
+ }
262
+
259
263
  // 区分展示方式
260
264
  if (this.showMode === "default" && node.children.length) {
261
265
  this.curTabIndex = this.curTabIndex + 1;