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.
- package/package.json +2 -2
- package/src/components/controls/base/BriUpload/BriUpload.vue +1 -1
- package/src/components/controls/base/DshCascader/DshCascader.vue +68 -231
- package/src/components/controls/base/DshCascader/{cascaderModal.vue → components/cascaderModal.vue} +22 -31
- package/src/components/controls/base/DshCascader/{cascaderPicker.vue → components/cascaderPicker.vue} +22 -18
- package/src/components/controls/base/DshCascader/components/cascaderSimple.vue +141 -0
- package/src/components/controls/base/DshCoordinates.vue +1 -1
- package/src/components/controls/base/DshDate/DshDate.vue +1 -1
- package/src/components/controls/base/DshDate/DshDaterange.vue +1 -1
- package/src/components/controls/base/DshDivider.vue +1 -1
- package/src/components/controls/base/DshEditor.vue +1 -1
- package/src/components/controls/base/DshInput/BriInputs.vue +1 -1
- package/src/components/controls/base/DshInput/DshInput.vue +1 -1
- package/src/components/controls/base/DshNumber/DshNumber.vue +1 -1
- package/src/components/controls/base/DshNumber/DshNumberange.vue +1 -1
- package/src/components/controls/base/DshSelect/DshCheckbox.vue +187 -185
- package/src/components/controls/base/DshSelect/DshSelect.vue +140 -137
- package/src/components/controls/base/DshSwitch/switchMixin.js +1 -1
- package/src/components/controls/extra/themeColor.vue +1 -1
- package/src/components/controls/extra/themeIcon.vue +1 -1
- package/src/components/controls/{base/DshCascader → mixins}/cascaderMixin.js +16 -33
- package/src/components/controls/{base/DshCascader → mixins}/cascaderPickerMixin.js +52 -44
- package/src/components/controls/{controlMixin.js → mixins/controlMixin.js} +25 -4
- package/src/components/controls/mixins/selectMixin.js +192 -0
- package/src/components/controls/senior/BriLabels.vue +1 -1
- package/src/components/controls/senior/DshPackage.vue +1 -1
- package/src/components/controls/senior/cascaderTable.vue +1 -1
- package/src/components/controls/senior/flatTable.vue +1 -1
- package/src/components/controls/senior/selectDepartments.vue +1 -1
- package/src/components/controls/senior/selectUsers/selectUsers.vue +1 -1
- package/src/components/controls/special/DshBack.vue +1 -1
- package/src/components/controls/special/DshUndeveloped.vue +1 -1
- package/src/components/form/DshAdvSearch.vue +1 -1
- package/src/components/list/DshBox/DshCard.vue +153 -38
- package/src/components/list/DshBox/DshPanel.vue +260 -93
- package/src/components/small/BriTooltip.vue +2 -3
- package/src/components/unit/DshFormUnit.vue +7 -19
- package/src/styles/components/index.less +0 -2
- package/src/components/controls/base/DshSelect/selectMixin.js +0 -239
- package/src/styles/components/list/DshBox/DshCard.less +0 -59
- package/src/styles/components/list/DshBox/DshPanel.less +0 -107
- 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.
|
|
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.
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
:
|
|
18
|
-
:
|
|
19
|
-
:
|
|
20
|
-
:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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="
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
:
|
|
109
|
-
:
|
|
110
|
-
:
|
|
111
|
-
:
|
|
112
|
-
@
|
|
113
|
-
@
|
|
114
|
-
>
|
|
115
|
-
|
|
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
|
-
<
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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 "
|
|
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
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
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", //
|
|
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.
|
|
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
|
-
|
|
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
|
}
|
package/src/components/controls/base/DshCascader/{cascaderModal.vue → components/cascaderModal.vue}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="cascaderModal">
|
|
3
|
-
<div @click
|
|
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':
|
|
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:
|
|
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 "
|
|
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 = (
|
|
163
|
-
return
|
|
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 [...
|
|
190
|
-
},
|
|
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.
|
|
205
|
+
this.getDescription(this.selectedValue);
|
|
206
206
|
},
|
|
207
207
|
|
|
208
208
|
search () {
|
|
209
209
|
this.selectedValue = [];
|
|
210
210
|
this.showMode = "default";
|
|
211
211
|
},
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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="
|
|
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':
|
|
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:
|
|
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 "
|
|
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.
|
|
212
|
+
? this.selectedObj.children.length && this.curTabIndex + 1 > this.selectedOptions.length
|
|
221
213
|
? [
|
|
222
214
|
{
|
|
223
|
-
data: this.
|
|
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.
|
|
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
|
-
|
|
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;
|