eoss-ui 0.7.26 → 0.7.28

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 (280) hide show
  1. package/lib/button-group.js +0 -6
  2. package/lib/button.js +0 -6
  3. package/lib/calogin.js +233 -239
  4. package/lib/checkbox-group.js +0 -6
  5. package/lib/data-table-form.js +0 -6
  6. package/lib/data-table.js +12 -14
  7. package/lib/date-picker.js +0 -6
  8. package/lib/dialog.js +0 -6
  9. package/lib/eoss-ui.common.js +1244 -1149
  10. package/lib/flow-group.js +3 -9
  11. package/lib/flow-list.js +81 -87
  12. package/lib/flow.js +301 -304
  13. package/lib/form.js +0 -6
  14. package/lib/handle-user.js +0 -6
  15. package/lib/handler.js +0 -6
  16. package/lib/icon.js +0 -6
  17. package/lib/index.js +1 -1
  18. package/lib/input-number.js +0 -6
  19. package/lib/input.js +0 -6
  20. package/lib/login.js +219 -114
  21. package/lib/main.js +370 -393
  22. package/lib/nav.js +0 -6
  23. package/lib/page.js +0 -6
  24. package/lib/pagination.js +0 -6
  25. package/lib/player.js +0 -6
  26. package/lib/qr-code.js +13 -19
  27. package/lib/radio-group.js +0 -6
  28. package/lib/retrial-auth.js +0 -6
  29. package/lib/select-ganged.js +0 -6
  30. package/lib/select.js +0 -6
  31. package/lib/selector-panel.js +0 -6
  32. package/lib/selector.js +0 -6
  33. package/lib/sizer.js +0 -6
  34. package/lib/steps.js +0 -6
  35. package/lib/switch.js +0 -6
  36. package/lib/table-form.js +0 -6
  37. package/lib/tabs.js +0 -6
  38. package/lib/tips.js +0 -6
  39. package/lib/tree-group.js +0 -6
  40. package/lib/tree.js +0 -6
  41. package/lib/upload.js +0 -6
  42. package/lib/utils/util.js +0 -6
  43. package/lib/wujie.js +0 -6
  44. package/lib/wxlogin.js +0 -6
  45. package/package.json +160 -160
  46. package/packages/.DS_Store +0 -0
  47. package/packages/button/index.js +5 -5
  48. package/packages/button/src/main.vue +418 -418
  49. package/packages/button-group/index.js +5 -5
  50. package/packages/button-group/src/main.vue +346 -346
  51. package/packages/calendar/index.js +5 -5
  52. package/packages/calogin/.DS_Store +0 -0
  53. package/packages/calogin/index.js +5 -5
  54. package/packages/calogin/src/main.vue +412 -412
  55. package/packages/calogin/src/plugin.js +915 -915
  56. package/packages/card/index.js +5 -5
  57. package/packages/card/src/main.vue +156 -156
  58. package/packages/cascader/index.js +5 -5
  59. package/packages/cascader/src/main.vue +168 -168
  60. package/packages/checkbox-group/index.js +5 -5
  61. package/packages/checkbox-group/src/main.vue +333 -333
  62. package/packages/clients/index.js +5 -5
  63. package/packages/clients/src/main.vue +151 -151
  64. package/packages/data-table/index.js +5 -5
  65. package/packages/data-table/src/children.vue +39 -39
  66. package/packages/data-table/src/column.vue +992 -988
  67. package/packages/data-table/src/main.vue +1831 -1831
  68. package/packages/data-table/src/sizer.vue +195 -195
  69. package/packages/data-table-form/index.js +5 -5
  70. package/packages/data-table-form/src/checkbox.vue +101 -101
  71. package/packages/data-table-form/src/colgroup.vue +17 -17
  72. package/packages/data-table-form/src/main.vue +181 -181
  73. package/packages/data-table-form/src/radio.vue +65 -65
  74. package/packages/data-table-form/src/table.vue +233 -233
  75. package/packages/data-table-form/src/tbody.vue +336 -336
  76. package/packages/data-table-form/src/thead.vue +68 -68
  77. package/packages/date-picker/.DS_Store +0 -0
  78. package/packages/date-picker/index.js +5 -5
  79. package/packages/date-picker/src/.DS_Store +0 -0
  80. package/packages/date-picker/src/main.vue +236 -236
  81. package/packages/dialog/index.js +5 -5
  82. package/packages/enable-drag/index.js +5 -5
  83. package/packages/enterprise/index.js +5 -5
  84. package/packages/enterprise/src/main.vue +66 -66
  85. package/packages/error-page/index.js +5 -5
  86. package/packages/error-page/src/main.vue +44 -44
  87. package/packages/flow/.DS_Store +0 -0
  88. package/packages/flow/index.js +5 -5
  89. package/packages/flow/src/.DS_Store +0 -0
  90. package/packages/flow/src/component/Circulate.vue +413 -413
  91. package/packages/flow/src/component/CommonOpinions.vue +373 -373
  92. package/packages/flow/src/component/CustomPreset.vue +322 -322
  93. package/packages/flow/src/component/FileList.vue +97 -97
  94. package/packages/flow/src/component/FreeCirculation.vue +240 -240
  95. package/packages/flow/src/component/Preset.vue +255 -255
  96. package/packages/flow/src/component/SendMsg.vue +242 -242
  97. package/packages/flow/src/component/TimeLimit.vue +190 -190
  98. package/packages/flow/src/component/taskUnionExamine.vue +755 -755
  99. package/packages/flow/src/form.vue +121 -121
  100. package/packages/flow/src/freeStartFlow.vue +2847 -2847
  101. package/packages/flow/src/main.vue +3853 -3854
  102. package/packages/flow/src/processForm.vue +1363 -1363
  103. package/packages/flow/src/processReject.vue +309 -308
  104. package/packages/flow/src/reset.vue +941 -941
  105. package/packages/flow/src/startTaskRead.vue +691 -691
  106. package/packages/flow/src/supervise.vue +159 -159
  107. package/packages/flow/src/table.vue +58 -58
  108. package/packages/flow-group/index.js +5 -5
  109. package/packages/flow-group/src/main.vue +717 -717
  110. package/packages/flow-list/.DS_Store +0 -0
  111. package/packages/flow-list/index.js +5 -5
  112. package/packages/flow-list/src/main.vue +1787 -1787
  113. package/packages/form/.DS_Store +0 -0
  114. package/packages/form/index.js +5 -5
  115. package/packages/form/src/main.vue +3901 -3901
  116. package/packages/form/src/table.vue +1512 -1512
  117. package/packages/handle-user/index.js +5 -5
  118. package/packages/handle-user/src/main.vue +137 -137
  119. package/packages/handler/index.js +5 -5
  120. package/packages/handler/src/main.vue +496 -496
  121. package/packages/icon/index.js +5 -5
  122. package/packages/icon/src/main.vue +104 -104
  123. package/packages/icons/index.js +5 -5
  124. package/packages/icons/src/main.vue +81 -81
  125. package/packages/input/index.js +5 -5
  126. package/packages/input/src/main.vue +356 -356
  127. package/packages/input-number/index.js +5 -5
  128. package/packages/input-number/src/main.vue +106 -106
  129. package/packages/label/index.js +5 -5
  130. package/packages/label/src/main.vue +457 -457
  131. package/packages/layout/index.js +5 -5
  132. package/packages/layout/src/item.vue +152 -152
  133. package/packages/layout/src/main.vue +31 -31
  134. package/packages/login/.DS_Store +0 -0
  135. package/packages/login/index.js +5 -5
  136. package/packages/login/src/main.vue +2068 -2020
  137. package/packages/login/src/resetPassword.vue +557 -557
  138. package/packages/main/.DS_Store +0 -0
  139. package/packages/main/index.js +5 -5
  140. package/packages/main/src/.DS_Store +0 -0
  141. package/packages/main/src/default/message.vue +249 -249
  142. package/packages/main/src/default/notice.vue +157 -157
  143. package/packages/main/src/default/userinfo.vue +502 -502
  144. package/packages/main/src/public/online.vue +89 -89
  145. package/packages/main/src/public/search.vue +464 -464
  146. package/packages/main/src/public/settings.vue +221 -221
  147. package/packages/main/src/simplicity/apps.vue +388 -388
  148. package/packages/main/src/simplicity/avatar.vue +82 -82
  149. package/packages/main/src/simplicity/handler.vue +144 -263
  150. package/packages/main/src/simplicity/index.vue +2211 -2135
  151. package/packages/main/src/simplicity/lists.vue +84 -84
  152. package/packages/main/src/simplicity/menu-list.vue +135 -135
  153. package/packages/main/src/simplicity/message.vue +259 -259
  154. package/packages/main/src/simplicity/notice.vue +190 -190
  155. package/packages/main/src/simplicity/router-page.vue +45 -45
  156. package/packages/main/src/simplicity/sub-menu.vue +264 -264
  157. package/packages/main/src/simplicity/user.vue +259 -259
  158. package/packages/main/src/simplicity/userinfo.vue +398 -398
  159. package/packages/menu/.DS_Store +0 -0
  160. package/packages/menu/index.js +5 -5
  161. package/packages/menu/src/main.vue +596 -596
  162. package/packages/nav/index.js +5 -5
  163. package/packages/nav/src/main.vue +351 -351
  164. package/packages/notify/index.js +5 -5
  165. package/packages/notify/src/main.vue +538 -538
  166. package/packages/page/index.js +5 -5
  167. package/packages/page/src/main.vue +167 -167
  168. package/packages/pagination/index.js +5 -5
  169. package/packages/pagination/src/main.vue +96 -96
  170. package/packages/player/index.js +5 -5
  171. package/packages/player/src/main.vue +194 -194
  172. package/packages/qr-code/index.js +5 -5
  173. package/packages/qr-code/src/main.vue +170 -170
  174. package/packages/radio-group/index.js +6 -6
  175. package/packages/radio-group/src/main.vue +319 -319
  176. package/packages/retrial-auth/index.js +5 -5
  177. package/packages/retrial-auth/src/main.vue +280 -280
  178. package/packages/select/.DS_Store +0 -0
  179. package/packages/select/index.js +5 -5
  180. package/packages/select/src/main.vue +782 -782
  181. package/packages/select-ganged/index.js +5 -5
  182. package/packages/select-ganged/src/main.vue +724 -724
  183. package/packages/selector/.DS_Store +0 -0
  184. package/packages/selector/index.js +5 -5
  185. package/packages/selector/src/main.vue +761 -761
  186. package/packages/selector-panel/.DS_Store +0 -0
  187. package/packages/selector-panel/index.js +5 -5
  188. package/packages/selector-panel/src/main.vue +1027 -1027
  189. package/packages/selector-panel/src/selection.vue +170 -170
  190. package/packages/selector-panel/src/tree.vue +129 -129
  191. package/packages/sizer/index.js +5 -5
  192. package/packages/sizer/src/main.vue +254 -254
  193. package/packages/steps/index.js +5 -5
  194. package/packages/steps/src/main.vue +181 -181
  195. package/packages/switch/index.js +5 -5
  196. package/packages/switch/src/main.vue +170 -170
  197. package/packages/table-form/index.js +5 -5
  198. package/packages/tabs/index.js +5 -5
  199. package/packages/tabs/src/main.vue +788 -788
  200. package/packages/tabs-panel/index.js +5 -5
  201. package/packages/tabs-panel/src/main.vue +29 -29
  202. package/packages/theme-chalk/src/.DS_Store +0 -0
  203. package/packages/theme-chalk/src/base.scss +261 -261
  204. package/packages/theme-chalk/src/button-group.scss +176 -176
  205. package/packages/theme-chalk/src/button.scss +24 -24
  206. package/packages/theme-chalk/src/calendar.scss +113 -113
  207. package/packages/theme-chalk/src/card.scss +99 -99
  208. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  209. package/packages/theme-chalk/src/clients.scss +87 -87
  210. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  211. package/packages/theme-chalk/src/data-table.scss +293 -293
  212. package/packages/theme-chalk/src/date-picker.scss +7 -7
  213. package/packages/theme-chalk/src/dialog.scss +77 -77
  214. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  215. package/packages/theme-chalk/src/enterprise.scss +5 -5
  216. package/packages/theme-chalk/src/error-page.scss +18 -18
  217. package/packages/theme-chalk/src/flow-group.scss +110 -110
  218. package/packages/theme-chalk/src/flow-list.scss +39 -39
  219. package/packages/theme-chalk/src/flow.scss +351 -351
  220. package/packages/theme-chalk/src/form.scss +501 -501
  221. package/packages/theme-chalk/src/handle-user.scss +40 -40
  222. package/packages/theme-chalk/src/handler.scss +148 -148
  223. package/packages/theme-chalk/src/icon.scss +1817 -1817
  224. package/packages/theme-chalk/src/icons.scss +99 -99
  225. package/packages/theme-chalk/src/input.scss +9 -9
  226. package/packages/theme-chalk/src/label.scss +24 -24
  227. package/packages/theme-chalk/src/layout.scss +46 -46
  228. package/packages/theme-chalk/src/login.scss +987 -987
  229. package/packages/theme-chalk/src/main.scss +663 -663
  230. package/packages/theme-chalk/src/menu.scss +224 -224
  231. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  232. package/packages/theme-chalk/src/nav.scss +111 -111
  233. package/packages/theme-chalk/src/page.scss +3 -3
  234. package/packages/theme-chalk/src/pagination.scss +29 -29
  235. package/packages/theme-chalk/src/player.scss +9 -9
  236. package/packages/theme-chalk/src/qr-code.scss +17 -17
  237. package/packages/theme-chalk/src/radio-group.scss +9 -9
  238. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  239. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  240. package/packages/theme-chalk/src/select.scss +8 -8
  241. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  242. package/packages/theme-chalk/src/selector.scss +92 -92
  243. package/packages/theme-chalk/src/simplicity.scss +1370 -1370
  244. package/packages/theme-chalk/src/sizer.scss +36 -36
  245. package/packages/theme-chalk/src/steps.scss +88 -88
  246. package/packages/theme-chalk/src/switch.scss +3 -3
  247. package/packages/theme-chalk/src/table-form.scss +1 -1
  248. package/packages/theme-chalk/src/tabs.scss +87 -87
  249. package/packages/theme-chalk/src/tips.scss +7 -7
  250. package/packages/theme-chalk/src/toolbar.scss +179 -179
  251. package/packages/theme-chalk/src/tree-group.scss +72 -72
  252. package/packages/theme-chalk/src/tree.scss +165 -165
  253. package/packages/theme-chalk/src/upload.scss +172 -172
  254. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  255. package/packages/tips/index.js +5 -5
  256. package/packages/tips/src/main.vue +141 -141
  257. package/packages/toolbar/index.js +5 -5
  258. package/packages/toolbar/src/main.vue +430 -430
  259. package/packages/tree/index.js +5 -5
  260. package/packages/tree-group/index.js +5 -5
  261. package/packages/upload/.DS_Store +0 -0
  262. package/packages/upload/index.js +5 -5
  263. package/packages/upload/src/main.vue +1343 -1343
  264. package/packages/upload/src/picture.js +15 -15
  265. package/packages/wujie/index.js +5 -5
  266. package/packages/wujie/src/main.vue +145 -145
  267. package/packages/wxlogin/index.js +5 -5
  268. package/packages/wxlogin/src/main.vue +128 -128
  269. package/src/.DS_Store +0 -0
  270. package/src/config/api.js +315 -315
  271. package/src/config/image.js +2 -2
  272. package/src/index.js +163 -163
  273. package/src/utils/.DS_Store +0 -0
  274. package/src/utils/bus.js +3 -3
  275. package/src/utils/date-util.js +312 -312
  276. package/src/utils/http.js +50 -50
  277. package/src/utils/rules.js +18 -18
  278. package/src/utils/store.js +21 -21
  279. package/src/utils/util.js +0 -6
  280. package/src/utils/webSocket.js +107 -107
