n20-common-lib 1.2.37 → 1.2.40

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 (187) hide show
  1. package/README.md +2 -2
  2. package/package.json +88 -88
  3. package/src/_qiankun/index.js +113 -113
  4. package/src/_qiankun/postMessage.js +48 -48
  5. package/src/assets/css/_coreLib.scss +35 -35
  6. package/src/assets/css/cl-anchor.scss +23 -23
  7. package/src/assets/css/cl-approve-card.scss +58 -58
  8. package/src/assets/css/cl-dialog.scss +99 -99
  9. package/src/assets/css/cl-drag-list.scss +22 -22
  10. package/src/assets/css/cl-empty.scss +10 -10
  11. package/src/assets/css/cl-expandable-pane.scss +26 -26
  12. package/src/assets/css/cl-expandable.scss +24 -24
  13. package/src/assets/css/cl-file-upload-table.scss +11 -11
  14. package/src/assets/css/cl-filter.scss +4 -4
  15. package/src/assets/css/cl-flow-step.scss +185 -185
  16. package/src/assets/css/cl-footer-box.scss +10 -10
  17. package/src/assets/css/cl-form-item.scss +612 -612
  18. package/src/assets/css/cl-general-card.scss +11 -11
  19. package/src/assets/css/cl-layout-aside.scss +92 -92
  20. package/src/assets/css/cl-layout-content.scss +16 -16
  21. package/src/assets/css/cl-layout-header.scss +73 -73
  22. package/src/assets/css/cl-layout-tabs.scss +87 -87
  23. package/src/assets/css/cl-layout.scss +97 -97
  24. package/src/assets/css/cl-login-temporary.scss +37 -37
  25. package/src/assets/css/cl-message.scss +75 -75
  26. package/src/assets/css/cl-more-tab.scss +98 -98
  27. package/src/assets/css/cl-nav-menu.scss +5 -5
  28. package/src/assets/css/cl-pagination.scss +128 -128
  29. package/src/assets/css/cl-secondary-tab.scss +53 -53
  30. package/src/assets/css/cl-showcolumn.scss +23 -23
  31. package/src/assets/css/cl-sifting.scss +51 -51
  32. package/src/assets/css/cl-statis.scss +42 -42
  33. package/src/assets/css/cl-step.scss +73 -73
  34. package/src/assets/css/cl-suspend.scss +19 -19
  35. package/src/assets/css/cl-tertiary-tab.scss +54 -54
  36. package/src/assets/css/cl-upload.scss +41 -41
  37. package/src/assets/css/cl-worn-pagination.scss +50 -50
  38. package/src/assets/css/el-button.scss +173 -173
  39. package/src/assets/css/el-table.scss +79 -79
  40. package/src/assets/css/element-variables.scss +1061 -1061
  41. package/src/assets/css/element.dev.scss +21 -21
  42. package/src/assets/css/font-icon.scss +27 -27
  43. package/src/assets/css/index.dev.scss +4 -4
  44. package/src/assets/css/index.scss +11 -11
  45. package/src/assets/css/normalize.scss +726 -726
  46. package/src/assets/css/rootvar.scss +139 -139
  47. package/src/assets/css/select.scss +25 -25
  48. package/src/assets/css/title-pop.scss +4 -4
  49. package/src/assets/getJsonc.js +50 -50
  50. package/src/assets/realUrl.js +12 -12
  51. package/src/components/Anchor/AnchorItem.vue +29 -29
  52. package/src/components/Anchor/index.vue +185 -185
  53. package/src/components/ApprovalButtons/index.vue +233 -233
  54. package/src/components/ApprovalCard/index.vue +128 -128
  55. package/src/components/ApprovalRecord/approvalImg.vue +44 -39
  56. package/src/components/ApprovalRecord/flowDialog.vue +45 -0
  57. package/src/components/ApprovalRecord/index.vue +59 -59
  58. package/src/components/Button/button-group.vue +150 -150
  59. package/src/components/Button/icon-group-button.vue +61 -61
  60. package/src/components/Button/index.vue +56 -56
  61. package/src/components/CascaderArea/index.vue +103 -103
  62. package/src/components/ContentLoading/index.vue +41 -41
  63. package/src/components/ContentNull/index.vue +19 -19
  64. package/src/components/DatePicker/index.vue +27 -27
  65. package/src/components/DatePicker/por.vue +169 -169
  66. package/src/components/Dialog/index.vue +26 -26
  67. package/src/components/Dialog/indexO.vue +116 -116
  68. package/src/components/DragList/index.vue +75 -75
  69. package/src/components/Empty/img/abnormal.svg +108 -108
  70. package/src/components/Empty/img/dispose.svg +71 -71
  71. package/src/components/Empty/img/empty.svg +57 -57
  72. package/src/components/Empty/img/general.svg +58 -58
  73. package/src/components/Empty/img/lock.svg +57 -57
  74. package/src/components/Empty/img/network.svg +59 -59
  75. package/src/components/Empty/img/relevant.svg +68 -68
  76. package/src/components/Empty/img/search.svg +72 -72
  77. package/src/components/Empty/index.vue +92 -92
  78. package/src/components/Expandable/index.vue +49 -49
  79. package/src/components/Expandable/main.vue +52 -52
  80. package/src/components/FileExportAsync/index.vue +178 -178
  81. package/src/components/FileUploadTable/index.vue +484 -484
  82. package/src/components/Filters/index.vue +371 -371
  83. package/src/components/Filters/indexO.vue +104 -104
  84. package/src/components/FlowStep/index.vue +68 -68
  85. package/src/components/FooterBox/index.vue +21 -21
  86. package/src/components/GeneralCard/index.vue +15 -15
  87. package/src/components/InputNumber/index.vue +169 -169
  88. package/src/components/InputNumber/numberRange.vue +47 -47
  89. package/src/components/InputSearch/index.vue +75 -75
  90. package/src/components/Layout/AsideNav/index.vue +119 -119
  91. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  92. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  93. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  94. package/src/components/Layout/HeaderWrap/index.vue +371 -371
  95. package/src/components/Layout/HeaderWrap/noticePop.vue +316 -315
  96. package/src/components/Layout/SubContent/index.vue +127 -127
  97. package/src/components/Layout/TabsNav/index.vue +170 -170
  98. package/src/components/Layout/index.vue +518 -518
  99. package/src/components/Layout/utils.js +12 -12
  100. package/src/components/LoginTemporary/form.vue +570 -570
  101. package/src/components/LoginTemporary/index.vue +139 -139
  102. package/src/components/LoginTemporary/retrievePw.vue +372 -372
  103. package/src/components/MicroApp/index.js +67 -67
  104. package/src/components/MicroFrame/index.vue +95 -95
  105. package/src/components/MoreTab/index.vue +232 -232
  106. package/src/components/NavMenu/index.vue +60 -60
  107. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +184 -184
  108. package/src/components/PageLayout/page.vue +15 -15
  109. package/src/components/Pagination/index.vue +165 -165
  110. package/src/components/SecondaryTab/index.vue +58 -58
  111. package/src/components/SelectLazy/index.vue +75 -75
  112. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  113. package/src/components/SelectTree/index.vue +205 -205
  114. package/src/components/ShowColumn/index.vue +213 -213
  115. package/src/components/Sifting/index.vue +99 -99
  116. package/src/components/Statis/index.vue +97 -97
  117. package/src/components/Statis/statisItem.vue +54 -54
  118. package/src/components/Statis/statisPopover.vue +55 -55
  119. package/src/components/Step/index.vue +38 -38
  120. package/src/components/Suspend/index.vue +72 -72
  121. package/src/components/Table/index.vue +209 -209
  122. package/src/components/Table/indexO.vue +149 -149
  123. package/src/components/Task/index.vue +26 -26
  124. package/src/components/TertiaryTab/index.vue +63 -63
  125. package/src/components/TimePicker/index.vue +28 -28
  126. package/src/components/Upload/index.vue +242 -242
  127. package/src/components/WornPagination/index.vue +73 -73
  128. package/src/directives/VClickOutside/index.js +19 -19
  129. package/src/directives/VHas/index.js +58 -58
  130. package/src/directives/VMove/index.js +42 -42
  131. package/src/directives/VTitle/index.js +69 -69
  132. package/src/directives/VTitle/tooltip.vue +21 -21
  133. package/src/index.js +232 -229
  134. package/src/plugins/CompatibleOld/index.js +57 -57
  135. package/src/plugins/Print/index.js +4 -4
  136. package/src/plugins/Print/print-js/.babelrc +12 -12
  137. package/src/plugins/Print/print-js/LICENSE +21 -21
  138. package/src/plugins/Print/print-js/README.md +98 -98
  139. package/src/plugins/Print/print-js/dist/print.css +96 -96
  140. package/src/plugins/Print/print-js/dist/print.js +990 -990
  141. package/src/plugins/Print/print-js/package.json +60 -60
  142. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  143. package/src/plugins/Print/print-js/src/index.js +10 -10
  144. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  145. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  146. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  147. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  148. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  149. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  150. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  151. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  152. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  153. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  154. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  155. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  156. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  157. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  158. package/src/plugins/Print/print.js +2 -2
  159. package/src/plugins/Print/print.scss +1 -1
  160. package/src/plugins/SetMenuTree/index.vue +41 -41
  161. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  162. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  163. package/src/plugins/SetMenuTree/utils.js +74 -74
  164. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  165. package/src/plugins/Sign/index.js +65 -65
  166. package/src/plugins/Sign/sign.js +1 -1
  167. package/src/plugins/setTabsForSub.js +2 -2
  168. package/src/utils/auth.js +53 -53
  169. package/src/utils/axios.js +203 -203
  170. package/src/utils/downloadBlob.js +19 -19
  171. package/src/utils/forEachs.js +16 -16
  172. package/src/utils/getScrollContainer.js +43 -43
  173. package/src/utils/i18n/cn2hk.json +1270 -1270
  174. package/src/utils/i18n/index.js +50 -50
  175. package/src/utils/list2tree.js +36 -36
  176. package/src/utils/msgboxPor.js +26 -26
  177. package/src/utils/print.js +161 -161
  178. package/src/utils/relaNo.js +72 -72
  179. package/src/utils/repairElementUI.js +66 -66
  180. package/src/utils/urlToGo.js +82 -82
  181. package/style/index.css +3 -3
  182. package/style/css/normalize.scss +0 -726
  183. package/style/pageDemo/demo-1.vue +0 -131
  184. package/style/pageDemo/demo-2.vue +0 -35
  185. package/style/pageDemo/demo-3.vue +0 -22
  186. package/style/pageDemo/seeCode.js +0 -20
  187. package/style/server-config.jsonc +0 -606
