n20-common-lib 1.2.6 → 1.2.9

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 (202) hide show
  1. package/README.md +2 -2
  2. package/package.json +87 -87
  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 +454 -454
  18. package/src/assets/css/cl-general-card.scss +11 -11
  19. package/src/assets/css/cl-layout-aside.scss +88 -88
  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 +65 -65
  29. package/src/assets/css/cl-secondary-tab.scss +39 -39
  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 +9 -9
  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 -26
  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/iconFont/demo.css +539 -0
  51. package/src/assets/iconFont/demo_index.html +1614 -0
  52. package/src/assets/iconFont/iconfont.css +263 -0
  53. package/src/assets/iconFont/iconfont.js +1 -0
  54. package/src/assets/iconFont/iconfont.json +443 -0
  55. package/src/assets/iconFont/iconfont.ttf +0 -0
  56. package/src/assets/iconFont/iconfont.woff +0 -0
  57. package/src/assets/iconFont/iconfont.woff2 +0 -0
  58. package/src/assets/realUrl.js +12 -12
  59. package/src/components/.DS_Store +0 -0
  60. package/src/components/Anchor/AnchorItem.vue +29 -29
  61. package/src/components/Anchor/index.vue +185 -185
  62. package/src/components/ApprovalButtons/index.vue +232 -232
  63. package/src/components/ApprovalCard/index.vue +128 -128
  64. package/src/components/ApprovalRecord/approvalImg.vue +39 -39
  65. package/src/components/ApprovalRecord/index.vue +59 -59
  66. package/src/components/Button/button-group.vue +150 -150
  67. package/src/components/Button/icon-group-button.vue +61 -61
  68. package/src/components/Button/index.vue +56 -56
  69. package/src/components/CascaderArea/index.vue +81 -81
  70. package/src/components/ContentLoading/index.vue +41 -41
  71. package/src/components/ContentNull/index.vue +19 -19
  72. package/src/components/DatePicker/index.vue +27 -27
  73. package/src/components/DatePicker/por.vue +169 -169
  74. package/src/components/Dialog/index.vue +26 -26
  75. package/src/components/Dialog/indexO.vue +116 -116
  76. package/src/components/DragList/index.vue +68 -68
  77. package/src/components/Empty/img/abnormal.svg +108 -108
  78. package/src/components/Empty/img/dispose.svg +71 -71
  79. package/src/components/Empty/img/empty.svg +57 -57
  80. package/src/components/Empty/img/general.svg +58 -58
  81. package/src/components/Empty/img/lock.svg +57 -57
  82. package/src/components/Empty/img/network.svg +59 -59
  83. package/src/components/Empty/img/relevant.svg +68 -68
  84. package/src/components/Empty/img/search.svg +72 -72
  85. package/src/components/Empty/index.vue +92 -92
  86. package/src/components/Expandable/index.vue +49 -49
  87. package/src/components/Expandable/main.vue +52 -52
  88. package/src/components/FileExportAsync/index.vue +174 -0
  89. package/src/components/FileUploadTable/index.vue +484 -484
  90. package/src/components/Filters/index.vue +369 -369
  91. package/src/components/Filters/indexO.vue +104 -104
  92. package/src/components/FlowStep/index.vue +68 -68
  93. package/src/components/FooterBox/index.vue +21 -21
  94. package/src/components/GeneralCard/index.vue +15 -15
  95. package/src/components/InputNumber/index.vue +153 -153
  96. package/src/components/InputNumber/numberRange.vue +47 -47
  97. package/src/components/InputSearch/index.vue +75 -75
  98. package/src/components/Layout/.DS_Store +0 -0
  99. package/src/components/Layout/AsideNav/index.vue +119 -144
  100. package/src/components/Layout/AsideNav/menuItem.vue +34 -0
  101. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -0
  102. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  103. package/src/components/Layout/HeaderWrap/index.vue +348 -333
  104. package/src/components/Layout/HeaderWrap/noticePop.vue +300 -300
  105. package/src/components/Layout/SubContent/index.vue +131 -131
  106. package/src/components/Layout/TabsNav/index.vue +170 -170
  107. package/src/components/Layout/index.vue +529 -529
  108. package/src/components/Layout/utils.js +12 -12
  109. package/src/components/LoginTemporary/form.vue +537 -537
  110. package/src/components/LoginTemporary/index.vue +122 -122
  111. package/src/components/LoginTemporary/qrcode.vue +90 -90
  112. package/src/components/LoginTemporary/retrievePw.vue +28 -28
  113. package/src/components/LoginTemporary/utils.js +73 -73
  114. package/src/components/MicroApp/index.js +67 -67
  115. package/src/components/MicroFrame/index.vue +95 -95
  116. package/src/components/MoreTab/index.vue +232 -232
  117. package/src/components/NavMenu/index.vue +60 -60
  118. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +184 -184
  119. package/src/components/PageLayout/page.vue +15 -15
  120. package/src/components/Pagination/index.vue +96 -96
  121. package/src/components/SecondaryTab/index.vue +58 -58
  122. package/src/components/SelectLazy/index.vue +75 -75
  123. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  124. package/src/components/SelectTree/index.vue +205 -205
  125. package/src/components/ShowColumn/index.vue +204 -204
  126. package/src/components/Sifting/index.vue +99 -99
  127. package/src/components/Statis/index.vue +97 -97
  128. package/src/components/Statis/statisItem.vue +54 -54
  129. package/src/components/Statis/statisPopover.vue +55 -55
  130. package/src/components/Step/index.vue +38 -38
  131. package/src/components/Suspend/index.vue +72 -72
  132. package/src/components/Table/index.vue +179 -179
  133. package/src/components/Table/indexO.vue +149 -149
  134. package/src/components/Task/index.vue +26 -26
  135. package/src/components/TertiaryTab/index.vue +53 -53
  136. package/src/components/TimePicker/index.vue +28 -28
  137. package/src/components/Upload/index.vue +242 -242
  138. package/src/components/WornPagination/index.vue +73 -73
  139. package/src/directives/VClickOutside/index.js +19 -19
  140. package/src/directives/VHas/index.js +32 -32
  141. package/src/directives/VMove/index.js +42 -42
  142. package/src/directives/VTitle/index.js +64 -56
  143. package/src/directives/VTitle/tooltip.vue +21 -21
  144. package/src/index.js +225 -218
  145. package/src/plugins/CompatibleOld/index.js +57 -57
  146. package/src/plugins/Print/index.js +4 -4
  147. package/src/plugins/Print/print-js/.babelrc +12 -12
  148. package/src/plugins/Print/print-js/LICENSE +21 -21
  149. package/src/plugins/Print/print-js/README.md +98 -98
  150. package/src/plugins/Print/print-js/dist/print.css +96 -96
  151. package/src/plugins/Print/print-js/dist/print.js +990 -990
  152. package/src/plugins/Print/print-js/package.json +60 -60
  153. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  154. package/src/plugins/Print/print-js/src/index.js +10 -10
  155. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  156. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  157. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  158. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  159. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  160. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  161. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  162. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  163. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  164. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  165. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  166. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  167. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  168. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  169. package/src/plugins/Print/print.js +2 -2
  170. package/src/plugins/Print/print.scss +1 -1
  171. package/src/plugins/SetMenuTree/index.vue +41 -41
  172. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  173. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  174. package/src/plugins/SetMenuTree/utils.js +74 -74
  175. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  176. package/src/plugins/Sign/index.js +65 -65
  177. package/src/plugins/Sign/sign.js +1 -1
  178. package/src/plugins/setTabsForSub.js +2 -2
  179. package/src/utils/auth.js +53 -53
  180. package/src/utils/axios.js +203 -203
  181. package/src/utils/downloadBlob.js +19 -19
  182. package/src/utils/forEachs.js +16 -16
  183. package/src/utils/getScrollContainer.js +43 -43
  184. package/src/utils/i18n/cn2hk.json +1270 -1270
  185. package/src/utils/i18n/index.js +54 -54
  186. package/src/utils/list2tree.js +36 -36
  187. package/src/utils/msgboxPor.js +26 -26
  188. package/src/utils/print.js +161 -161
  189. package/src/utils/relaNo.js +69 -69
  190. package/src/utils/repairElementUI.js +66 -66
  191. package/src/utils/urlToGo.js +82 -82
  192. package/style/css/normalize.scss +723 -726
  193. package/style/fonts/iconfont.022f36c4.woff2 +0 -0
  194. package/style/fonts/iconfont.4a1b2c93.woff +0 -0
  195. package/style/fonts/iconfont.a9febaa2.ttf +0 -0
  196. package/style/index.css +3 -2
  197. package/style/index.css.map +1 -1
  198. package/style/pageDemo/demo-1.vue +130 -131
  199. package/style/pageDemo/demo-2.vue +35 -35
  200. package/style/pageDemo/demo-3.vue +22 -22
  201. package/style/pageDemo/seeCode.js +20 -20
  202. package/style/server-config.jsonc +663 -596
