eoss-ui 0.7.64 → 0.7.66

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 (255) hide show
  1. package/lib/button-group.js +119 -97
  2. package/lib/button.js +113 -97
  3. package/lib/calendar.js +2 -2
  4. package/lib/calogin.js +352 -330
  5. package/lib/card.js +2 -2
  6. package/lib/cascader.js +2 -2
  7. package/lib/checkbox-group.js +119 -97
  8. package/lib/clients.js +43 -41
  9. package/lib/config/api.js +12 -1
  10. package/lib/data-table-form.js +119 -97
  11. package/lib/data-table.js +119 -97
  12. package/lib/date-picker.js +120 -104
  13. package/lib/dialog.js +119 -97
  14. package/lib/enable-drag.js +2 -2
  15. package/lib/enterprise.js +2 -2
  16. package/lib/eoss-ui.common.js +8677 -720
  17. package/lib/error-page.js +2 -2
  18. package/lib/flow-group.js +120 -104
  19. package/lib/flow-list.js +287 -289
  20. package/lib/flow.js +175 -153
  21. package/lib/form.js +119 -97
  22. package/lib/handle-user.js +121 -105
  23. package/lib/handler.js +114 -98
  24. package/lib/icon.js +114 -98
  25. package/lib/icons.js +5 -5
  26. package/lib/index.js +1 -1
  27. package/lib/input-number.js +120 -104
  28. package/lib/input.js +120 -104
  29. package/lib/label.js +2 -2
  30. package/lib/layout.js +2 -2
  31. package/lib/login.js +129 -107
  32. package/lib/main.js +8505 -545
  33. package/lib/menu.js +2 -2
  34. package/lib/nav.js +113 -97
  35. package/lib/notify.js +116 -100
  36. package/lib/page.js +120 -104
  37. package/lib/pagination.js +120 -104
  38. package/lib/player.js +130 -114
  39. package/lib/qr-code.js +141 -125
  40. package/lib/radio-group.js +120 -104
  41. package/lib/retrial-auth.js +116 -100
  42. package/lib/select-ganged.js +113 -97
  43. package/lib/select.js +120 -104
  44. package/lib/selector-panel.js +140 -118
  45. package/lib/selector.js +117 -101
  46. package/lib/sizer.js +115 -99
  47. package/lib/steps.js +113 -97
  48. package/lib/switch.js +113 -97
  49. package/lib/table-form.js +120 -104
  50. package/lib/tabs-panel.js +2 -2
  51. package/lib/tabs.js +120 -104
  52. package/lib/theme-chalk/base.css +1 -1
  53. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  54. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  55. package/lib/theme-chalk/icon.css +1 -1
  56. package/lib/theme-chalk/index.css +1 -1
  57. package/lib/theme-chalk/login.css +1 -1
  58. package/lib/theme-chalk/main.css +1 -1
  59. package/lib/theme-chalk/menu.css +1 -1
  60. package/lib/theme-chalk/simplicity-top.css +1 -0
  61. package/lib/theme-chalk/simplicity.css +1 -1
  62. package/lib/theme-chalk/sizer.css +1 -1
  63. package/lib/theme-chalk/upload.css +1 -1
  64. package/lib/tips.js +121 -105
  65. package/lib/toolbar.js +2 -2
  66. package/lib/tree-group.js +120 -104
  67. package/lib/tree.js +121 -105
  68. package/lib/upload.js +129 -107
  69. package/lib/wujie.js +113 -97
  70. package/lib/wxlogin.js +113 -97
  71. package/package.json +1 -1
  72. package/packages/button/index.js +5 -5
  73. package/packages/button/src/main.vue +418 -418
  74. package/packages/button-group/index.js +5 -5
  75. package/packages/calendar/index.js +5 -5
  76. package/packages/calogin/index.js +5 -5
  77. package/packages/calogin/src/plugin.js +915 -915
  78. package/packages/card/index.js +5 -5
  79. package/packages/card/src/main.vue +156 -156
  80. package/packages/cascader/index.js +5 -5
  81. package/packages/cascader/src/main.vue +168 -168
  82. package/packages/checkbox-group/index.js +5 -5
  83. package/packages/checkbox-group/src/main.vue +333 -333
  84. package/packages/clients/index.js +5 -5
  85. package/packages/clients/src/main.vue +1 -1
  86. package/packages/data-table/index.js +5 -5
  87. package/packages/data-table/src/children.vue +39 -39
  88. package/packages/data-table/src/sizer.vue +195 -195
  89. package/packages/data-table-form/index.js +5 -5
  90. package/packages/data-table-form/src/checkbox.vue +101 -101
  91. package/packages/data-table-form/src/colgroup.vue +17 -17
  92. package/packages/data-table-form/src/main.vue +181 -181
  93. package/packages/data-table-form/src/radio.vue +65 -65
  94. package/packages/data-table-form/src/table.vue +233 -233
  95. package/packages/data-table-form/src/tbody.vue +336 -336
  96. package/packages/data-table-form/src/thead.vue +68 -68
  97. package/packages/date-picker/index.js +5 -5
  98. package/packages/date-picker/src/main.vue +236 -236
  99. package/packages/dialog/index.js +5 -5
  100. package/packages/enable-drag/index.js +5 -5
  101. package/packages/enterprise/index.js +5 -5
  102. package/packages/enterprise/src/main.vue +66 -66
  103. package/packages/error-page/index.js +5 -5
  104. package/packages/error-page/src/main.vue +44 -44
  105. package/packages/flow/index.js +5 -5
  106. package/packages/flow/src/component/TimeLimit.vue +190 -190
  107. package/packages/flow/src/table.vue +58 -58
  108. package/packages/flow-group/index.js +5 -5
  109. package/packages/flow-list/index.js +5 -5
  110. package/packages/form/index.js +5 -5
  111. package/packages/handle-user/index.js +5 -5
  112. package/packages/handler/index.js +5 -5
  113. package/packages/icon/index.js +5 -5
  114. package/packages/icons/index.js +5 -5
  115. package/packages/icons/src/icon.json +1 -1
  116. package/packages/icons/src/main.vue +81 -81
  117. package/packages/input/index.js +5 -5
  118. package/packages/input/src/main.vue +356 -356
  119. package/packages/input-number/index.js +5 -5
  120. package/packages/input-number/src/main.vue +106 -106
  121. package/packages/label/index.js +5 -5
  122. package/packages/label/src/main.vue +457 -457
  123. package/packages/layout/index.js +5 -5
  124. package/packages/layout/src/item.vue +152 -152
  125. package/packages/layout/src/main.vue +31 -31
  126. package/packages/login/index.js +5 -5
  127. package/packages/login/src/main.vue +2 -2
  128. package/packages/main/index.js +5 -5
  129. package/packages/main/src/default/message.vue +249 -249
  130. package/packages/main/src/default/notice.vue +157 -157
  131. package/packages/main/src/main.vue +18 -0
  132. package/packages/main/src/public/settings.vue +121 -75
  133. package/packages/main/src/simplicity/index.vue +5 -5
  134. package/packages/main/src/simplicity/lists.vue +84 -84
  135. package/packages/main/src/simplicity/router-page.vue +45 -45
  136. package/packages/main/src/simplicityTop/apps.vue +388 -0
  137. package/packages/main/src/simplicityTop/avatar.vue +82 -0
  138. package/packages/main/src/simplicityTop/handler.vue +207 -0
  139. package/packages/main/src/simplicityTop/index.vue +2909 -0
  140. package/packages/main/src/simplicityTop/lists.vue +84 -0
  141. package/packages/main/src/simplicityTop/menu-list.vue +135 -0
  142. package/packages/main/src/simplicityTop/message.vue +293 -0
  143. package/packages/main/src/simplicityTop/notice.vue +222 -0
  144. package/packages/main/src/simplicityTop/router-page.vue +45 -0
  145. package/packages/main/src/simplicityTop/sub-menu.vue +274 -0
  146. package/packages/main/src/simplicityTop/user.vue +259 -0
  147. package/packages/main/src/simplicityTop/userinfo.vue +401 -0
  148. package/packages/menu/index.js +5 -5
  149. package/packages/nav/index.js +5 -5
  150. package/packages/notify/index.js +5 -5
  151. package/packages/notify/src/main.vue +538 -538
  152. package/packages/page/index.js +5 -5
  153. package/packages/page/src/main.vue +167 -167
  154. package/packages/pagination/index.js +5 -5
  155. package/packages/pagination/src/main.vue +96 -96
  156. package/packages/player/index.js +5 -5
  157. package/packages/player/src/main.vue +194 -194
  158. package/packages/qr-code/index.js +5 -5
  159. package/packages/qr-code/src/main.vue +170 -170
  160. package/packages/radio-group/index.js +6 -6
  161. package/packages/radio-group/src/main.vue +319 -319
  162. package/packages/retrial-auth/index.js +5 -5
  163. package/packages/retrial-auth/src/main.vue +280 -280
  164. package/packages/select/index.js +5 -5
  165. package/packages/select-ganged/index.js +5 -5
  166. package/packages/select-ganged/src/main.vue +724 -724
  167. package/packages/selector/index.js +5 -5
  168. package/packages/selector-panel/index.js +5 -5
  169. package/packages/selector-panel/src/tree.vue +129 -129
  170. package/packages/sizer/index.js +5 -5
  171. package/packages/sizer/src/main.vue +254 -254
  172. package/packages/steps/index.js +5 -5
  173. package/packages/steps/src/main.vue +181 -181
  174. package/packages/switch/index.js +5 -5
  175. package/packages/table-form/index.js +5 -5
  176. package/packages/tabs/index.js +5 -5
  177. package/packages/tabs/src/main.vue +788 -788
  178. package/packages/tabs-panel/index.js +5 -5
  179. package/packages/tabs-panel/src/main.vue +29 -29
  180. package/packages/theme-chalk/lib/base.css +1 -1
  181. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  182. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  183. package/packages/theme-chalk/lib/icon.css +1 -1
  184. package/packages/theme-chalk/lib/index.css +1 -1
  185. package/packages/theme-chalk/lib/login.css +1 -1
  186. package/packages/theme-chalk/lib/main.css +1 -1
  187. package/packages/theme-chalk/lib/menu.css +1 -1
  188. package/packages/theme-chalk/lib/simplicity-top.css +1 -0
  189. package/packages/theme-chalk/lib/simplicity.css +1 -1
  190. package/packages/theme-chalk/lib/sizer.css +1 -1
  191. package/packages/theme-chalk/lib/upload.css +1 -1
  192. package/packages/theme-chalk/src/base.scss +261 -261
  193. package/packages/theme-chalk/src/button-group.scss +176 -176
  194. package/packages/theme-chalk/src/button.scss +24 -24
  195. package/packages/theme-chalk/src/calendar.scss +113 -113
  196. package/packages/theme-chalk/src/card.scss +99 -99
  197. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  198. package/packages/theme-chalk/src/clients.scss +87 -87
  199. package/packages/theme-chalk/src/common/var.scss +3 -0
  200. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  201. package/packages/theme-chalk/src/date-picker.scss +7 -7
  202. package/packages/theme-chalk/src/dialog.scss +77 -77
  203. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  204. package/packages/theme-chalk/src/enterprise.scss +5 -5
  205. package/packages/theme-chalk/src/error-page.scss +18 -18
  206. package/packages/theme-chalk/src/flow-group.scss +110 -110
  207. package/packages/theme-chalk/src/flow-list.scss +39 -39
  208. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  209. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  210. package/packages/theme-chalk/src/handle-user.scss +40 -40
  211. package/packages/theme-chalk/src/icon.scss +4 -0
  212. package/packages/theme-chalk/src/icons.scss +99 -99
  213. package/packages/theme-chalk/src/input.scss +9 -9
  214. package/packages/theme-chalk/src/label.scss +24 -24
  215. package/packages/theme-chalk/src/layout.scss +46 -46
  216. package/packages/theme-chalk/src/main.scss +1 -0
  217. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  218. package/packages/theme-chalk/src/nav.scss +111 -111
  219. package/packages/theme-chalk/src/page.scss +3 -3
  220. package/packages/theme-chalk/src/pagination.scss +29 -29
  221. package/packages/theme-chalk/src/player.scss +9 -9
  222. package/packages/theme-chalk/src/qr-code.scss +17 -17
  223. package/packages/theme-chalk/src/radio-group.scss +9 -9
  224. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  225. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  226. package/packages/theme-chalk/src/select.scss +8 -8
  227. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  228. package/packages/theme-chalk/src/simplicity-top.scss +1974 -0
  229. package/packages/theme-chalk/src/sizer.scss +36 -36
  230. package/packages/theme-chalk/src/steps.scss +88 -88
  231. package/packages/theme-chalk/src/switch.scss +3 -3
  232. package/packages/theme-chalk/src/table-form.scss +1 -1
  233. package/packages/theme-chalk/src/tabs.scss +87 -87
  234. package/packages/theme-chalk/src/tips.scss +7 -7
  235. package/packages/theme-chalk/src/toolbar.scss +179 -179
  236. package/packages/theme-chalk/src/tree-group.scss +72 -72
  237. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  238. package/packages/tips/index.js +5 -5
  239. package/packages/toolbar/index.js +5 -5
  240. package/packages/tree/index.js +5 -5
  241. package/packages/tree-group/index.js +5 -5
  242. package/packages/upload/index.js +5 -5
  243. package/packages/upload/src/picture.js +15 -15
  244. package/packages/wujie/index.js +5 -5
  245. package/packages/wujie/src/main.vue +145 -145
  246. package/packages/wxlogin/index.js +5 -5
  247. package/packages/wxlogin/src/main.vue +128 -128
  248. package/src/config/api.js +15 -2
  249. package/src/config/image.js +2 -2
  250. package/src/index.js +1 -1
  251. package/src/utils/bus.js +3 -3
  252. package/src/utils/date-util.js +312 -312
  253. package/src/utils/http.js +50 -50
  254. package/src/utils/store.js +21 -21
  255. package/src/utils/webSocket.js +107 -107
