eoss-ui 0.7.53 → 0.7.55

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 (306) hide show
  1. package/lib/button-group.js +2 -2
  2. package/lib/button.js +2 -2
  3. package/lib/calogin.js +235 -235
  4. package/lib/checkbox-group.js +2 -2
  5. package/lib/config/api.js +1 -1
  6. package/lib/data-table-form.js +2 -2
  7. package/lib/data-table.js +2 -2
  8. package/lib/date-picker.js +2 -2
  9. package/lib/dialog.js +2 -2
  10. package/lib/eoss-ui.common.js +882 -795
  11. package/lib/flow-group.js +2 -2
  12. package/lib/flow-list.js +83 -83
  13. package/lib/flow.js +294 -292
  14. package/lib/form.js +2 -2
  15. package/lib/handle-user.js +2 -2
  16. package/lib/handler.js +2 -2
  17. package/lib/icon.js +2 -2
  18. package/lib/icons.js +1 -1
  19. package/lib/index.js +1 -1
  20. package/lib/input-number.js +2 -2
  21. package/lib/input.js +2 -2
  22. package/lib/login.js +6 -6
  23. package/lib/main.js +238 -153
  24. package/lib/nav.js +2 -2
  25. package/lib/notify.js +2 -2
  26. package/lib/page.js +2 -2
  27. package/lib/pagination.js +2 -2
  28. package/lib/player.js +2 -2
  29. package/lib/qr-code.js +15 -15
  30. package/lib/radio-group.js +2 -2
  31. package/lib/retrial-auth.js +2 -2
  32. package/lib/select-ganged.js +2 -2
  33. package/lib/select.js +2 -2
  34. package/lib/selector-panel.js +2 -2
  35. package/lib/selector.js +2 -2
  36. package/lib/sizer.js +2 -2
  37. package/lib/steps.js +2 -2
  38. package/lib/switch.js +2 -2
  39. package/lib/table-form.js +2 -2
  40. package/lib/tabs.js +2 -2
  41. package/lib/theme-chalk/base.css +1 -1
  42. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  43. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  44. package/lib/theme-chalk/icon.css +1 -1
  45. package/lib/theme-chalk/index.css +1 -1
  46. package/lib/theme-chalk/main.css +1 -1
  47. package/lib/theme-chalk/menu.css +1 -1
  48. package/lib/theme-chalk/simplicity.css +1 -1
  49. package/lib/theme-chalk/sizer.css +1 -1
  50. package/lib/theme-chalk/upload.css +1 -1
  51. package/lib/tips.js +2 -2
  52. package/lib/tree-group.js +2 -2
  53. package/lib/tree.js +2 -2
  54. package/lib/upload.js +15 -15
  55. package/lib/wujie.js +2 -2
  56. package/lib/wxlogin.js +2 -2
  57. package/package.json +160 -160
  58. package/packages/.DS_Store +0 -0
  59. package/packages/button/index.js +5 -5
  60. package/packages/button/src/main.vue +418 -418
  61. package/packages/button-group/index.js +5 -5
  62. package/packages/button-group/src/main.vue +346 -346
  63. package/packages/calendar/index.js +5 -5
  64. package/packages/calogin/.DS_Store +0 -0
  65. package/packages/calogin/index.js +5 -5
  66. package/packages/calogin/src/main.vue +412 -412
  67. package/packages/calogin/src/plugin.js +915 -915
  68. package/packages/card/index.js +5 -5
  69. package/packages/card/src/main.vue +156 -156
  70. package/packages/cascader/index.js +5 -5
  71. package/packages/cascader/src/main.vue +168 -168
  72. package/packages/checkbox-group/index.js +5 -5
  73. package/packages/checkbox-group/src/main.vue +333 -333
  74. package/packages/clients/index.js +5 -5
  75. package/packages/clients/src/main.vue +151 -151
  76. package/packages/data-table/index.js +5 -5
  77. package/packages/data-table/src/children.vue +39 -39
  78. package/packages/data-table/src/column.vue +992 -992
  79. package/packages/data-table/src/main.vue +1840 -1840
  80. package/packages/data-table/src/sizer.vue +195 -195
  81. package/packages/data-table-form/index.js +5 -5
  82. package/packages/data-table-form/src/checkbox.vue +101 -101
  83. package/packages/data-table-form/src/colgroup.vue +17 -17
  84. package/packages/data-table-form/src/main.vue +181 -181
  85. package/packages/data-table-form/src/radio.vue +65 -65
  86. package/packages/data-table-form/src/table.vue +233 -233
  87. package/packages/data-table-form/src/tbody.vue +336 -336
  88. package/packages/data-table-form/src/thead.vue +68 -68
  89. package/packages/date-picker/.DS_Store +0 -0
  90. package/packages/date-picker/index.js +5 -5
  91. package/packages/date-picker/src/.DS_Store +0 -0
  92. package/packages/date-picker/src/main.vue +236 -236
  93. package/packages/dialog/.DS_Store +0 -0
  94. package/packages/dialog/index.js +5 -5
  95. package/packages/enable-drag/index.js +5 -5
  96. package/packages/enterprise/index.js +5 -5
  97. package/packages/enterprise/src/main.vue +66 -66
  98. package/packages/error-page/index.js +5 -5
  99. package/packages/error-page/src/main.vue +44 -44
  100. package/packages/flow/.DS_Store +0 -0
  101. package/packages/flow/index.js +5 -5
  102. package/packages/flow/src/.DS_Store +0 -0
  103. package/packages/flow/src/component/Circulate.vue +413 -413
  104. package/packages/flow/src/component/CommonOpinions.vue +373 -373
  105. package/packages/flow/src/component/CustomPreset.vue +322 -322
  106. package/packages/flow/src/component/FileList.vue +97 -97
  107. package/packages/flow/src/component/FreeCirculation.vue +241 -240
  108. package/packages/flow/src/component/Preset.vue +255 -255
  109. package/packages/flow/src/component/SendMsg.vue +242 -242
  110. package/packages/flow/src/component/TimeLimit.vue +190 -190
  111. package/packages/flow/src/component/taskUnionExamine.vue +756 -756
  112. package/packages/flow/src/form.vue +121 -121
  113. package/packages/flow/src/freeStartFlow.vue +2846 -2846
  114. package/packages/flow/src/main.vue +3878 -3878
  115. package/packages/flow/src/processForm.vue +1365 -1365
  116. package/packages/flow/src/processReject.vue +309 -309
  117. package/packages/flow/src/reset.vue +942 -942
  118. package/packages/flow/src/startTaskRead.vue +692 -692
  119. package/packages/flow/src/supervise.vue +159 -159
  120. package/packages/flow/src/table.vue +58 -58
  121. package/packages/flow-group/index.js +5 -5
  122. package/packages/flow-group/src/main.vue +717 -717
  123. package/packages/flow-list/.DS_Store +0 -0
  124. package/packages/flow-list/index.js +5 -5
  125. package/packages/flow-list/src/main.vue +1801 -1801
  126. package/packages/form/.DS_Store +0 -0
  127. package/packages/form/index.js +5 -5
  128. package/packages/form/src/main.vue +3901 -3901
  129. package/packages/form/src/table.vue +1512 -1512
  130. package/packages/handle-user/index.js +5 -5
  131. package/packages/handle-user/src/main.vue +137 -137
  132. package/packages/handler/index.js +5 -5
  133. package/packages/handler/src/main.vue +496 -496
  134. package/packages/icon/.DS_Store +0 -0
  135. package/packages/icon/index.js +5 -5
  136. package/packages/icon/src/main.vue +104 -104
  137. package/packages/icons/index.js +5 -5
  138. package/packages/icons/src/icon.json +1 -1
  139. package/packages/icons/src/main.vue +81 -81
  140. package/packages/input/index.js +5 -5
  141. package/packages/input/src/main.vue +356 -356
  142. package/packages/input-number/index.js +5 -5
  143. package/packages/input-number/src/main.vue +106 -106
  144. package/packages/label/index.js +5 -5
  145. package/packages/label/src/main.vue +457 -457
  146. package/packages/layout/index.js +5 -5
  147. package/packages/layout/src/item.vue +152 -152
  148. package/packages/layout/src/main.vue +31 -31
  149. package/packages/login/.DS_Store +0 -0
  150. package/packages/login/index.js +5 -5
  151. package/packages/login/src/main.vue +2082 -2082
  152. package/packages/login/src/resetPassword.vue +557 -557
  153. package/packages/main/.DS_Store +0 -0
  154. package/packages/main/index.js +5 -5
  155. package/packages/main/src/.DS_Store +0 -0
  156. package/packages/main/src/default/message.vue +249 -249
  157. package/packages/main/src/default/notice.vue +157 -157
  158. package/packages/main/src/default/userinfo.vue +503 -503
  159. package/packages/main/src/public/online.vue +89 -89
  160. package/packages/main/src/public/search.vue +464 -464
  161. package/packages/main/src/public/settings.vue +227 -227
  162. package/packages/main/src/simplicity/apps.vue +388 -388
  163. package/packages/main/src/simplicity/avatar.vue +82 -82
  164. package/packages/main/src/simplicity/handler.vue +160 -160
  165. package/packages/main/src/simplicity/index.vue +2307 -2277
  166. package/packages/main/src/simplicity/lists.vue +84 -84
  167. package/packages/main/src/simplicity/menu-list.vue +135 -135
  168. package/packages/main/src/simplicity/message.vue +293 -293
  169. package/packages/main/src/simplicity/notice.vue +222 -222
  170. package/packages/main/src/simplicity/router-page.vue +45 -45
  171. package/packages/main/src/simplicity/sub-menu.vue +274 -274
  172. package/packages/main/src/simplicity/user.vue +259 -259
  173. package/packages/main/src/simplicity/userinfo.vue +401 -401
  174. package/packages/menu/.DS_Store +0 -0
  175. package/packages/menu/index.js +5 -5
  176. package/packages/menu/src/main.vue +595 -595
  177. package/packages/nav/index.js +5 -5
  178. package/packages/nav/src/main.vue +351 -351
  179. package/packages/notify/index.js +5 -5
  180. package/packages/notify/src/main.vue +538 -538
  181. package/packages/page/index.js +5 -5
  182. package/packages/page/src/main.vue +167 -167
  183. package/packages/pagination/index.js +5 -5
  184. package/packages/pagination/src/main.vue +96 -96
  185. package/packages/player/index.js +5 -5
  186. package/packages/player/src/main.vue +194 -194
  187. package/packages/qr-code/index.js +5 -5
  188. package/packages/qr-code/src/main.vue +170 -170
  189. package/packages/radio-group/index.js +6 -6
  190. package/packages/radio-group/src/main.vue +319 -319
  191. package/packages/retrial-auth/index.js +5 -5
  192. package/packages/retrial-auth/src/main.vue +280 -280
  193. package/packages/select/.DS_Store +0 -0
  194. package/packages/select/index.js +5 -5
  195. package/packages/select/src/main.vue +782 -782
  196. package/packages/select-ganged/index.js +5 -5
  197. package/packages/select-ganged/src/main.vue +724 -724
  198. package/packages/selector/.DS_Store +0 -0
  199. package/packages/selector/index.js +5 -5
  200. package/packages/selector/src/main.vue +761 -761
  201. package/packages/selector-panel/.DS_Store +0 -0
  202. package/packages/selector-panel/index.js +5 -5
  203. package/packages/selector-panel/src/main.vue +1027 -1027
  204. package/packages/selector-panel/src/selection.vue +170 -170
  205. package/packages/selector-panel/src/tree.vue +129 -129
  206. package/packages/sizer/index.js +5 -5
  207. package/packages/sizer/src/main.vue +254 -254
  208. package/packages/steps/index.js +5 -5
  209. package/packages/steps/src/main.vue +181 -181
  210. package/packages/switch/index.js +5 -5
  211. package/packages/switch/src/main.vue +170 -170
  212. package/packages/table-form/index.js +5 -5
  213. package/packages/tabs/index.js +5 -5
  214. package/packages/tabs/src/main.vue +788 -788
  215. package/packages/tabs-panel/index.js +5 -5
  216. package/packages/tabs-panel/src/main.vue +29 -29
  217. package/packages/theme-chalk/lib/base.css +1 -1
  218. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  219. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  220. package/packages/theme-chalk/lib/icon.css +1 -1
  221. package/packages/theme-chalk/lib/index.css +1 -1
  222. package/packages/theme-chalk/lib/main.css +1 -1
  223. package/packages/theme-chalk/lib/menu.css +1 -1
  224. package/packages/theme-chalk/lib/simplicity.css +1 -1
  225. package/packages/theme-chalk/lib/sizer.css +1 -1
  226. package/packages/theme-chalk/lib/upload.css +1 -1
  227. package/packages/theme-chalk/src/.DS_Store +0 -0
  228. package/packages/theme-chalk/src/base.scss +261 -261
  229. package/packages/theme-chalk/src/button-group.scss +176 -176
  230. package/packages/theme-chalk/src/button.scss +24 -24
  231. package/packages/theme-chalk/src/calendar.scss +113 -113
  232. package/packages/theme-chalk/src/card.scss +99 -99
  233. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  234. package/packages/theme-chalk/src/clients.scss +87 -87
  235. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  236. package/packages/theme-chalk/src/data-table.scss +297 -297
  237. package/packages/theme-chalk/src/date-picker.scss +7 -7
  238. package/packages/theme-chalk/src/dialog.scss +77 -77
  239. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  240. package/packages/theme-chalk/src/enterprise.scss +5 -5
  241. package/packages/theme-chalk/src/error-page.scss +18 -18
  242. package/packages/theme-chalk/src/flow-group.scss +110 -110
  243. package/packages/theme-chalk/src/flow-list.scss +39 -39
  244. package/packages/theme-chalk/src/flow.scss +351 -351
  245. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  246. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  247. package/packages/theme-chalk/src/form.scss +501 -501
  248. package/packages/theme-chalk/src/handle-user.scss +40 -40
  249. package/packages/theme-chalk/src/handler.scss +148 -148
  250. package/packages/theme-chalk/src/icon.scss +1608 -1540
  251. package/packages/theme-chalk/src/icons.scss +99 -99
  252. package/packages/theme-chalk/src/input.scss +9 -9
  253. package/packages/theme-chalk/src/label.scss +24 -24
  254. package/packages/theme-chalk/src/layout.scss +46 -46
  255. package/packages/theme-chalk/src/login.scss +1006 -1006
  256. package/packages/theme-chalk/src/main.scss +663 -663
  257. package/packages/theme-chalk/src/menu.scss +224 -224
  258. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  259. package/packages/theme-chalk/src/nav.scss +111 -111
  260. package/packages/theme-chalk/src/page.scss +3 -3
  261. package/packages/theme-chalk/src/pagination.scss +29 -29
  262. package/packages/theme-chalk/src/player.scss +9 -9
  263. package/packages/theme-chalk/src/qr-code.scss +17 -17
  264. package/packages/theme-chalk/src/radio-group.scss +9 -9
  265. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  266. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  267. package/packages/theme-chalk/src/select.scss +8 -8
  268. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  269. package/packages/theme-chalk/src/selector.scss +114 -114
  270. package/packages/theme-chalk/src/simplicity.scss +1404 -1395
  271. package/packages/theme-chalk/src/sizer.scss +36 -36
  272. package/packages/theme-chalk/src/steps.scss +88 -88
  273. package/packages/theme-chalk/src/switch.scss +3 -3
  274. package/packages/theme-chalk/src/table-form.scss +1 -1
  275. package/packages/theme-chalk/src/tabs.scss +87 -87
  276. package/packages/theme-chalk/src/tips.scss +7 -7
  277. package/packages/theme-chalk/src/toolbar.scss +179 -179
  278. package/packages/theme-chalk/src/tree-group.scss +72 -72
  279. package/packages/theme-chalk/src/tree.scss +165 -165
  280. package/packages/theme-chalk/src/upload.scss +172 -172
  281. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  282. package/packages/tips/index.js +5 -5
  283. package/packages/tips/src/main.vue +141 -141
  284. package/packages/toolbar/index.js +5 -5
  285. package/packages/toolbar/src/main.vue +430 -430
  286. package/packages/tree/index.js +5 -5
  287. package/packages/tree-group/index.js +5 -5
  288. package/packages/upload/.DS_Store +0 -0
  289. package/packages/upload/index.js +5 -5
  290. package/packages/upload/src/main.vue +1344 -1344
  291. package/packages/upload/src/picture.js +15 -15
  292. package/packages/wujie/index.js +5 -5
  293. package/packages/wujie/src/main.vue +145 -145
  294. package/packages/wxlogin/index.js +5 -5
  295. package/packages/wxlogin/src/main.vue +128 -128
  296. package/src/.DS_Store +0 -0
  297. package/src/config/api.js +317 -317
  298. package/src/config/image.js +2 -2
  299. package/src/index.js +163 -163
  300. package/src/utils/.DS_Store +0 -0
  301. package/src/utils/bus.js +3 -3
  302. package/src/utils/date-util.js +312 -312
  303. package/src/utils/http.js +50 -50
  304. package/src/utils/rules.js +18 -18
  305. package/src/utils/store.js +21 -21
  306. package/src/utils/webSocket.js +107 -107