@@ -1,69 +1,69 @@
1
- import forEachs from './forEachs'
2
-
3
- const name = 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(name) {
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
- return
24
- }
25
- /* 兼容旧门户 */
26
- let resourcesStr = sessionStorage.getItem('resources')
27
- if (resourcesStr) {
28
- let resources = JSON.parse(resourcesStr)
29
- let relaNos = []
30
- forEachs(resources, (item) => {
31
- relaNos.push(item.relaNo)
32
- })
33
- relaObj.relaNos = relaNos
34
- }
35
- }
36
-
37
- let cltrelaNos = undefined
38
- export function getCltRela(clt) {
39
- /* 获取全部单位权限 */
40
- if (!cltrelaNos) {
41
- let cltrelaNosStr = sessionStorage.getItem('cltrelaNos')
42
- if (cltrelaNosStr) {
43
- cltrelaNos = JSON.parse(cltrelaNosStr)
44
- } else {
45
- cltrelaNos = {}
46
- }
47
- }
48
-
49
- if (Array.isArray(clt)) {
50
- let clts = clt
51
- let cltI = clts[0]
52
- let cltRela = cltrelaNos[cltI]
53
-
54
- for (let i = 1; i < clt.length; i++) {
55
- cltRela = aandb(cltRela, cltrelaNos[clts[i]])
56
- }
57
- return cltRela || []
58
- } else {
59
- return cltrelaNos[clt] || []
60
- }
61
- }
62
-
63
- function aandb(a = [], b = []) {
64
- if (a.length === 0 || a.length === 0) {
65
- return []
66
- } else {
67
- return a.filter((ai) => b.includes(ai))
68
- }
69
- }
1
+ import forEachs from './forEachs'
2
+
3
+ const name = 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(name) {
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
+ return
24
+ }
25
+ /* 兼容旧门户 */
26
+ let resourcesStr = sessionStorage.getItem('resources')
27
+ if (resourcesStr) {
28
+ let resources = JSON.parse(resourcesStr)
29
+ let relaNos = []
30
+ forEachs(resources, (item) => {
31
+ relaNos.push(item.relaNo)
32
+ })
33
+ relaObj.relaNos = relaNos
34
+ }
35
+ }
36
+
37
+ let cltrelaNos = undefined
38
+ export function getCltRela(clt) {
39
+ /* 获取全部单位权限 */
40
+ if (!cltrelaNos) {
41
+ let cltrelaNosStr = sessionStorage.getItem('cltrelaNos')
42
+ if (cltrelaNosStr) {
43
+ cltrelaNos = JSON.parse(cltrelaNosStr)
44
+ } else {
45
+ cltrelaNos = {}
46
+ }
47
+ }
48
+
49
+ if (Array.isArray(clt)) {
50
+ let clts = clt
51
+ let cltI = clts[0]
52
+ let cltRela = cltrelaNos[cltI]
53
+
54
+ for (let i = 1; i < clt.length; i++) {
55
+ cltRela = aandb(cltRela, cltrelaNos[clts[i]])
56
+ }
57
+ return cltRela || []
58
+ } else {
59
+ return cltrelaNos[clt] || []
60
+ }
61
+ }
62
+
63
+ function aandb(a = [], b = []) {
64
+ if (a.length === 0 || a.length === 0) {
65
+ return []
66
+ } else {
67
+ return a.filter((ai) => b.includes(ai))
68
+ }
69
+ }
@@ -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
+ }