@@ -1,72 +1,72 @@
1
- import forEachs from './forEachs'
2
-
3
- const name = process.env.VUE_APP_RelaAppNo || process.env.VUE_APP_NAME
4
-
5
- let relaObj = {
6
- appNo: name,
7
- relaNos: []
8
- }
9
-
10
- export function getRela() {
11
- return relaObj
12
- }
13
-
14
- export function setRela() {
15
- let relaNosStr = sessionStorage.getItem('relaNos')
16
- if (relaNosStr) {
17
- let relaNos = JSON.parse(relaNosStr)
18
- Object.assign(
19
- relaObj,
20
- relaNos.find((r) => r.appNo === name)
21
- )
22
- console.log(relaObj, 'has权限列表')
23
-
24
- relaObj.relaNosGlobal = relaNos.map((item) => item.relaNos).flat()
25
- return
26
- }
27
- /* 兼容旧门户 */
28
- let resourcesStr = sessionStorage.getItem('resources')
29
- if (resourcesStr) {
30
- let resources = JSON.parse(resourcesStr)
31
- let relaNos = []
32
- forEachs(resources, (item) => {
33
- relaNos.push(item.relaNo)
34
- })
35
- relaObj.relaNos = relaNos
36
- relaObj.relaNosGlobal = relaNos
37
- }
38
- }
39
-
40
- let cltrelaNos = undefined
41
- export function getCltRela(clt) {
42
- /* 获取全部单位权限 */
43
- if (!cltrelaNos) {
44
- let cltrelaNosStr = sessionStorage.getItem('cltrelaNos')
45
- if (cltrelaNosStr) {
46
- cltrelaNos = JSON.parse(cltrelaNosStr)
47
- } else {
48
- cltrelaNos = {}
49
- }
50
- }
51
-
52
- if (Array.isArray(clt)) {
53
- let clts = clt
54
- let cltI = clts[0]
55
- let cltRela = cltrelaNos[cltI]
56
-
57
- for (let i = 1; i < clt.length; i++) {
58
- cltRela = aandb(cltRela, cltrelaNos[clts[i]])
59
- }
60
- return cltRela || []
61
- } else {
62
- return cltrelaNos[clt] || []
63
- }
64
- }
65
-
66
- function aandb(a = [], b = []) {
67
- if (a.length === 0 || b.length === 0) {
68
- return []
69
- } else {
70
- return a.filter((ai) => b.includes(ai))
71
- }
72
- }
1
+ import forEachs from './forEachs'
2
+
3
+ const name = process.env.VUE_APP_RelaAppNo || process.env.VUE_APP_NAME
4
+
5
+ let relaObj = {
6
+ appNo: name,
7
+ relaNos: []
8
+ }
9
+
10
+ export function getRela() {
11
+ return relaObj
12
+ }
13
+
14
+ export function setRela() {
15
+ let relaNosStr = sessionStorage.getItem('relaNos')
16
+ if (relaNosStr) {
17
+ let relaNos = JSON.parse(relaNosStr)
18
+ Object.assign(
19
+ relaObj,
20
+ relaNos.find((r) => r.appNo === name)
21
+ )
22
+ console.log(relaObj, 'has权限列表')
23
+
24
+ relaObj.relaNosGlobal = relaNos.map((item) => item.relaNos).flat()
25
+ return
26
+ }
27
+ /* 兼容旧门户 */
28
+ let resourcesStr = sessionStorage.getItem('resources')
29
+ if (resourcesStr) {
30
+ let resources = JSON.parse(resourcesStr)
31
+ let relaNos = []
32
+ forEachs(resources, (item) => {
33
+ relaNos.push(item.relaNo)
34
+ })
35
+ relaObj.relaNos = relaNos
36
+ relaObj.relaNosGlobal = relaNos
37
+ }
38
+ }
39
+
40
+ let cltrelaNos = undefined
41
+ export function getCltRela(clt) {
42
+ /* 获取全部单位权限 */
43
+ if (!cltrelaNos) {
44
+ let cltrelaNosStr = sessionStorage.getItem('cltrelaNos')
45
+ if (cltrelaNosStr) {
46
+ cltrelaNos = JSON.parse(cltrelaNosStr)
47
+ } else {
48
+ cltrelaNos = {}
49
+ }
50
+ }
51
+
52
+ if (Array.isArray(clt)) {
53
+ let clts = clt
54
+ let cltI = clts[0]
55
+ let cltRela = cltrelaNos[cltI]
56
+
57
+ for (let i = 1; i < clt.length; i++) {
58
+ cltRela = aandb(cltRela, cltrelaNos[clts[i]])
59
+ }
60
+ return cltRela || []
61
+ } else {
62
+ return cltrelaNos[clt] || []
63
+ }
64
+ }
65
+
66
+ function aandb(a = [], b = []) {
67
+ if (a.length === 0 || b.length === 0) {
68
+ return []
69
+ } else {
70
+ return a.filter((ai) => b.includes(ai))
71
+ }
72
+ }
@@ -1,66 +1,66 @@
1
- /* 对ElementUI硬优化 */
2
- import Popper from 'element-ui/lib/utils/popper.js'
3
-
4
- function setPropsDefault(component, props) {
5
- let c_props = component.props
6
- Object.keys(props).forEach((key) => {
7
- c_props[key] = Object.assign({}, c_props[key], props[key])
8
- })
9
- }
10
-
11
- function repairPopper() {
12
- if (!Popper.prototype.repairR) {
13
- Popper.prototype.repairR = true
14
-
15
- let __getBoundaries = Popper.prototype._getBoundaries
16
- Popper.prototype._getBoundaries = function (data, padding, boundariesElement) {
17
- const boundaries = __getBoundaries.call(this, data, padding, boundariesElement)
18
-
19
- if (this._options.boundariesElement === 'viewport') {
20
- const root = window
21
- const body = root.document.body
22
- const html = root.document.documentElement
23
- let width = Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth)
24
- let height = Math.max(
25
- body.scrollHeight,
26
- body.offsetHeight,
27
- html.clientHeight,
28
- html.scrollHeight,
29
- html.offsetHeight
30
- )
31
-
32
- boundaries.right = boundaries.right - root.document.documentElement.clientWidth + width
33
- boundaries.bottom = boundaries.bottom - root.document.documentElement.clientHeight + height
34
- }
35
- return boundaries
36
- }
37
- }
38
- }
39
-
40
- export default function (ElementUI) {
41
- repairPopper()
42
-
43
- // setPropsDefault(ElementUI.Table, {
44
- // tooltipEffect: {
45
- // default: 'light'
46
- // }
47
- // })
48
-
49
- setPropsDefault(ElementUI.TableColumn, {
50
- filterPlacement: {
51
- default: 'bottom'
52
- }
53
- })
54
-
55
- setPropsDefault(ElementUI.Dropdown, {
56
- placement: {
57
- default: 'bottom'
58
- }
59
- })
60
-
61
- setPropsDefault(ElementUI.Dialog, {
62
- appendToBody: {
63
- default: true
64
- }
65
- })
66
- }
1
+ /* 对ElementUI硬优化 */
2
+ import Popper from 'element-ui/lib/utils/popper.js'
3
+
4
+ function setPropsDefault(component, props) {
5
+ let c_props = component.props
6
+ Object.keys(props).forEach((key) => {
7
+ c_props[key] = Object.assign({}, c_props[key], props[key])
8
+ })
9
+ }
10
+
11
+ function repairPopper() {
12
+ if (!Popper.prototype.repairR) {
13
+ Popper.prototype.repairR = true
14
+
15
+ let __getBoundaries = Popper.prototype._getBoundaries
16
+ Popper.prototype._getBoundaries = function (data, padding, boundariesElement) {
17
+ const boundaries = __getBoundaries.call(this, data, padding, boundariesElement)
18
+
19
+ if (this._options.boundariesElement === 'viewport') {
20
+ const root = window
21
+ const body = root.document.body
22
+ const html = root.document.documentElement
23
+ let width = Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth)
24
+ let height = Math.max(
25
+ body.scrollHeight,
26
+ body.offsetHeight,
27
+ html.clientHeight,
28
+ html.scrollHeight,
29
+ html.offsetHeight
30
+ )
31
+
32
+ boundaries.right = boundaries.right - root.document.documentElement.clientWidth + width
33
+ boundaries.bottom = boundaries.bottom - root.document.documentElement.clientHeight + height
34
+ }
35
+ return boundaries
36
+ }
37
+ }
38
+ }
39
+
40
+ export default function (ElementUI) {
41
+ repairPopper()
42
+
43
+ // setPropsDefault(ElementUI.Table, {
44
+ // tooltipEffect: {
45
+ // default: 'light'
46
+ // }
47
+ // })
48
+
49
+ setPropsDefault(ElementUI.TableColumn, {
50
+ filterPlacement: {
51
+ default: 'bottom'
52
+ }
53
+ })
54
+
55
+ setPropsDefault(ElementUI.Dropdown, {
56
+ placement: {
57
+ default: 'bottom'
58
+ }
59
+ })
60
+
61
+ setPropsDefault(ElementUI.Dialog, {
62
+ appendToBody: {
63
+ default: true
64
+ }
65
+ })
66
+ }
@@ -1,82 +1,82 @@
1
- function encode(val) {
2
- return encodeURIComponent(val)
3
- .replace(/%3A/gi, ':')
4
- .replace(/%24/g, '$')
5
- .replace(/%2C/gi, ',')
6
- .replace(/%20/g, '+')
7
- .replace(/%5B/gi, '[')
8
- .replace(/%5D/gi, ']')
9
- }
10
- function isDate(val) {
11
- return toString.call(val) === '[object Date]'
12
- }
13
- function isObject(val) {
14
- return val !== null && typeof val === 'object'
15
- }
16
-
17
- function buildURL(url, params) {
18
- if (!params) {
19
- return url
20
- }
21
-
22
- let parts = []
23
- Object.entries(params).forEach(([key, val]) => {
24
- if (val === null || typeof val === 'undefined') {
25
- return
26
- }
27
-
28
- if (Array.isArray(val)) {
29
- key = key + '[]'
30
- } else {
31
- val = [val]
32
- }
33
-
34
- val.forEach((v) => {
35
- if (isDate(v)) {
36
- v = v.toISOString()
37
- } else if (isObject(v)) {
38
- v = JSON.stringify(v)
39
- }
40
- parts.push(encode(key) + '=' + encode(v))
41
- })
42
- })
43
-
44
- let serializedParams = parts.join('&')
45
-
46
- if (serializedParams) {
47
- let hashmarkIndex = url.indexOf('#')
48
- if (hashmarkIndex !== -1) {
49
- url = url.slice(0, hashmarkIndex)
50
- }
51
-
52
- url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams
53
- }
54
-
55
- return url
56
- }
57
-
58
- export function linkPush(url, params = {}) {
59
- params._fromNo = Date.now()
60
- sessionStorage.setItem(params._fromNo, location.href)
61
-
62
- url = buildURL(url, params)
63
- history.pushState(null, null, url)
64
- }
65
-
66
- export function linkGo() {
67
- let _fromUrl
68
- const search = window.location.search
69
- let _fromRe = search.includes('_fromNo=') ? /_fromNo=(\d+)/ : /_fromId=(\d+)/
70
- let _fromM = search.match(_fromRe)
71
- if (_fromM?.[1]) {
72
- _fromUrl = sessionStorage.getItem(_fromM[1])
73
- }
74
-
75
- if (_fromUrl) {
76
- // window.history.go(-1)
77
- // window.history.replaceState(null, null, _fromUrl)
78
- history.pushState(null, null, _fromUrl)
79
- } else {
80
- window.history.go(-1)
81
- }
82
- }
1
+ function encode(val) {
2
+ return encodeURIComponent(val)
3
+ .replace(/%3A/gi, ':')
4
+ .replace(/%24/g, '$')
5
+ .replace(/%2C/gi, ',')
6
+ .replace(/%20/g, '+')
7
+ .replace(/%5B/gi, '[')
8
+ .replace(/%5D/gi, ']')
9
+ }
10
+ function isDate(val) {
11
+ return toString.call(val) === '[object Date]'
12
+ }
13
+ function isObject(val) {
14
+ return val !== null && typeof val === 'object'
15
+ }
16
+
17
+ function buildURL(url, params) {
18
+ if (!params) {
19
+ return url
20
+ }
21
+
22
+ let parts = []
23
+ Object.entries(params).forEach(([key, val]) => {
24
+ if (val === null || typeof val === 'undefined') {
25
+ return
26
+ }
27
+
28
+ if (Array.isArray(val)) {
29
+ key = key + '[]'
30
+ } else {
31
+ val = [val]
32
+ }
33
+
34
+ val.forEach((v) => {
35
+ if (isDate(v)) {
36
+ v = v.toISOString()
37
+ } else if (isObject(v)) {
38
+ v = JSON.stringify(v)
39
+ }
40
+ parts.push(encode(key) + '=' + encode(v))
41
+ })
42
+ })
43
+
44
+ let serializedParams = parts.join('&')
45
+
46
+ if (serializedParams) {
47
+ let hashmarkIndex = url.indexOf('#')
48
+ if (hashmarkIndex !== -1) {
49
+ url = url.slice(0, hashmarkIndex)
50
+ }
51
+
52
+ url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams
53
+ }
54
+
55
+ return url
56
+ }
57
+
58
+ export function linkPush(url, params = {}) {
59
+ params._fromNo = Date.now()
60
+ sessionStorage.setItem(params._fromNo, location.href)
61
+
62
+ url = buildURL(url, params)
63
+ history.pushState(null, null, url)
64
+ }
65
+
66
+ export function linkGo() {
67
+ let _fromUrl
68
+ const search = window.location.search
69
+ let _fromRe = search.includes('_fromNo=') ? /_fromNo=(\d+)/ : /_fromId=(\d+)/
70
+ let _fromM = search.match(_fromRe)
71
+ if (_fromM?.[1]) {
72
+ _fromUrl = sessionStorage.getItem(_fromM[1])
73
+ }
74
+
75
+ if (_fromUrl) {
76
+ // window.history.go(-1)
77
+ // window.history.replaceState(null, null, _fromUrl)
78
+ history.pushState(null, null, _fromUrl)
79
+ } else {
80
+ window.history.go(-1)
81
+ }
82
+ }