@lambo-design/shared 1.0.0-beta.35 → 1.0.0-beta.350

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 (251) hide show
  1. package/config/config.js +20 -3
  2. package/config/index.js +7 -2
  3. package/config/locale.js +61 -0
  4. package/config/themes/atrovirens/atrovirens.css +590 -0
  5. package/config/themes/atrovirens/atrovirens.css.map +1 -0
  6. package/config/themes/atrovirens/atrovirens.less +681 -0
  7. package/config/themes/atrovirens/var.less +689 -0
  8. package/config/themes/blue/blue.css +590 -0
  9. package/config/themes/blue/blue.css.map +1 -0
  10. package/config/themes/blue/blue.less +684 -0
  11. package/config/themes/blue/var.less +692 -0
  12. package/config/themes/blue-208/blue-208.css +590 -0
  13. package/config/themes/blue-208/blue-208.css.map +1 -0
  14. package/config/themes/blue-208/blue-208.less +685 -0
  15. package/config/themes/blue-208/var.less +691 -0
  16. package/config/themes/blue-digital/blue-digital.css +590 -0
  17. package/config/themes/blue-digital/blue-digital.css.map +1 -0
  18. package/config/themes/blue-digital/blue-digital.less +684 -0
  19. package/config/themes/blue-digital/var.less +692 -0
  20. package/config/themes/blue-leaf/blue-leaf.css +590 -0
  21. package/config/themes/blue-leaf/blue-leaf.css.map +1 -0
  22. package/config/themes/blue-leaf/blue-leaf.less +685 -0
  23. package/config/themes/blue-leaf/var.less +691 -0
  24. package/config/themes/blue-white/blue-white.css +590 -0
  25. package/config/themes/blue-white/blue-white.css.map +1 -0
  26. package/config/themes/blue-white/blue-white.less +685 -0
  27. package/config/themes/blue-white/var.less +691 -0
  28. package/config/themes/blue-white-big/blue-white-big.css +590 -0
  29. package/config/themes/blue-white-big/blue-white-big.css.map +1 -0
  30. package/config/themes/blue-white-big/blue-white-big.less +685 -0
  31. package/config/themes/blue-white-big/var.less +691 -0
  32. package/config/themes/blue-white-tight/blue-white-tight.css +591 -0
  33. package/config/themes/blue-white-tight/blue-white-tight.css.map +1 -0
  34. package/config/themes/blue-white-tight/blue-white-tight.less +685 -0
  35. package/config/themes/blue-white-tight/var.less +693 -0
  36. package/config/themes/canglan/canglan.css +590 -0
  37. package/config/themes/canglan/canglan.css.map +1 -0
  38. package/config/themes/canglan/canglan.less +682 -0
  39. package/config/themes/canglan/var.less +693 -0
  40. package/config/themes/cuiwei/cuiwei.css +590 -0
  41. package/config/themes/cuiwei/cuiwei.css.map +1 -0
  42. package/config/themes/cuiwei/cuiwei.less +682 -0
  43. package/config/themes/cuiwei/var.less +691 -0
  44. package/config/themes/danqing/danqing.css +590 -0
  45. package/config/themes/danqing/danqing.css.map +1 -0
  46. package/config/themes/danqing/danqing.less +682 -0
  47. package/config/themes/danqing/danqing.wxss +576 -0
  48. package/config/themes/danqing/var.less +696 -0
  49. package/config/themes/deep/deep.css +590 -0
  50. package/config/themes/deep/deep.css.map +1 -0
  51. package/config/themes/deep/deep.less +682 -0
  52. package/config/themes/deep/var.less +694 -0
  53. package/config/themes/default/default.css +589 -242
  54. package/config/themes/default/default.css.map +1 -1
  55. package/config/themes/default/default.less +381 -16
  56. package/config/themes/default/var.less +390 -11
  57. package/config/themes/eap/eap.css +590 -0
  58. package/config/themes/eap/eap.css.map +1 -0
  59. package/config/themes/eap/eap.less +685 -0
  60. package/config/themes/eap/var.less +693 -0
  61. package/config/themes/gold/gold.css +590 -0
  62. package/config/themes/gold/gold.css.map +1 -0
  63. package/config/themes/gold/gold.less +685 -0
  64. package/config/themes/gold/var.less +386 -5
  65. package/config/themes/index.js +32 -4
  66. package/config/themes/lime/lime.css +590 -0
  67. package/config/themes/lime/lime.css.map +1 -0
  68. package/config/themes/lime/lime.less +685 -0
  69. package/config/themes/lime/var.less +385 -5
  70. package/config/themes/orange/orange.css +589 -242
  71. package/config/themes/orange/orange.css.map +1 -1
  72. package/config/themes/orange/orange.less +366 -0
  73. package/config/themes/orange/var.less +386 -5
  74. package/config/themes/red/red.css +589 -242
  75. package/config/themes/red/red.css.map +1 -1
  76. package/config/themes/red/red.less +366 -0
  77. package/config/themes/red/var.less +386 -5
  78. package/config/themes/sichuan/sichuan.css +590 -0
  79. package/config/themes/sichuan/sichuan.css.map +1 -0
  80. package/config/themes/sichuan/sichuan.less +685 -0
  81. package/config/themes/sichuan/var.less +691 -0
  82. package/config/themes/theme-atrovirens.js +572 -0
  83. package/config/themes/theme-b208.js +572 -0
  84. package/config/themes/theme-bd.js +572 -0
  85. package/config/themes/theme-bl.js +572 -0
  86. package/config/themes/theme-blue.js +572 -0
  87. package/config/themes/theme-bw.js +572 -0
  88. package/config/themes/theme-bwb.js +572 -0
  89. package/config/themes/theme-bwt.js +573 -0
  90. package/config/themes/theme-canglan.js +574 -0
  91. package/config/themes/theme-cuiwei.js +574 -0
  92. package/config/themes/theme-danqing.js +575 -0
  93. package/config/themes/theme-deep.js +572 -0
  94. package/config/themes/theme-default.js +379 -60
  95. package/config/themes/theme-eap.js +572 -0
  96. package/config/themes/theme-gold.js +327 -8
  97. package/config/themes/theme-lime.js +327 -8
  98. package/config/themes/theme-orange.js +561 -29
  99. package/config/themes/theme-red.js +564 -33
  100. package/config/themes/theme-sichuan.js +572 -0
  101. package/config/themes/theme-white.js +572 -0
  102. package/config/themes/white/var.less +692 -0
  103. package/config/themes/white/white.css +590 -0
  104. package/config/themes/white/white.css.map +1 -0
  105. package/config/themes/white/white.less +685 -0
  106. package/directives/module/print.js +1 -0
  107. package/directives/module/vue-print-nb/README.md +63 -0
  108. package/directives/module/vue-print-nb/print.js +94 -0
  109. package/directives/module/vue-print-nb/printarea.js +532 -0
  110. package/index.js +7 -1
  111. package/nstyles/common.less +197 -0
  112. package/nstyles/components/404.less +46 -0
  113. package/nstyles/components/button.less +34 -0
  114. package/nstyles/components/date-picker.less +41 -0
  115. package/nstyles/components/drawer.less +20 -0
  116. package/nstyles/components/dropdown.less +18 -0
  117. package/nstyles/components/excel-flow.less +72 -0
  118. package/nstyles/components/form.less +314 -0
  119. package/nstyles/components/index.less +23 -0
  120. package/nstyles/components/layout/collect.less +10 -0
  121. package/nstyles/components/layout/detail-view.less +107 -0
  122. package/nstyles/components/layout/full-screen.less +7 -0
  123. package/nstyles/components/layout/index.less +7 -0
  124. package/nstyles/components/layout/other-menu.less +142 -0
  125. package/nstyles/components/layout/page-view.less +101 -0
  126. package/nstyles/components/layout/sider-trigger.less +41 -0
  127. package/nstyles/components/layout/tags-nav.less +113 -0
  128. package/nstyles/components/modal.less +90 -0
  129. package/nstyles/components/n-button.less +131 -0
  130. package/nstyles/components/n-image-preview.less +131 -0
  131. package/nstyles/components/n-model/index.less +19 -0
  132. package/nstyles/components/n-model/report-index.less +43 -0
  133. package/nstyles/components/n-panel.less +41 -0
  134. package/nstyles/components/n-picker.less +37 -0
  135. package/nstyles/components/n-sign.less +17 -0
  136. package/nstyles/components/n-tooltip.less +10 -0
  137. package/nstyles/components/panel.less +31 -0
  138. package/nstyles/components/select.less +3 -0
  139. package/nstyles/components/sign.less +27 -0
  140. package/nstyles/components/table.less +500 -0
  141. package/nstyles/components/tree.less +166 -0
  142. package/nstyles/components/upload.less +174 -0
  143. package/nstyles/index.less +5 -0
  144. package/nstyles/reset.less +73 -0
  145. package/nstyles/third/ag.less +226 -0
  146. package/nstyles/third/icons/sort-desc.svg +1 -0
  147. package/nstyles/third/icons/sort-up.svg +1 -0
  148. package/nstyles/third/icons/sorting.svg +1 -0
  149. package/nstyles/third/index.less +11 -0
  150. package/nstyles/third/view-design.less +396 -0
  151. package/nstyles/variables/base.less +143 -0
  152. package/nstyles/variables/index.less +4 -0
  153. package/nstyles/variables/theme/default/button.less +7 -0
  154. package/nstyles/variables/theme/default/common.less +60 -0
  155. package/nstyles/variables/theme/default/index.less +7 -0
  156. package/nstyles/variables/theme/default/layout.less +40 -0
  157. package/nstyles/variables/theme/default/table.less +37 -0
  158. package/nstyles/variables/theme/default/tag.less +3 -0
  159. package/nstyles/variables/theme/default/upload.less +3 -0
  160. package/nstyles/variables/theme/index.less +13 -0
  161. package/nstyles/variables/theme/lsv/button.less +7 -0
  162. package/nstyles/variables/theme/lsv/common.less +39 -0
  163. package/nstyles/variables/theme/lsv/index.less +5 -0
  164. package/nstyles/variables/theme/lsv/layout.less +21 -0
  165. package/nstyles/variables/theme/lsv/table.less +20 -0
  166. package/nstyles/variables/theme/lsv/tag.less +3 -0
  167. package/nstyles/variables/theme/small/button.less +7 -0
  168. package/nstyles/variables/theme/small/common.less +41 -0
  169. package/nstyles/variables/theme/small/index.less +5 -0
  170. package/nstyles/variables/theme/small/layout.less +21 -0
  171. package/nstyles/variables/theme/small/table.less +17 -0
  172. package/nstyles/variables/theme/small/tag.less +3 -0
  173. package/package.json +28 -7
  174. package/plugin/index.js +12 -0
  175. package/plugin/module/date-format.js +30 -0
  176. package/plugin/module/loading.js +26 -0
  177. package/plugin/module/warn-handler.js +11 -0
  178. package/styles/image/indicator-card-header.png +0 -0
  179. package/styles/image/inspur.png +0 -0
  180. package/styles/image/lan_navigator.png +0 -0
  181. package/styles/image/layout-header-bg-canglan.png +0 -0
  182. package/styles/image/layout-header-bg-cuiwei.png +0 -0
  183. package/styles/image/lv_navigator.png +0 -0
  184. package/utils/ajax/abort-controller.js +70 -0
  185. package/utils/ajax/cancel-reason.js +25 -0
  186. package/utils/ajax/cancel-token.js +83 -0
  187. package/utils/ajax/content-type.js +30 -0
  188. package/utils/ajax/headers.js +11 -0
  189. package/utils/ajax/interceptors.js +45 -10
  190. package/utils/ajax/sseFetchUtil.js +118 -0
  191. package/utils/ajax/throttle.js +49 -0
  192. package/utils/assist.js +155 -27
  193. package/utils/base64.js +126 -0
  194. package/utils/blob.js +47 -0
  195. package/utils/context-menu.js +264 -0
  196. package/utils/crypto/aes.js +23 -0
  197. package/utils/crypto/index.js +10 -0
  198. package/utils/crypto/rsa.js +23 -0
  199. package/utils/date.js +334 -305
  200. package/utils/dict/built-in-dict.js +20 -0
  201. package/utils/dict/index.js +191 -0
  202. package/utils/event.js +72 -0
  203. package/utils/excel.js +502 -290
  204. package/utils/file.js +19 -0
  205. package/utils/form/validate.js +29 -0
  206. package/utils/half-year.js +68 -0
  207. package/utils/index.js +37 -0
  208. package/utils/json.js +44 -0
  209. package/utils/locale/en-US.js +177 -0
  210. package/utils/locale/zh-CN.js +181 -0
  211. package/utils/lodop.js +5 -0
  212. package/utils/menu/index.js +292 -15
  213. package/utils/mime_type.js +67 -0
  214. package/utils/modelerUtil.js +4 -1
  215. package/utils/n/api.js +38 -0
  216. package/utils/n/date.js +57 -0
  217. package/utils/n/index.js +10 -0
  218. package/utils/n/is-type.js +176 -0
  219. package/utils/n/number.js +144 -0
  220. package/utils/n/permission-cache.js +11 -0
  221. package/utils/n/reuqest/axiosN.js +17 -0
  222. package/utils/n/reuqest/content-type.js +19 -0
  223. package/utils/n/reuqest/interceptors.js +95 -0
  224. package/utils/n/reuqest/url-params.js +12 -0
  225. package/utils/n/storage.js +51 -0
  226. package/utils/n/token.js +51 -0
  227. package/utils/n/user-cache.js +11 -0
  228. package/utils/n/user.js +34 -0
  229. package/utils/n/uuid.js +16 -0
  230. package/utils/n-generator-routers.js +208 -0
  231. package/utils/n-router.js +205 -0
  232. package/utils/n-theme.js +30 -0
  233. package/utils/number.js +72 -15
  234. package/utils/oss.js +57 -0
  235. package/utils/platform.js +882 -33
  236. package/utils/quarter.js +58 -0
  237. package/utils/storage.js +198 -0
  238. package/utils/style.js +24 -0
  239. package/utils/theme.js +98 -3
  240. package/utils/transfer-queue.js +7 -0
  241. package/utils/transform.js +205 -0
  242. package/utils/type.js +102 -0
  243. package/utils/util.js +795 -0
  244. package/utils/vForm.js +349 -0
  245. package/utils/validator.js +181 -0
  246. package/config/themes/gold/default.css +0 -243
  247. package/config/themes/gold/default.css.map +0 -1
  248. package/config/themes/gold/default.less +0 -320
  249. package/config/themes/lime/default.css +0 -243
  250. package/config/themes/lime/default.css.map +0 -1
  251. package/config/themes/lime/default.less +0 -320