@@ -1,464 +1,464 @@
1
- <template>
2
- <div class="es-public-search-box">
3
- <el-input
4
- class="es-public-search-input"
5
- placeholder="请输入关键字"
6
- clearable
7
- prefix-icon="el-icon-search"
8
- v-model="keyWords"
9
- round
10
- ></el-input>
11
- <el-tabs class="es-public-search-tabs" v-model="active">
12
- <el-tab-pane label="综合" name="0">
13
- <el-scrollbar class="es-scrollbar">
14
- <template v-for="(item, index) in types">
15
- <div
16
- v-if="item.records && item.records.length"
17
- class="es-public-search-content"
18
- :key="item.id"
19
- >
20
- <div class="es-public-search-title">{{ item.name }}</div>
21
- <ul class="es-public-search-list">
22
- <li
23
- v-for="(ele, idx) in item.records.slice(0, 3)"
24
- class="es-public-search-list-item"
25
- :key="ele.id || `${item.id}_${ele.title}_${idx}`"
26
- @click="handleClick(ele, item)"
27
- >
28
- <es-icon
29
- class="es-public-search-item-icon"
30
- v-bind="getIcon(ele, item)"
31
- :style="setStyle(ele, index)"
32
- ></es-icon>
33
- <div class="es-public-search-item-name">
34
- {{ ele.name || ele.title || ele.text }}
35
- </div>
36
- <div class="es-public-search-item-texts" v-if="ele.summary">
37
- {{ ele.summary }}
38
- </div>
39
- <div class="es-public-search-item-texts">
40
- <template v-if="Array.isArray(ele.infos || ele.footer)">
41
- <span
42
- v-for="(text, idx) in ele.infos || ele.footer"
43
- class="es-public-search-item-text"
44
- :key="idx"
45
- >{{ text }}</span
46
- >
47
- </template>
48
- <template v-else>{{ ele.infos || ele.footer }}</template>
49
- </div>
50
- </li>
51
- </ul>
52
- <div class="es-public-search-more">
53
- <span
54
- class="es-public-search-more-text"
55
- @click="handleTabs(item, index)"
56
- >在<span class="es-public-search-more-quote">{{
57
- item.name
58
- }}</span
59
- >中搜索全部</span
60
- >
61
- </div>
62
- </div>
63
- </template>
64
- </el-scrollbar>
65
- </el-tab-pane>
66
- <template v-for="(item, index) in types">
67
- <el-tab-pane
68
- :label="item.name"
69
- :name="item.id || String(index + 1)"
70
- :key="item.id"
71
- lazy
72
- v-loading="loadings[item.id || String(index)]"
73
- element-loading-background="rgba(0, 0, 0, 0.01)"
74
- element-loading-text="加载中..."
75
- v-if="!hides.includes(item.name) && !item.hide"
76
- >
77
- <el-scrollbar
78
- class="es-scrollbar es-public-search-scrollbar"
79
- :infinite-scroll="
80
- () => {
81
- handleSearchd(item, index);
82
- }
83
- "
84
- :infinite-scroll-disabled="disabled"
85
- :infinite-scroll-immediate="false"
86
- >
87
- <div class="es-public-search-info" v-show="keyWords">
88
- {{ item.totalCount }}条与"<span
89
- class="es-public-search-more-quote"
90
- >{{ keyWords }}</span
91
- >"相关的搜索结果
92
- </div>
93
- <ul class="es-public-search-lists">
94
- <li
95
- v-for="(ele, idx) in item.records"
96
- class="es-public-search-list-item"
97
- :key="ele.id || `${item.id}_${ele.title}_${idx}`"
98
- @click="handleClick(ele, item)"
99
- >
100
- <es-icon
101
- class="es-public-search-item-icon"
102
- v-bind="getIcon(ele, item)"
103
- :style="setStyle(ele, index)"
104
- ></es-icon>
105
- <div class="es-public-search-item-name">
106
- {{ ele.name || ele.title || ele.text }}
107
- </div>
108
- <div class="es-public-search-item-texts" v-if="ele.summary">
109
- {{ ele.summary }}
110
- </div>
111
- <div class="es-public-search-item-texts">
112
- <template v-if="Array.isArray(ele.infos || ele.footer)">
113
- <span
114
- v-for="(text, idx) in ele.infos || ele.footer"
115
- class="es-public-search-item-text"
116
- :key="idx"
117
- >{{ text }}</span
118
- >
119
- </template>
120
- <template v-else>{{ ele.infos || ele.footer }}</template>
121
- </div>
122
- </li>
123
- </ul>
124
- <p
125
- class="es-public-search-no-more"
126
- v-if="noMore[item.id || String(index)]"
127
- >
128
- 没有更多了
129
- </p>
130
- </el-scrollbar>
131
- </el-tab-pane>
132
- </template>
133
- </el-tabs>
134
- <es-dialog :title="title" :visible.sync="visible" size="max">
135
- <iframe width="100%" height="100%" frameborder="0" :src="url"></iframe>
136
- </es-dialog>
137
- </div>
138
- </template>
139
-
140
- <script>
141
- import util from 'eoss-ui/src/utils/util';
142
- import { searchType } from 'eoss-ui/src/config/api.js';
143
- import { debounce } from 'throttle-debounce';
144
- export default {
145
- name: 'Search',
146
- components: {},
147
- props: {
148
- menuIcon: {
149
- type: String,
150
- default: 'es-icon-application'
151
- },
152
- menus: {
153
- type: Array,
154
- default() {
155
- return [];
156
- }
157
- },
158
- apps: {
159
- type: Array,
160
- default() {
161
- return [];
162
- }
163
- },
164
- searchType: {
165
- type: String,
166
- default: searchType
167
- },
168
- pageSize: {
169
- type: Number,
170
- default: 10
171
- },
172
- hides: {
173
- type: Array,
174
- default() {
175
- return [];
176
- }
177
- }
178
- },
179
- data() {
180
- return {
181
- icons: {
182
- ppt: 'es-icon-ppt',
183
- png: 'es-icon-solid-tupian',
184
- gif: 'es-icon-solid-tupian',
185
- jpg: 'es-icon-solid-tupian',
186
- xls: 'es-icon-excel',
187
- xlsx: 'es-icon-excel',
188
- docx: 'es-icon-word',
189
- doc: 'es-icon-word',
190
- rar: 'es-icon-zip',
191
- zip: 'es-icon-zip',
192
- txt: 'es-icon-txt',
193
- ipa: 'es-icon-pingguo',
194
- apk: 'es-icon-anzhuo',
195
- mp4: 'es-icon-video',
196
- avi: 'es-icon-video',
197
- mp3: 'es-icon-audio',
198
- wma: 'es-icon-audio',
199
- pdf: 'es-icon-pdf'
200
- },
201
- colors: [
202
- '#46D3BA',
203
- '#2591F7',
204
- '#40C274',
205
- '#E34D59',
206
- '#FF9C52',
207
- '#17C27B'
208
- ],
209
- keyWords: '',
210
- active: '0',
211
- types: [],
212
- lists: [],
213
- loadings: {},
214
- noMore: {},
215
- isLoading: false,
216
- title: '',
217
- visible: false,
218
- url: ''
219
- };
220
- },
221
- computed: {
222
- loading() {
223
- return this.active == '0' && this.isLoading;
224
- },
225
- disabled() {
226
- return this.loadings[this.active] || this.noMore[this.active];
227
- }
228
- },
229
- watch: {
230
- keyWords(val) {
231
- this.handleSearchAll(val);
232
- }
233
- },
234
- beforeCreate() {
235
- this.handleSearchAll = debounce(1000, (res) => {
236
- this.searchAll(res);
237
- });
238
- this.handleSearchd = debounce(500, (obj, index) => {
239
- this.handleSearch(obj, index, false);
240
- });
241
- },
242
- created() {
243
- this.getTypes();
244
- },
245
- mounted() {},
246
- methods: {
247
- getIcon(res, item) {
248
- let icon;
249
- let cls;
250
- if (res.icon || res.icons) {
251
- icon = this.icons[(res.icon || res.icons).toLowerCase()];
252
- if (!icon) {
253
- if (res.icon == '#last' || res.icons == '#last') {
254
- let title = res.title || res.name || res.text;
255
- icon = title.substr(-1, 1);
256
- cls = 'es-public-search-item-icon-text';
257
- } else {
258
- cls = 'es-public-search-item-icons';
259
- icon = res.icon || res.icons;
260
- }
261
- }
262
- } else {
263
- let title = res.title || res.name || res.text;
264
- let key = title.split('.')[1];
265
- icon = key ? this.icons[key.toLowerCase()] : '';
266
- if (!icon) {
267
- icon =
268
- item.name == '菜单' || item.name == '应用'
269
- ? this.menuIcon
270
- : title.substr(-1, 1);
271
- cls = 'es-public-search-item-icon-text';
272
- }
273
- }
274
- return { class: cls, contents: icon };
275
- },
276
- setStyle(res, index) {
277
- if (res.icon || res.icons) {
278
- let icon = this.icons[(res.icon || res.icons).toLowerCase()];
279
- if (!icon && res.icon != '#last') {
280
- return { backgroundColor: this.colors[index % this.colors.length] };
281
- }
282
- } else {
283
- return { backgroundColor: this.colors[index % this.colors.length] };
284
- }
285
- return {};
286
- },
287
- getTypes() {
288
- util
289
- .ajax({
290
- url: this.searchType,
291
- method: 'post',
292
- format: false,
293
- data: {
294
- terminalType: 'web'
295
- }
296
- })
297
- .then((res) => {
298
- if (res.rCode == 0) {
299
- let { results } = res;
300
- let loadings = {};
301
- let noMore = {};
302
- let types = results.catalog.map((item, index) => {
303
- loadings[item.id || String(index)] = false;
304
- noMore[item.id || String(index)] = false;
305
- return {
306
- ...item,
307
- pageNum: 0,
308
- pageCount: 1,
309
- records: [],
310
- hide:
311
- item.name == '应用' && this.apps.length == 0 ? true : false
312
- };
313
- });
314
- this.types = types;
315
- this.loadings = loadings;
316
- this.noMore = noMore;
317
- }
318
- });
319
- },
320
- searchAll(keyWords) {
321
- for (let i = 0; i < this.types.length; i++) {
322
- let item = this.types[i];
323
- if (keyWords && !this.hides.includes(item.name) && !item.hide) {
324
- this.types[i].records = [];
325
- this.types[i].totalCount = 0;
326
- this.types[i].pageCount = 1;
327
- this.types[i].pageNum = 0;
328
- this.$set(this.loadings, item.id || String(i), true);
329
- this.$set(this.noMore, item.id || String(i), false);
330
- if (item.name == '菜单' && this.menus.length) {
331
- this.isLoading = false;
332
- this.types[i].records = this.searchData(this.menus, keyWords);
333
- this.types[i].totalCount = this.types[i].records.length;
334
- this.types[i].pageCount = 1;
335
- this.types[i].pageNum = 1;
336
- this.$set(this.loadings, item.id || String(i), false);
337
- this.$set(this.noMore, item.id || String(i), true);
338
- } else if (item.name == '应用' && this.apps.length) {
339
- this.isLoading = false;
340
- this.types[i].records = this.searchData(this.apps, keyWords);
341
- this.types[i].totalCount = this.types[i].records.length;
342
- this.types[i].pageCount = 1;
343
- this.types[i].pageNum = 1;
344
- this.$set(this.loadings, item.id || String(i), false);
345
- this.$set(this.noMore, item.id || String(i), true);
346
- } else if (item.dataRequestUrl) {
347
- this.isLoading = true;
348
- this.handleSearch(item, i, true);
349
- } else {
350
- this.types[i].records = [];
351
- this.types[i].totalCount = 0;
352
- this.types[i].pageCount = 1;
353
- this.types[i].pageNum = 0;
354
- this.$set(this.loadings, item.id || String(i), false);
355
- this.$set(this.noMore, item.id || String(i), true);
356
- }
357
- } else {
358
- this.isLoading = false;
359
- this.types[i].records = [];
360
- this.types[i].totalCount = 0;
361
- this.types[i].pageCount = 1;
362
- this.types[i].pageNum = 0;
363
- this.$set(this.loadings, item.id || String(i), false);
364
- this.$set(this.noMore, item.id || String(i), true);
365
- }
366
- }
367
- },
368
- searchData(data, name) {
369
- let records = [];
370
- data.forEach((item) => {
371
- let words = item.name || item.text;
372
- if (words.indexOf(name) > -1 && item.permission !== false) {
373
- records.push(item);
374
- }
375
- if (item.children && item.children.length) {
376
- records = records.concat(this.searchData(item.children, name));
377
- }
378
- if (item.fourthTabs && item.fourthTabs.length) {
379
- records = records.concat(this.searchData(item.fourthTabs, name));
380
- }
381
- });
382
- return records;
383
- },
384
- handleSearch(obj, index, reset) {
385
- if (obj.pageNum < obj.pageCount && this.keyWords) {
386
- this.$set(this.loadings, obj.id || String(index), true);
387
- if (this.active == '0') {
388
- this.isLoading = true;
389
- }
390
- util
391
- .ajax({
392
- url: obj.dataRequestUrl,
393
- method: 'post',
394
- format: false,
395
- data: {
396
- pageNum: obj.pageNum + 1,
397
- pageSize: this.pageSize,
398
- search: this.keyWords,
399
- terminalType: 'web'
400
- }
401
- })
402
- .then((res) => {
403
- this.$set(this.loadings, obj.id || String(index), false);
404
- let flag = false;
405
- for (let i in this.loadings) {
406
- if (this.loadings[i]) {
407
- flag = true;
408
- break;
409
- }
410
- }
411
- if (!flag) {
412
- this.isLoading = false;
413
- }
414
- if (res.rCode == 0) {
415
- let { results } = res;
416
- obj.totalCount = results.totalCount;
417
- obj.pageCount = results.pageCount;
418
- obj.pageNum = results.pageNum;
419
- obj.records = reset
420
- ? results.records
421
- : obj.records.concat(results.records);
422
- this.$set(
423
- this.noMore,
424
- obj.id || String(index),
425
- results.pageNum >= results.pageCount
426
- );
427
- } else {
428
- this.types[index].records = [];
429
- this.types[index].totalCount = 0;
430
- this.types[index].pageCount = 1;
431
- this.types[index].pageNum = 0;
432
- this.$set(this.loadings, obj.id || String(index), false);
433
- this.$set(this.noMore, obj.id || String(index), true);
434
- }
435
- })
436
- .catch((err) => {
437
- this.isLoading = false;
438
- this.types[index].records = [];
439
- this.types[index].totalCount = 0;
440
- this.types[index].pageCount = 1;
441
- this.types[index].pageNum = 0;
442
- this.$set(this.loadings, obj.id || String(index), false);
443
- this.$set(this.noMore, obj.id || String(index), true);
444
- if (err.message && err.message !== 'canceled') {
445
- this.$message.error(err.message);
446
- }
447
- });
448
- }
449
- },
450
- handleTabs(res, index) {
451
- this.active = res.id || String(index + 1);
452
- },
453
- handleClick(res, parent) {
454
- if (res.detailUrl) {
455
- this.title = res.title;
456
- this.url = res.detailUrl;
457
- this.visible = true;
458
- } else {
459
- this.$emit('select', res, parent);
460
- }
461
- }
462
- }
463
- };
464
- </script>
1
+ <template>
2
+ <div class="es-public-search-box">
3
+ <el-input
4
+ class="es-public-search-input"
5
+ placeholder="请输入关键字"
6
+ clearable
7
+ prefix-icon="el-icon-search"
8
+ v-model="keyWords"
9
+ round
10
+ ></el-input>
11
+ <el-tabs class="es-public-search-tabs" v-model="active">
12
+ <el-tab-pane label="综合" name="0">
13
+ <el-scrollbar class="es-scrollbar">
14
+ <template v-for="(item, index) in types">
15
+ <div
16
+ v-if="item.records && item.records.length"
17
+ class="es-public-search-content"
18
+ :key="item.id"
19
+ >
20
+ <div class="es-public-search-title">{{ item.name }}</div>
21
+ <ul class="es-public-search-list">
22
+ <li
23
+ v-for="(ele, idx) in item.records.slice(0, 3)"
24
+ class="es-public-search-list-item"
25
+ :key="ele.id || `${item.id}_${ele.title}_${idx}`"
26
+ @click="handleClick(ele, item)"
27
+ >
28
+ <es-icon
29
+ class="es-public-search-item-icon"
30
+ v-bind="getIcon(ele, item)"
31
+ :style="setStyle(ele, index)"
32
+ ></es-icon>
33
+ <div class="es-public-search-item-name">
34
+ {{ ele.name || ele.title || ele.text }}
35
+ </div>
36
+ <div class="es-public-search-item-texts" v-if="ele.summary">
37
+ {{ ele.summary }}
38
+ </div>
39
+ <div class="es-public-search-item-texts">
40
+ <template v-if="Array.isArray(ele.infos || ele.footer)">
41
+ <span
42
+ v-for="(text, idx) in ele.infos || ele.footer"
43
+ class="es-public-search-item-text"
44
+ :key="idx"
45
+ >{{ text }}</span
46
+ >
47
+ </template>
48
+ <template v-else>{{ ele.infos || ele.footer }}</template>
49
+ </div>
50
+ </li>
51
+ </ul>
52
+ <div class="es-public-search-more">
53
+ <span
54
+ class="es-public-search-more-text"
55
+ @click="handleTabs(item, index)"
56
+ >在<span class="es-public-search-more-quote">{{
57
+ item.name
58
+ }}</span
59
+ >中搜索全部</span
60
+ >
61
+ </div>
62
+ </div>
63
+ </template>
64
+ </el-scrollbar>
65
+ </el-tab-pane>
66
+ <template v-for="(item, index) in types">
67
+ <el-tab-pane
68
+ :label="item.name"
69
+ :name="item.id || String(index + 1)"
70
+ :key="item.id"
71
+ lazy
72
+ v-loading="loadings[item.id || String(index)]"
73
+ element-loading-background="rgba(0, 0, 0, 0.01)"
74
+ element-loading-text="加载中..."
75
+ v-if="!hides.includes(item.name) && !item.hide"
76
+ >
77
+ <el-scrollbar
78
+ class="es-scrollbar es-public-search-scrollbar"
79
+ :infinite-scroll="
80
+ () => {
81
+ handleSearchd(item, index);
82
+ }
83
+ "
84
+ :infinite-scroll-disabled="disabled"
85
+ :infinite-scroll-immediate="false"
86
+ >
87
+ <div class="es-public-search-info" v-show="keyWords">
88
+ {{ item.totalCount }}条与"<span
89
+ class="es-public-search-more-quote"
90
+ >{{ keyWords }}</span
91
+ >"相关的搜索结果
92
+ </div>
93
+ <ul class="es-public-search-lists">
94
+ <li
95
+ v-for="(ele, idx) in item.records"
96
+ class="es-public-search-list-item"
97
+ :key="ele.id || `${item.id}_${ele.title}_${idx}`"
98
+ @click="handleClick(ele, item)"
99
+ >
100
+ <es-icon
101
+ class="es-public-search-item-icon"
102
+ v-bind="getIcon(ele, item)"
103
+ :style="setStyle(ele, index)"
104
+ ></es-icon>
105
+ <div class="es-public-search-item-name">
106
+ {{ ele.name || ele.title || ele.text }}
107
+ </div>
108
+ <div class="es-public-search-item-texts" v-if="ele.summary">
109
+ {{ ele.summary }}
110
+ </div>
111
+ <div class="es-public-search-item-texts">
112
+ <template v-if="Array.isArray(ele.infos || ele.footer)">
113
+ <span
114
+ v-for="(text, idx) in ele.infos || ele.footer"
115
+ class="es-public-search-item-text"
116
+ :key="idx"
117
+ >{{ text }}</span
118
+ >
119
+ </template>
120
+ <template v-else>{{ ele.infos || ele.footer }}</template>
121
+ </div>
122
+ </li>
123
+ </ul>
124
+ <p
125
+ class="es-public-search-no-more"
126
+ v-if="noMore[item.id || String(index)]"
127
+ >
128
+ 没有更多了
129
+ </p>
130
+ </el-scrollbar>
131
+ </el-tab-pane>
132
+ </template>
133
+ </el-tabs>
134
+ <es-dialog :title="title" :visible.sync="visible" size="max">
135
+ <iframe width="100%" height="100%" frameborder="0" :src="url"></iframe>
136
+ </es-dialog>
137
+ </div>
138
+ </template>
139
+
140
+ <script>
141
+ import util from 'eoss-ui/src/utils/util';
142
+ import { searchType } from 'eoss-ui/src/config/api.js';
143
+ import { debounce } from 'throttle-debounce';
144
+ export default {
145
+ name: 'Search',
146
+ components: {},
147
+ props: {
148
+ menuIcon: {
149
+ type: String,
150
+ default: 'es-icon-application'
151
+ },
152
+ menus: {
153
+ type: Array,
154
+ default() {
155
+ return [];
156
+ }
157
+ },
158
+ apps: {
159
+ type: Array,
160
+ default() {
161
+ return [];
162
+ }
163
+ },
164
+ searchType: {
165
+ type: String,
166
+ default: searchType
167
+ },
168
+ pageSize: {
169
+ type: Number,
170
+ default: 10
171
+ },
172
+ hides: {
173
+ type: Array,
174
+ default() {
175
+ return [];
176
+ }
177
+ }
178
+ },
179
+ data() {
180
+ return {
181
+ icons: {
182
+ ppt: 'es-icon-ppt',
183
+ png: 'es-icon-solid-tupian',
184
+ gif: 'es-icon-solid-tupian',
185
+ jpg: 'es-icon-solid-tupian',
186
+ xls: 'es-icon-excel',
187
+ xlsx: 'es-icon-excel',
188
+ docx: 'es-icon-word',
189
+ doc: 'es-icon-word',
190
+ rar: 'es-icon-zip',
191
+ zip: 'es-icon-zip',
192
+ txt: 'es-icon-txt',
193
+ ipa: 'es-icon-pingguo',
194
+ apk: 'es-icon-anzhuo',
195
+ mp4: 'es-icon-video',
196
+ avi: 'es-icon-video',
197
+ mp3: 'es-icon-audio',
198
+ wma: 'es-icon-audio',
199
+ pdf: 'es-icon-pdf'
200
+ },
201
+ colors: [
202
+ '#46D3BA',
203
+ '#2591F7',
204
+ '#40C274',
205
+ '#E34D59',
206
+ '#FF9C52',
207
+ '#17C27B'
208
+ ],
209
+ keyWords: '',
210
+ active: '0',
211
+ types: [],
212
+ lists: [],
213
+ loadings: {},
214
+ noMore: {},
215
+ isLoading: false,
216
+ title: '',
217
+ visible: false,
218
+ url: ''
219
+ };
220
+ },
221
+ computed: {
222
+ loading() {
223
+ return this.active == '0' && this.isLoading;
224
+ },
225
+ disabled() {
226
+ return this.loadings[this.active] || this.noMore[this.active];
227
+ }
228
+ },
229
+ watch: {
230
+ keyWords(val) {
231
+ this.handleSearchAll(val);
232
+ }
233
+ },
234
+ beforeCreate() {
235
+ this.handleSearchAll = debounce(1000, (res) => {
236
+ this.searchAll(res);
237
+ });
238
+ this.handleSearchd = debounce(500, (obj, index) => {
239
+ this.handleSearch(obj, index, false);
240
+ });
241
+ },
242
+ created() {
243
+ this.getTypes();
244
+ },
245
+ mounted() {},
246
+ methods: {
247
+ getIcon(res, item) {
248
+ let icon;
249
+ let cls;
250
+ if (res.icon || res.icons) {
251
+ icon = this.icons[(res.icon || res.icons).toLowerCase()];
252
+ if (!icon) {
253
+ if (res.icon == '#last' || res.icons == '#last') {
254
+ let title = res.title || res.name || res.text;
255
+ icon = title.substr(-1, 1);
256
+ cls = 'es-public-search-item-icon-text';
257
+ } else {
258
+ cls = 'es-public-search-item-icons';
259
+ icon = res.icon || res.icons;
260
+ }
261
+ }
262
+ } else {
263
+ let title = res.title || res.name || res.text;
264
+ let key = title.split('.')[1];
265
+ icon = key ? this.icons[key.toLowerCase()] : '';
266
+ if (!icon) {
267
+ icon =
268
+ item.name == '菜单' || item.name == '应用'
269
+ ? this.menuIcon
270
+ : title.substr(-1, 1);
271
+ cls = 'es-public-search-item-icon-text';
272
+ }
273
+ }
274
+ return { class: cls, contents: icon };
275
+ },
276
+ setStyle(res, index) {
277
+ if (res.icon || res.icons) {
278
+ let icon = this.icons[(res.icon || res.icons).toLowerCase()];
279
+ if (!icon && res.icon != '#last') {
280
+ return { backgroundColor: this.colors[index % this.colors.length] };
281
+ }
282
+ } else {
283
+ return { backgroundColor: this.colors[index % this.colors.length] };
284
+ }
285
+ return {};
286
+ },
287
+ getTypes() {
288
+ util
289
+ .ajax({
290
+ url: this.searchType,
291
+ method: 'post',
292
+ format: false,
293
+ data: {
294
+ terminalType: 'web'
295
+ }
296
+ })
297
+ .then((res) => {
298
+ if (res.rCode == 0) {
299
+ let { results } = res;
300
+ let loadings = {};
301
+ let noMore = {};
302
+ let types = results.catalog.map((item, index) => {
303
+ loadings[item.id || String(index)] = false;
304
+ noMore[item.id || String(index)] = false;
305
+ return {
306
+ ...item,
307
+ pageNum: 0,
308
+ pageCount: 1,
309
+ records: [],
310
+ hide:
311
+ item.name == '应用' && this.apps.length == 0 ? true : false
312
+ };
313
+ });
314
+ this.types = types;
315
+ this.loadings = loadings;
316
+ this.noMore = noMore;
317
+ }
318
+ });
319
+ },
320
+ searchAll(keyWords) {
321
+ for (let i = 0; i < this.types.length; i++) {
322
+ let item = this.types[i];
323
+ if (keyWords && !this.hides.includes(item.name) && !item.hide) {
324
+ this.types[i].records = [];
325
+ this.types[i].totalCount = 0;
326
+ this.types[i].pageCount = 1;
327
+ this.types[i].pageNum = 0;
328
+ this.$set(this.loadings, item.id || String(i), true);
329
+ this.$set(this.noMore, item.id || String(i), false);
330
+ if (item.name == '菜单' && this.menus.length) {
331
+ this.isLoading = false;
332
+ this.types[i].records = this.searchData(this.menus, keyWords);
333
+ this.types[i].totalCount = this.types[i].records.length;
334
+ this.types[i].pageCount = 1;
335
+ this.types[i].pageNum = 1;
336
+ this.$set(this.loadings, item.id || String(i), false);
337
+ this.$set(this.noMore, item.id || String(i), true);
338
+ } else if (item.name == '应用' && this.apps.length) {
339
+ this.isLoading = false;
340
+ this.types[i].records = this.searchData(this.apps, keyWords);
341
+ this.types[i].totalCount = this.types[i].records.length;
342
+ this.types[i].pageCount = 1;
343
+ this.types[i].pageNum = 1;
344
+ this.$set(this.loadings, item.id || String(i), false);
345
+ this.$set(this.noMore, item.id || String(i), true);
346
+ } else if (item.dataRequestUrl) {
347
+ this.isLoading = true;
348
+ this.handleSearch(item, i, true);
349
+ } else {
350
+ this.types[i].records = [];
351
+ this.types[i].totalCount = 0;
352
+ this.types[i].pageCount = 1;
353
+ this.types[i].pageNum = 0;
354
+ this.$set(this.loadings, item.id || String(i), false);
355
+ this.$set(this.noMore, item.id || String(i), true);
356
+ }
357
+ } else {
358
+ this.isLoading = false;
359
+ this.types[i].records = [];
360
+ this.types[i].totalCount = 0;
361
+ this.types[i].pageCount = 1;
362
+ this.types[i].pageNum = 0;
363
+ this.$set(this.loadings, item.id || String(i), false);
364
+ this.$set(this.noMore, item.id || String(i), true);
365
+ }
366
+ }
367
+ },
368
+ searchData(data, name) {
369
+ let records = [];
370
+ data.forEach((item) => {
371
+ let words = item.name || item.text;
372
+ if (words.indexOf(name) > -1 && item.permission !== false) {
373
+ records.push(item);
374
+ }
375
+ if (item.children && item.children.length) {
376
+ records = records.concat(this.searchData(item.children, name));
377
+ }
378
+ if (item.fourthTabs && item.fourthTabs.length) {
379
+ records = records.concat(this.searchData(item.fourthTabs, name));
380
+ }
381
+ });
382
+ return records;
383
+ },
384
+ handleSearch(obj, index, reset) {
385
+ if (obj.pageNum < obj.pageCount && this.keyWords) {
386
+ this.$set(this.loadings, obj.id || String(index), true);
387
+ if (this.active == '0') {
388
+ this.isLoading = true;
389
+ }
390
+ util
391
+ .ajax({
392
+ url: obj.dataRequestUrl,
393
+ method: 'post',
394
+ format: false,
395
+ data: {
396
+ pageNum: obj.pageNum + 1,
397
+ pageSize: this.pageSize,
398
+ search: this.keyWords,
399
+ terminalType: 'web'
400
+ }
401
+ })
402
+ .then((res) => {
403
+ this.$set(this.loadings, obj.id || String(index), false);
404
+ let flag = false;
405
+ for (let i in this.loadings) {
406
+ if (this.loadings[i]) {
407
+ flag = true;
408
+ break;
409
+ }
410
+ }
411
+ if (!flag) {
412
+ this.isLoading = false;
413
+ }
414
+ if (res.rCode == 0) {
415
+ let { results } = res;
416
+ obj.totalCount = results.totalCount;
417
+ obj.pageCount = results.pageCount;
418
+ obj.pageNum = results.pageNum;
419
+ obj.records = reset
420
+ ? results.records
421
+ : obj.records.concat(results.records);
422
+ this.$set(
423
+ this.noMore,
424
+ obj.id || String(index),
425
+ results.pageNum >= results.pageCount
426
+ );
427
+ } else {
428
+ this.types[index].records = [];
429
+ this.types[index].totalCount = 0;
430
+ this.types[index].pageCount = 1;
431
+ this.types[index].pageNum = 0;
432
+ this.$set(this.loadings, obj.id || String(index), false);
433
+ this.$set(this.noMore, obj.id || String(index), true);
434
+ }
435
+ })
436
+ .catch((err) => {
437
+ this.isLoading = false;
438
+ this.types[index].records = [];
439
+ this.types[index].totalCount = 0;
440
+ this.types[index].pageCount = 1;
441
+ this.types[index].pageNum = 0;
442
+ this.$set(this.loadings, obj.id || String(index), false);
443
+ this.$set(this.noMore, obj.id || String(index), true);
444
+ if (err.message && err.message !== 'canceled') {
445
+ this.$message.error(err.message);
446
+ }
447
+ });
448
+ }
449
+ },
450
+ handleTabs(res, index) {
451
+ this.active = res.id || String(index + 1);
452
+ },
453
+ handleClick(res, parent) {
454
+ if (res.detailUrl) {
455
+ this.title = res.title;
456
+ this.url = res.detailUrl;
457
+ this.visible = true;
458
+ } else {
459
+ this.$emit('select', res, parent);
460
+ }
461
+ }
462
+ }
463
+ };
464
+ </script>