kn-cli 1.0.130 → 1.0.133

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 (210) hide show
  1. package/build/vite.config.js +1 -1
  2. package/build/webpack.config.js +2 -1
  3. package/package.json +2 -1
  4. package/src/create.js +2 -0
  5. package/templates/template_admin_antd5/.vscode/settings.json +28 -0
  6. package/templates/template_admin_antd5/build.sh +8 -0
  7. package/templates/template_admin_antd5/cli.config.js +35 -0
  8. package/templates/template_admin_antd5/dev.sh +33 -0
  9. package/templates/template_admin_antd5/frontend_build.sh +48 -0
  10. package/templates/template_admin_antd5/init/prepare-commit-msg +5 -0
  11. package/templates/template_admin_antd5/init.sh +24 -0
  12. package/templates/template_admin_antd5/jsconfig.json +17 -0
  13. package/templates/template_admin_antd5/package.json +27 -0
  14. package/templates/template_admin_antd5/public/404.html +26 -0
  15. package/templates/template_admin_antd5/public/favicon.png +0 -0
  16. package/templates/template_admin_antd5/public/index.html +48 -0
  17. package/templates/template_admin_antd5/public/src/_antd.less +37 -0
  18. package/templates/template_admin_antd5/public/src/_mixin.module.less +79 -0
  19. package/templates/template_admin_antd5/public/src/_reset.module.less +134 -0
  20. package/templates/template_admin_antd5/public/src/_variable.module.less +85 -0
  21. package/templates/template_admin_antd5/public/src/assets/iconfont/iconfont.eot +0 -0
  22. package/templates/template_admin_antd5/public/src/assets/iconfont/iconfont.module.less +109 -0
  23. package/templates/template_admin_antd5/public/src/assets/iconfont/iconfont.svg +75 -0
  24. package/templates/template_admin_antd5/public/src/assets/iconfont/iconfont.ttf +0 -0
  25. package/templates/template_admin_antd5/public/src/assets/iconfont/iconfont.woff +0 -0
  26. package/templates/template_admin_antd5/public/src/assets/iconfont/iconfont.woff2 +0 -0
  27. package/templates/template_admin_antd5/public/src/assets/images/arrow.png +0 -0
  28. package/templates/template_admin_antd5/public/src/assets/images/avatar.png +0 -0
  29. package/templates/template_admin_antd5/public/src/assets/images/icon-notice.png +0 -0
  30. package/templates/template_admin_antd5/public/src/assets/images/icon-user.png +0 -0
  31. package/templates/template_admin_antd5/public/src/assets/images/loadFail.png +0 -0
  32. package/templates/template_admin_antd5/public/src/assets/images/loading.svg +40 -0
  33. package/templates/template_admin_antd5/public/src/assets/images/login/bg.png +0 -0
  34. package/templates/template_admin_antd5/public/src/assets/images/login/logo.png +0 -0
  35. package/templates/template_admin_antd5/public/src/assets/images/login/slogan.png +0 -0
  36. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-dep-active.png +0 -0
  37. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-dep.png +0 -0
  38. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-log-active.png +0 -0
  39. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-log.png +0 -0
  40. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-loginlog-active.png +0 -0
  41. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-loginlog.png +0 -0
  42. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-role-active.png +0 -0
  43. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-role.png +0 -0
  44. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-user-active.png +0 -0
  45. package/templates/template_admin_antd5/public/src/assets/images/nav/icon-user.png +0 -0
  46. package/templates/template_admin_antd5/public/src/assets/images/nav/nav-toggle.png +0 -0
  47. package/templates/template_admin_antd5/public/src/assets/images/nav/slogan.png +0 -0
  48. package/templates/template_admin_antd5/public/src/assets/images/noData.png +0 -0
  49. package/templates/template_admin_antd5/public/src/assets/images/noSelect.png +0 -0
  50. package/templates/template_admin_antd5/public/src/assets/images/permission/403.png +0 -0
  51. package/templates/template_admin_antd5/public/src/assets/images/permission/404.png +0 -0
  52. package/templates/template_admin_antd5/public/src/assets/images/permission/503.png +0 -0
  53. package/templates/template_admin_antd5/public/src/assets/images/play.png +0 -0
  54. package/templates/template_admin_antd5/public/src/components/_table/column.jsx +47 -0
  55. package/templates/template_admin_antd5/public/src/components/_table/column.module.less +12 -0
  56. package/templates/template_admin_antd5/public/src/components/_table/index.jsx +71 -0
  57. package/templates/template_admin_antd5/public/src/components/_table/index.module.less +15 -0
  58. package/templates/template_admin_antd5/public/src/components/antd/antProvider.jsx +21 -0
  59. package/templates/template_admin_antd5/public/src/components/antd/index.jsx +146 -0
  60. package/templates/template_admin_antd5/public/src/components/antd/select/index.jsx +296 -0
  61. package/templates/template_admin_antd5/public/src/components/antd/select/index.module.less +21 -0
  62. package/templates/template_admin_antd5/public/src/components/antd/theme.js +173 -0
  63. package/templates/template_admin_antd5/public/src/components/antd/tooltip/detail/index.jsx +70 -0
  64. package/templates/template_admin_antd5/public/src/components/antd/tooltip/detail/index.module.less +12 -0
  65. package/templates/template_admin_antd5/public/src/components/antd/tooltip/index.jsx +69 -0
  66. package/templates/template_admin_antd5/public/src/components/antd/tooltip/index.module.less +28 -0
  67. package/templates/template_admin_antd5/public/src/components/auth/index.jsx +123 -0
  68. package/templates/template_admin_antd5/public/src/components/auth/index.module.less +7 -0
  69. package/templates/template_admin_antd5/public/src/components/auth/navCheck.jsx +27 -0
  70. package/templates/template_admin_antd5/public/src/components/badge/index.jsx +47 -0
  71. package/templates/template_admin_antd5/public/src/components/badge/index.module.less +44 -0
  72. package/templates/template_admin_antd5/public/src/components/button/index.jsx +17 -0
  73. package/templates/template_admin_antd5/public/src/components/debug/index.jsx +28 -0
  74. package/templates/template_admin_antd5/public/src/components/debug/index.module.less +10 -0
  75. package/templates/template_admin_antd5/public/src/components/empty/index.jsx +28 -0
  76. package/templates/template_admin_antd5/public/src/components/empty/index.module.less +20 -0
  77. package/templates/template_admin_antd5/public/src/components/error/index.jsx +39 -0
  78. package/templates/template_admin_antd5/public/src/components/icon/index.jsx +128 -0
  79. package/templates/template_admin_antd5/public/src/components/icon/playVideo/index.jsx +21 -0
  80. package/templates/template_admin_antd5/public/src/components/icon/playVideo/index.module.less +16 -0
  81. package/templates/template_admin_antd5/public/src/components/iconFont/index.jsx +20 -0
  82. package/templates/template_admin_antd5/public/src/components/iconFont/index.module.less +5 -0
  83. package/templates/template_admin_antd5/public/src/components/image/index.jsx +73 -0
  84. package/templates/template_admin_antd5/public/src/components/image/index.module.less +117 -0
  85. package/templates/template_admin_antd5/public/src/components/image/preview.jsx +85 -0
  86. package/templates/template_admin_antd5/public/src/components/layout/basic/index.jsx +49 -0
  87. package/templates/template_admin_antd5/public/src/components/layout/basic/index.module.less +76 -0
  88. package/templates/template_admin_antd5/public/src/components/layout/index.jsx +39 -0
  89. package/templates/template_admin_antd5/public/src/components/layout/index.module.less +63 -0
  90. package/templates/template_admin_antd5/public/src/components/layout/provider/index.jsx +32 -0
  91. package/templates/template_admin_antd5/public/src/components/leftMenu/index.jsx +106 -0
  92. package/templates/template_admin_antd5/public/src/components/leftMenu/index.module.less +42 -0
  93. package/templates/template_admin_antd5/public/src/components/link/index.jsx +39 -0
  94. package/templates/template_admin_antd5/public/src/components/link/index.module.less +11 -0
  95. package/templates/template_admin_antd5/public/src/components/menuIcon/index.jsx +33 -0
  96. package/templates/template_admin_antd5/public/src/components/menuIcon/index.module.less +49 -0
  97. package/templates/template_admin_antd5/public/src/components/page/pageLoading/index.jsx +51 -0
  98. package/templates/template_admin_antd5/public/src/components/page/pageLoading/index.module.less +29 -0
  99. package/templates/template_admin_antd5/public/src/components/popup/index.jsx +60 -0
  100. package/templates/template_admin_antd5/public/src/components/popup/index.module.less +18 -0
  101. package/templates/template_admin_antd5/public/src/components/react/index.jsx +13 -0
  102. package/templates/template_admin_antd5/public/src/components/resizeBox/index.jsx +144 -0
  103. package/templates/template_admin_antd5/public/src/components/resizeBox/index.module.css +90 -0
  104. package/templates/template_admin_antd5/public/src/components/select/defaultServicesSelect/index.jsx +182 -0
  105. package/templates/template_admin_antd5/public/src/components/select/dictSelect/index.jsx +84 -0
  106. package/templates/template_admin_antd5/public/src/components/select/index.jsx +7 -0
  107. package/templates/template_admin_antd5/public/src/components/select/useSelectList.jsx +217 -0
  108. package/templates/template_admin_antd5/public/src/components/table/aliTable/index.jsx +250 -0
  109. package/templates/template_admin_antd5/public/src/components/table/aliTable/index.module.less +105 -0
  110. package/templates/template_admin_antd5/public/src/components/table/column.jsx +128 -0
  111. package/templates/template_admin_antd5/public/src/components/table/column.module.less +50 -0
  112. package/templates/template_admin_antd5/public/src/components/table/imageTable/index.jsx +302 -0
  113. package/templates/template_admin_antd5/public/src/components/table/imageTable/index.module.less +196 -0
  114. package/templates/template_admin_antd5/public/src/components/table/imageTable/radio.jsx +15 -0
  115. package/templates/template_admin_antd5/public/src/components/table/imageTable/radio.module.less +18 -0
  116. package/templates/template_admin_antd5/public/src/components/table/index.jsx +475 -0
  117. package/templates/template_admin_antd5/public/src/components/table/index.module.less +133 -0
  118. package/templates/template_admin_antd5/public/src/components/text/index.jsx +98 -0
  119. package/templates/template_admin_antd5/public/src/components/text/index.module.less +13 -0
  120. package/templates/template_admin_antd5/public/src/components/toast/index.jsx +79 -0
  121. package/templates/template_admin_antd5/public/src/components/toast/index.module.less +43 -0
  122. package/templates/template_admin_antd5/public/src/components/topMenu/index.jsx +102 -0
  123. package/templates/template_admin_antd5/public/src/components/topMenu/index.module.less +89 -0
  124. package/templates/template_admin_antd5/public/src/components/topMenu/topBar/index.jsx +81 -0
  125. package/templates/template_admin_antd5/public/src/components/topMenu/topBar/index.module.less +97 -0
  126. package/templates/template_admin_antd5/public/src/components/video/index.jsx +96 -0
  127. package/templates/template_admin_antd5/public/src/components/video/index.module.less +132 -0
  128. package/templates/template_admin_antd5/public/src/components/video/preview.jsx +38 -0
  129. package/templates/template_admin_antd5/public/src/config.js +31 -0
  130. package/templates/template_admin_antd5/public/src/declarations.d.ts +1 -0
  131. package/templates/template_admin_antd5/public/src/dictionary/dictionary.js +289 -0
  132. package/templates/template_admin_antd5/public/src/dictionary/index.jsx +64 -0
  133. package/templates/template_admin_antd5/public/src/enum.js +41 -0
  134. package/templates/template_admin_antd5/public/src/hooks/index.jsx +29 -0
  135. package/templates/template_admin_antd5/public/src/hooks/useDebounceFn.jsx +33 -0
  136. package/templates/template_admin_antd5/public/src/hooks/useDelay.jsx +34 -0
  137. package/templates/template_admin_antd5/public/src/hooks/useEsc.jsx +98 -0
  138. package/templates/template_admin_antd5/public/src/hooks/useImageLoader.jsx +26 -0
  139. package/templates/template_admin_antd5/public/src/hooks/useInToView.jsx +58 -0
  140. package/templates/template_admin_antd5/public/src/hooks/useLoading.jsx +46 -0
  141. package/templates/template_admin_antd5/public/src/hooks/usePreload.jsx +67 -0
  142. package/templates/template_admin_antd5/public/src/hooks/useRouteMenu.jsx +263 -0
  143. package/templates/template_admin_antd5/public/src/hooks/useScrollTop.jsx +44 -0
  144. package/templates/template_admin_antd5/public/src/hooks/useSearch.jsx +163 -0
  145. package/templates/template_admin_antd5/public/src/hooks/useTableRowSelect.jsx +310 -0
  146. package/templates/template_admin_antd5/public/src/hooks/useThrottole.jsx +68 -0
  147. package/templates/template_admin_antd5/public/src/hooks/useTimer.jsx +42 -0
  148. package/templates/template_admin_antd5/public/src/hooks/useUpdate.jsx +16 -0
  149. package/templates/template_admin_antd5/public/src/hooks/useWatchServices.jsx +124 -0
  150. package/templates/template_admin_antd5/public/src/index.jsx +89 -0
  151. package/templates/template_admin_antd5/public/src/menuConfig/auth.jsx +92 -0
  152. package/templates/template_admin_antd5/public/src/menuConfig/dashboard.jsx +25 -0
  153. package/templates/template_admin_antd5/public/src/menuConfig/dna.jsx +76 -0
  154. package/templates/template_admin_antd5/public/src/menuConfig/index.jsx +17 -0
  155. package/templates/template_admin_antd5/public/src/mock/auth.js +33 -0
  156. package/templates/template_admin_antd5/public/src/mock/demo.js +122 -0
  157. package/templates/template_admin_antd5/public/src/mock/index.js +65 -0
  158. package/templates/template_admin_antd5/public/src/mock/utils.js +33 -0
  159. package/templates/template_admin_antd5/public/src/pages/antdComponents/index.jsx +142 -0
  160. package/templates/template_admin_antd5/public/src/pages/auth/user/create/index.jsx +47 -0
  161. package/templates/template_admin_antd5/public/src/pages/auth/user/create/index.module.less +6 -0
  162. package/templates/template_admin_antd5/public/src/pages/auth/user/dialog/index.jsx +96 -0
  163. package/templates/template_admin_antd5/public/src/pages/auth/user/index.jsx +214 -0
  164. package/templates/template_admin_antd5/public/src/pages/components/layout/index.jsx +75 -0
  165. package/templates/template_admin_antd5/public/src/pages/components/layout/index.module.less +78 -0
  166. package/templates/template_admin_antd5/public/src/pages/components/layout/titleBar/index.jsx +28 -0
  167. package/templates/template_admin_antd5/public/src/pages/components/layout/titleBar/index.module.less +44 -0
  168. package/templates/template_admin_antd5/public/src/pages/components/select/user.jsx +18 -0
  169. package/templates/template_admin_antd5/public/src/pages/demo/page1.jsx +21 -0
  170. package/templates/template_admin_antd5/public/src/pages/demo/page2.jsx +21 -0
  171. package/templates/template_admin_antd5/public/src/pages/demo/page3.jsx +21 -0
  172. package/templates/template_admin_antd5/public/src/pages/error/403.jsx +15 -0
  173. package/templates/template_admin_antd5/public/src/pages/error/404.jsx +15 -0
  174. package/templates/template_admin_antd5/public/src/pages/error/503.jsx +15 -0
  175. package/templates/template_admin_antd5/public/src/pages/error/permission.jsx +40 -0
  176. package/templates/template_admin_antd5/public/src/pages/error/permission.module.less +16 -0
  177. package/templates/template_admin_antd5/public/src/pages/home.jsx +90 -0
  178. package/templates/template_admin_antd5/public/src/pages/home.module.less +6 -0
  179. package/templates/template_admin_antd5/public/src/pages/login/index.jsx +113 -0
  180. package/templates/template_admin_antd5/public/src/pages/login/index.module.less +153 -0
  181. package/templates/template_admin_antd5/public/src/pages/pageTemplate.jsx +28 -0
  182. package/templates/template_admin_antd5/public/src/provider/app.jsx +201 -0
  183. package/templates/template_admin_antd5/public/src/provider/loading.jsx +47 -0
  184. package/templates/template_admin_antd5/public/src/provider/menu.jsx +161 -0
  185. package/templates/template_admin_antd5/public/src/provider/menu.module.less +35 -0
  186. package/templates/template_admin_antd5/public/src/route.jsx +127 -0
  187. package/templates/template_admin_antd5/public/src/services/demo.js +85 -0
  188. package/templates/template_admin_antd5/public/src/services/excel.js +43 -0
  189. package/templates/template_admin_antd5/public/src/services/http/index.js +155 -0
  190. package/templates/template_admin_antd5/public/src/services/index.js +126 -0
  191. package/templates/template_admin_antd5/public/src/services/interceptor/index.js +67 -0
  192. package/templates/template_admin_antd5/public/src/services/login.js +37 -0
  193. package/templates/template_admin_antd5/public/src/services/socket/index.jsx +99 -0
  194. package/templates/template_admin_antd5/public/src/services/token/index.js +41 -0
  195. package/templates/template_admin_antd5/public/src/type.js +67 -0
  196. package/templates/template_admin_antd5/public/src/utils/event.js +58 -0
  197. package/templates/template_admin_antd5/public/src/utils/format.js +135 -0
  198. package/templates/template_admin_antd5/public/src/utils/index.js +727 -0
  199. package/templates/template_admin_antd5/public/src/utils/menu.js +33 -0
  200. package/templates/template_admin_antd5/public/src/utils/rule.js +277 -0
  201. package/templates/template_admin_antd5/public/src/utils/storage.js +30 -0
  202. package/templates/template_admin_antd5/public/static/about.html +1 -0
  203. package/templates/template_admin_antd5/public/static/kssoLogin.html +22 -0
  204. package/templates/template_admin_antd5/readme.md +84 -0
  205. package/templates/template_admin_antd5/renamejstojsx.js +45 -0
  206. package/templates/template_admin_antd5/renameless.js +53 -0
  207. package/templates/template_admin_antd5/report.sh +25 -0
  208. package/templates/template_admin_antd5/shellUtil.sh +110 -0
  209. package/templates/template_admin_antd5/versionPublish.sh +16 -0
  210. package/templates/template_admin_antd5/webpack.api.js +105 -0
