bri-components 1.5.22 → 1.6.0

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 (153) hide show
  1. package/README.md +83 -83
  2. package/lib/styles/bundle.css +12 -12
  3. package/lib/styles/font/fontello.svg +31 -31
  4. package/package.json +125 -125
  5. package/src/components/Error/Error403.vue +42 -42
  6. package/src/components/Error/Error404.vue +40 -40
  7. package/src/components/Error/Error500.vue +51 -51
  8. package/src/components/Error/error.less +162 -162
  9. package/src/components/Error/errorBack.vue +40 -40
  10. package/src/components/controls/DshControlInput.vue +195 -195
  11. package/src/components/controls/base/BriUpload/BriUpload.vue +434 -434
  12. package/src/components/controls/base/BriUpload/BriUploadImage.vue +377 -377
  13. package/src/components/controls/base/BriUpload/uploadList.vue +727 -727
  14. package/src/components/controls/base/BriUpload/uploadMixin.js +446 -446
  15. package/src/components/controls/base/DshCascader/DshCascader.vue +215 -215
  16. package/src/components/controls/base/DshCascader/components/cascaderModal.vue +366 -366
  17. package/src/components/controls/base/DshCascader/components/cascaderPicker.vue +416 -416
  18. package/src/components/controls/base/DshCascader/components/cascaderSimple.vue +141 -141
  19. package/src/components/controls/base/DshCascader/components/cascaderTree.vue +151 -151
  20. package/src/components/controls/base/DshCoordinates.vue +585 -585
  21. package/src/components/controls/base/DshDate/DshDate.vue +191 -191
  22. package/src/components/controls/base/DshDate/DshDaterange.vue +186 -186
  23. package/src/components/controls/base/DshDivider.vue +201 -201
  24. package/src/components/controls/base/DshEditor.vue +274 -274
  25. package/src/components/controls/base/DshInput/BriInputs.vue +166 -166
  26. package/src/components/controls/base/DshInput/DshInput.vue +260 -260
  27. package/src/components/controls/base/DshNumber/BriInputNumber/BriInputNumber.vue +435 -435
  28. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/emitter.js +34 -34
  29. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/form.js +14 -14
  30. package/src/components/controls/base/DshNumber/BriInputNumber/utils/assist.js +322 -322
  31. package/src/components/controls/base/DshNumber/DshNumber.vue +143 -143
  32. package/src/components/controls/base/DshNumber/DshNumberange.vue +109 -109
  33. package/src/components/controls/base/DshSelect/DshCheckbox.vue +168 -168
  34. package/src/components/controls/base/DshSelect/DshSelect.vue +180 -180
  35. package/src/components/controls/base/DshSelect/DshSelectAll.vue +269 -269
  36. package/src/components/controls/base/DshSwitch/DshSwitch.vue +115 -115
  37. package/src/components/controls/control.less +324 -324
  38. package/src/components/controls/controlMap.js +117 -117
  39. package/src/components/controls/extra/DshColor.vue +81 -81
  40. package/src/components/controls/extra/DshThemeColor.vue +100 -100
  41. package/src/components/controls/extra/DshThemeIcon.vue +122 -122
  42. package/src/components/controls/mixins/cascaderMixin.js +325 -325
  43. package/src/components/controls/mixins/cascaderPickerMixin.js +227 -227
  44. package/src/components/controls/mixins/cascaderTableMixin.js +130 -130
  45. package/src/components/controls/mixins/controlMixin.js +393 -393
  46. package/src/components/controls/mixins/dateMixin.js +149 -149
  47. package/src/components/controls/mixins/flatTableMixin.js +111 -111
  48. package/src/components/controls/mixins/numberMixin.js +112 -112
  49. package/src/components/controls/mixins/selectMixin.js +233 -233
  50. package/src/components/controls/mixins/switchMixin.js +87 -87
  51. package/src/components/controls/mixins/userAndDepartMixin.js +260 -260
  52. package/src/components/controls/senior/DshLabels.vue +333 -333
  53. package/src/components/controls/senior/DshPackage.vue +57 -57
  54. package/src/components/controls/senior/cascaderTable.vue +213 -213
  55. package/src/components/controls/senior/correlation.vue +135 -135
  56. package/src/components/controls/senior/flatTable.vue +138 -138
  57. package/src/components/controls/senior/selectDepartments.vue +399 -399
  58. package/src/components/controls/senior/selectUsers/departMenu.vue +293 -293
  59. package/src/components/controls/senior/selectUsers/selectUsers.vue +712 -712
  60. package/src/components/controls/special/DshBack.vue +42 -42
  61. package/src/components/controls/special/DshUndeveloped.vue +41 -41
  62. package/src/components/form/DshAdvSearch.vue +510 -510
  63. package/src/components/form/DshDefaultSearch.vue +260 -260
  64. package/src/components/form/DshForm.vue +494 -494
  65. package/src/components/form/searchMixin.js +376 -376
  66. package/src/components/list/BriCard.vue +95 -95
  67. package/src/components/list/BriTable.vue +205 -205
  68. package/src/components/list/BriTree.vue +529 -529
  69. package/src/components/list/BriTreeItem.vue +163 -163
  70. package/src/components/list/DshBox/DshBox.vue +219 -219
  71. package/src/components/list/DshBox/DshCard.vue +446 -446
  72. package/src/components/list/DshBox/DshCrossTable.vue +827 -827
  73. package/src/components/list/DshBox/DshList.vue +404 -404
  74. package/src/components/list/DshBox/DshPanel.vue +669 -669
  75. package/src/components/list/DshBox/DshSingleData.vue +119 -119
  76. package/src/components/list/DshBox/DshTable.vue +239 -239
  77. package/src/components/list/DshCascaderTable.vue +115 -115
  78. package/src/components/list/DshFlatTable.vue +337 -337
  79. package/src/components/list/DshPage.vue +194 -194
  80. package/src/components/list/DshTreeTable.vue +113 -113
  81. package/src/components/list/common/importModal.vue +243 -243
  82. package/src/components/list/common/quoteListModal.vue +206 -206
  83. package/src/components/list/mixins/DshCascaderTableMixin.js +278 -278
  84. package/src/components/list/mixins/DshFlatTableMixin.js +509 -509
  85. package/src/components/list/mixins/DshTreeTableMixin.js +286 -286
  86. package/src/components/list/mixins/tableBaseMixin.js +1653 -1653
  87. package/src/components/list/mixins/treeTableBaseMixin.js +145 -145
  88. package/src/components/other/BriAvatar.vue +166 -166
  89. package/src/components/other/BriCode.vue +125 -125
  90. package/src/components/other/BriCollapseTree.vue +207 -207
  91. package/src/components/other/BriGantt.vue +1087 -1087
  92. package/src/components/other/BriIframe.vue +116 -116
  93. package/src/components/other/BriLoading.vue +171 -171
  94. package/src/components/other/BriSvg.vue +27 -27
  95. package/src/components/other/DshColorPanel.vue +128 -128
  96. package/src/components/other/DshMenuNav.vue +188 -188
  97. package/src/components/small/BriButton.vue +71 -71
  98. package/src/components/small/BriDrawer.vue +169 -169
  99. package/src/components/small/BriTooltip.vue +87 -87
  100. package/src/components/small/DshBtnModal.vue +68 -68
  101. package/src/components/small/DshButtons.vue +324 -324
  102. package/src/components/small/DshDropdown.vue +225 -225
  103. package/src/components/small/DshIcons.vue +59 -59
  104. package/src/components/small/DshListRender.js +21 -21
  105. package/src/components/small/DshModal.vue +160 -160
  106. package/src/components/small/DshSteps.vue +141 -141
  107. package/src/components/small/DshTabs.vue +598 -598
  108. package/src/components/small/DshTabsSet.vue +309 -309
  109. package/src/components/small/DshTags.vue +251 -251
  110. package/src/components/small/DshTitle.vue +50 -50
  111. package/src/components/small/render.js +20 -20
  112. package/src/components/unit/DshFormUnit.vue +398 -398
  113. package/src/components/unit/DshListUnit.vue +115 -115
  114. package/src/components/unit/unitMixin.js +86 -86
  115. package/src/data/index.js +4 -4
  116. package/src/index.js +285 -285
  117. package/src/styles/bundle.css +12 -12
  118. package/src/styles/components/BriButton.less +307 -307
  119. package/src/styles/components/BriTable.less +344 -344
  120. package/src/styles/components/DshModal.less +257 -257
  121. package/src/styles/components/index.less +3 -3
  122. package/src/styles/global/animate.less +11 -11
  123. package/src/styles/global/base.less +45 -45
  124. package/src/styles/global/box.less +186 -186
  125. package/src/styles/global/control.less +122 -122
  126. package/src/styles/global/flex.less +282 -282
  127. package/src/styles/global/global.less +8 -8
  128. package/src/styles/global/text.less +59 -59
  129. package/src/styles/global/variables.less +85 -85
  130. package/src/styles/iconfont/iconfont.css +254 -254
  131. package/src/styles/iconfont/iconfont.json +422 -422
  132. package/src/styles/iconfont/iconfont.svg +137 -137
  133. package/src/styles/index.less +26 -26
  134. package/src/styles/reset-easytable.less +21 -21
  135. package/src/styles/reset-iview-controls.less +145 -145
  136. package/src/styles/reset-iview-other.less +49 -49
  137. package/src/styles/reset-iview-variables.less +43 -43
  138. package/src/styles/reset.less +45 -45
  139. package/src/utils/index.js +3 -5
  140. package/lib/0.bri-components.min.js +0 -1
  141. package/lib/1.bri-components.min.js +0 -1
  142. package/lib/10.bri-components.min.js +0 -1
  143. package/lib/11.bri-components.min.js +0 -1
  144. package/lib/2.bri-components.min.js +0 -1
  145. package/lib/3.bri-components.min.js +0 -1
  146. package/lib/4.bri-components.min.js +0 -1
  147. package/lib/5.bri-components.min.js +0 -1
  148. package/lib/6.bri-components.min.js +0 -1
  149. package/lib/7.bri-components.min.js +0 -1
  150. package/lib/8.bri-components.min.js +0 -1
  151. package/lib/9.bri-components.min.js +0 -1
  152. package/lib/bri-components.min.js +0 -18
  153. package/src/utils/table.js +0 -175
