n20-common-lib 1.2.33 → 1.2.36

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 (193) 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/.DS_Store +0 -0
  52. package/src/components/Anchor/AnchorItem.vue +29 -29
  53. package/src/components/Anchor/index.vue +185 -185
  54. package/src/components/ApprovalButtons/index.vue +233 -233
  55. package/src/components/ApprovalCard/index.vue +128 -128
  56. package/src/components/ApprovalRecord/approvalImg.vue +39 -39
  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/.DS_Store +0 -0
  70. package/src/components/Empty/img/.DS_Store +0 -0
  71. package/src/components/Empty/img/abnormal.svg +108 -108
  72. package/src/components/Empty/img/dispose.svg +71 -71
  73. package/src/components/Empty/img/empty.svg +57 -57
  74. package/src/components/Empty/img/general.svg +58 -58
  75. package/src/components/Empty/img/lock.svg +57 -57
  76. package/src/components/Empty/img/network.svg +59 -59
  77. package/src/components/Empty/img/relevant.svg +68 -68
  78. package/src/components/Empty/img/search.svg +72 -72
  79. package/src/components/Empty/index.vue +92 -92
  80. package/src/components/Expandable/index.vue +49 -49
  81. package/src/components/Expandable/main.vue +52 -52
  82. package/src/components/FileExportAsync/index.vue +178 -178
  83. package/src/components/FileUploadTable/index.vue +484 -484
  84. package/src/components/Filters/index.vue +371 -371
  85. package/src/components/Filters/indexO.vue +104 -104
  86. package/src/components/FlowStep/index.vue +68 -68
  87. package/src/components/FooterBox/index.vue +21 -21
  88. package/src/components/GeneralCard/index.vue +15 -15
  89. package/src/components/InputNumber/index.vue +169 -169
  90. package/src/components/InputNumber/numberRange.vue +47 -47
  91. package/src/components/InputSearch/index.vue +75 -75
  92. package/src/components/Layout/.DS_Store +0 -0
  93. package/src/components/Layout/AsideNav/index.vue +119 -119
  94. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  95. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  96. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  97. package/src/components/Layout/HeaderWrap/index.vue +371 -371
  98. package/src/components/Layout/HeaderWrap/noticePop.vue +300 -300
  99. package/src/components/Layout/SubContent/index.vue +127 -131
  100. package/src/components/Layout/TabsNav/index.vue +170 -170
  101. package/src/components/Layout/index.vue +518 -522
  102. package/src/components/Layout/utils.js +12 -12
  103. package/src/components/LoginTemporary/form.vue +570 -570
  104. package/src/components/LoginTemporary/index.vue +139 -139
  105. package/src/components/LoginTemporary/qrcode.vue +90 -90
  106. package/src/components/LoginTemporary/retrievePw.vue +372 -372
  107. package/src/components/LoginTemporary/utils.js +73 -73
  108. package/src/components/MicroApp/index.js +67 -67
  109. package/src/components/MicroFrame/index.vue +95 -95
  110. package/src/components/MoreTab/index.vue +232 -232
  111. package/src/components/NavMenu/index.vue +60 -60
  112. package/src/components/NstcG6Components/.DS_Store +0 -0
  113. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +184 -184
  114. package/src/components/PageLayout/page.vue +15 -15
  115. package/src/components/Pagination/index.vue +165 -165
  116. package/src/components/SecondaryTab/index.vue +58 -58
  117. package/src/components/SelectLazy/index.vue +75 -75
  118. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  119. package/src/components/SelectTree/index.vue +205 -205
  120. package/src/components/ShowColumn/index.vue +213 -213
  121. package/src/components/Sifting/index.vue +99 -99
  122. package/src/components/Statis/index.vue +97 -97
  123. package/src/components/Statis/statisItem.vue +54 -54
  124. package/src/components/Statis/statisPopover.vue +55 -55
  125. package/src/components/Step/index.vue +38 -38
  126. package/src/components/Suspend/index.vue +72 -72
  127. package/src/components/Table/index.vue +209 -209
  128. package/src/components/Table/indexO.vue +149 -149
  129. package/src/components/Task/index.vue +26 -26
  130. package/src/components/TertiaryTab/index.vue +63 -63
  131. package/src/components/TimePicker/index.vue +28 -28
  132. package/src/components/Upload/index.vue +242 -242
  133. package/src/components/WornPagination/index.vue +73 -73
  134. package/src/directives/VClickOutside/index.js +19 -19
  135. package/src/directives/VHas/index.js +58 -58
  136. package/src/directives/VMove/index.js +42 -42
  137. package/src/directives/VTitle/index.js +69 -69
  138. package/src/directives/VTitle/tooltip.vue +21 -21
  139. package/src/index.js +229 -229
  140. package/src/plugins/CompatibleOld/index.js +57 -57
  141. package/src/plugins/Print/index.js +4 -4
  142. package/src/plugins/Print/print-js/.babelrc +12 -12
  143. package/src/plugins/Print/print-js/LICENSE +21 -21
  144. package/src/plugins/Print/print-js/README.md +98 -98
  145. package/src/plugins/Print/print-js/dist/print.css +96 -96
  146. package/src/plugins/Print/print-js/dist/print.js +990 -990
  147. package/src/plugins/Print/print-js/package.json +60 -60
  148. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  149. package/src/plugins/Print/print-js/src/index.js +10 -10
  150. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  151. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  152. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  153. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  154. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  155. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  156. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  157. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  158. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  159. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  160. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  161. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  162. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  163. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  164. package/src/plugins/Print/print.js +2 -2
  165. package/src/plugins/Print/print.scss +1 -1
  166. package/src/plugins/SetMenuTree/index.vue +41 -41
  167. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  168. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  169. package/src/plugins/SetMenuTree/utils.js +74 -74
  170. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  171. package/src/plugins/Sign/index.js +65 -65
  172. package/src/plugins/Sign/sign.js +1 -1
  173. package/src/plugins/setTabsForSub.js +2 -2
  174. package/src/utils/auth.js +53 -53
  175. package/src/utils/axios.js +203 -203
  176. package/src/utils/downloadBlob.js +19 -19
  177. package/src/utils/forEachs.js +16 -16
  178. package/src/utils/getScrollContainer.js +43 -43
  179. package/src/utils/i18n/cn2hk.json +1270 -1270
  180. package/src/utils/i18n/index.js +50 -50
  181. package/src/utils/list2tree.js +36 -36
  182. package/src/utils/msgboxPor.js +26 -26
  183. package/src/utils/print.js +161 -161
  184. package/src/utils/relaNo.js +72 -72
  185. package/src/utils/repairElementUI.js +66 -66
  186. package/src/utils/urlToGo.js +82 -82
  187. package/style/css/normalize.scss +726 -726
  188. package/style/index.css +3 -3
  189. package/style/pageDemo/demo-1.vue +131 -131
  190. package/style/pageDemo/demo-2.vue +35 -35
  191. package/style/pageDemo/demo-3.vue +22 -22
  192. package/style/pageDemo/seeCode.js +20 -20
  193. package/style/server-config.jsonc +717 -606