@@ -1,596 +1,596 @@
1
- <script>
2
- import { throttle } from 'throttle-debounce';
3
- export default {
4
- name: 'EsMenu',
5
- inheritAttrs: false,
6
- props: {
7
- data: {
8
- type: Array,
9
- default() {
10
- return [];
11
- }
12
- },
13
- titleIcons: {
14
- type: Boolean,
15
- default: true
16
- },
17
- deep: {
18
- type: Boolean,
19
- default: true
20
- },
21
- subNav: {
22
- type: Boolean,
23
- default: false
24
- },
25
- width: String,
26
- height: String,
27
- mode: {
28
- type: String,
29
- default: 'vertical'
30
- },
31
- collapse: Boolean,
32
- defaultActive: String,
33
- uniqueOpened: {
34
- type: Boolean,
35
- default: true
36
- },
37
- popperClass: String,
38
- biserial: Boolean,
39
- paddingLeft: {
40
- type: Number,
41
- default: 14
42
- },
43
- menuIcon: {
44
- type: String,
45
- default: 'es-icon-application'
46
- },
47
- icons: Object,
48
- subIcon: {
49
- type: Boolean,
50
- default: true
51
- },
52
- menuClass: String,
53
- color: [String, Array],
54
- backgroundColor: [String, Array],
55
- showTitle: {
56
- type: Boolean,
57
- default: true
58
- },
59
- fourthTabs: Boolean
60
- },
61
- computed: {
62
- maxHeight() {
63
- return this.height === undefined ? this.maxH : this.height;
64
- },
65
- maxWidth() {
66
- return this.maxW;
67
- }
68
- },
69
- watch: {
70
- data: {
71
- deep: true,
72
- handler() {
73
- this.getMaxWidth();
74
- }
75
- },
76
- width() {
77
- this.getMaxWidth();
78
- },
79
- height() {
80
- this.$refs.esMenu.update();
81
- }
82
- },
83
- data() {
84
- return {
85
- maxH: '',
86
- maxW: '',
87
- menuId: null,
88
- defaultOpeneds: [],
89
- isChange: false
90
- };
91
- },
92
- beforeCreate() {
93
- this.getMaxWidth = throttle(500, () => {
94
- this.getWidth();
95
- });
96
- },
97
- created() {},
98
- mounted() {
99
- this.getMaxWidth();
100
- },
101
- methods: {
102
- setStyle(num) {
103
- let obj = {};
104
- if (this.color) {
105
- obj.color = this.color;
106
- if (Array.isArray(this.color)) {
107
- obj.color = this.color[num % this.color.length];
108
- } else {
109
- obj.color = this.color;
110
- }
111
- }
112
- if (this.backgroundColor) {
113
- if (Array.isArray(this.backgroundColor)) {
114
- obj.backgroundColor =
115
- this.backgroundColor[num % this.backgroundColor.length];
116
- } else {
117
- obj.backgroundColor = this.backgroundColor;
118
- }
119
- }
120
- return obj;
121
- },
122
- getWidth() {
123
- if (this.mode === 'vertical') {
124
- this.$nextTick(() => {
125
- this.maxH =
126
- this.$refs.esMenu.$el.getBoundingClientRect().height + 'px';
127
- const styles = window.getComputedStyle(
128
- this.$refs.menu.$el.parentNode
129
- );
130
- this.maxW = this.width
131
- ? parseInt(this.width, 10) -
132
- parseInt(styles.marginLeft, 10) -
133
- parseInt(styles.marginRight, 10) +
134
- 'px'
135
- : '';
136
- });
137
- } else {
138
- this.$nextTick(() => {
139
- let w = 0;
140
- this.$refs.menu &&
141
- Array.from(this.$refs.menu.$el.children).forEach((item) => {
142
- w += item.getBoundingClientRect().width;
143
- });
144
- const styles = window.getComputedStyle(this.$refs.menu.$el);
145
- w += parseFloat(styles.paddingLeft) + parseFloat(styles.paddingRight);
146
- if (w > this.$refs.esMenu.$el.getBoundingClientRect().width) {
147
- this.maxW = w + 'px';
148
- }
149
- });
150
- }
151
- },
152
- handleReady() {
153
- if (this.mode === 'horizontal') {
154
- this.$refs.esMenu.wrap.onmouseover = (e) => {
155
- this.$refs.esMenu.wrap.addEventListener(
156
- 'mousewheel',
157
- this.handleWheel,
158
- { passive: false }
159
- ) ||
160
- this.$refs.esMenu.wrap.addEventListener(
161
- 'DOMMouseScroll',
162
- this.handleWheel,
163
- false
164
- );
165
- e.preventDefault();
166
- };
167
- this.$refs.esMenu.wrap.onmouseout = (e) => {
168
- this.$refs.esMenu.wrap.removeEventListener(
169
- 'mousewheel',
170
- this.handleWheel,
171
- { passive: false }
172
- ) ||
173
- this.$refs.esMenu.wrap.removeEventListener(
174
- 'DOMMouseScroll',
175
- this.handleWheel,
176
- false
177
- );
178
- e.preventDefault();
179
- };
180
- }
181
- // const { scrollHeight, clientHeight } =
182
- // this.bodyWrapper.wrap || this.bodyWrapper;
183
- // if (scrollHeight === clientHeight && this.$refs.fixedWrapper) {
184
- // this.$refs.fixedWrapper.onmouseover = (e) => {
185
- // this.$refs.fixedWrapper.addEventListener(
186
- // 'mousewheel',
187
- // this.handleWheel,
188
- // { passive: false }
189
- // ) ||
190
- // this.$refs.fixedWrapper.addEventListener(
191
- // 'DOMMouseScroll',
192
- // this.handleWheel,
193
- // false
194
- // );
195
- // e.preventDefault();
196
- // };
197
- // this.$refs.fixedWrapper.onmouseout = (e) => {
198
- // this.$refs.fixedWrapper.removeEventListener(
199
- // 'mousewheel',
200
- // this.handleWheel,
201
- // { passive: false }
202
- // ) ||
203
- // this.$refs.fixedWrapper.removeEventListener(
204
- // 'DOMMouseScroll',
205
- // this.handleWheel,
206
- // false
207
- // );
208
- // e.preventDefault();
209
- // };
210
- // }
211
- },
212
- handleWheel(e) {
213
- if (!this.sizeHeight) {
214
- const eventDelta = -e.wheelDelta || e.deltaY * 40;
215
- this.$refs.esMenu.$refs.wrap.scrollLeft =
216
- this.$refs.esMenu.$refs.wrap.scrollLeft + eventDelta / 4;
217
- if (
218
- this.$refs.esMenu.$refs.wrap.scrollLeft > 0 &&
219
- this.$refs.esMenu.$refs.wrap.scrollLeft <
220
- this.$refs.esMenu.$refs.wrap.scrollWidth -
221
- this.$refs.esMenu.$refs.wrap.clientWidth
222
- ) {
223
- e.preventDefault();
224
- }
225
- }
226
- },
227
- getFirst(arry) {
228
- let item = arry[0];
229
- if (
230
- Object.prototype.hasOwnProperty.call(item, 'children') &&
231
- item.children.length
232
- ) {
233
- return this.getFirst(item.children);
234
- } else {
235
- this.$emit('select', {
236
- node: item,
237
- mode: this.mode,
238
- auto: true
239
- });
240
- return item.id;
241
- }
242
- },
243
- handleSelect(key, keyPath, item) {
244
- this.isChange = true;
245
- if (this.menuId !== null && keyPath.indexOf(this.menuId) == -1) {
246
- this.$refs.menu.close(this.menuId);
247
- } else {
248
- let openedMenus = item.rootMenu.openedMenus;
249
- openedMenus.forEach((item) => {
250
- if (keyPath.indexOf(item) == -1) {
251
- this.$refs.menu.close(item);
252
- }
253
- });
254
- }
255
- this.$emit('select', {
256
- key: key,
257
- path: keyPath,
258
- node: item.$attrs.data,
259
- fourthTabs: item.$attrs.fourthTabs,
260
- item: item,
261
- mode: this.mode
262
- });
263
- },
264
- handleOpen(key, keyPath, item) {
265
- this.menuId = key;
266
- this.$emit('open', {
267
- key: key,
268
- path: keyPath,
269
- node: item.$attrs.data,
270
- item: item,
271
- mode: this.mode
272
- });
273
- },
274
- handleClose(key, keyPath, item) {
275
- this.menuId = null;
276
- this.$emit('close', {
277
- key: key,
278
- path: keyPath,
279
- node: item.$attrs.data,
280
- item: item,
281
- mode: this.mode
282
- });
283
- },
284
- getSub(item, h, popper, fourthTabs, subIcon, index, directives) {
285
- if (popper) {
286
- popper += this.popperClass
287
- ? ' ' + this.popperClass + ` es-menu-popper-${this.mode}`
288
- : ` es-menu-popper-${this.mode}`;
289
- } else {
290
- popper = this.popperClass
291
- ? ' ' + this.popperClass + ` es-menu-popper-${this.mode}`
292
- : ` es-menu-popper-${this.mode}`;
293
- }
294
- let title = [];
295
- if (subIcon) {
296
- title.push(
297
- h('es-icon', {
298
- props: {
299
- contents: item.icons || this.menuIcon
300
- },
301
- style: this.setStyle(index),
302
- class: ['es-menu-item-icon']
303
- })
304
- );
305
- }
306
- console.log(item.tips, item.text);
307
- title.push(
308
- h(
309
- 'div',
310
- {
311
- class: [
312
- `es-menu-title-text es-menu-title-${this.mode}`,
313
- {
314
- 'es-menu-title-margin':
315
- this.deep &&
316
- item.children &&
317
- item.children.length &&
318
- (!item.extendData || item.extendData.businessStatus != 0) &&
319
- typeof item.tips === 'boolean' &&
320
- item.tips
321
- }
322
- ],
323
- directives: directives
324
- ? [
325
- {
326
- name: 'show',
327
- value: this.showTitle ? true : !this.collapse
328
- }
329
- ]
330
- : []
331
- },
332
- [
333
- h(
334
- 'el-badge',
335
- {
336
- class: [
337
- 'es-badge',
338
- {
339
- 'es-badge-right':
340
- item.tips && typeof item.tips !== 'boolean',
341
- 'es-dot-right': item.tips && typeof item.tips === 'boolean'
342
- }
343
- ],
344
- attrs: {
345
- title: item.text.length > 18 ? item.text : undefined
346
- },
347
- props:
348
- typeof item.tips === 'boolean' && item.tips
349
- ? {
350
- isDot: true
351
- //hidden: item.tips
352
- }
353
- : {
354
- value: parseInt(item.tips, 10),
355
- max: 99,
356
- hidden: !item.tips
357
- }
358
- },
359
- [item.text]
360
- )
361
- ]
362
- )
363
- );
364
- let doms = [
365
- h('template', { slot: 'title' }, this.titleIcons ? title : [title[1]])
366
- ];
367
- if (this.fourthTabs) {
368
- }
369
- if (
370
- this.deep &&
371
- item.children &&
372
- item.children.length &&
373
- (!item.extendData || item.extendData.businessStatus != 0)
374
- ) {
375
- doms = doms.concat(
376
- item.children.map((ele, index) => {
377
- if (!ele) {
378
- console.error(`对象子数据中第[${index}]条数据错误`, item);
379
- } else {
380
- return this.getSub(ele, h, popper, false, this.subIcon, index);
381
- }
382
- })
383
- );
384
- return [
385
- h(
386
- 'el-submenu',
387
- {
388
- class: [
389
- 'es-submenu',
390
- `es-submenu-${this.mode}`,
391
- item.id === this.active && !this.isChange
392
- ? 'es-menu-item-focus'
393
- : ''
394
- ],
395
- props: {
396
- popperClass: popper,
397
- popperAppendToBody: true,
398
- maxHeight: this.maxHeight,
399
- paddingLeft: this.paddingLeft
400
- },
401
- attrs: { data: item, index: item.id, key: item.id }
402
- },
403
- doms
404
- )
405
- ];
406
- }
407
- if (
408
- this.deep &&
409
- (this.mode === 'horizontal', this.fourthTabs) &&
410
- item.fourthTabs &&
411
- item.fourthTabs.length &&
412
- (!item.extendData || item.extendData.businessStatus != 0)
413
- ) {
414
- doms = doms.concat(
415
- item.fourthTabs.map((ele, index) => {
416
- if (!ele) {
417
- console.error(`对象子数据中第[${index}]条数据错误`, item);
418
- } else {
419
- return this.getSub(ele, h, popper, true, this.subIcon, index);
420
- }
421
- })
422
- );
423
- return [
424
- h(
425
- 'el-submenu',
426
- {
427
- class: [
428
- 'es-submenu',
429
- `es-submenu-${this.mode}`,
430
- item.id === this.active && !this.isChange
431
- ? 'es-menu-item-focus'
432
- : ''
433
- ],
434
- props: {
435
- popperClass: popper,
436
- popperAppendToBody: true,
437
- maxHeight: this.maxHeight,
438
- paddingLeft: this.paddingLeft
439
- },
440
- attrs: { data: item, index: item.id, key: item.id }
441
- },
442
- doms
443
- )
444
- ];
445
- } else {
446
- return [
447
- h(
448
- 'el-menu-item',
449
- {
450
- class: [
451
- 'es-menu-item ' + (this.deep ? '' : `es-item-${this.mode}`)
452
- ],
453
- props: {
454
- paddingLeft: this.paddingLeft,
455
- disabled: item.extendData && item.extendData.businessStatus == 0
456
- },
457
- attrs: {
458
- data: item,
459
- index: item.id,
460
- key: item.id,
461
- fourthTabs: fourthTabs
462
- }
463
- },
464
- this.titleIcons ? title : [title[1]]
465
- )
466
- ];
467
- }
468
- }
469
- },
470
- render(h) {
471
- let doms = [];
472
- this.data.forEach((item, index) => {
473
- if (
474
- item.children &&
475
- item.children.length &&
476
- (!item.extendData || item.extendData.businessStatus != 0)
477
- ) {
478
- doms = doms.concat(
479
- this.getSub(item, h, 'es-sub-menu', false, true, index, true)
480
- );
481
- } else {
482
- const title = [
483
- h('es-icon', {
484
- props: {
485
- contents: item.icons || this.menuIcon
486
- },
487
- style: this.setStyle(index),
488
- class: ['es-menu-item-icon']
489
- }),
490
- h(
491
- 'div',
492
- {
493
- class: [`es-menu-title-text es-menu-title-${this.mode}`],
494
- directives: [
495
- {
496
- name: 'show',
497
- value: this.showTitle ? true : !this.collapse
498
- }
499
- ]
500
- },
501
- [
502
- h(
503
- 'el-badge',
504
- {
505
- class: [
506
- 'es-badge',
507
- {
508
- 'es-badge-right':
509
- item.tips && typeof item.tips !== 'boolean',
510
- 'es-dot-right':
511
- item.tips && typeof item.tips === 'boolean'
512
- }
513
- ],
514
- props:
515
- typeof item.tips === 'boolean' && item.tips
516
- ? {
517
- isDot: true
518
- //hidden: item.tips
519
- }
520
- : {
521
- value: parseInt(item.tips, 10),
522
- max: 99,
523
- hidden: !item.tips
524
- }
525
- },
526
- [item.text]
527
- )
528
- ]
529
- )
530
- ];
531
- doms.push(
532
- h(
533
- 'el-menu-item',
534
- {
535
- class: [`es-menu-item-${this.mode}`],
536
- props: {
537
- paddingLeft: this.paddingLeft,
538
- disabled: item.extendData && item.extendData.businessStatus == 0
539
- },
540
- attrs: {
541
- data: item,
542
- index: item.id,
543
- key: item.id
544
- }
545
- },
546
- this.titleIcons ? title : [title[1]]
547
- )
548
- );
549
- }
550
- });
551
- return h(
552
- 'el-scrollbar',
553
- {
554
- ref: 'esMenu',
555
- props: {
556
- horizontal: this.mode === 'horizontal',
557
- onReady: this.handleReady
558
- },
559
- class: `es-menu-${this.mode}-scrollbar`
560
- },
561
- [
562
- h(
563
- 'el-menu',
564
- {
565
- class: [
566
- 'es-menu',
567
- this.menuClass,
568
- `es-menu-${this.mode}`,
569
- { 'es-menu-collapse': this.collapse },
570
- { 'es-menu-nav': this.subNav }
571
- ],
572
- ref: 'menu',
573
- props: {
574
- defaultOpeneds: this.defaultOpeneds,
575
- defaultActive: this.defaultActive,
576
- collapse: this.collapse,
577
- mode: this.mode,
578
- uniqueOpened: this.uniqueOpened,
579
- icons: this.icons
580
- },
581
- style: { width: this.maxWidth },
582
- attrs: { ...this.$attrs },
583
- on: {
584
- ...this.$listeners,
585
- open: this.handleOpen,
586
- close: this.handleClose,
587
- select: this.handleSelect
588
- }
589
- },
590
- doms
591
- )
592
- ]
593
- );
594
- }
595
- };
596
- </script>
1
+ <script>
2
+ import { throttle } from 'throttle-debounce';
3
+ export default {
4
+ name: 'EsMenu',
5
+ inheritAttrs: false,
6
+ props: {
7
+ data: {
8
+ type: Array,
9
+ default() {
10
+ return [];
11
+ }
12
+ },
13
+ titleIcons: {
14
+ type: Boolean,
15
+ default: true
16
+ },
17
+ deep: {
18
+ type: Boolean,
19
+ default: true
20
+ },
21
+ subNav: {
22
+ type: Boolean,
23
+ default: false
24
+ },
25
+ width: String,
26
+ height: String,
27
+ mode: {
28
+ type: String,
29
+ default: 'vertical'
30
+ },
31
+ collapse: Boolean,
32
+ defaultActive: String,
33
+ uniqueOpened: {
34
+ type: Boolean,
35
+ default: true
36
+ },
37
+ popperClass: String,
38
+ biserial: Boolean,
39
+ paddingLeft: {
40
+ type: Number,
41
+ default: 14
42
+ },
43
+ menuIcon: {
44
+ type: String,
45
+ default: 'es-icon-application'
46
+ },
47
+ icons: Object,
48
+ subIcon: {
49
+ type: Boolean,
50
+ default: true
51
+ },
52
+ menuClass: String,
53
+ color: [String, Array],
54
+ backgroundColor: [String, Array],
55
+ showTitle: {
56
+ type: Boolean,
57
+ default: true
58
+ },
59
+ fourthTabs: Boolean
60
+ },
61
+ computed: {
62
+ maxHeight() {
63
+ return this.height === undefined ? this.maxH : this.height;
64
+ },
65
+ maxWidth() {
66
+ return this.maxW;
67
+ }
68
+ },
69
+ watch: {
70
+ data: {
71
+ deep: true,
72
+ handler() {
73
+ this.getMaxWidth();
74
+ }
75
+ },
76
+ width() {
77
+ this.getMaxWidth();
78
+ },
79
+ height() {
80
+ this.$refs.esMenu.update();
81
+ }
82
+ },
83
+ data() {
84
+ return {
85
+ maxH: '',
86
+ maxW: '',
87
+ menuId: null,
88
+ defaultOpeneds: [],
89
+ isChange: false
90
+ };
91
+ },
92
+ beforeCreate() {
93
+ this.getMaxWidth = throttle(500, () => {
94
+ this.getWidth();
95
+ });
96
+ },
97
+ created() {},
98
+ mounted() {
99
+ this.getMaxWidth();
100
+ },
101
+ methods: {
102
+ setStyle(num) {
103
+ let obj = {};
104
+ if (this.color) {
105
+ obj.color = this.color;
106
+ if (Array.isArray(this.color)) {
107
+ obj.color = this.color[num % this.color.length];
108
+ } else {
109
+ obj.color = this.color;
110
+ }
111
+ }
112
+ if (this.backgroundColor) {
113
+ if (Array.isArray(this.backgroundColor)) {
114
+ obj.backgroundColor =
115
+ this.backgroundColor[num % this.backgroundColor.length];
116
+ } else {
117
+ obj.backgroundColor = this.backgroundColor;
118
+ }
119
+ }
120
+ return obj;
121
+ },
122
+ getWidth() {
123
+ if (this.mode === 'vertical') {
124
+ this.$nextTick(() => {
125
+ this.maxH =
126
+ this.$refs.esMenu.$el.getBoundingClientRect().height + 'px';
127
+ const styles = window.getComputedStyle(
128
+ this.$refs.menu.$el.parentNode
129
+ );
130
+ this.maxW = this.width
131
+ ? parseInt(this.width, 10) -
132
+ parseInt(styles.marginLeft, 10) -
133
+ parseInt(styles.marginRight, 10) +
134
+ 'px'
135
+ : '';
136
+ });
137
+ } else {
138
+ this.$nextTick(() => {
139
+ let w = 0;
140
+ this.$refs.menu &&
141
+ Array.from(this.$refs.menu.$el.children).forEach((item) => {
142
+ w += item.getBoundingClientRect().width;
143
+ });
144
+ const styles = window.getComputedStyle(this.$refs.menu.$el);
145
+ w += parseFloat(styles.paddingLeft) + parseFloat(styles.paddingRight);
146
+ if (w > this.$refs.esMenu.$el.getBoundingClientRect().width) {
147
+ this.maxW = w + 'px';
148
+ }
149
+ });
150
+ }
151
+ },
152
+ handleReady() {
153
+ if (this.mode === 'horizontal') {
154
+ this.$refs.esMenu.wrap.onmouseover = (e) => {
155
+ this.$refs.esMenu.wrap.addEventListener(
156
+ 'mousewheel',
157
+ this.handleWheel,
158
+ { passive: false }
159
+ ) ||
160
+ this.$refs.esMenu.wrap.addEventListener(
161
+ 'DOMMouseScroll',
162
+ this.handleWheel,
163
+ false
164
+ );
165
+ e.preventDefault();
166
+ };
167
+ this.$refs.esMenu.wrap.onmouseout = (e) => {
168
+ this.$refs.esMenu.wrap.removeEventListener(
169
+ 'mousewheel',
170
+ this.handleWheel,
171
+ { passive: false }
172
+ ) ||
173
+ this.$refs.esMenu.wrap.removeEventListener(
174
+ 'DOMMouseScroll',
175
+ this.handleWheel,
176
+ false
177
+ );
178
+ e.preventDefault();
179
+ };
180
+ }
181
+ // const { scrollHeight, clientHeight } =
182
+ // this.bodyWrapper.wrap || this.bodyWrapper;
183
+ // if (scrollHeight === clientHeight && this.$refs.fixedWrapper) {
184
+ // this.$refs.fixedWrapper.onmouseover = (e) => {
185
+ // this.$refs.fixedWrapper.addEventListener(
186
+ // 'mousewheel',
187
+ // this.handleWheel,
188
+ // { passive: false }
189
+ // ) ||
190
+ // this.$refs.fixedWrapper.addEventListener(
191
+ // 'DOMMouseScroll',
192
+ // this.handleWheel,
193
+ // false
194
+ // );
195
+ // e.preventDefault();
196
+ // };
197
+ // this.$refs.fixedWrapper.onmouseout = (e) => {
198
+ // this.$refs.fixedWrapper.removeEventListener(
199
+ // 'mousewheel',
200
+ // this.handleWheel,
201
+ // { passive: false }
202
+ // ) ||
203
+ // this.$refs.fixedWrapper.removeEventListener(
204
+ // 'DOMMouseScroll',
205
+ // this.handleWheel,
206
+ // false
207
+ // );
208
+ // e.preventDefault();
209
+ // };
210
+ // }
211
+ },
212
+ handleWheel(e) {
213
+ if (!this.sizeHeight) {
214
+ const eventDelta = -e.wheelDelta || e.deltaY * 40;
215
+ this.$refs.esMenu.$refs.wrap.scrollLeft =
216
+ this.$refs.esMenu.$refs.wrap.scrollLeft + eventDelta / 4;
217
+ if (
218
+ this.$refs.esMenu.$refs.wrap.scrollLeft > 0 &&
219
+ this.$refs.esMenu.$refs.wrap.scrollLeft <
220
+ this.$refs.esMenu.$refs.wrap.scrollWidth -
221
+ this.$refs.esMenu.$refs.wrap.clientWidth
222
+ ) {
223
+ e.preventDefault();
224
+ }
225
+ }
226
+ },
227
+ getFirst(arry) {
228
+ let item = arry[0];
229
+ if (
230
+ Object.prototype.hasOwnProperty.call(item, 'children') &&
231
+ item.children.length
232
+ ) {
233
+ return this.getFirst(item.children);
234
+ } else {
235
+ this.$emit('select', {
236
+ node: item,
237
+ mode: this.mode,
238
+ auto: true
239
+ });
240
+ return item.id;
241
+ }
242
+ },
243
+ handleSelect(key, keyPath, item) {
244
+ this.isChange = true;
245
+ if (this.menuId !== null && keyPath.indexOf(this.menuId) == -1) {
246
+ this.$refs.menu.close(this.menuId);
247
+ } else {
248
+ let openedMenus = item.rootMenu.openedMenus;
249
+ openedMenus.forEach((item) => {
250
+ if (keyPath.indexOf(item) == -1) {
251
+ this.$refs.menu.close(item);
252
+ }
253
+ });
254
+ }
255
+ this.$emit('select', {
256
+ key: key,
257
+ path: keyPath,
258
+ node: item.$attrs.data,
259
+ fourthTabs: item.$attrs.fourthTabs,
260
+ item: item,
261
+ mode: this.mode
262
+ });
263
+ },
264
+ handleOpen(key, keyPath, item) {
265
+ this.menuId = key;
266
+ this.$emit('open', {
267
+ key: key,
268
+ path: keyPath,
269
+ node: item.$attrs.data,
270
+ item: item,
271
+ mode: this.mode
272
+ });
273
+ },
274
+ handleClose(key, keyPath, item) {
275
+ this.menuId = null;
276
+ this.$emit('close', {
277
+ key: key,
278
+ path: keyPath,
279
+ node: item.$attrs.data,
280
+ item: item,
281
+ mode: this.mode
282
+ });
283
+ },
284
+ getSub(item, h, popper, fourthTabs, subIcon, index, directives) {
285
+ if (popper) {
286
+ popper += this.popperClass
287
+ ? ' ' + this.popperClass + ` es-menu-popper-${this.mode}`
288
+ : ` es-menu-popper-${this.mode}`;
289
+ } else {
290
+ popper = this.popperClass
291
+ ? ' ' + this.popperClass + ` es-menu-popper-${this.mode}`
292
+ : ` es-menu-popper-${this.mode}`;
293
+ }
294
+ let title = [];
295
+ if (subIcon) {
296
+ title.push(
297
+ h('es-icon', {
298
+ props: {
299
+ contents: item.icons || this.menuIcon
300
+ },
301
+ style: this.setStyle(index),
302
+ class: ['es-menu-item-icon']
303
+ })
304
+ );
305
+ }
306
+ console.log(item.tips, item.text);
307
+ title.push(
308
+ h(
309
+ 'div',
310
+ {
311
+ class: [
312
+ `es-menu-title-text es-menu-title-${this.mode}`,
313
+ {
314
+ 'es-menu-title-margin':
315
+ this.deep &&
316
+ item.children &&
317
+ item.children.length &&
318
+ (!item.extendData || item.extendData.businessStatus != 0) &&
319
+ typeof item.tips === 'boolean' &&
320
+ item.tips
321
+ }
322
+ ],
323
+ directives: directives
324
+ ? [
325
+ {
326
+ name: 'show',
327
+ value: this.showTitle ? true : !this.collapse
328
+ }
329
+ ]
330
+ : []
331
+ },
332
+ [
333
+ h(
334
+ 'el-badge',
335
+ {
336
+ class: [
337
+ 'es-badge',
338
+ {
339
+ 'es-badge-right':
340
+ item.tips && typeof item.tips !== 'boolean',
341
+ 'es-dot-right': item.tips && typeof item.tips === 'boolean'
342
+ }
343
+ ],
344
+ attrs: {
345
+ title: item.text.length > 18 ? item.text : undefined
346
+ },
347
+ props:
348
+ typeof item.tips === 'boolean' && item.tips
349
+ ? {
350
+ isDot: true
351
+ //hidden: item.tips
352
+ }
353
+ : {
354
+ value: parseInt(item.tips, 10),
355
+ max: 99,
356
+ hidden: !item.tips
357
+ }
358
+ },
359
+ [item.text]
360
+ )
361
+ ]
362
+ )
363
+ );
364
+ let doms = [
365
+ h('template', { slot: 'title' }, this.titleIcons ? title : [title[1]])
366
+ ];
367
+ if (this.fourthTabs) {
368
+ }
369
+ if (
370
+ this.deep &&
371
+ item.children &&
372
+ item.children.length &&
373
+ (!item.extendData || item.extendData.businessStatus != 0)
374
+ ) {
375
+ doms = doms.concat(
376
+ item.children.map((ele, index) => {
377
+ if (!ele) {
378
+ console.error(`对象子数据中第[${index}]条数据错误`, item);
379
+ } else {
380
+ return this.getSub(ele, h, popper, false, this.subIcon, index);
381
+ }
382
+ })
383
+ );
384
+ return [
385
+ h(
386
+ 'el-submenu',
387
+ {
388
+ class: [
389
+ 'es-submenu',
390
+ `es-submenu-${this.mode}`,
391
+ item.id === this.active && !this.isChange
392
+ ? 'es-menu-item-focus'
393
+ : ''
394
+ ],
395
+ props: {
396
+ popperClass: popper,
397
+ popperAppendToBody: true,
398
+ maxHeight: this.maxHeight,
399
+ paddingLeft: this.paddingLeft
400
+ },
401
+ attrs: { data: item, index: item.id, key: item.id }
402
+ },
403
+ doms
404
+ )
405
+ ];
406
+ }
407
+ if (
408
+ this.deep &&
409
+ (this.mode === 'horizontal', this.fourthTabs) &&
410
+ item.fourthTabs &&
411
+ item.fourthTabs.length &&
412
+ (!item.extendData || item.extendData.businessStatus != 0)
413
+ ) {
414
+ doms = doms.concat(
415
+ item.fourthTabs.map((ele, index) => {
416
+ if (!ele) {
417
+ console.error(`对象子数据中第[${index}]条数据错误`, item);
418
+ } else {
419
+ return this.getSub(ele, h, popper, true, this.subIcon, index);
420
+ }
421
+ })
422
+ );
423
+ return [
424
+ h(
425
+ 'el-submenu',
426
+ {
427
+ class: [
428
+ 'es-submenu',
429
+ `es-submenu-${this.mode}`,
430
+ item.id === this.active && !this.isChange
431
+ ? 'es-menu-item-focus'
432
+ : ''
433
+ ],
434
+ props: {
435
+ popperClass: popper,
436
+ popperAppendToBody: true,
437
+ maxHeight: this.maxHeight,
438
+ paddingLeft: this.paddingLeft
439
+ },
440
+ attrs: { data: item, index: item.id, key: item.id }
441
+ },
442
+ doms
443
+ )
444
+ ];
445
+ } else {
446
+ return [
447
+ h(
448
+ 'el-menu-item',
449
+ {
450
+ class: [
451
+ 'es-menu-item ' + (this.deep ? '' : `es-item-${this.mode}`)
452
+ ],
453
+ props: {
454
+ paddingLeft: this.paddingLeft,
455
+ disabled: item.extendData && item.extendData.businessStatus == 0
456
+ },
457
+ attrs: {
458
+ data: item,
459
+ index: item.id,
460
+ key: item.id,
461
+ fourthTabs: fourthTabs
462
+ }
463
+ },
464
+ this.titleIcons ? title : [title[1]]
465
+ )
466
+ ];
467
+ }
468
+ }
469
+ },
470
+ render(h) {
471
+ let doms = [];
472
+ this.data.forEach((item, index) => {
473
+ if (
474
+ item.children &&
475
+ item.children.length &&
476
+ (!item.extendData || item.extendData.businessStatus != 0)
477
+ ) {
478
+ doms = doms.concat(
479
+ this.getSub(item, h, 'es-sub-menu', false, true, index, true)
480
+ );
481
+ } else {
482
+ const title = [
483
+ h('es-icon', {
484
+ props: {
485
+ contents: item.icons || this.menuIcon
486
+ },
487
+ style: this.setStyle(index),
488
+ class: ['es-menu-item-icon']
489
+ }),
490
+ h(
491
+ 'div',
492
+ {
493
+ class: [`es-menu-title-text es-menu-title-${this.mode}`],
494
+ directives: [
495
+ {
496
+ name: 'show',
497
+ value: this.showTitle ? true : !this.collapse
498
+ }
499
+ ]
500
+ },
501
+ [
502
+ h(
503
+ 'el-badge',
504
+ {
505
+ class: [
506
+ 'es-badge',
507
+ {
508
+ 'es-badge-right':
509
+ item.tips && typeof item.tips !== 'boolean',
510
+ 'es-dot-right':
511
+ item.tips && typeof item.tips === 'boolean'
512
+ }
513
+ ],
514
+ props:
515
+ typeof item.tips === 'boolean' && item.tips
516
+ ? {
517
+ isDot: true
518
+ //hidden: item.tips
519
+ }
520
+ : {
521
+ value: parseInt(item.tips, 10),
522
+ max: 99,
523
+ hidden: !item.tips
524
+ }
525
+ },
526
+ [item.text]
527
+ )
528
+ ]
529
+ )
530
+ ];
531
+ doms.push(
532
+ h(
533
+ 'el-menu-item',
534
+ {
535
+ class: [`es-menu-item-${this.mode}`],
536
+ props: {
537
+ paddingLeft: this.paddingLeft,
538
+ disabled: item.extendData && item.extendData.businessStatus == 0
539
+ },
540
+ attrs: {
541
+ data: item,
542
+ index: item.id,
543
+ key: item.id
544
+ }
545
+ },
546
+ this.titleIcons ? title : [title[1]]
547
+ )
548
+ );
549
+ }
550
+ });
551
+ return h(
552
+ 'el-scrollbar',
553
+ {
554
+ ref: 'esMenu',
555
+ props: {
556
+ horizontal: this.mode === 'horizontal',
557
+ onReady: this.handleReady
558
+ },
559
+ class: `es-menu-${this.mode}-scrollbar`
560
+ },
561
+ [
562
+ h(
563
+ 'el-menu',
564
+ {
565
+ class: [
566
+ 'es-menu',
567
+ this.menuClass,
568
+ `es-menu-${this.mode}`,
569
+ { 'es-menu-collapse': this.collapse },
570
+ { 'es-menu-nav': this.subNav }
571
+ ],
572
+ ref: 'menu',
573
+ props: {
574
+ defaultOpeneds: this.defaultOpeneds,
575
+ defaultActive: this.defaultActive,
576
+ collapse: this.collapse,
577
+ mode: this.mode,
578
+ uniqueOpened: this.uniqueOpened,
579
+ icons: this.icons
580
+ },
581
+ style: { width: this.maxWidth },
582
+ attrs: { ...this.$attrs },
583
+ on: {
584
+ ...this.$listeners,
585
+ open: this.handleOpen,
586
+ close: this.handleClose,
587
+ select: this.handleSelect
588
+ }
589
+ },
590
+ doms
591
+ )
592
+ ]
593
+ );
594
+ }
595
+ };
596
+ </script>