@@ -1,366 +1,366 @@
1
- <template>
2
- <div class="cascaderModal">
3
- <div @click="clickInput">
4
- <slot>
5
- <Input
6
- v-model="inputStr"
7
- :placeholder="selfPropsObj._placeholder"
8
- :disabled="disabled"
9
- :readonly="true"
10
- :clearable="clearable"
11
- :size="selfPropsObj._size"
12
- ></Input>
13
- </slot>
14
- </div>
15
-
16
- <dsh-modal
17
- class="cascaderModal-modal"
18
- v-model="showModal"
19
- mode="middle"
20
- :propsObj="modalPropsObj"
21
- >
22
- <div class="wrap">
23
- <div class="wrap-header">
24
- <!-- 搜索 -->
25
- <div class="wrap-header-left">
26
- <template v-if="filterable">
27
- <!-- 搜索框 -->
28
- <Input
29
- class="search"
30
- v-model="searchName"
31
- placeholder="请输入关键字或标识"
32
- search
33
- @on-enter="search"
34
- @on-search="search"
35
- @on-change="search"
36
- />
37
-
38
- <!-- 模式切换 -->
39
- <template>
40
- <div
41
- v-if="canUseModeSwitch"
42
- class="mode"
43
- @click="searchMode = searchMode === 'default' ? 'flat' : 'default'"
44
- >
45
- <dsh-icons :list="[{ icon: 'md-swap' }]" />
46
- <span class="mode-name">
47
- {{ searchMode === "default" ? "按层级" : "按平级" }}
48
- </span>
49
- </div>
50
-
51
- <Tooltip
52
- v-else
53
- style="margin-left: 5px; cursor: pointer;"
54
- :content="modeTip"
55
- max-width="250"
56
- transfer
57
- >
58
- <Icon
59
- class="item-header-help"
60
- type="md-help-circle"
61
- size="16"
62
- ></Icon>
63
- </Tooltip>
64
- </template>
65
- </template>
66
- </div>
67
-
68
- <!-- 按钮 -->
69
- <dsh-buttons
70
- class="wrap-header-right"
71
- :list="$getOperationList()"
72
- @click="$dispatchEvent($event)"
73
- ></dsh-buttons>
74
- </div>
75
-
76
- <div class="wrap-content">
77
- <!-- 左 -->
78
- <div class="wrap-content-list">
79
- <template v-if="showTreeData.length">
80
- <!-- 拍平方式 -->
81
- <div v-if="useFlatMode">
82
- <div
83
- v-for="nodeItem in showFlatData"
84
- :key="nodeItem[valueKey]"
85
- :class="{
86
- 'item': true,
87
- 'item-active': selectedObj && nodeItem[valueKey] === selectedObj[valueKey],
88
- 'item-disabled': nodeItem.disabled
89
- }"
90
- @click="clickItem(nodeItem)"
91
- >
92
- <span class="item-name">
93
- {{ nodeItem[nameKey] }}
94
- </span>
95
-
96
- <span class="item-icon">
97
- <dsh-icons :list="[{
98
- icon: selectedObj && nodeItem[valueKey] === selectedObj[valueKey]
99
- ? 'md-checkmark'
100
- : ''
101
- }]" />
102
- </span>
103
- </div>
104
- </div>
105
-
106
- <!-- 层级方式 -->
107
- <Tree
108
- v-else
109
- :data="showTreeData"
110
- ></Tree>
111
- </template>
112
-
113
- <!-- 无数据 -->
114
- <div
115
- v-else
116
- class="wrap-content-list-nodata"
117
- >
118
- 暂无可用的数据……
119
- </div>
120
- </div>
121
-
122
- <!-- 右 描述 -->
123
- <div class="wrap-content-right">
124
- <div class="wrap-content-right-title">
125
- {{ selectedName }}说明
126
- </div>
127
- <p
128
- class="wrap-content-right-content"
129
- v-html="description"
130
- ></p>
131
- </div>
132
- </div>
133
- </div>
134
- </dsh-modal>
135
- </div>
136
- </template>
137
-
138
- <script>
139
- import cascaderPickerMixin from "../../../mixins/cascaderPickerMixin.js";
140
-
141
- export default {
142
- name: "cascaderModal",
143
- mixins: [
144
- cascaderPickerMixin
145
- ],
146
- components: {},
147
- props: {},
148
- data () {
149
- return {
150
- description: ""
151
- };
152
- },
153
- computed: {
154
- modalPropsObj () {
155
- return {
156
- title: this.selfPropsObj._name,
157
- clasName: this.selfPropsObj._transferClassName
158
- };
159
- },
160
-
161
- initData () {
162
- const loop = (arr = [], newArr = []) => {
163
- return arr.reduce((newArr, item) => {
164
- const newItem = {
165
- ...item,
166
- value: item[this.valueKey],
167
- title: item[this.nameKey],
168
- expand: false,
169
- description: undefined,
170
- render: (h, { root, node, data }) => {
171
- return h("span", {
172
- class: {
173
- "ivu-tree-title-selected": JSON.stringify(data.keys) === JSON.stringify(this.selectedValue)
174
- },
175
- style: {
176
- display: "inline-block",
177
- width: "100%"
178
- },
179
- on: {
180
- click: () => {
181
- this.clickItem(data);
182
- }
183
- }
184
- }, data.title);
185
- },
186
- children: loop(item.children)
187
- };
188
-
189
- return [...newArr, newItem];
190
- }, newArr);
191
- };
192
-
193
- return loop(this.data);
194
- }
195
- },
196
- created () {
197
- this.init();
198
- },
199
- methods: {
200
- init () {
201
- this.selectedOptions.forEach(item => {
202
- item.expand = true;
203
- });
204
- this.getDescription(this.selectedValue);
205
- },
206
-
207
- search () {
208
- this.selectedValue = [];
209
- this.searchMode = "default";
210
- },
211
- clickItem (node) {
212
- // 避免重复点击
213
- if (JSON.stringify(this.selectedValue) !== JSON.stringify(node.keys)) {
214
- this.selectedValue = node.keys;
215
-
216
- const obj = {
217
- value: this.selectedValue,
218
- selectedOptions: this.selectedOptions
219
- };
220
- this.$emit("change", obj);
221
- !node.children.length && this.$emit("finish", obj);
222
-
223
- this.getDescription(this.selectedValue);
224
- }
225
- }
226
- }
227
- };
228
- </script>
229
-
230
- <style lang="less">
231
- .cascaderModal {
232
- &-modal {
233
- .wrap {
234
- width: 100%;
235
- height: 100%;
236
- padding: 10px 24px;
237
- display: flex;
238
- flex-direction: column;
239
-
240
- &-header {
241
- width: 100%;
242
- padding: 0px;
243
- // border-bottom: 1px solid @borderColor;
244
- display: flex;
245
- justify-content: space-between;
246
- align-items: center;
247
-
248
- &-left {
249
- width: 370px;
250
- display: flex;
251
- align-items: center;
252
-
253
- .search {
254
- width: 280px;
255
- }
256
-
257
- .mode {
258
- width: 90px;
259
- padding-top: 14px;
260
- padding-left: 5px;
261
- display: flex;
262
- align-items: center;
263
- cursor: pointer;
264
-
265
- &-name {
266
- font-size: 12px;
267
- }
268
- }
269
- }
270
-
271
- &-right {
272
- padding-left: 10px;
273
- display: flex;
274
- justify-content: flex-end;
275
- }
276
- }
277
-
278
- &-content {
279
- flex: 1;
280
- min-height: 0px;
281
- margin: 10px 0px 24px;
282
- border: 1px solid #E5E5E5;
283
- display: flex;
284
-
285
- &-list {
286
- flex: 1;
287
- min-width: 0px;
288
- padding: 5px 10px;
289
- border-right: 1px solid #E5E5E5;
290
- overflow: auto;
291
-
292
- .item {
293
- padding: 8px 10px;
294
- border-radius: @borderRadius;
295
- line-height: 16px;
296
- cursor: pointer;
297
- display: flex;
298
- flex-direction: row;
299
- justify-content: space-between;
300
- align-items: center;
301
-
302
- &-name {
303
- flex: 1;
304
- min-width: 0px;
305
- white-space: normal;
306
- }
307
-
308
- &-icon {
309
- width: 40px;
310
- padding-left: 10px;
311
- text-align: right;
312
- }
313
-
314
- &:hover,
315
- &-active {
316
- background-color: @theme-focus;
317
- color: @themeColor;
318
- }
319
-
320
- &-disabled {
321
- background-color: @inputBg-disabled;
322
- color: @textColor-disabled;
323
-
324
- &:hover {
325
- background-color: @inputBg-disabled;
326
- color: @textColor-disabled;
327
- }
328
- }
329
- }
330
-
331
- &-nodata {
332
- #dsh-nodata();
333
- }
334
- }
335
-
336
- &-right {
337
- flex: 1;
338
- min-width: 0px;
339
-
340
- &-title {
341
- padding: 6px 16px;
342
- border-bottom: 1px solid #E5E5E5;
343
- font-weight: 700;
344
- }
345
-
346
- &-content {
347
- height: calc(100% - 32px);
348
- padding: 16px;
349
- white-space: pre-line;
350
- overflow: auto;
351
- }
352
- }
353
-
354
- .ivu-tree-title-selected {
355
- background-color: #eee;
356
- color: #3D84EE;
357
- }
358
-
359
- .ivu-tree-empty {
360
- text-align: center;
361
- }
362
- }
363
- }
364
- }
365
- }
366
- </style>
1
+ <template>
2
+ <div class="cascaderModal">
3
+ <div @click="clickInput">
4
+ <slot>
5
+ <Input
6
+ v-model="inputStr"
7
+ :placeholder="selfPropsObj._placeholder"
8
+ :disabled="disabled"
9
+ :readonly="true"
10
+ :clearable="clearable"
11
+ :size="selfPropsObj._size"
12
+ ></Input>
13
+ </slot>
14
+ </div>
15
+
16
+ <dsh-modal
17
+ class="cascaderModal-modal"
18
+ v-model="showModal"
19
+ mode="middle"
20
+ :propsObj="modalPropsObj"
21
+ >
22
+ <div class="wrap">
23
+ <div class="wrap-header">
24
+ <!-- 搜索 -->
25
+ <div class="wrap-header-left">
26
+ <template v-if="filterable">
27
+ <!-- 搜索框 -->
28
+ <Input
29
+ class="search"
30
+ v-model="searchName"
31
+ placeholder="请输入关键字或标识"
32
+ search
33
+ @on-enter="search"
34
+ @on-search="search"
35
+ @on-change="search"
36
+ />
37
+
38
+ <!-- 模式切换 -->
39
+ <template>
40
+ <div
41
+ v-if="canUseModeSwitch"
42
+ class="mode"
43
+ @click="searchMode = searchMode === 'default' ? 'flat' : 'default'"
44
+ >
45
+ <dsh-icons :list="[{ icon: 'md-swap' }]" />
46
+ <span class="mode-name">
47
+ {{ searchMode === "default" ? "按层级" : "按平级" }}
48
+ </span>
49
+ </div>
50
+
51
+ <Tooltip
52
+ v-else
53
+ style="margin-left: 5px; cursor: pointer;"
54
+ :content="modeTip"
55
+ max-width="250"
56
+ transfer
57
+ >
58
+ <Icon
59
+ class="item-header-help"
60
+ type="md-help-circle"
61
+ size="16"
62
+ ></Icon>
63
+ </Tooltip>
64
+ </template>
65
+ </template>
66
+ </div>
67
+
68
+ <!-- 按钮 -->
69
+ <dsh-buttons
70
+ class="wrap-header-right"
71
+ :list="$getOperationList()"
72
+ @click="$dispatchEvent($event)"
73
+ ></dsh-buttons>
74
+ </div>
75
+
76
+ <div class="wrap-content">
77
+ <!-- 左 -->
78
+ <div class="wrap-content-list">
79
+ <template v-if="showTreeData.length">
80
+ <!-- 拍平方式 -->
81
+ <div v-if="useFlatMode">
82
+ <div
83
+ v-for="nodeItem in showFlatData"
84
+ :key="nodeItem[valueKey]"
85
+ :class="{
86
+ 'item': true,
87
+ 'item-active': selectedObj && nodeItem[valueKey] === selectedObj[valueKey],
88
+ 'item-disabled': nodeItem.disabled
89
+ }"
90
+ @click="clickItem(nodeItem)"
91
+ >
92
+ <span class="item-name">
93
+ {{ nodeItem[nameKey] }}
94
+ </span>
95
+
96
+ <span class="item-icon">
97
+ <dsh-icons :list="[{
98
+ icon: selectedObj && nodeItem[valueKey] === selectedObj[valueKey]
99
+ ? 'md-checkmark'
100
+ : ''
101
+ }]" />
102
+ </span>
103
+ </div>
104
+ </div>
105
+
106
+ <!-- 层级方式 -->
107
+ <Tree
108
+ v-else
109
+ :data="showTreeData"
110
+ ></Tree>
111
+ </template>
112
+
113
+ <!-- 无数据 -->
114
+ <div
115
+ v-else
116
+ class="wrap-content-list-nodata"
117
+ >
118
+ 暂无可用的数据……
119
+ </div>
120
+ </div>
121
+
122
+ <!-- 右 描述 -->
123
+ <div class="wrap-content-right">
124
+ <div class="wrap-content-right-title">
125
+ {{ selectedName }}说明
126
+ </div>
127
+ <p
128
+ class="wrap-content-right-content"
129
+ v-html="description"
130
+ ></p>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </dsh-modal>
135
+ </div>
136
+ </template>
137
+
138
+ <script>
139
+ import cascaderPickerMixin from "../../../mixins/cascaderPickerMixin.js";
140
+
141
+ export default {
142
+ name: "cascaderModal",
143
+ mixins: [
144
+ cascaderPickerMixin
145
+ ],
146
+ components: {},
147
+ props: {},
148
+ data () {
149
+ return {
150
+ description: ""
151
+ };
152
+ },
153
+ computed: {
154
+ modalPropsObj () {
155
+ return {
156
+ title: this.selfPropsObj._name,
157
+ clasName: this.selfPropsObj._transferClassName
158
+ };
159
+ },
160
+
161
+ initData () {
162
+ const loop = (arr = [], newArr = []) => {
163
+ return arr.reduce((newArr, item) => {
164
+ const newItem = {
165
+ ...item,
166
+ value: item[this.valueKey],
167
+ title: item[this.nameKey],
168
+ expand: false,
169
+ description: undefined,
170
+ render: (h, { root, node, data }) => {
171
+ return h("span", {
172
+ class: {
173
+ "ivu-tree-title-selected": JSON.stringify(data.keys) === JSON.stringify(this.selectedValue)
174
+ },
175
+ style: {
176
+ display: "inline-block",
177
+ width: "100%"
178
+ },
179
+ on: {
180
+ click: () => {
181
+ this.clickItem(data);
182
+ }
183
+ }
184
+ }, data.title);
185
+ },
186
+ children: loop(item.children)
187
+ };
188
+
189
+ return [...newArr, newItem];
190
+ }, newArr);
191
+ };
192
+
193
+ return loop(this.data);
194
+ }
195
+ },
196
+ created () {
197
+ this.init();
198
+ },
199
+ methods: {
200
+ init () {
201
+ this.selectedOptions.forEach(item => {
202
+ item.expand = true;
203
+ });
204
+ this.getDescription(this.selectedValue);
205
+ },
206
+
207
+ search () {
208
+ this.selectedValue = [];
209
+ this.searchMode = "default";
210
+ },
211
+ clickItem (node) {
212
+ // 避免重复点击
213
+ if (JSON.stringify(this.selectedValue) !== JSON.stringify(node.keys)) {
214
+ this.selectedValue = node.keys;
215
+
216
+ const obj = {
217
+ value: this.selectedValue,
218
+ selectedOptions: this.selectedOptions
219
+ };
220
+ this.$emit("change", obj);
221
+ !node.children.length && this.$emit("finish", obj);
222
+
223
+ this.getDescription(this.selectedValue);
224
+ }
225
+ }
226
+ }
227
+ };
228
+ </script>
229
+
230
+ <style lang="less">
231
+ .cascaderModal {
232
+ &-modal {
233
+ .wrap {
234
+ width: 100%;
235
+ height: 100%;
236
+ padding: 10px 24px;
237
+ display: flex;
238
+ flex-direction: column;
239
+
240
+ &-header {
241
+ width: 100%;
242
+ padding: 0px;
243
+ // border-bottom: 1px solid @borderColor;
244
+ display: flex;
245
+ justify-content: space-between;
246
+ align-items: center;
247
+
248
+ &-left {
249
+ width: 370px;
250
+ display: flex;
251
+ align-items: center;
252
+
253
+ .search {
254
+ width: 280px;
255
+ }
256
+
257
+ .mode {
258
+ width: 90px;
259
+ padding-top: 14px;
260
+ padding-left: 5px;
261
+ display: flex;
262
+ align-items: center;
263
+ cursor: pointer;
264
+
265
+ &-name {
266
+ font-size: 12px;
267
+ }
268
+ }
269
+ }
270
+
271
+ &-right {
272
+ padding-left: 10px;
273
+ display: flex;
274
+ justify-content: flex-end;
275
+ }
276
+ }
277
+
278
+ &-content {
279
+ flex: 1;
280
+ min-height: 0px;
281
+ margin: 10px 0px 24px;
282
+ border: 1px solid #E5E5E5;
283
+ display: flex;
284
+
285
+ &-list {
286
+ flex: 1;
287
+ min-width: 0px;
288
+ padding: 5px 10px;
289
+ border-right: 1px solid #E5E5E5;
290
+ overflow: auto;
291
+
292
+ .item {
293
+ padding: 8px 10px;
294
+ border-radius: @borderRadius;
295
+ line-height: 16px;
296
+ cursor: pointer;
297
+ display: flex;
298
+ flex-direction: row;
299
+ justify-content: space-between;
300
+ align-items: center;
301
+
302
+ &-name {
303
+ flex: 1;
304
+ min-width: 0px;
305
+ white-space: normal;
306
+ }
307
+
308
+ &-icon {
309
+ width: 40px;
310
+ padding-left: 10px;
311
+ text-align: right;
312
+ }
313
+
314
+ &:hover,
315
+ &-active {
316
+ background-color: @theme-focus;
317
+ color: @themeColor;
318
+ }
319
+
320
+ &-disabled {
321
+ background-color: @inputBg-disabled;
322
+ color: @textColor-disabled;
323
+
324
+ &:hover {
325
+ background-color: @inputBg-disabled;
326
+ color: @textColor-disabled;
327
+ }
328
+ }
329
+ }
330
+
331
+ &-nodata {
332
+ #dsh-nodata();
333
+ }
334
+ }
335
+
336
+ &-right {
337
+ flex: 1;
338
+ min-width: 0px;
339
+
340
+ &-title {
341
+ padding: 6px 16px;
342
+ border-bottom: 1px solid #E5E5E5;
343
+ font-weight: 700;
344
+ }
345
+
346
+ &-content {
347
+ height: calc(100% - 32px);
348
+ padding: 16px;
349
+ white-space: pre-line;
350
+ overflow: auto;
351
+ }
352
+ }
353
+
354
+ .ivu-tree-title-selected {
355
+ background-color: #eee;
356
+ color: #3D84EE;
357
+ }
358
+
359
+ .ivu-tree-empty {
360
+ text-align: center;
361
+ }
362
+ }
363
+ }
364
+ }
365
+ }
366
+ </style>