@@ -0,0 +1,126 @@
1
+ // @ts-ignore
2
+ import Axios from 'axios';
3
+ // @ts-ignore
4
+ import { message } from '@/components/antd';
5
+ import {WriteLog} from '@/utils';
6
+ import {CreateHttpTools} from './http';
7
+
8
+ import { DEBUG_API_HOST } from '@/config';
9
+ import {logout} from './token';
10
+ import {DefaultRequest} from './interceptor';
11
+ import {FormatTableService,FormatGetRequest,FormatRequestClean} from './interceptor';
12
+
13
+
14
+
15
+ // @ts-ignore
16
+ export const API_ROOT= BUILD_ENV=='localdebug'?DEBUG_API_HOST:API_HOST;
17
+ export const RESPONSE_STRUCT={
18
+ CODE:'code',
19
+ MSG:'msg',
20
+ DATA:'data',
21
+ PAGINATION:'pagination'
22
+ }
23
+
24
+ // @ts-ignore
25
+ console.log(`========API_ROOT:${API_ROOT}========`);
26
+
27
+ const Modal = {
28
+ error: (options) => {
29
+ message.error(options.content);
30
+ },
31
+ };
32
+
33
+ const axios = Axios.create();
34
+ axios.interceptors.request.use(DefaultRequest);
35
+
36
+ let ERROR_401_COUNT=0;
37
+ /**
38
+ * 统一拦截异常消息弹屏报错处理
39
+ * 如果希望某条消息不拦截,可以再发送消息时带上 noInterceptors:true|'all'
40
+ */
41
+ axios.interceptors.response.use(
42
+ function (response) {
43
+ // setJwt(response?.headers['set-token'] || jwt);
44
+ ERROR_401_COUNT=0;
45
+ // 不需要接口统一处理异常错误
46
+ // @ts-ignore
47
+ if (response.config.noInterceptors) {
48
+ return response;
49
+ }
50
+ const {data}= response;
51
+ const CODE = data[RESPONSE_STRUCT.CODE];
52
+ const MSG = data[RESPONSE_STRUCT.MSG];
53
+
54
+ if (Number(CODE) !== 0) {
55
+ console.log(`${JSON.stringify(data)}`);
56
+ Modal.error({ title: `注意`, content: `${MSG}(${CODE})` });
57
+ }
58
+ return response;
59
+ },
60
+ function (error) {
61
+ if(!error||!error.response){
62
+ Modal.error({
63
+ title: '网络错误',
64
+ content: error.message||'',
65
+ });
66
+ return Promise.resolve(null);
67
+ }
68
+
69
+ if (error.response.config.noInterceptors === 'all') {
70
+ return Promise.resolve(error.response);
71
+ }
72
+ // jwt失效
73
+ if (error.response.status === 401) {
74
+ if(ERROR_401_COUNT>0)return;
75
+ if( !error.config.url.includes('passport/logOut') ){
76
+ Modal.error({title:'注意',content:'您的登录已过期,请尝试重新登录'});
77
+ ERROR_401_COUNT++;
78
+ WriteLog(`=重新登录=接口401(${error.config.url})`)
79
+ if(logout)logout();
80
+ }
81
+ return Promise.resolve(null);
82
+ } else if (error.response.status === 403) {
83
+ Modal.error({
84
+ title: '提示',
85
+ content: `${error.response.data[RESPONSE_STRUCT.MSG]}`,
86
+ });
87
+ // if(logout)logout();
88
+ return Promise.resolve(null);
89
+ }
90
+ Modal.error({
91
+ title: `网络错误${error.response.status}`,
92
+ content: `${error.response.config.url}`,
93
+ });
94
+ return Promise.resolve(null);
95
+ }
96
+ );
97
+
98
+
99
+
100
+ const DEFAULT_HTTP = CreateHttpTools(axios);
101
+ const {
102
+ GET_DEFAULT,
103
+ GET_DEFAULT_CROSS,
104
+ POST_DEFAULT,
105
+ POST_DEFAULT_CROSS,
106
+ DELETE_DEFAULT,
107
+ PUT_DEFAULT
108
+ } = DEFAULT_HTTP;
109
+
110
+ export {
111
+ GET_DEFAULT,
112
+ GET_DEFAULT_CROSS,
113
+ POST_DEFAULT,
114
+ POST_DEFAULT_CROSS,
115
+ DELETE_DEFAULT,
116
+ PUT_DEFAULT
117
+ }
118
+
119
+
120
+
121
+
122
+ export {
123
+ FormatTableService,
124
+ FormatGetRequest,
125
+ FormatRequestClean
126
+ }
@@ -0,0 +1,67 @@
1
+
2
+
3
+ import {RESPONSE_STRUCT} from '../';
4
+ import {addToken} from '../token';
5
+
6
+
7
+
8
+ export const DefaultRequest=(config)=> {
9
+ let header = { 'X-Requested-With': 'XMLHttpRequest' };
10
+ header = addToken(header);
11
+ if (config.headers) {
12
+ config.headers = { ...config.headers, ...header };
13
+ } else {
14
+ config.headers = header;
15
+ }
16
+ // 在发送请求之前做些什么
17
+ return config;
18
+ }
19
+
20
+
21
+
22
+ export const FormatTableService = (response)=>{
23
+ let req={
24
+ code:response[RESPONSE_STRUCT.CODE]||0,
25
+ data:response[RESPONSE_STRUCT.DATA]||null,
26
+ msg:response[RESPONSE_STRUCT.MSG]||''
27
+ };
28
+ if(response[RESPONSE_STRUCT.PAGINATION]){
29
+ req.page = response[RESPONSE_STRUCT.PAGINATION]
30
+ }
31
+ return req;
32
+ };
33
+
34
+ /**
35
+ * 格式化处理GET请求的参数,将传参为空的删除掉,因为后端认为空字符串也是属于一个特定字符查询
36
+ * @param {object} requestParams
37
+ * @returns {object}
38
+ */
39
+ export const FormatGetRequest=(requestParams)=>{
40
+ for(let key in requestParams){
41
+ if(requestParams[key]==''
42
+ ||requestParams[key]===null
43
+ ||requestParams[key]==undefined
44
+ ){
45
+ delete requestParams[key];
46
+ }
47
+ }
48
+ return requestParams;
49
+ }
50
+
51
+
52
+ /**
53
+ * 清理以_开头的不参与接口提交的参数
54
+ * @param {object} requestParams
55
+ * @returns {object}
56
+ */
57
+ export const FormatRequestClean=(requestParams)=>{
58
+ for(let key in requestParams){
59
+ if(/^[_].*/.test(key)){
60
+ delete requestParams[key];
61
+ }
62
+ }
63
+ return requestParams;
64
+ }
65
+
66
+
67
+
@@ -0,0 +1,37 @@
1
+ import {GET_DEFAULT,API_ROOT,POST_DEFAULT} from './index';
2
+
3
+
4
+
5
+ /**
6
+ * KSSO登录
7
+ * @returns {Promise<ServicesResponse>}
8
+ */
9
+ export function KSSO_LOGIN(params={
10
+ code:'',
11
+ redirect_uri:''
12
+ }){
13
+ return Promise.resolve({
14
+ code:0,
15
+ data:{
16
+ token:'123',
17
+ name:'cx'
18
+ }
19
+ })
20
+ return GET_DEFAULT(`${API_ROOT}/auth/oauth2_generic/callback`,params)
21
+
22
+ }
23
+
24
+ /**
25
+ * 退出登录
26
+ * @returns {Promise<ServicesResponse>}
27
+ */
28
+ export function Logout(){
29
+ return Promise.resolve({
30
+ code:0,
31
+ data:{
32
+ token:'123',
33
+ name:'cx'
34
+ }
35
+ })
36
+ return POST_DEFAULT(`${API_ROOT}/passport/logOut`,{},{noInterceptors:'all'})
37
+ }
@@ -0,0 +1,99 @@
1
+
2
+ import {getJwt,logout} from '../token'
3
+ // @ts-ignore
4
+ import {Modal} from '@/components/antd';
5
+ import { CONSOLE_LOG ,WriteLog} from '@/utils';
6
+
7
+ let _ws;
8
+ let timer=null;
9
+
10
+ const MODULE_NAME='Websocket'
11
+
12
+ const CHECK_PING_PONG=true;
13
+ const TIME_OUT=15000;
14
+ const HEART_TICK=5000;
15
+
16
+ export const GET_SOCKET=()=>{
17
+ if(_ws)return _ws;
18
+ let token = getJwt();
19
+ let alertCount=0;
20
+ // @ts-ignore
21
+ _ws = new WebSocket(WS_HOST+`?bearer_token=${token}`);
22
+
23
+ let lastPongTime;
24
+ const startHeartbeat=()=> {
25
+ if(timer){window.clearInterval(timer);}
26
+ timer = window.setInterval(function() {
27
+ if (_ws && _ws.readyState === WebSocket.OPEN) {
28
+ if(!lastPongTime){
29
+ lastPongTime = Date.now();
30
+ }
31
+ if( CHECK_PING_PONG && Date.now() - lastPongTime >= TIME_OUT){
32
+ clear();
33
+ Modal.error({
34
+ title: '网络连接中断',
35
+ content: '请重新连接',
36
+ okText:'重新连接',
37
+ onOk:()=>{
38
+ GET_SOCKET();
39
+ }
40
+ });
41
+ return;
42
+ }
43
+ _ws.send('ping');
44
+ }
45
+ }, HEART_TICK); // 每5秒发送一次ping
46
+ }
47
+
48
+ const clear=()=>{
49
+ if(timer){window.clearInterval(timer);}
50
+ _ws=null;
51
+ }
52
+ _ws.onopen=()=>{
53
+ alertCount=0;
54
+ CONSOLE_LOG(MODULE_NAME,'connect success')
55
+ startHeartbeat();
56
+ }
57
+ _ws.onmessage = function(event) {
58
+ if(event.data == 'pong' || event.data=='ping'){
59
+ lastPongTime = Date.now();
60
+ _ws.send('pong');
61
+ return;
62
+ }
63
+ const {type,data} = JSON.parse(event.data);
64
+ CONSOLE_LOG(MODULE_NAME,'new msg',type,data)
65
+ switch(type){
66
+ case 'Pong':{}break;
67
+ }
68
+ }
69
+
70
+ _ws.onerror=function(e){
71
+ CONSOLE_LOG.error(MODULE_NAME,'error',e,alertCount)
72
+ }
73
+
74
+ _ws.onclose = function(e) {
75
+ CONSOLE_LOG.error(MODULE_NAME,'close',e,alertCount)
76
+ if(alertCount>0){return;}
77
+ const {code} =e;
78
+ clear();
79
+ alertCount++;
80
+
81
+ Modal.error({
82
+ title: '网络连接中断websocket',
83
+ content: `请重新登录(${code})`,
84
+ okText:'重新登录',
85
+ onOk:()=>{
86
+ WriteLog(`=重新登录=socket断开(${code})`);
87
+ // GET_SOCKET();
88
+ logout();
89
+
90
+ }
91
+ });
92
+ }
93
+ return _ws;
94
+ }
95
+ export const WS_SEND=(message)=>{
96
+ const ws = GET_SOCKET();
97
+ ws.send(message);
98
+ }
99
+
@@ -0,0 +1,41 @@
1
+
2
+ const tokenMode='header';//header,cookie
3
+ const tokenName='Authorization';
4
+
5
+ let jwt = '';
6
+ let _logout = ()=>{}
7
+
8
+
9
+ export const setJwt = (value) => {
10
+ if(value==''){
11
+ localStorage.removeItem('jwt');
12
+ jwt='';
13
+ return;
14
+
15
+ }
16
+ localStorage.setItem('jwt', value);
17
+ jwt = value;
18
+ };
19
+ export const getJwt=()=>{
20
+ return jwt;
21
+ }
22
+
23
+ export const setLogout=(fn)=>{
24
+ _logout=fn;
25
+ }
26
+ export const logout=()=>{
27
+ _logout();
28
+ }
29
+
30
+ export const addToken=(header)=>{
31
+ if(tokenMode=='header'){
32
+ if (jwt) {
33
+ header[tokenName] = jwt;
34
+ }
35
+ }
36
+ return header;
37
+ }
38
+
39
+ if(window){
40
+ window['setJwt']=setJwt;
41
+ }
@@ -0,0 +1,67 @@
1
+
2
+ /**
3
+ * 可自行扩展任意数量的属性
4
+ * @typedef {Object<string, any>} OtherAny
5
+ */
6
+
7
+ /**
8
+ * 指向DOM节点的ref
9
+ * @typedef {object} RefDomElement
10
+ * @property {HTMLElement} current - DOM节点
11
+ */
12
+
13
+
14
+ /**
15
+ * 分页
16
+ * @typedef {object} Pagination
17
+ * @property {number} current - 当前页码,1~N
18
+ * @property {number} pageSize=10 - 分页大小
19
+ * @property {number} total - 总记录条数
20
+ * @property {number} startIdx - 当前页面第一条的数据索引起始值
21
+ *
22
+ */
23
+
24
+
25
+
26
+ /**
27
+ * 接口response数据
28
+ * @template [T=object]
29
+ * @typedef {object} ServicesResponse
30
+ * @property {number} code - 接口处理结果,0为成功
31
+ * @property {T} data - 接口返回的数据
32
+ * @property {Pagination} [page] - 分页数据
33
+ * @property {string} [msg] - 消息内容
34
+ *
35
+ *
36
+ */
37
+
38
+
39
+
40
+ /**
41
+ * 设置菜单属性
42
+ * @typedef MenuConfig
43
+ * @property {string} primaryId - 菜单的primaryId值
44
+ * @property {('msgCount'|'icon'|'name')} key - 需要设置的字段名称
45
+ * @property {any} value - 字段值
46
+ */
47
+
48
+ /**
49
+ * 菜单项
50
+ * @typedef RouteMenuItem
51
+ * @property {string} name - 菜单展示的名称
52
+ * @property {boolean} [noAutoMatch=false] - 关闭自动菜单匹配跳转
53
+ * @property {import("react").JSX.Element} [component] - 菜单对应的页面JSX组件
54
+ * @property {string|import("react").JSX.Element} [icon] - 菜单图标
55
+ * @property {string} [url] - 菜单的URL地址
56
+ * @property {string} [routeTemplate] - 菜单的路由模版,用于匹配动态路由
57
+ * @property {number} [msgCount] - 菜单的未读消息数量
58
+ * @property {boolean} [hideMenu=false] - 是否为隐藏的菜单,隐藏的菜单不会展示独立菜单,但是会匹配路由
59
+ * @property {string[]|boolean} [auth] - 允许访问该菜单的权限列表
60
+ * @property {RouteMenuItem[]} [children] - 子菜单
61
+ * @property {string} [primaryId] - 菜单的唯一ID,如果存在primaryId,则菜单的key同primaryId
62
+ * @property {string} [key] - 会自动生成的菜单唯一ID,如果菜单配置内存在了primaryId,则会取该id
63
+ * @property {string} [parentKey] - 父级菜单的key,自动生成的
64
+ *
65
+ */
66
+
67
+
@@ -0,0 +1,58 @@
1
+
2
+
3
+ import {CONSOLE_LOG} from '@/utils';
4
+ const events={}
5
+
6
+
7
+ const MODULE_NAME='EventBus'
8
+
9
+ /**
10
+ * 监听消息
11
+ * @param {import('../enum').ENUM_EVENT_BUS_TYPE} type
12
+ * @param {(params:object)=>void} fn
13
+ */
14
+ export const addEventListener=(type,fn)=>{
15
+ const list = events[type]=events[type]||[];
16
+ list.push(fn);
17
+ }
18
+
19
+ /**
20
+ * 移除监听消息
21
+ * @param {import('../enum').ENUM_EVENT_BUS_TYPE} type
22
+ * @param {(params:object)=>void} fn
23
+ */
24
+ export const removeEventListener=(type,fn)=>{
25
+ const list = events[type]=events[type]||[];
26
+ for(let i=0;i<list.length;i++){
27
+ let _fn = list[i];
28
+ if(fn==_fn){
29
+ list.splice(i,1);
30
+ i--;
31
+ }
32
+ }
33
+ }
34
+
35
+ /**
36
+ * 广播消息
37
+ * @param {import('../enum').ENUM_EVENT_BUS_TYPE} type
38
+ * @param {object} params
39
+ */
40
+ export const broadcast=(type,params)=>{
41
+ CONSOLE_LOG(MODULE_NAME,'广播',type,params)
42
+ const list = events[type]=events[type]||[];
43
+ for(let i=0;i<list.length;i++){
44
+ let _fn = list[i];
45
+ _fn(params);
46
+ }
47
+ };
48
+
49
+
50
+
51
+ export default {
52
+ addEventListener,
53
+ removeEventListener,
54
+ broadcast
55
+ }
56
+
57
+
58
+
@@ -0,0 +1,135 @@
1
+ // @ts-ignore
2
+ import moment from 'moment';
3
+
4
+ /**
5
+ * 格式化为货币格式
6
+ * @param {string|number} value - 数值
7
+ * @param {number} decimal=2 - 格式化到小数点后几位
8
+ * @param {object} extra - 扩展参数
9
+ * @returns {string} 格式化后的字符串
10
+ */
11
+ export const formatMoney=(value,decimal=2,extra={noValue:'-',carry:false})=>{
12
+ const {noValue='-',carry=false}=extra;
13
+ try{
14
+ value = parseFloat(`${value}`);
15
+ if(Number.isNaN(value)){
16
+ value='';
17
+ return;
18
+ }
19
+ if(carry){
20
+ value = value.toFixed(decimal);
21
+ }else{
22
+ value = value.toFixed(decimal+1);
23
+ value = value.slice(0,-1);
24
+ }
25
+ }
26
+ catch(ex){
27
+ value='';
28
+ }finally{
29
+ if(value===''){
30
+ return noValue||'';
31
+ }
32
+ return `${value}`;
33
+ }
34
+ }
35
+
36
+ export const formatText=(value,extra={noValue:'-'})=>{
37
+ const {noValue='-'}= extra;
38
+ if(!value){
39
+ if(noValue)return noValue;
40
+ }
41
+ return value;
42
+ }
43
+
44
+
45
+ export const formatPhone=(value,extra={noValue:'-'})=>{
46
+ const {noValue='-'}= extra;
47
+ if(!value){
48
+ if(noValue)return noValue;
49
+ }
50
+ return value.replace(/(\d)(?=(\d{4})+$)/g, '$1-');
51
+ }
52
+
53
+ /**
54
+ * 文件大小展示转化为B、KB、MB
55
+ * @param {number} fileSize - 文件大小,单位bit
56
+ */
57
+ export const formatFileSize=(fileSize)=>{
58
+ if(fileSize<1024){
59
+ return fileSize+'B';
60
+ }
61
+ if(fileSize<(1024*1024)){
62
+ const size=(fileSize/1024).toFixed(1);
63
+ return size + 'KB';
64
+ }
65
+ if(fileSize < (1024 * 1024 * 1024)){
66
+ const size=(fileSize/(1024 * 1024)).toFixed(1);
67
+ return size+'M';
68
+ }
69
+ const size=(fileSize/(1024*1024*1024)).toFixed(1);
70
+ return size+'G';
71
+ }
72
+
73
+
74
+ /**
75
+ * 格式化用户名称
76
+ * @param {object} user
77
+ * @returns {string}
78
+ */
79
+ export const formatUserName=(user)=>{
80
+ if(user.status==0){
81
+ return `${user.name}[已禁用]`;
82
+ }
83
+ return user.name;
84
+ }
85
+
86
+ /**
87
+ *
88
+ * @param {moment|string} momentTime
89
+ * @param {string} type='minute' 'minute':精确到分钟 ,默认:精确到最大单位
90
+ *
91
+ * @returns {string}
92
+ */
93
+ export const fromNow=(momentTime,type='minute')=>{
94
+ var now = moment();
95
+ if(!moment.isMoment(momentTime)){
96
+ momentTime = moment(momentTime)
97
+ }
98
+ var duration = moment.duration(now.diff(momentTime));
99
+
100
+ // 获取小时和分钟
101
+ var days = Math.floor(duration.asDays());
102
+ var months = Math.floor(duration.asMonths());
103
+ var years = Math.floor(duration.asYears());
104
+
105
+ var hours = Math.floor(duration.asHours());
106
+ var minutes = duration.minutes();
107
+ // var seconds = duration.seconds();
108
+
109
+ if(years>0){
110
+ return momentTime.format('YYYY-MM-DD')
111
+ return `${years}年前`;
112
+ }
113
+ if(months>0){
114
+ return momentTime.format('MM-DD');
115
+ return `${months}个月前`;
116
+ }
117
+ if(days>0){
118
+ return `${days}天前`;
119
+ }
120
+ if(hours>0){
121
+ if(type=='hour'){
122
+ return `${hours}小时前`;
123
+ }
124
+ if(minutes<=0){
125
+ return `${hours}小时前`;
126
+ }else{
127
+ return `${hours}小时${minutes}分钟前`;
128
+ }
129
+ }
130
+ if(minutes>0){
131
+ return `${minutes}分钟前`;
132
+ }
133
+ return '刚刚';
134
+ }
135
+