package/utils/platform.js CHANGED
@@ -1,8 +1,48 @@
1
- import Bus from './bus';
1
+ import {deepCopy} from './assist';
2
+ import _ from 'lodash';
3
+ import config from "../config/config";
4
+ import systemLogo from '../styles/image/inspur.png';
5
+ import {changeByThemeKey, changeThemeByThemeId} from "./theme";
6
+ import ajax from "./ajax";
7
+ import qs from 'qs'
8
+ import {disableF12, disableRightClick, disableShortcutKeys, enableRightClick, enableShortcutKeys, enableF12,
9
+ disableTextSelection, enableTextSelection} from "./context-menu";
2
10
 
3
- export const TOKEN_KEY = 'v8-token'
11
+ export let TOKEN_KEY = "lambo-token"
4
12
 
5
- export const COOKIE_KEY = 'lambo-sso-key'
13
+ export let getTokenKey = function () {
14
+ if (config.tokenKey) {
15
+ return config.tokenKey
16
+ }
17
+ return "lambo-token"
18
+ }
19
+
20
+ export let COOKIE_KEY = "lambo-sso-key"
21
+
22
+ export let getCookieKey = function () {
23
+ if (config.cookieKey) {
24
+ return config.cookieKey
25
+ }
26
+ return "lambo-sso-key"
27
+ }
28
+
29
+ export let SSO_TOKEN_KEY = "lambo-sso-token"
30
+
31
+ export let getSsoTokenKey = function () {
32
+ if (config.ssoTokenKey) {
33
+ return config.ssoTokenKey
34
+ }
35
+ return "lambo-sso-token"
36
+ }
37
+
38
+ export let PASSWORD_EXPIRED_KEY = "lambo-password-expired-time"
39
+
40
+ export let getPasswordExpiredKey = function () {
41
+ if (config.passwordExpiredKey) {
42
+ return config.passwordExpiredKey
43
+ }
44
+ return "lambo-password-expired-time"
45
+ }
6
46
 