@@ -1,65 +1,65 @@
1
- // Attached方式签名
2
- import { IWSAgent } from './InfosecNetSignCNGAgent.min.js'
3
-
4
- const { IWSASetTimeOut, IWSAAttachedSign, IWSAAttachedVerify, IWSASendAvailable, IWSAGetAvailable } = new IWSAgent()
5
- IWSASetTimeOut(6000)
6
-
7
- let _dn
8
- function getDN() {
9
- if (!_dn) {
10
- let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
11
- if (userInfo?.dn) {
12
- _dn = userInfo.dn
13
- }
14
- }
15
- return _dn
16
- }
17
-
18
- /* 检测本地签名端口是否可用 */
19
- export function availableSign(fn) {
20
- IWSASendAvailable() // 异步请求,需等待
21
- setTimeout(() => {
22
- let available = IWSAGetAvailable()
23
- fn && fn(available)
24
- }, 300)
25
- }
26
-
27
- /* 签名解签 */
28
- export function verifySign(signedMsg) {
29
- let plainText
30
- IWSAAttachedVerify('1', signedMsg, (errorCode, PlainText, SigncertDN) => {
31
- if (errorCode === 0 || errorCode === '0') {
32
- plainText = PlainText
33
- } else {
34
- alert('签名解签失败!')
35
- }
36
- })
37
- return plainText
38
- }
39
-
40
- /* 给对象或字符串签名 */
41
- export function getSign(plain, dn) {
42
- if (dn === undefined) {
43
- dn = getDN()
44
- }
45
- if (!dn) {
46
- alert('签名参数DN错误!')
47
- return false
48
- }
49
- let plainText = ''
50
- if (typeof plain === 'object') {
51
- plainText = JSON.stringify(plain)
52
- } else {
53
- plainText = plain
54
- }
55
-
56
- let answer = undefined
57
- IWSAAttachedSign('1', plainText, '0', 'SHA1', (errorCode, signedData) => {
58
- if (errorCode === 0 || errorCode === '0') {
59
- answer = signedData
60
- } else {
61
- alert('签名失败!')
62
- }
63
- })
64
- return answer
65
- }
1
+ // Attached方式签名
2
+ import { IWSAgent } from './InfosecNetSignCNGAgent.min.js'
3
+
4
+ const { IWSASetTimeOut, IWSAAttachedSign, IWSAAttachedVerify, IWSASendAvailable, IWSAGetAvailable } = new IWSAgent()
5
+ IWSASetTimeOut(6000)
6
+
7
+ let _dn
8
+ function getDN() {
9
+ if (!_dn) {
10
+ let userInfo = JSON.parse(sessionStorage.getItem('userInfo'))
11
+ if (userInfo?.dn) {
12
+ _dn = userInfo.dn
13
+ }
14
+ }
15
+ return _dn
16
+ }
17
+
18
+ /* 检测本地签名端口是否可用 */
19
+ export function availableSign(fn) {
20
+ IWSASendAvailable() // 异步请求,需等待
21
+ setTimeout(() => {
22
+ let available = IWSAGetAvailable()
23
+ fn && fn(available)
24
+ }, 300)
25
+ }
26
+
27
+ /* 签名解签 */
28
+ export function verifySign(signedMsg) {
29
+ let plainText
30
+ IWSAAttachedVerify('1', signedMsg, (errorCode, PlainText, SigncertDN) => {
31
+ if (errorCode === 0 || errorCode === '0') {
32
+ plainText = PlainText
33
+ } else {
34
+ alert('签名解签失败!')
35
+ }
36
+ })
37
+ return plainText
38
+ }
39
+
40
+ /* 给对象或字符串签名 */
41
+ export function getSign(plain, dn) {
42
+ if (dn === undefined) {
43
+ dn = getDN()
44
+ }
45
+ if (!dn) {
46
+ alert('签名参数DN错误!')
47
+ return false
48
+ }
49
+ let plainText = ''
50
+ if (typeof plain === 'object') {
51
+ plainText = JSON.stringify(plain)
52
+ } else {
53
+ plainText = plain
54
+ }
55
+
56
+ let answer = undefined
57
+ IWSAAttachedSign('1', plainText, '0', 'SHA1', (errorCode, signedData) => {
58
+ if (errorCode === 0 || errorCode === '0') {
59
+ answer = signedData
60
+ } else {
61
+ alert('签名失败!')
62
+ }
63
+ })
64
+ return answer
65
+ }
@@ -1 +1 @@
1
- export { availableSign, verifySign, getSign } from './index.js'
1
+ export { availableSign, verifySign, getSign } from './index.js'
@@ -1,2 +1,2 @@
1
- import { setTabsForSub } from './CompatibleOld'
2
- export default setTabsForSub
1
+ import { setTabsForSub } from './CompatibleOld'
2
+ export default setTabsForSub
package/src/utils/auth.js CHANGED
@@ -1,53 +1,53 @@
1
- /* 设置/获取token */
2
- import Cookies from 'js-cookie'
3
-
4
- const STORAGE = window.sessionStorage
5
-
6
- const auth = {
7
- stokenKey: 'token',
8
- cokenKey: 'token',
9
- tokenVal: '',
10
- getTokenKey() {
11
- return this.stokenKey
12
- },
13
- getToken() {
14
- this.tokenVal || (this.tokenVal = STORAGE.getItem(this.stokenKey))
15
- return this.tokenVal
16
- },
17
- getCookieToken() {
18
- return Cookies.get(this.cokenKey)
19
- },
20
- setToken(val) {
21
- Cookies.set(this.cokenKey, val, { expires: 1 })
22
- STORAGE.setItem(this.stokenKey, val)
23
- },
24
- removeToken() {
25
- this.tokenVal = ''
26
- Cookies.remove(this.cokenKey)
27
- STORAGE.removeItem(this.stokenKey)
28
- toLogin()
29
- },
30
- setLoginPath(router) {
31
- let { base = '/', mode = 'history' } = router.options
32
- if (mode === 'hash') {
33
- ownLoginPath = window.location.origin + base + '#/login'
34
- } else {
35
- ownLoginPath = window.location.origin + base + 'login'
36
- }
37
- // 判断有没有token,没有直接跳到登录页
38
- auth.getToken() || toLogin()
39
- }
40
- }
41
- auth.cokenKey = 'Admin-Token'
42
-
43
- let ownLoginPath = '/login'
44
- function toLogin() {
45
- let hrefOld = window.location.href
46
- let loginHref = window.__POWERED_BY_QIANKUN__ ? window.location.origin + '/login' : ownLoginPath
47
- if (hrefOld !== loginHref) {
48
- history.pushState(null, null, loginHref)
49
- window.location.reload()
50
- }
51
- }
52
-
53
- export default auth
1
+ /* 设置/获取token */
2
+ import Cookies from 'js-cookie'
3
+
4
+ const STORAGE = window.sessionStorage
5
+
6
+ const auth = {
7
+ stokenKey: 'token',
8
+ cokenKey: 'token',
9
+ tokenVal: '',
10
+ getTokenKey() {
11
+ return this.stokenKey
12
+ },
13
+ getToken() {
14
+ this.tokenVal || (this.tokenVal = STORAGE.getItem(this.stokenKey))
15
+ return this.tokenVal
16
+ },
17
+ getCookieToken() {
18
+ return Cookies.get(this.cokenKey)
19
+ },
20
+ setToken(val) {
21
+ Cookies.set(this.cokenKey, val, { expires: 1 })
22
+ STORAGE.setItem(this.stokenKey, val)
23
+ },
24
+ removeToken() {
25
+ this.tokenVal = ''
26
+ Cookies.remove(this.cokenKey)
27
+ STORAGE.removeItem(this.stokenKey)
28
+ toLogin()
29
+ },
30
+ setLoginPath(router) {
31
+ let { base = '/', mode = 'history' } = router.options
32
+ if (mode === 'hash') {
33
+ ownLoginPath = window.location.origin + base + '#/login'
34
+ } else {
35
+ ownLoginPath = window.location.origin + base + 'login'
36
+ }
37
+ // 判断有没有token,没有直接跳到登录页
38
+ auth.getToken() || toLogin()
39
+ }
40
+ }
41
+ auth.cokenKey = 'Admin-Token'
42
+
43
+ let ownLoginPath = '/login'
44
+ function toLogin() {
45
+ let hrefOld = window.location.href
46
+ let loginHref = window.__POWERED_BY_QIANKUN__ ? window.location.origin + '/login' : ownLoginPath
47
+ if (hrefOld !== loginHref) {
48
+ history.pushState(null, null, loginHref)
49
+ window.location.reload()
50
+ }
51
+ }
52
+
53
+ export default auth
@@ -1,203 +1,203 @@
1
- import _axios from 'axios'
2
- import ElementUI from 'element-ui'
3
- import auth from './auth'
4
- const _Loading = ElementUI.Loading
5
- const _Message = ElementUI.Message
6
-
7
- /* 添加msg */
8
- function showMsg(msg, single = true) {
9
- if (!single || !document.querySelector('.xhr-msg-top')) {
10
- _Message({
11
- showClose: true,
12
- message: msg,
13
- type: 'error',
14
- customClass: 'xhr-msg-top'
15
- })
16
- }
17
- }
18
- /* 添加loading */
19
- let loadingBox
20
- let loadingCount = 0
21
- function showLoading(opt) {
22
- let loading = opt.loading
23
- if (loading === true) {
24
- if (loadingCount === 0 && !document.querySelector('.xhr-loading-top')) {
25
- loadingBox = _Loading.service({
26
- lock: true,
27
- text: '加载中',
28
- background: 'rgba(0, 0, 0, 0.1)',
29
- customClass: 'xhr-loading-top'
30
- })
31
- }
32
- loadingCount++
33
- }
34
- }
35
- function closeLoading(opt) {
36
- let loading = opt.loading
37
- if (loading === true) {
38
- loadingCount--
39
- if (loadingCount === 0) {
40
- if (loadingBox) loadingBox.close()
41
- }
42
- } else if (typeof loading === 'function') {
43
- loading()
44
- }
45
- }
46
- /* 请求防抖 */
47
- let debounceObj = {}
48
-
49
- const config = {
50
- baseURL: process.env.VUE_APP_BASE_API || '',
51
- crossDomain: true, // 允许跨域
52
- // withCredentials: true, // 跨域携带cookie
53
- timeout: 120000,
54
- validateStatus(status) {
55
- return status === 200
56
- }
57
- }
58
- const axios = _axios.create(config)
59
-
60
- axios.interceptors.request.use((opt) => {
61
- let token = auth.getToken()
62
- let headers = {
63
- Authorization: token ? 'Bearer ' + token : 'Basic TlNUQzpWVkIxVG1sVlVURlNMemxyTkhoc2VtNXdObFJaUVQwOQ==',
64
- OperationDesc: opt.OperationDesc ? encodeURI(opt.OperationDesc) : 'default',
65
- timestamp: Date.now(),
66
- requestKey: Date.now()
67
- }
68
- opt.headers = Object.assign(headers, opt.headers)
69
-
70
- return opt
71
- })
72
-
73
- function errorFn(status, msg, noMsg) {
74
- if (status === 401 || msg.includes('401')) {
75
- if (navigator.userAgent.indexOf('NSTC-WebEntry') > -1) {
76
- showMsg('超时未操作,请重新登录!')
77
- setTimeout(() => {
78
- localStorage.clear()
79
- sessionStorage.clear()
80
- window.top.webQuit()
81
- }, 3000)
82
- } else {
83
- noMsg || showMsg('超时未操作,请重新登录!')
84
- setTimeout(() => {
85
- auth.removeToken()
86
- }, 1000)
87
- }
88
- } else if (status === 400 || msg.includes('400')) {
89
- noMsg || showMsg('400,参数错误!')
90
- } else if (status === 404 || msg.includes('404')) {
91
- noMsg || showMsg('404,网络连接失败!')
92
- } else if (status === 500 || msg.includes('500')) {
93
- noMsg || showMsg('500,服务器链接失败!')
94
- } else if (status === 'ECONNABORTED' && msg.includes('timeout')) {
95
- showMsg('请求超时')
96
- } else if (status >= 900) {
97
- noMsg || showMsg(msg)
98
- } else {
99
- noMsg || showMsg(msg)
100
- }
101
- throw { code: status, msg: msg }
102
- }
103
-
104
- axios.interceptors.response.use(
105
- (res) => {
106
- let status = (res.data && res.data.code) || res.status
107
- if (Number(status) === 200) {
108
- return res
109
- } else {
110
- let msg = (res.data && (res.data.msg || res.data.message)) || ''
111
- let noMsg = res.config && res.config.noMsg
112
-
113
- return errorFn(status, msg, noMsg)
114
- }
115
- },
116
- (err) => {
117
- let status = err.status
118
- let msg = err.message || ''
119
- let noMsg = err.config && err.config.noMsg
120
-
121
- return errorFn(status, msg, noMsg)
122
- }
123
- )
124
-
125
- function request(opt) {
126
- let loading = opt.loading === undefined ? true : opt.loading
127
- showLoading({ loading })
128
-
129
- if (debounceObj[opt.method + opt.url]) {
130
- debounceObj[opt.method + opt.url].finally(() => {
131
- closeLoading({ loading })
132
- })
133
-
134
- // 短时间多次请求,均返回第一次请求结果
135
- return debounceObj[opt.method + opt.url]
136
- }
137
-
138
- let resPro = new Promise((resolve, reject) => {
139
- axios
140
- .request(opt)
141
- .then((res) => {
142
- if (opt.responseType === 'blob') {
143
- let filename = getFilename(res.headers['content-disposition'])
144
- filename && res.data && (res.data.name = filename)
145
- resolve(res.data)
146
- } else {
147
- if (typeof res.data === 'object' && res.data.data === undefined) {
148
- res.data.data = {}
149
- }
150
- resolve(res.data)
151
- }
152
- })
153
- .catch((error) => {
154
- reject(error)
155
- })
156
- })
157
-
158
- resPro.finally(() => {
159
- delete debounceObj[opt.method + opt.url]
160
-
161
- closeLoading({ loading })
162
- })
163
- debounceObj[opt.method + opt.url] = resPro
164
- return resPro
165
- }
166
-
167
- function getFilename(cd = '') {
168
- let cdArr = cd.split(';')
169
- let filename = cdArr.find((d) => /filename/i.test(d))
170
- if (filename) {
171
- filename = filename.split('=')
172
- if (filename[1]) {
173
- return decodeURI(filename[1].trim())
174
- }
175
- }
176
- return ''
177
- }
178
-
179
- // 自定义axios
180
- function customAxios(opt) {
181
- return request(opt)
182
- }
183
- customAxios.defaults = axios.defaults
184
- /** @returns {Promise} */
185
- customAxios.request = request
186
- /** @returns {Promise} */
187
- customAxios.get = function (url, params = {}, opt = {}) {
188
- return request(Object.assign({ method: 'get', url, params }, opt))
189
- }
190
- /** @returns {Promise} */
191
- customAxios.post = function (url, data = {}, opt = {}) {
192
- return request(Object.assign({ method: 'post', url, data }, opt))
193
- }
194
- /** @returns {Promise} */
195
- customAxios.put = function (url, data = {}, params = {}, opt = {}) {
196
- return this.request(Object.assign({ method: 'put', url, data, params }, opt))
197
- }
198
- /** @returns {Promise} */
199
- customAxios.delete = function (url, params = {}, opt = {}) {
200
- return this.request(Object.assign({ method: 'delete', url, params }, opt))
201
- }
202
-
203
- export default customAxios
1
+ import _axios from 'axios'
2
+ import ElementUI from 'element-ui'
3
+ import auth from './auth'
4
+ const _Loading = ElementUI.Loading
5
+ const _Message = ElementUI.Message
6
+
7
+ /* 添加msg */
8
+ function showMsg(msg, single = true) {
9
+ if (!single || !document.querySelector('.xhr-msg-top')) {
10
+ _Message({
11
+ showClose: true,
12
+ message: msg,
13
+ type: 'error',
14
+ customClass: 'xhr-msg-top'
15
+ })
16
+ }
17
+ }
18
+ /* 添加loading */
19
+ let loadingBox
20
+ let loadingCount = 0
21
+ function showLoading(opt) {
22
+ let loading = opt.loading
23
+ if (loading === true) {
24
+ if (loadingCount === 0 && !document.querySelector('.xhr-loading-top')) {
25
+ loadingBox = _Loading.service({
26
+ lock: true,
27
+ text: '加载中',
28
+ background: 'rgba(0, 0, 0, 0.1)',
29
+ customClass: 'xhr-loading-top'
30
+ })
31
+ }
32
+ loadingCount++
33
+ }
34
+ }
35
+ function closeLoading(opt) {
36
+ let loading = opt.loading
37
+ if (loading === true) {
38
+ loadingCount--
39
+ if (loadingCount === 0) {
40
+ if (loadingBox) loadingBox.close()
41
+ }
42
+ } else if (typeof loading === 'function') {
43
+ loading()
44
+ }
45
+ }
46
+ /* 请求防抖 */
47
+ let debounceObj = {}
48
+
49
+ const config = {
50
+ baseURL: process.env.VUE_APP_BASE_API || '',
51
+ crossDomain: true, // 允许跨域
52
+ // withCredentials: true, // 跨域携带cookie
53
+ timeout: 120000,
54
+ validateStatus(status) {
55
+ return status === 200
56
+ }
57
+ }
58
+ const axios = _axios.create(config)
59
+
60
+ axios.interceptors.request.use((opt) => {
61
+ let token = auth.getToken()
62
+ let headers = {
63
+ Authorization: token ? 'Bearer ' + token : 'Basic TlNUQzpWVkIxVG1sVlVURlNMemxyTkhoc2VtNXdObFJaUVQwOQ==',
64
+ OperationDesc: opt.OperationDesc ? encodeURI(opt.OperationDesc) : 'default',
65
+ timestamp: Date.now(),
66
+ requestKey: Date.now()
67
+ }
68
+ opt.headers = Object.assign(headers, opt.headers)
69
+
70
+ return opt
71
+ })
72
+
73
+ function errorFn(status, msg, noMsg) {
74
+ if (status === 401 || msg.includes('401')) {
75
+ if (navigator.userAgent.indexOf('NSTC-WebEntry') > -1) {
76
+ showMsg('超时未操作,请重新登录!')
77
+ setTimeout(() => {
78
+ localStorage.clear()
79
+ sessionStorage.clear()
80
+ window.top.webQuit()
81
+ }, 3000)
82
+ } else {
83
+ noMsg || showMsg('超时未操作,请重新登录!')
84
+ setTimeout(() => {
85
+ auth.removeToken()
86
+ }, 1000)
87
+ }
88
+ } else if (status === 400 || msg.includes('400')) {
89
+ noMsg || showMsg('400,参数错误!')
90
+ } else if (status === 404 || msg.includes('404')) {
91
+ noMsg || showMsg('404,网络连接失败!')
92
+ } else if (status === 500 || msg.includes('500')) {
93
+ noMsg || showMsg('500,服务器链接失败!')
94
+ } else if (status === 'ECONNABORTED' && msg.includes('timeout')) {
95
+ showMsg('请求超时')
96
+ } else if (status >= 900) {
97
+ noMsg || showMsg(msg)
98
+ } else {
99
+ noMsg || showMsg(msg)
100
+ }
101
+ throw { code: status, msg: msg }
102
+ }
103
+
104
+ axios.interceptors.response.use(
105
+ (res) => {
106
+ let status = (res.data && res.data.code) || res.status
107
+ if (Number(status) === 200) {
108
+ return res
109
+ } else {
110
+ let msg = (res.data && (res.data.msg || res.data.message)) || ''
111
+ let noMsg = res.config && res.config.noMsg
112
+
113
+ return errorFn(status, msg, noMsg)
114
+ }
115
+ },
116
+ (err) => {
117
+ let status = err.status
118
+ let msg = err.message || ''
119
+ let noMsg = err.config && err.config.noMsg
120
+
121
+ return errorFn(status, msg, noMsg)
122
+ }
123
+ )
124
+
125
+ function request(opt) {
126
+ let loading = opt.loading === undefined ? true : opt.loading
127
+ showLoading({ loading })
128
+
129
+ if (debounceObj[opt.method + opt.url]) {
130
+ debounceObj[opt.method + opt.url].finally(() => {
131
+ closeLoading({ loading })
132
+ })
133
+
134
+ // 短时间多次请求,均返回第一次请求结果
135
+ return debounceObj[opt.method + opt.url]
136
+ }
137
+
138
+ let resPro = new Promise((resolve, reject) => {
139
+ axios
140
+ .request(opt)
141
+ .then((res) => {
142
+ if (opt.responseType === 'blob') {
143
+ let filename = getFilename(res.headers['content-disposition'])
144
+ filename && res.data && (res.data.name = filename)
145
+ resolve(res.data)
146
+ } else {
147
+ if (typeof res.data === 'object' && res.data.data === undefined) {
148
+ res.data.data = {}
149
+ }
150
+ resolve(res.data)
151
+ }
152
+ })
153
+ .catch((error) => {
154
+ reject(error)
155
+ })
156
+ })
157
+
158
+ resPro.finally(() => {
159
+ delete debounceObj[opt.method + opt.url]
160
+
161
+ closeLoading({ loading })
162
+ })
163
+ debounceObj[opt.method + opt.url] = resPro
164
+ return resPro
165
+ }
166
+
167
+ function getFilename(cd = '') {
168
+ let cdArr = cd.split(';')
169
+ let filename = cdArr.find((d) => /filename/i.test(d))
170
+ if (filename) {
171
+ filename = filename.split('=')
172
+ if (filename[1]) {
173
+ return decodeURI(filename[1].trim())
174
+ }
175
+ }
176
+ return ''
177
+ }
178
+
179
+ // 自定义axios
180
+ function customAxios(opt) {
181
+ return request(opt)
182
+ }
183
+ customAxios.defaults = axios.defaults
184
+ /** @returns {Promise} */
185
+ customAxios.request = request
186
+ /** @returns {Promise} */
187
+ customAxios.get = function (url, params = {}, opt = {}) {
188
+ return request(Object.assign({ method: 'get', url, params }, opt))
189
+ }
190
+ /** @returns {Promise} */
191
+ customAxios.post = function (url, data = {}, opt = {}) {
192
+ return request(Object.assign({ method: 'post', url, data }, opt))
193
+ }
194
+ /** @returns {Promise} */
195
+ customAxios.put = function (url, data = {}, params = {}, opt = {}) {
196
+ return this.request(Object.assign({ method: 'put', url, data, params }, opt))
197
+ }
198
+ /** @returns {Promise} */
199
+ customAxios.delete = function (url, params = {}, opt = {}) {
200
+ return this.request(Object.assign({ method: 'delete', url, params }, opt))
201
+ }
202
+
203
+ export default customAxios