@@ -0,0 +1,222 @@
1
+ <template>
2
+ <transition name="el-drawer-fade" @after-enter="handleMouse(false)">
3
+ <div
4
+ class="es-simplicity-notice-box"
5
+ :class="{ 'es-in': msgs.length }"
6
+ v-show="msgs.length"
7
+ @mouseover="handleMouse(true)"
8
+ @mouseout="handleMouse(false)"
9
+ >
10
+ <div class="es-simplicity-notice-header">
11
+ <span class="es-notice-title">通知消息</span>
12
+ </div>
13
+ <el-scrollbar
14
+ class="es-simplicity-notice-lists es-simplicity-message-lists"
15
+ >
16
+ <div
17
+ v-for="(item, index) in msgs"
18
+ :key="item.id"
19
+ class="es-simplicity-message-item"
20
+ >
21
+ <div class="es-simplicity-message-item-title">
22
+ {{ item.title }}
23
+ </div>
24
+ <div>
25
+ <span class="es-simplicity-message-item-time">
26
+ {{ item.time }}
27
+ </span>
28
+ <span
29
+ class="es-simplicity-message-handler"
30
+ v-show="item.handlerUrl"
31
+ @click="handleMessage(item, index)"
32
+ >
33
+ 处理
34
+ </span>
35
+ <span
36
+ class="es-simplicity-message-overlook"
37
+ @click="handleIgnore(item, index)"
38
+ >
39
+ 忽略
40
+ </span>
41
+ </div>
42
+ </div>
43
+ </el-scrollbar>
44
+ <div class="es-notice-footer">
45
+ <span class="es-simplicity-message-overlook" @click="handleIgnoreAll"
46
+ >忽略全部</span
47
+ >
48
+ <span class="es-simplicity-message-handler" @click="afterEnter"
49
+ >我知道了</span
50
+ >
51
+ </div>
52
+ <es-dialog
53
+ title="处理"
54
+ name="manage"
55
+ width="90%"
56
+ height="80%"
57
+ :visible.sync="dialog.show"
58
+ :url="dialog.url"
59
+ :param="dialog.params"
60
+ @close="handleClose"
61
+ ></es-dialog>
62
+ </div>
63
+ </transition>
64
+ </template>
65
+ <script>
66
+ import { ignoreSysMsg, ignoreAllSysMsg } from 'eoss-ui/src/config/api.js';
67
+ import util from 'eoss-ui/src/utils/util';
68
+ export default {
69
+ name: 'Notice',
70
+ provide() {
71
+ return {
72
+ deleteNotice: this.handleRemove
73
+ };
74
+ },
75
+ props: {
76
+ visible: Boolean,
77
+ winopen: Boolean,
78
+ data: {
79
+ type: Array,
80
+ default() {
81
+ return [];
82
+ }
83
+ }
84
+ },
85
+ computed: {},
86
+ watch: {
87
+ data: {
88
+ immediate: true,
89
+ deep: true,
90
+ handler(val) {
91
+ this.msgs = val;
92
+ }
93
+ }
94
+ },
95
+ data() {
96
+ return {
97
+ //加载数据
98
+ loading: false,
99
+ //消息数据,
100
+ msgs: [],
101
+ //即时消息
102
+ sysMsg: '',
103
+ dialog: {
104
+ params: {},
105
+ url: '',
106
+ show: false
107
+ },
108
+ index: null
109
+ };
110
+ },
111
+ mounted() {
112
+ const bus = this.bus || this.$root.Bus;
113
+ bus && bus.$on('deleteNotice', this.handleRemove);
114
+ },
115
+ methods: {
116
+ afterEnter() {
117
+ this.$emit('opened');
118
+ },
119
+ handleMouse(flag) {
120
+ this.$emit('opened', flag);
121
+ },
122
+ //忽略
123
+ handleIgnore(res, i) {
124
+ util
125
+ .ajax({
126
+ url: ignoreSysMsg,
127
+ params: {
128
+ id: res.id
129
+ }
130
+ })
131
+ .then((res) => {
132
+ if (res.rCode == 0) {
133
+ this.msgs.splice(i, 1);
134
+ } else {
135
+ let msg = res.msg || '系统错误,请联系管理员!';
136
+ this.$message.error(msg);
137
+ }
138
+ });
139
+ },
140
+ //全部忽略
141
+ handleIgnoreAll() {
142
+ util
143
+ .ajax({
144
+ url: ignoreAllSysMsg
145
+ })
146
+ .then((res) => {
147
+ this.msgs = [];
148
+ this.$emit('ignore', { type: 'ignore', value: 'all' });
149
+ this.$emit('opened', false);
150
+ })
151
+ .catch((err) => {
152
+ if (err.message && err.message !== 'canceled') {
153
+ this.$message.error(err.message);
154
+ }
155
+ });
156
+ },
157
+ //处理消息
158
+ handleMessage(item, index) {
159
+ const openModel = util.getStorage('openModel');
160
+ if (openModel && openModel == 'dialog') {
161
+ let { handlerUrl, title, id, metaData } = item;
162
+ metaData &&
163
+ (title =
164
+ metaData.title ||
165
+ metaData.pendtitle ||
166
+ metaData.meetName ||
167
+ title ||
168
+ '办理');
169
+ const jsonData =
170
+ metaData && metaData.jsonData ? JSON.parse(metaData.jsonData) : {};
171
+ util.busEmit(this, {
172
+ method: 'windowOpen',
173
+ args: {
174
+ url: handlerUrl,
175
+ title: title,
176
+ id: id,
177
+ ...jsonData,
178
+ callback: 'deleteNotice'
179
+ }
180
+ });
181
+ return;
182
+ }
183
+ if (item.urlopenmode === 1 || this.winopen) {
184
+ const mywin = util.win.open(item.handlerUrl);
185
+ if (mywin) {
186
+ let times = setInterval(() => {
187
+ if (mywin.closed) {
188
+ clearInterval(times);
189
+ this.$parent.$emit('bus-emit', 'waitdone');
190
+ }
191
+ }, 1000);
192
+ }
193
+ } else {
194
+ this.dialog = {
195
+ show: true,
196
+ url: item.handlerUrl,
197
+ params: {
198
+ id: item.id,
199
+ pendingId: item.pendingId,
200
+ userId: item.userId
201
+ }
202
+ };
203
+ this.index = index;
204
+ }
205
+ },
206
+ handleRemove() {
207
+ if (this.index === null) {
208
+ this.count -= 1;
209
+ this.msgs = this.msgs.splice(this.index, 1);
210
+ }
211
+ this.dialog.show = false;
212
+ },
213
+ handleClose() {
214
+ this.$parent.$emit('bus-emit', 'waitdone');
215
+ },
216
+ destroyed() {
217
+ const bus = this.bus || this.$root.Bus;
218
+ bus.$off('deleteNotice', this.handleRemove);
219
+ }
220
+ }
221
+ };
222
+ </script>
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <div style="height: 100%">
3
+ <router-view :key="keys || appCode" :name="appCode" />
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ import util from 'eoss-ui/src/utils/util';
9
+ export default {
10
+ name: 'RouterPage',
11
+ components: {},
12
+ props: {
13
+ appCode: String,
14
+ path: String,
15
+ url: String,
16
+ query: {
17
+ type: Object,
18
+ default() {
19
+ return {};
20
+ }
21
+ },
22
+ keys: String
23
+ },
24
+ data() {
25
+ return {};
26
+ },
27
+ computed: {},
28
+ watch: {},
29
+ created() {},
30
+ mounted() {
31
+ this.jump();
32
+ },
33
+ methods: {
34
+ jump() {
35
+ let params = util.getParams({ url: this.url });
36
+ this.$router.push({
37
+ path: this.path,
38
+ query: { ...this.query, ...params }
39
+ });
40
+ }
41
+ }
42
+ };
43
+ </script>
44
+
45
+ <style lang="scss" scoped></style>
@@ -0,0 +1,274 @@
1
+ <template>
2
+ <el-drawer
3
+ class="es-simplicity-subMenus"
4
+ direction="ltr"
5
+ modal-class="es-simplicity-apps-modal"
6
+ size="auto"
7
+ :modal-append-to-body="false"
8
+ :close-on-press-escape="false"
9
+ :modal="false"
10
+ :with-header="false"
11
+ :wrapperClosable="false"
12
+ :visible.sync="show"
13
+ >
14
+ <div
15
+ class="es-simplicity-menus"
16
+ :class="{ 'es-simplicity-menus-plus': mode == 'plus' }"
17
+ >
18
+ <div class="es-simplicity-menus-box" :style="{ width: width + 'px' }">
19
+ <div class="es-simplicity-menus-title">
20
+ <el-tooltip
21
+ class="item"
22
+ effect="dark"
23
+ placement="right"
24
+ :content="title || text"
25
+ :auto="true"
26
+ >
27
+ <span class="es-simplicity-menus-title-text" v-if="!fold">{{
28
+ title || text
29
+ }}</span>
30
+ </el-tooltip>
31
+ <i
32
+ class="es-icon-shouqi es-simplicity-menus-title-icon"
33
+ v-show="!fold"
34
+ @click="handleFold(true)"
35
+ ></i>
36
+ <i
37
+ class="es-icon-zhankai es-simplicity-menus-title-icon"
38
+ v-show="fold"
39
+ @click="handleFold(false)"
40
+ ></i>
41
+ </div>
42
+ <div v-if="collapse" class="es-simplicity-menus-scrollbar">
43
+ <es-menu
44
+ popperClass="es-simplicity_menus"
45
+ :menu-class="
46
+ fold
47
+ ? 'es-simplicity_menus es-simplicity_menus-fold'
48
+ : 'es-simplicity_menus'
49
+ "
50
+ :fourthTabs="true"
51
+ :data="menus"
52
+ :menuIcon="menuIcon"
53
+ :color="color"
54
+ :backgroundColor="backgroundColor"
55
+ :show-title="false"
56
+ :collapse="fold"
57
+ @select="handleSelect"
58
+ ></es-menu>
59
+ </div>
60
+ <menu-list
61
+ v-else
62
+ :active="actives[0]"
63
+ :data="menus"
64
+ :menuIcon="menuIcon"
65
+ :color="color"
66
+ :backgroundColor="backgroundColor"
67
+ :fold="fold"
68
+ :width="size"
69
+ @menter="
70
+ (res) => {
71
+ this.getData(res, 0, true);
72
+ }
73
+ "
74
+ @mleave="
75
+ (res) => {
76
+ this.getData(res, 0, false);
77
+ }
78
+ "
79
+ @hover="handleHover"
80
+ @command="handleCommand"
81
+ ></menu-list>
82
+ </div>
83
+ <div
84
+ class="es-simplicity-menus-view"
85
+ @mouseleave="handleLeave"
86
+ @mouseenter="handleEnter"
87
+ v-show="subMenus.length"
88
+ >
89
+ <div
90
+ class="es-simplicity-menus-box"
91
+ v-for="(item, index) in subMenus"
92
+ :key="item.id"
93
+ >
94
+ <div class="es-simplicity-menus-title">
95
+ <span class="es-simplicity-menus-title-text">{{
96
+ item.name || item.text || item.title
97
+ }}</span>
98
+ </div>
99
+ <menu-list
100
+ :active="actives[index + 1]"
101
+ :data="[...item.children, ...item.fourthTabs]"
102
+ :menuIcon="menuIcon"
103
+ :color="color"
104
+ :backgroundColor="backgroundColor"
105
+ :width="size"
106
+ @menter="
107
+ (res) => {
108
+ getData(res, index + 1, true);
109
+ }
110
+ "
111
+ @mleave="
112
+ (res) => {
113
+ getData(res, index + 1, false);
114
+ }
115
+ "
116
+ @command="handleCommand"
117
+ ></menu-list>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </el-drawer>
122
+ </template>
123
+
124
+ <script>
125
+ import MenuList from './menu-list.vue';
126
+ export default {
127
+ name: 'SubMenu',
128
+ components: { MenuList },
129
+ props: {
130
+ mode: String,
131
+ collapse: Boolean,
132
+ title: String,
133
+ closed: Boolean,
134
+ color: {
135
+ type: [String, Array],
136
+ default: '#fff'
137
+ },
138
+ backgroundColor: {
139
+ type: [String, Array],
140
+ default() {
141
+ return [
142
+ '#FF9C52',
143
+ '#2591F7',
144
+ '#17C27B',
145
+ '#1265D7',
146
+ '#FFC724',
147
+ '#E34D59'
148
+ ];
149
+ }
150
+ },
151
+ size: {
152
+ type: Number,
153
+ default: 220
154
+ },
155
+ visible: Boolean,
156
+ text: String,
157
+ menuIcon: String,
158
+ children: {
159
+ type: Array,
160
+ default() {
161
+ return [];
162
+ }
163
+ },
164
+ fourthTabs: {
165
+ type: Array,
166
+ default() {
167
+ return [];
168
+ }
169
+ }
170
+ },
171
+ data() {
172
+ return {
173
+ fold: this.closed,
174
+ width: this.size,
175
+ subMenus: [],
176
+ isEnter: false,
177
+ timer: null,
178
+ actives: []
179
+ };
180
+ },
181
+ computed: {
182
+ menus() {
183
+ return [...this.children, ...this.fourthTabs];
184
+ },
185
+ show: {
186
+ get() {
187
+ return this.visible;
188
+ },
189
+ set(val) {
190
+ this.$emit('update:visible', val);
191
+ return val;
192
+ }
193
+ }
194
+ },
195
+ watch: {
196
+ closed(val) {
197
+ this.fold = val;
198
+ if (val) {
199
+ this.width = 48;
200
+ } else {
201
+ this.width = this.size;
202
+ }
203
+ },
204
+ visible(val) {
205
+ val === false && (this.actives = []);
206
+ }
207
+ },
208
+ created() {},
209
+ mounted() {},
210
+ methods: {
211
+ handleFold(res) {
212
+ this.fold = res;
213
+ if (res) {
214
+ this.width = 48;
215
+ } else {
216
+ this.width = this.size;
217
+ }
218
+ this.$emit('update:closed', res);
219
+ },
220
+ handleCommand(res) {
221
+ this.$emit('command', res);
222
+ },
223
+ handleSelect(res) {
224
+ this.$emit('command', res.node);
225
+ },
226
+ getData(res, n, is) {
227
+ this.isEnter = is;
228
+ if (is) {
229
+ this.actives.splice(n);
230
+ if (this.actives[n]) {
231
+ this.actives[n] = res.id;
232
+ } else {
233
+ this.actives.push(res.id);
234
+ }
235
+ this.subMenus.splice(n);
236
+ let { children, fourthTabs } = res;
237
+ if (
238
+ (children && children.length) ||
239
+ (fourthTabs && fourthTabs.length)
240
+ ) {
241
+ this.subMenus = this.subMenus.concat(res);
242
+ }
243
+ } else {
244
+ if (n == 0) {
245
+ clearTimeout(this.timer);
246
+ this.timer = setTimeout(() => {
247
+ if (res && !this.isEnter) {
248
+ this.subMenus = [];
249
+ this.actives = [];
250
+ }
251
+ }, 300);
252
+ }
253
+ }
254
+ },
255
+ handleHover(res) {
256
+ this.isEnter = res;
257
+ //if(this)
258
+ },
259
+ clearSubmenu() {
260
+ this.$refs.menus.clearActive();
261
+ this.subMenus = [];
262
+ },
263
+ handleLeave() {
264
+ this.subMenus = [];
265
+ this.actives = [];
266
+ },
267
+ handleEnter() {
268
+ this.isEnter = true;
269
+ }
270
+ }
271
+ };
272
+ </script>
273
+
274
+ <style lang="scss" scoped></style>