7
47
  export function objEqual(obj1, obj2) {
8
48
  const keysArr1 = Object.keys(obj1)
@@ -13,6 +53,10 @@ export function objEqual(obj1, obj2) {
13
53
  else return !keysArr1.some(key => obj1[key] !== obj2[key])
14
54
  }
15
55
 
56
+ export function arraysEqual(a, b) {
57
+ return _.isEqual(a,b)
58
+ }
59
+
16
60
  /**
17
61
  * @param {Array} list 标签列表
18
62
  * @param {String} name 当前关闭的标签的name
@@ -31,47 +75,47 @@ export function getNextRoute(list, route) {
31
75
 
32
76
 
33
77
  export const setToken = (token) => {
34
- sessionStorage.setItem(TOKEN_KEY, token)
78
+ typeof sessionStorage != 'undefined' && sessionStorage.setItem(getTokenKey(), token)
35
79
  }
36
80
 
37
81
  export const getToken = () => {
38
- const token = sessionStorage.getItem(TOKEN_KEY)
82
+ const token = typeof sessionStorage != 'undefined' && sessionStorage.getItem(getTokenKey())
39
83
  if (token) return token
40
84
  else return false
41
85
  }
42
86
 
43
87
  export const setSessionStorage = (key, value) => {
44
- sessionStorage.setItem(key, JSON.stringify(value))
88
+ typeof sessionStorage != 'undefined' && sessionStorage.setItem(key, JSON.stringify(value))
45
89
  }
46
90
 
47
91
  export const getSessionStorage = (key) => {
48
- const value = sessionStorage.getItem(key)
92
+ const value = typeof sessionStorage != 'undefined' && sessionStorage.getItem(key)
49
93
  if (value) return JSON.parse(value)
50
94
  else return null
51
95
  }
52
96
 
53
97
  export const removeSessionStorage = (key) => {
54
- return sessionStorage.removeItem(key)
98
+ return typeof sessionStorage != 'undefined' && sessionStorage.removeItem(key)
55
99
  }
56
100
 
57
101
  export const clearSessionStorage = () => {
58
- return sessionStorage.clear()
102
+ return typeof sessionStorage != 'undefined' && sessionStorage.clear()
59
103
  }
60
104
 
61
105
  export const setLocalStorage = (key, localstorage) => {
62
- localStorage.setItem(key, localstorage)
106
+ typeof localStorage != 'undefined' &&localStorage.setItem(key, localstorage)
63
107
  }
64
108
 
65
109
  export const getLocalStorage = (key) => {
66
- return localStorage.getItem(key)
110
+ return typeof localStorage != 'undefined' &&localStorage.getItem(key)
67
111
  }
68
112
 
69
113
  export const removeLocalStorage = (key) => {
70
- return localStorage.removeItem(key)
114
+ return typeof localStorage != 'undefined' &&localStorage.removeItem(key)
71
115
  }
72
116
 
73
117
  export const clearLocalStorage = () => {
74
- return localStorage.clear()
118
+ return typeof localStorage != 'undefined' &&localStorage.clear()
75
119
  }
76
120
 
77
121
  export const hasChild = (item) => {
@@ -315,6 +359,12 @@ export const getTableDataFromArray = (array) => {
315
359
  }
316
360
  }
317
361
 
362
+ /**
363
+ * 寻找上级节点
364
+ * @param ele
365
+ * @param tag
366
+ * @returns {*}
367
+ */
318
368
  export const findNodeUpper = (ele, tag) => {
319
369
  if (ele.parentNode) {
320
370
  if (ele.parentNode.tagName === tag.toUpperCase()) {
@@ -325,6 +375,12 @@ export const findNodeUpper = (ele, tag) => {
325
375
  }
326
376
  }
327
377
 
378
+ /**
379
+ * 根据class寻找上级节点
380
+ * @param ele
381
+ * @param classes
382
+ * @returns {*}
383
+ */
328
384
  export const findNodeUpperByClasses = (ele, classes) => {
329
385
  let parentNode = ele.parentNode
330
386
  if (parentNode) {
@@ -337,6 +393,12 @@ export const findNodeUpperByClasses = (ele, classes) => {
337
393
  }
338
394
  }
339
395
 
396
+ /**
397
+ * 根据ele寻找下级节点
398
+ * @param ele
399
+ * @param tag
400
+ * @returns {*}
401
+ */
340
402
  export const findNodeDownward = (ele, tag) => {
341
403
  const tagName = tag.toUpperCase()
342
404
  if (ele.childNodes.length) {
@@ -350,6 +412,12 @@ export const findNodeDownward = (ele, tag) => {
350
412
  }
351
413
  }
352
414
 
415
+ /**
416
+ * @description 判断要查询的数组是否至少有一个元素包含在目标数组中
417
+ * @param access 需要查询的数组
418
+ * @param canViewAccess 目标数组
419
+ * @returns {*}
420
+ */
353
421
  export const showByAccess = (access, canViewAccess) => {
354
422
  return hasOneOf(canViewAccess, access)
355
423
  }
@@ -379,16 +447,23 @@ export const routeHasExist = (tagNavList, routeItem) => {
379
447
  return res
380
448
  }
381
449
 
382
- // scrollTop animation
450
+ /**
451
+ * scrollTop animation
452
+ * @param el
453
+ * @param from
454
+ * @param to
455
+ * @param duration
456
+ * @param endCallback
457
+ */
383
458
  export const scrollTop = (el, from = 0, to, duration = 500, endCallback) => {
384
459
  if (!window.requestAnimationFrame) {
385
460
  window.requestAnimationFrame = (
386
- window.webkitRequestAnimationFrame ||
387
- window.mozRequestAnimationFrame ||
388
- window.msRequestAnimationFrame ||
389
- function (callback) {
390
- return window.setTimeout(callback, 1000 / 60)
391
- }
461
+ window.webkitRequestAnimationFrame ||
462
+ window.mozRequestAnimationFrame ||
463
+ window.msRequestAnimationFrame ||
464
+ function (callback) {
465
+ return window.setTimeout(callback, 1000 / 60)
466
+ }
392
467
  )
393
468
  }
394
469
  const difference = Math.abs(from - to)
@@ -428,8 +503,16 @@ export const setTitle = (configTitle,routeItem, vm) => {
428
503
  window.document.title = resTitle
429
504
  }
430
505
 
431
- export const getUrlParams = () => {
432
- const url = location.search; //获取url中"?"符后的字串
506
+ /**
507
+ * 获取浏览器地址url中的参数
508
+ * @param url
509
+ * @returns {Object}
510
+ */
511
+ export const getUrlParams = (url) => {
512
+ if (!url){
513
+ url = location.search;
514
+ }
515
+ //const url = location.search; //获取url中"?"符后的字串
433
516
  const theRequest = new Object();
434
517
  if (url.indexOf("?") != -1) {
435
518
  const str = url.substr(1);
@@ -468,6 +551,80 @@ export const getChangeTableDatas = (oldData, newData) => {
468
551
  return list
469
552
  }
470
553
 
554
+ /**
555
+ * 合并数组并去重
556
+ * @param oldRow
557
+ * @param newRow
558
+ * @param key
559
+ * @returns {*[]}
560
+ */
561
+ export const removeDup = (oldRow,newRow,key) => {
562
+ let resultMap = {};
563
+ for(let o of oldRow){
564
+ resultMap[o[key]] = o;
565
+ }
566
+ for (let n of newRow) {
567
+ resultMap[n[key]] = n;
568
+ }
569
+ let result = []
570
+ for (let row in resultMap) {
571
+ result.push(resultMap[row])
572
+ }
573
+ return result;
574
+ }
575
+ /**
576
+ * 获取数组修改的数据
577
+ * @param oldRow
578
+ * @param newRow
579
+ * @param key
580
+ * @returns {{delList: *[], addList: *[]}}
581
+ */
582
+ export const getChangeData = (oldRow,newRow,key) =>{
583
+ let oldMap = {};
584
+ for(let o of oldRow){
585
+ if (key){
586
+ oldMap[o[key]] = o;
587
+ } else {
588
+ oldMap[o] = o;
589
+ }
590
+ }
591
+ let newMap = {}
592
+ for(let n of newRow){
593
+ if (key){
594
+ newMap[n[key]] = n;
595
+ } else {
596
+ newMap[n] = n;
597
+ }
598
+ }
599
+ let addList = []
600
+ for (let n of newRow) {
601
+ if (key){
602
+ if (!oldMap[n[key]]) {
603
+ addList.push(n);
604
+ }
605
+ } else {
606
+ if (!oldMap[n]) {
607
+ addList.push(n);
608
+ }
609
+ }
610
+ }
611
+ let delList = []
612
+ for (let o of oldRow) {
613
+ if (key){
614
+ if (!newMap[o[key]]) {
615
+ delList.push(o);
616
+ }
617
+ } else {
618
+ if (!newMap[o]) {
619
+ delList.push(o);
620
+ }
621
+ }
622
+ }
623
+ return {
624
+ addList,delList
625
+ }
626
+ }
627
+
471
628
  /**
472
629
  * @param {Array} arr1
473
630
  * @param {Array} arr2
@@ -502,6 +659,11 @@ const hasOneOf = (targetarr, arr) => {
502
659
  return targetarr.some(_ => arr.indexOf(_) > -1)
503
660
  }
504
661
 
662
+ /**
663
+ * foreach
664
+ * @param arr
665
+ * @param fn 回调函数,参数接收arr的元素,索引,arr本身
666
+ */
505
667
  const forEach = (arr, fn) => {
506
668
  if (!arr.length || !fn) return
507
669
  let i = -1
@@ -525,9 +687,17 @@ export function oneOf (value, validList) {
525
687
  return false
526
688
  }
527
689
 
690
+ /**
691
+ * recursionKeyFindItem
692
+ * @param arr
693
+ * @param filterKey
694
+ * @param filterValue
695
+ * @param recursionKey
696
+ * @returns {*|null}
697
+ */
528
698
  export const recursionKeyFindItem = (arr, filterKey, filterValue, recursionKey) => {
529
699
  for (const item of arr) {
530
- if (item[filterKey] && item[filterKey] == filterValue) {
700
+ if (item[filterKey] && item[filterKey] == filterValue && item['type'] == 2) {
531
701
  return item;
532
702
  }
533
703
  let result = null;
@@ -541,18 +711,344 @@ export const recursionKeyFindItem = (arr, filterKey, filterValue, recursionKey)
541
711
  return null;
542
712
  };
543
713
 
714
+ /**
715
+ * filterMenuName
716
+ * @param menuList
717
+ * @param name
718
+ * @returns {*|null}
719
+ */
544
720
  export const filterMenuName = (menuList, name) => {
545
721
  return recursionKeyFindItem(menuList, 'name', name, 'children')
546
722
  };
547
723
 
724
+ /**
725
+ * filterMenuUri
726
+ * @param menuList
727
+ * @param name
728
+ * @returns {*|null}
729
+ */
548
730
  export const filterMenuUri = (menuList, name) => {
549
731
  return recursionKeyFindItem(menuList, 'uri', name, 'children')
550
732
  };
551
733
 
734
+ /**
735
+ * tagExists
736
+ * @param taglist
737
+ * @param name
738
+ * @returns {boolean}
739
+ */
552
740
  export const tagExists = (taglist, name) => {
553
741
  return taglist && taglist.filter(item => item.name === name).length > 0;
554
742
  };
555
743
 
744
+ /**
745
+ * 判断菜单是否为新窗口打开
746
+ * @param menu
747
+ */
748
+ export const isOpenBlank = (menu) => {
749
+ let extendProps = {}
750
+ if (menu && menu.meta && menu.meta.data && menu.meta.data.extension) {
751
+ extendProps = JSON.parse(menu.meta.data.extension)
752
+ }
753
+ if (menu && menu.extension) {
754
+ extendProps = JSON.parse(menu.extension)
755
+ }
756
+ if (extendProps && extendProps.target_type && extendProps.target_type == 'blank') {
757
+ return true;
758
+ }
759
+ if (extendProps && extendProps.targetType && extendProps.targetType == 'blank') {
760
+ return true;
761
+ }
762
+ return false;
763
+ }
764
+
765
+ /**
766
+ * 判断应用是否为移动应用
767
+ * @param app
768
+ */
769
+ export const isMobileApp = (app) => {
770
+ try{
771
+ let extendProps = {};
772
+ if (app.extendProps) {
773
+ if (typeof app.extendProps == 'string') {
774
+ extendProps = JSON.parse(app.extendProps);
775
+ } else {
776
+ extendProps = app.extendProps;
777
+ }
778
+ }
779
+ if (app.setting) {
780
+ if (typeof app.setting == 'string') {
781
+ extendProps = JSON.parse(app.setting);
782
+ } else {
783
+ extendProps = app.setting;
784
+ }
785
+ }
786
+ if (extendProps && extendProps.is_mobile_app && extendProps.is_mobile_app == '1') {
787
+ return true;
788
+ }
789
+ }catch (e) {
790
+ console.error(e)
791
+ }
792
+ return false;
793
+ }
794
+
795
+ /**
796
+ * 获取pc应用列表
797
+ * @param appList
798
+ * @returns {*[]}
799
+ */
800
+ export const getPCAppList = (appList,filterCenter = false) => {
801
+ let finalList = []
802
+ if(appList) {
803
+ for (let app of appList) {
804
+ if ((!isMobileApp(app) && filterCenter && isCenterApp(app))
805
+ || (!isMobileApp(app) && !filterCenter)) {
806
+ finalList.push(app);
807
+ }
808
+ }
809
+ }
810
+ return finalList;
811
+ }
812
+
813
+ /**
814
+ * 获取移动应用列表
815
+ * @param appList
816
+ * @returns {*[]}
817
+ */
818
+ export const getMobileAppList = (appList,filterCenter= false) => {
819
+ let finalList = []
820
+ if(appList) {
821
+ for (let app of appList) {
822
+ if ((isMobileApp(app) && filterCenter && isCenterApp(app))
823
+ || (isMobileApp(app) && !filterCenter)) {
824
+ finalList.push(app);
825
+ }
826
+ }
827
+ }
828
+ return finalList;
829
+ }
830
+ /**
831
+ * 判断应用是否门户应用
832
+ * @param menu
833
+ */
834
+ export const isCenterApp = (app) => {
835
+ try{
836
+ let extendProps = {};
837
+ if (app.extendProps) {
838
+ if (typeof app.extendProps == 'string') {
839
+ extendProps = JSON.parse(app.extendProps);
840
+ } else {
841
+ extendProps = app.extendProps;
842
+ }
843
+ }
844
+ if (app.setting) {
845
+ if (typeof app.setting == 'string') {
846
+ extendProps = JSON.parse(app.setting);
847
+ } else {
848
+ extendProps = app.setting;
849
+ }
850
+ }
851
+ if (extendProps && extendProps.is_center_app && extendProps.is_center_app == '1') {
852
+ return true;
853
+ }
854
+ }catch (e) {
855
+ console.error(e);
856
+ }
857
+ return false;
858
+ }
859
+
860
+ /**
861
+ * 获取一级菜单作为顶级导航
862
+ * @param permissionList
863
+ * @param appType
864
+ * @returns {*[]}
865
+ */
866
+ export const buildNavListByMenu = (permissionList,appInfo,appType,defaultHideName = '') => {
867
+ let navList = []
868
+ if (permissionList && appInfo && appInfo.appId) {
869
+ let hideNames = [];
870
+ if (defaultHideName && typeof defaultHideName === 'string') {
871
+ hideNames = defaultHideName.split(',').map(name => name.trim());
872
+ }
873
+ let permissions = permissionList.filter(item => item.hasOwnProperty('pid')
874
+ && item.pid == '0' && item.appId == appInfo.appId && !hideNames.includes(item.name))
875
+ for (let per of permissions) {
876
+ if (appType && appType == 'sc') {
877
+ let nav = {
878
+ "data" : deepCopy(per),
879
+ "appInfo" : deepCopy(appInfo),
880
+ "orderNo": per.orders,
881
+ "application": {
882
+ "extendProps": per.extension ? JSON.parse(per.extension) : "",
883
+ "appId": per.permissionId,
884
+ "appBizCode": per.permissionValue,
885
+ "appName": per.title,
886
+ "appDesc": per.description,
887
+ "appUrl": appInfo.basepath,
888
+ "icon": per.icon,
889
+ "appStatus": 1,
890
+ "manageUnitId": "",
891
+ "protocolType": null,
892
+ "grantTypes": null,
893
+ "logoutUrl": null,
894
+ "redirectUrls": null,
895
+ "codeExpiresIn": null,
896
+ "idTokenExpiresIn": null,
897
+ "accessTokenExpiresIn": null,
898
+ "clientId": "",
899
+ "clientSecret": "",
900
+ "isEnableSso": false,
901
+ "isShare": false,
902
+ "referAppId": null,
903
+ "externalId": null,
904
+ "callerAppId": null,
905
+ "orderNo": 1,
906
+ "parentId": null,
907
+ "appType": null,
908
+ "relativeName": null,
909
+ "shortName": null,
910
+ "authType": "1",
911
+ "isLower": null
912
+ },
913
+ "basepath": appInfo.basepath,
914
+ "appId": per.permissionId,
915
+ "icon": per.icon,
916
+ "name": per.name,
917
+ "extendProps": per.extension ? JSON.parse(per.extension) : "",
918
+ "title": per.title,
919
+ "type": "00",
920
+ "status": 1
921
+ }
922
+ navList.push(nav)
923
+ } else {
924
+ let nav = {
925
+ "data" : deepCopy(per),
926
+ "appInfo" : deepCopy(appInfo),
927
+ "id": per.id,
928
+ "appId": per.permissionId,
929
+ "systemId": per.systemId,
930
+ "icon": per.icon,
931
+ "banner": null,
932
+ "theme": null,
933
+ "basepath": appInfo.basepath,
934
+ "status": 1,
935
+ "name": per.name,
936
+ "title": per.title,
937
+ "type": "00",
938
+ "setting": "",
939
+ "description": per.description,
940
+ "orders": per.orders,
941
+ "createTime": 1710772466000,
942
+ "updateTime": 1710772466000
943
+ }
944
+ navList.push(nav)
945
+ }
946
+ }
947
+ }
948
+ return navList;
949
+ }
950
+
951
+ /**
952
+ * 判断是否为子菜单
953
+ * @param permissionList
954
+ * @param pid
955
+ * @param per
956
+ * @returns {boolean|boolean|*}
957
+ */
958
+ export const isChildPermission = (permissionList, pid, per) => {
959
+ if (permissionList && pid && per && per.pid) {
960
+ let res = permissionList.find(item => item.hasOwnProperty('permissionId') && item.permissionId == per.pid)
961
+ if (res && res.permissionId && res.permissionId == pid) {
962
+ return true;
963
+ } else {
964
+ return isChildPermission(permissionList, pid, res)
965
+ }
966
+ }
967
+ return false;
968
+ }
969
+ /**
970
+ * 获取所有子菜单
971
+ * @param permissionList
972
+ * @param pid
973
+ */
974
+ export const getChildPermissions = (permissionList, pid, appInfo) => {
975
+ let res = []
976
+ if (permissionList && pid) {
977
+ for (let permission of permissionList) {
978
+ if (isChildPermission(permissionList, pid, permission)) {
979
+ let per2 = deepCopy(permission);
980
+ per2.appId = pid;
981
+ if (per2.pid == pid) {
982
+ per2.pid = "0";
983
+ }
984
+ per2.appInfo = deepCopy(appInfo)
985
+ res.push(per2);
986
+ }
987
+ }
988
+ }
989
+ return res;
990
+ }
991
+ /**
992
+ * 恢复权限的原始信息
993
+ * @param permission
994
+ */
995
+ export const getOriginalPermission = (permission) => {
996
+ if (permission && permission.meta && permission.meta.data && permission.meta.data.appInfo) {
997
+ let per2 = deepCopy(permission);
998
+ if (per2.hasOwnProperty('pid') && per2.pid == '0') {
999
+ per2.pid = per2.meta.data.appId;
1000
+ per2.meta.data.pid = per2.meta.data.appId;
1001
+ }
1002
+ per2.meta.appId = permission.meta.data.appInfo.appId;
1003
+ per2.meta.data.appId = permission.meta.data.appInfo.appId;
1004
+ return per2;
1005
+ }
1006
+ return permission
1007
+ }
1008
+
1009
+ /**
1010
+ * 单应用时修改源权限信息
1011
+ * @param permissionList
1012
+ * @param menu
1013
+ * @param appInfo
1014
+ * @returns {*}
1015
+ */
1016
+ export const buildSinglePermission = (permissionList, menu) => {
1017
+ let permission = permissionList.find(item => item.permissionId == menu.permissionId && item.appId == menu.appId)
1018
+ let rootPermission = getRootPermission(permissionList, permission)
1019
+ if (rootPermission && rootPermission.permissionId) {
1020
+ menu.appInfo = {
1021
+ appId: menu.appId
1022
+ }
1023
+ menu.appId = rootPermission.permissionId;
1024
+ }
1025
+ return menu;
1026
+ }
1027
+ /**
1028
+ * 获取菜单根节点
1029
+ * @param permissionList
1030
+ * @param permission
1031
+ * @returns {*|{pid}|{}}
1032
+ */
1033
+ export const getRootPermission = (permissionList, permission) => {
1034
+ if (permissionList, permission) {
1035
+ if (!permission.hasOwnProperty('pid')) {
1036
+ return permission
1037
+ } else if (permission.pid == '0') {
1038
+ return permission
1039
+ } else {
1040
+ let parentPermission = permissionList.find(item => item.permissionId == permission.pid && item.appId == permission.appId)
1041
+ return getRootPermission(permissionList, parentPermission);
1042
+ }
1043
+ }
1044
+ return permission;
1045
+ }
1046
+ /**
1047
+ * getPreviousTagIndex
1048
+ * @param tagList
1049
+ * @param name
1050
+ * @returns {number}
1051
+ */
556
1052
  export const getPreviousTagIndex = (tagList, name) => {
557
1053
  let count = 0;
558
1054
  if (tagList && name) {
@@ -570,6 +1066,12 @@ export const getPreviousTagIndex = (tagList, name) => {
570
1066
  return count;
571
1067
  };
572
1068
 
1069
+ /**
1070
+ * getDelTagIndex
1071
+ * @param tagList
1072
+ * @param name
1073
+ * @returns {number}
1074
+ */
573
1075
  export const getDelTagIndex = (tagList, name) => {
574
1076
  let count = 1;
575
1077
  if (tagList && name) {
@@ -583,16 +1085,363 @@ export const getDelTagIndex = (tagList, name) => {
583
1085
  return count;
584
1086
  }
585
1087
 
586
- export const turnToPage = (vm, name ,url) =>{
587
- console.log("window.top=",window.top)
588
- if (window.top && window.top.location.href == window.location.href) {
589
- console.log("url="+url)
590
- /*sessionStorage.removeItem('activeName')
591
- window.parent.location.href = url;*/
592
- } else {
593
- console.log("name="+name)
1088
+ /**
1089
+ * turnToPage
1090
+ * @param vm
1091
+ * @param name
1092
+ * @param url
1093
+ * @param forceLocation
1094
+ * @param queryObj
1095
+ */
1096
+ export const turnToPage = (vm, name ,url, forceLocation = false, queryObj = {}) =>{
1097
+ let query = qs.stringify(queryObj)
1098
+ if(query){
1099
+ url = url + '?' + query;
1100
+ }
1101
+ if (window.top && window.top.location.href !== window.location.href) {
1102
+ typeof sessionStorage != 'undefined' && sessionStorage.removeItem('activeName')
1103
+ window.top.location.href = url;
1104
+ } else if (forceLocation){
1105
+ typeof sessionStorage != 'undefined' && sessionStorage.removeItem('activeName')
1106
+ if (window.top){
1107
+ window.top.location.href = url;
1108
+ } else {
1109
+ window.location.href = url;
1110
+ }
1111
+ } else if (vm && vm.$router){
594
1112
  vm.$router.push({
595
- name: name
1113
+ name: name,
1114
+ ...queryObj
596
1115
  })
1116
+ } else {
1117
+ window.location.href = url;
1118
+ }
1119
+ }
1120
+
1121
+
1122
+ /**
1123
+ * 获取上级节点的方法
1124
+ * @param vm
1125
+ * @param methodName
1126
+ * @returns {*}
1127
+ */
1128
+ export const getParentMethod = (vm,methodName) => {
1129
+ if (vm.$parent) {
1130
+ if (vm.$parent[methodName]) {
1131
+ return vm.$parent[methodName];
1132
+ } else {
1133
+ return getParentMethod(vm.$parent,methodName)
1134
+ }
1135
+ }
1136
+ return undefined;
1137
+ }
1138
+
1139
+ /**
1140
+ * 执行全屏操作
1141
+ * @param vm
1142
+ */
1143
+ export const doParentMethod = (vm,methodName) => {
1144
+ let action = getParentMethod(vm,methodName)
1145
+ if (action) {
1146
+ action()
1147
+ }
1148
+ }
1149
+ /**
1150
+ * 替换url中的指定参数
1151
+ * @param url
1152
+ * @param paramName
1153
+ * @param paramValue
1154
+ * @returns {string}
1155
+ */
1156
+ export const replaceUrlParam = (url, paramName, paramValue) => {
1157
+ let pattern = new RegExp('(' + paramName + '=)([^&]+)', 'i');
1158
+ let queryString = url.split('?')[1];
1159
+ if (queryString) {
1160
+ let newParam = paramName + '=' + encodeURIComponent(paramValue);
1161
+ let newQueryString = queryString.replace(pattern, newParam);
1162
+ return url.split('?')[0] + '?' + newQueryString;
1163
+ } else {
1164
+ return url + '?' + paramName + '=' + encodeURIComponent(paramValue);
1165
+ }
1166
+ }
1167
+ /**
1168
+ * 拼接url
1169
+ * @param href
1170
+ * @param key
1171
+ * @param value
1172
+ * @returns {string}
1173
+ */
1174
+ export const buildParams = (href, key, value) =>{
1175
+ if (href && key && value) {
1176
+ if (!href.includes(key + '=')) {
1177
+ if (href.includes('?')) {
1178
+ href += '&' + key + '=' + value
1179
+ } else {
1180
+ href += '?' + key + '=' + value
1181
+ }
1182
+ } else {
1183
+ href = replaceUrlParam(href,key,value)
1184
+ }
1185
+ return href;
1186
+ }
1187
+ return '';
1188
+ }
1189
+ /**
1190
+ * 组装菜单url
1191
+ * @param item
1192
+ * @param ssoToken
1193
+ * @param ssoid
1194
+ * @returns {string}
1195
+ */
1196
+ export const buildMenuUri = (item,ssoToken,ssoid) => {
1197
+ if (!item.uri) {
1198
+ return ''
1199
+ }
1200
+ let href = ''
1201
+ let uri = item.uri
1202
+ if (uri.startsWith('http')) {
1203
+ href = uri
1204
+ } else {
1205
+ let basepath = ''
1206
+ if (item.navList) {
1207
+ let navList = deepCopy(item.navList);
1208
+ let appId = '';
1209
+ if (item.appId) {
1210
+ appId = item.appId;
1211
+ } else if (item.meta && item.meta.appId) {
1212
+ appId = item.meta.appId;
1213
+ }
1214
+ let appInfo = navList.find(app => app.appId === appId)
1215
+ if (appInfo && appInfo.basepath) {
1216
+ basepath = appInfo.basepath
1217
+ }
1218
+ }
1219
+ if (!basepath.startsWith('/') && !basepath.startsWith('http')) {
1220
+ basepath = '/' + basepath
1221
+ }
1222
+ if (basepath.endsWith('/')) {
1223
+ basepath = basepath.substring(0, basepath.length - 1)
1224
+ }
1225
+ if (!uri.startsWith('/')) {
1226
+ uri = '/' + uri
1227
+ }
1228
+ href = basepath + uri
1229
+ }
1230
+ href = buildParams(href,"layout","screen");
1231
+ if (ssoToken) {
1232
+ href = buildParams(href,"token",ssoToken);
1233
+ }
1234
+ if (ssoid) {
1235
+ href = buildParams(href,"ssoid",ssoid);
1236
+ }
1237
+ if (item.cts) {
1238
+ href = buildParams(href,"cts",item.cts);
1239
+ }
1240
+ return href
1241
+ }
1242
+ /**
1243
+ * 给query添加时间戳
1244
+ */
1245
+ export const addTimestamp = ($route) => {
1246
+ let query = {};
1247
+ if ($route.query) {
1248
+ query = $route.query;
1249
+ }
1250
+ query = Object.assign({},query,{cts:new Date().getTime()})
1251
+ $route.query = query;
1252
+ return $route;
1253
+ }
1254
+ /**
1255
+ * 根据配置信息修改系统信息
1256
+ * @param systemInfo
1257
+ */
1258
+ export const changeSystemInfo = async (systemInfo) => {
1259
+ let defaultSystemInfo = {
1260
+ layoutSize: 'small',
1261
+ systemLogo: systemLogo,
1262
+ logoWidth: '150px',
1263
+ systemName: sessionStorage.getItem('systemName') ? sessionStorage.getItem('systemName') : config.title,
1264
+ nameSize: 1,
1265
+ navType: 'dropdown',
1266
+ rightTopOptButtonList: ['collect', 'fullScreen'],
1267
+ rightTopShowFunList: ['theme', 'personalCenter', 'noticeList', 'logout'],
1268
+ menuLogo: '1',
1269
+ titleShow: 'wrap',
1270
+ menuScaling: '1',
1271
+ footerInfo: 'Copyright © 2021 浪潮数字商业科技有限公司 版权所有<br> 辽ICP备11001865号-3',
1272
+ showTheme: '',
1273
+ theme: 'default',
1274
+ tabNum: 5,
1275
+ topMenu: 4,
1276
+ };
1277
+ if (systemInfo) {
1278
+ systemInfo = Object.assign(defaultSystemInfo, systemInfo);
1279
+ } else {
1280
+ systemInfo = defaultSystemInfo;
597
1281
  }
598
- }
1282
+ if (systemInfo.logo) {
1283
+ systemInfo.systemLogo = config.ossServerContext + '/anon/system/file/get/' + systemInfo.logo
1284
+ } else {
1285
+ systemInfo.systemLogo = ''
1286
+ }
1287
+ sessionStorage.setItem('systemLogo', systemInfo.systemLogo)
1288
+ if(systemInfo.favoriteIcon){
1289
+ systemInfo.favoriteIcon = config.ossServerContext + '/anon/system/file/get/' + systemInfo.favoriteIcon
1290
+ sessionStorage.setItem('systemFavoriteIcon', systemInfo.favoriteIcon)
1291
+ let link = document.querySelector("link[rel*='icon']") || document.createElement('link');
1292
+ link.setAttribute('href', systemInfo.favoriteIcon);
1293
+ if (!link.getAttribute('rel')) {
1294
+ link.setAttribute('rel', 'icon');
1295
+ }
1296
+ if (!link.getAttribute('type')) {
1297
+ link.setAttribute('type', 'image/png');
1298
+ }
1299
+ } else if (systemInfo.systemLogo) {
1300
+ let link = document.querySelector("link[rel*='icon']") || document.createElement('link');
1301
+ link.setAttribute('href', systemInfo.systemLogo);
1302
+ if (!link.getAttribute('rel')) {
1303
+ link.setAttribute('rel', 'icon');
1304
+ }
1305
+ if (!link.getAttribute('type')) {
1306
+ link.setAttribute('type', 'image/png');
1307
+ }
1308
+ }
1309
+
1310
+ if (systemInfo.logoWidth) {
1311
+ systemInfo.logoWidth = systemInfo.logoWidth + ''
1312
+ }
1313
+ if (systemInfo.systemName) {
1314
+ document.title = systemInfo.systemName
1315
+ sessionStorage.setItem('systemName', systemInfo.systemName)
1316
+ }
1317
+ if (localStorage.getItem('theme')) {
1318
+ systemInfo.theme = localStorage.getItem('theme')
1319
+ }
1320
+ changeByThemeKey(systemInfo.theme)
1321
+ //禁用快捷键/鼠标右键
1322
+ if (systemInfo.showShortcutKeyConfig === '0'){
1323
+ if(systemInfo.contextmenu === '0'){
1324
+ window.contextMenu = '0'
1325
+ // console.log("systemInfo.contextmenu", systemInfo.contextmenu)
1326
+ disableRightClick();
1327
+ }else{
1328
+ window.contextMenu = '1'
1329
+ }
1330
+
1331
+ // Ctrl+S
1332
+ let shortcutKeyList = [];
1333
+ if (systemInfo.shortcutCtrlS === '0') {
1334
+ shortcutKeyList.push('ctrl+s');
1335
+ }
1336
+ // Ctrl+C
1337
+ if (systemInfo.shortcutCtrlC === '0') {
1338
+ shortcutKeyList.push('ctrl+c');
1339
+ }
1340
+
1341
+ if (shortcutKeyList.length > 0) {
1342
+ window.shortcutKey = '0';
1343
+ // console.log("shortcutKeyList===", shortcutKeyList)
1344
+ disableShortcutKeys(shortcutKeyList);
1345
+ } else {
1346
+ window.shortcutKey = '1';
1347
+ enableShortcutKeys();
1348
+ }
1349
+
1350
+ if(systemInfo.shortcutF12 === '0'){
1351
+ window.shortcutF12 = '0'
1352
+ disableF12();
1353
+ }else{
1354
+ window.shortcutF12 = '1'
1355
+ }
1356
+ if(systemInfo.textSelected === '0'){
1357
+ window.textSelected = '0';
1358
+ disableTextSelection();
1359
+ }else{
1360
+ window.textSelected = '1';
1361
+ }
1362
+ }else {
1363
+ enableRightClick();
1364
+ enableShortcutKeys();
1365
+ enableF12();
1366
+ enableTextSelection();
1367
+ }
1368
+
1369
+ if (localStorage.getItem('themeIdCurrent')) {
1370
+ systemInfo.showTheme = localStorage.getItem('themeIdCurrent')
1371
+ }
1372
+ if (systemInfo.showTheme) {
1373
+ let showTheme = systemInfo.showTheme
1374
+ let split = showTheme.split('-')
1375
+ let systemForm = null
1376
+ let themeId = split[0];
1377
+ let status = split[1];
1378
+ let filterStatus = split[2];
1379
+ if (themeId) {
1380
+ let res = await ajax.get(config.upmsServerContext + '/anon/system/themeInfo?themeId=' + split[0])
1381
+ if (res.data.code == 1) {
1382
+ systemForm = res.data.data[0]
1383
+ if (!status && systemForm.status) {
1384
+ status = systemForm.status;
1385
+ }
1386
+ if (!filterStatus && systemForm.filterStatus) {
1387
+ filterStatus = systemForm.filterStatus;
1388
+ }
1389
+ }
1390
+ }
1391
+ if (systemForm) {
1392
+ changeThemeByThemeId(themeId, status, filterStatus, systemForm)
1393
+ }
1394
+ }
1395
+ if (!systemInfo.rightTopOptButtonList || systemInfo.rightTopOptButtonList.length <= 0) {
1396
+ systemInfo.rightTopOptButtonList = ['collect', 'fullScreen'];
1397
+ }
1398
+ if (!systemInfo.rightTopShowFunList || systemInfo.rightTopShowFunList.length <= 0) {
1399
+ systemInfo.rightTopShowFunList = ['theme', 'personalCenter', 'noticeList', 'logout']
1400
+ }
1401
+ return systemInfo;
1402
+ }
1403
+
1404
+ export const buildHomeConfigs = (settings) => {
1405
+ let result = [];
1406
+ if (settings && settings.length > 0) {
1407
+ let settingMap = {}
1408
+ for (let st of settings) {
1409
+ let key = st.categoryCode;
1410
+ if (!key) {
1411
+ key = "otherCategory";
1412
+ }
1413
+ if (settingMap[key]) {
1414
+ let oldSt = settingMap[key];
1415
+ if (st.permit && oldSt.permit
1416
+ && (st.permit.permissionType > oldSt.permit.permissionType
1417
+ || (st.permit.permissionType == oldSt.permit.permissionType
1418
+ && st.permit.createTime > oldSt.permit.createTime))) {
1419
+ settingMap[key] = st;
1420
+ }
1421
+ } else {
1422
+ settingMap[key] = st;
1423
+ }
1424
+ }
1425
+ if (settingMap['default']) {
1426
+ result.push(settingMap['default']);
1427
+ }
1428
+ for(let key in settingMap) {
1429
+ if (key != 'default') {
1430
+ result.push(settingMap[key])
1431
+ }
1432
+ }
1433
+ }
1434
+ return result;
1435
+ }
1436
+
1437
+ export const getAllElements = ( plist = [], result = []) => {
1438
+ for (let obj of plist) {
1439
+ if (obj.permissionId) {
1440
+ result.push(obj.permissionId);
1441
+ }
1442
+ if (obj.children && obj.children.length > 0) {
1443
+ getAllElements(obj.children, result);
1444
+ }
1445
+ }
1446
+ return result;
1447
+ }