eoss-ui 0.7.24 → 0.7.26

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