kn-cli 1.0.91 → 1.0.92

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 (132) hide show
  1. package/package.json +1 -1
  2. package/readme.md +3 -0
  3. package/src/.DS_Store +0 -0
  4. package/templates/template_admin/.gitignore +6 -0
  5. package/templates/template_app/.gitignore +6 -0
  6. package/templates/template_oa/.gitignore +6 -0
  7. package/templates/template_oa/jsconfig.json +5 -1
  8. package/templates/template_oa/public/src/components/dialog/index.jsx +237 -0
  9. package/templates/template_oa/public/src/components/{Empty → empty}/index.jsx +9 -0
  10. package/templates/template_oa/public/src/components/{FormRow → formRow}/index.jsx +25 -3
  11. package/templates/{template_oa_jwt/public/src/components/FormTable → template_oa/public/src/components/formTable}/index.jsx +39 -1
  12. package/templates/template_oa/public/src/components/iconFont/index.jsx +22 -0
  13. package/templates/template_oa/public/src/components/{IFrame → iframe}/index.jsx +18 -4
  14. package/templates/template_oa/public/src/components/{Layout/Basic → layout/basic}/index.jsx +7 -1
  15. package/templates/{template_oa_jwt/public/src/components/Layout/CenterBody → template_oa/public/src/components/layout/centerBody}/index.jsx +2 -0
  16. package/templates/{template_oa_jwt/public/src/components/Layout/FormBlock → template_oa/public/src/components/layout/formBlock}/index.jsx +3 -1
  17. package/templates/{template_oa_jwt/public/src/components/Layout → template_oa/public/src/components/layout}/index.jsx +12 -6
  18. package/templates/{template_oa_jwt/public/src/components/Layout/Provider → template_oa/public/src/components/layout/provider}/index.jsx +4 -0
  19. package/templates/template_oa/public/src/components/{Link → link}/index.jsx +16 -0
  20. package/templates/template_oa/public/src/components/{Nav → nav}/index.jsx +8 -2
  21. package/templates/template_oa/public/src/components/{Page/PageLoading → page/pageLoading}/index.jsx +25 -4
  22. package/templates/template_oa/public/src/components/{Popup → popup}/index.jsx +13 -0
  23. package/templates/{template_oa_jwt/public/src/components/Select/DepSelect → template_oa/public/src/components/select/depSelect}/index.jsx +15 -0
  24. package/templates/template_oa/public/src/components/{Select/StaffSelect → select/staffSelect}/index.jsx +27 -0
  25. package/templates/template_oa/public/src/components/title/index.jsx +3 -0
  26. package/templates/template_oa/public/src/components/{Toast → toast}/index.jsx +21 -1
  27. package/templates/template_oa/public/src/components/{Upload → upload}/index.jsx +41 -3
  28. package/templates/template_oa/public/src/hooks/index.jsx +1 -0
  29. package/templates/template_oa/public/src/hooks/useDelay.jsx +5 -0
  30. package/templates/template_oa/public/src/hooks/useImageLoader.jsx +1 -2
  31. package/templates/template_oa/public/src/hooks/useLoading.jsx +5 -1
  32. package/templates/template_oa/public/src/hooks/usePreload.jsx +2 -1
  33. package/templates/template_oa/public/src/hooks/useScrollTop.jsx +12 -0
  34. package/templates/template_oa/public/src/hooks/useSearch.jsx +28 -2
  35. package/templates/template_oa/public/src/hooks/useUpdate.jsx +5 -0
  36. package/templates/template_oa/public/src/index.jsx +15 -1
  37. package/templates/template_oa/public/src/pages/video/index.jsx +17 -13
  38. package/templates/template_oa/public/src/provider/app.jsx +33 -2
  39. package/templates/template_oa/public/src/route.jsx +4 -2
  40. package/templates/template_oa/public/src/services/common.js +11 -0
  41. package/templates/template_oa/public/src/services/index.js +44 -2
  42. package/templates/template_oa/public/src/type.js +48 -0
  43. package/templates/template_oa/public/src/utils/index.js +34 -17
  44. package/templates/template_oa_jwt/.gitignore +6 -0
  45. package/templates/template_oa_jwt/jsconfig.json +5 -1
  46. package/templates/template_oa_jwt/public/src/components/dialog/index.jsx +237 -0
  47. package/templates/template_oa_jwt/public/src/components/{Empty → empty}/index.jsx +9 -0
  48. package/templates/template_oa_jwt/public/src/components/{FormRow → formRow}/index.jsx +25 -3
  49. package/templates/{template_oa/public/src/components/FormTable → template_oa_jwt/public/src/components/formTable}/index.jsx +41 -2
  50. package/templates/template_oa_jwt/public/src/components/formTable/index.less +18 -0
  51. package/templates/template_oa_jwt/public/src/components/iconFont/index.jsx +22 -0
  52. package/templates/template_oa_jwt/public/src/components/{IFrame → iframe}/index.jsx +15 -0
  53. package/templates/template_oa_jwt/public/src/components/{Layout/Basic → layout/basic}/index.jsx +11 -6
  54. package/templates/{template_oa/public/src/components/Layout/CenterBody → template_oa_jwt/public/src/components/layout/centerBody}/index.jsx +2 -0
  55. package/templates/{template_oa/public/src/components/Layout/FormBlock → template_oa_jwt/public/src/components/layout/formBlock}/index.jsx +3 -1
  56. package/templates/{template_oa/public/src/components/Layout → template_oa_jwt/public/src/components/layout}/index.jsx +10 -4
  57. package/templates/{template_oa/public/src/components/Layout/Provider → template_oa_jwt/public/src/components/layout/provider}/index.jsx +4 -0
  58. package/templates/template_oa_jwt/public/src/components/{Link → link}/index.jsx +16 -0
  59. package/templates/template_oa_jwt/public/src/components/{Nav → nav}/index.jsx +11 -5
  60. package/templates/template_oa_jwt/public/src/components/{Page/PageLoading → page/pageLoading}/index.jsx +25 -4
  61. package/templates/template_oa_jwt/public/src/components/{Popup → popup}/index.jsx +13 -0
  62. package/templates/{template_oa/public/src/components/Select/DepSelect → template_oa_jwt/public/src/components/select/depSelect}/index.jsx +15 -0
  63. package/templates/template_oa_jwt/public/src/components/{Select/StaffSelect → select/staffSelect}/index.jsx +27 -0
  64. package/templates/template_oa_jwt/public/src/components/title/index.jsx +3 -0
  65. package/templates/template_oa_jwt/public/src/components/{Toast → toast}/index.jsx +21 -1
  66. package/templates/template_oa_jwt/public/src/components/{Upload → upload}/index.jsx +41 -3
  67. package/templates/template_oa_jwt/public/src/dictionary/index.js +2 -0
  68. package/templates/template_oa_jwt/public/src/hooks/index.jsx +2 -2
  69. package/templates/template_oa_jwt/public/src/hooks/useDelay.jsx +5 -0
  70. package/templates/template_oa_jwt/public/src/hooks/useImageLoader.jsx +1 -2
  71. package/templates/template_oa_jwt/public/src/hooks/useLoading.jsx +5 -1
  72. package/templates/template_oa_jwt/public/src/hooks/usePreload.jsx +2 -1
  73. package/templates/template_oa_jwt/public/src/hooks/useScrollTop.jsx +12 -0
  74. package/templates/template_oa_jwt/public/src/hooks/useSearch.jsx +28 -2
  75. package/templates/template_oa_jwt/public/src/hooks/useUpdate.jsx +5 -0
  76. package/templates/template_oa_jwt/public/src/pages/demo/index.jsx +17 -11
  77. package/templates/template_oa_jwt/public/src/provider/app.jsx +30 -1
  78. package/templates/template_oa_jwt/public/src/route.jsx +4 -2
  79. package/templates/template_oa_jwt/public/src/services/common.js +13 -1
  80. package/templates/template_oa_jwt/public/src/services/index.js +52 -8
  81. package/templates/template_oa_jwt/public/src/services/token.js +7 -0
  82. package/templates/template_oa_jwt/public/src/utils/index.js +62 -22
  83. package/templates/template_offcial/.gitignore +6 -0
  84. package/templates/template_oa/public/src/components/Alert/index.jsx +0 -0
  85. package/templates/template_oa/public/src/components/Alert/index.less +0 -0
  86. package/templates/template_oa/public/src/components/Auth/index.jsx +0 -44
  87. package/templates/template_oa/public/src/components/Dialog/index.jsx +0 -150
  88. package/templates/template_oa/public/src/components/Footer/index.jsx +0 -17
  89. package/templates/template_oa/public/src/components/Footer/index.less +0 -28
  90. package/templates/template_oa/public/src/components/IconFont/index.jsx +0 -10
  91. package/templates/template_oa/public/src/components/Loading/index.jsx +0 -14
  92. package/templates/template_oa/public/src/components/Loading/index.less +0 -85
  93. package/templates/template_oa_jwt/public/src/components/Alert/index.jsx +0 -0
  94. package/templates/template_oa_jwt/public/src/components/Alert/index.less +0 -0
  95. package/templates/template_oa_jwt/public/src/components/Auth/index.jsx +0 -44
  96. package/templates/template_oa_jwt/public/src/components/Dialog/index.jsx +0 -150
  97. package/templates/template_oa_jwt/public/src/components/Footer/index.jsx +0 -17
  98. package/templates/template_oa_jwt/public/src/components/Footer/index.less +0 -28
  99. package/templates/template_oa_jwt/public/src/components/IconFont/index.jsx +0 -10
  100. package/templates/template_oa_jwt/public/src/components/Loading/index.jsx +0 -16
  101. package/templates/template_oa_jwt/public/src/components/Loading/index.less +0 -96
  102. /package/templates/template_oa/public/src/components/{Dialog → dialog}/index.less +0 -0
  103. /package/templates/template_oa/public/src/components/{Empty → empty}/index.less +0 -0
  104. /package/templates/template_oa/public/src/components/{FormRow → formRow}/index.less +0 -0
  105. /package/templates/{template_oa_jwt/public/src/components/FormTable → template_oa/public/src/components/formTable}/index.less +0 -0
  106. /package/templates/template_oa/public/src/components/{IconFont → iconFont}/index.less +0 -0
  107. /package/templates/template_oa/public/src/components/{IFrame → iframe}/index.less +0 -0
  108. /package/templates/template_oa/public/src/components/{Layout/Basic → layout/basic}/index.less +0 -0
  109. /package/templates/template_oa/public/src/components/{Layout/CenterBody → layout/centerBody}/index.less +0 -0
  110. /package/templates/template_oa/public/src/components/{Layout/FormBlock → layout/formBlock}/index.less +0 -0
  111. /package/templates/template_oa/public/src/components/{Layout → layout}/index.less +0 -0
  112. /package/templates/template_oa/public/src/components/{Link → link}/index.less +0 -0
  113. /package/templates/template_oa/public/src/components/{Nav → nav}/index.less +0 -0
  114. /package/templates/template_oa/public/src/components/{Page/PageLoading → page/pageLoading}/index.less +0 -0
  115. /package/templates/template_oa/public/src/components/{Popup → popup}/index.less +0 -0
  116. /package/templates/template_oa/public/src/components/{Select/StaffSelect → select/staffSelect}/index.less +0 -0
  117. /package/templates/template_oa/public/src/components/{Toast → toast}/index.less +0 -0
  118. /package/templates/template_oa_jwt/public/src/components/{Dialog → dialog}/index.less +0 -0
  119. /package/templates/template_oa_jwt/public/src/components/{Empty → empty}/index.less +0 -0
  120. /package/templates/template_oa_jwt/public/src/components/{FormRow → formRow}/index.less +0 -0
  121. /package/templates/template_oa_jwt/public/src/components/{IconFont → iconFont}/index.less +0 -0
  122. /package/templates/template_oa_jwt/public/src/components/{IFrame → iframe}/index.less +0 -0
  123. /package/templates/template_oa_jwt/public/src/components/{Layout/Basic → layout/basic}/index.less +0 -0
  124. /package/templates/template_oa_jwt/public/src/components/{Layout/CenterBody → layout/centerBody}/index.less +0 -0
  125. /package/templates/template_oa_jwt/public/src/components/{Layout/FormBlock → layout/formBlock}/index.less +0 -0
  126. /package/templates/template_oa_jwt/public/src/components/{Layout → layout}/index.less +0 -0
  127. /package/templates/template_oa_jwt/public/src/components/{Link → link}/index.less +0 -0
  128. /package/templates/template_oa_jwt/public/src/components/{Nav → nav}/index.less +0 -0
  129. /package/templates/template_oa_jwt/public/src/components/{Page/PageLoading → page/pageLoading}/index.less +0 -0
  130. /package/templates/template_oa_jwt/public/src/components/{Popup → popup}/index.less +0 -0
  131. /package/templates/template_oa_jwt/public/src/components/{Select/StaffSelect → select/staffSelect}/index.less +0 -0
  132. /package/templates/template_oa_jwt/public/src/components/{Toast → toast}/index.less +0 -0
@@ -1,9 +1,29 @@
1
+ // @ts-ignore
1
2
  import { useState,useMemo, useEffect } from 'react';
3
+ // @ts-ignore
2
4
  import { useSearchParams,useNavigate } from 'react-router-dom';
5
+ // @ts-ignore
6
+ import { createContainer } from "unstated-next"
7
+
3
8
  import {setLogout,setToLogin,setRefreshToken} from '@/services/token';
4
9
  import { setJwt } from '@/services';
5
10
 
6
- import { createContainer } from "unstated-next"
11
+
12
+
13
+ /**
14
+ * @typedef AppContaniner
15
+ * @property {boolean} loading - 当前是否是加载状态
16
+ * @property {(open:boolean)=>void} setLoading - 设置加载状态
17
+ * @property {object} nav - 导航栏配置
18
+ * @property {(option:object)=>void} setNav - 设置导航栏配置
19
+ * @property {()=>Promise} logout - 注销病退回登录界面
20
+ * @property {(redirectUrl:string)=>Promise} toLogin - 登录并跳转
21
+ * @property {(user:object)=>void} setUser - 注销病退回登录界面
22
+ * @property {object} user - 注销病退回登录界面
23
+ *
24
+ */
25
+
26
+
7
27
  const useApp=() =>{
8
28
  const [search] = useSearchParams();
9
29
  const navigate= useNavigate();
@@ -61,6 +81,15 @@ const useApp=() =>{
61
81
  return action
62
82
  }
63
83
 
84
+ /**
85
+ * @typedef {object} AppProvider
86
+ * @property {function():AppContaniner} useContainer
87
+ * @property {React.ComponentType<any>} Provider
88
+ */
89
+
90
+ /**
91
+ * @type {AppProvider}
92
+ */
64
93
  const App = createContainer(useApp);
65
94
 
66
95
  export default App;
@@ -1,8 +1,10 @@
1
+ // @ts-ignore
1
2
  import React,{Suspense} from 'react';
3
+ // @ts-ignore
2
4
  import { Routes, Route, Navigate } from 'react-router-dom';
3
5
 
4
- import { LayoutBasic, Layout } from '@/components/Layout';
5
- import PageLoading from '@/components/Page/PageLoading';
6
+ import { LayoutBasic, Layout } from '@/components/layout';
7
+ import PageLoading from '@/components/page/pageLoading';
6
8
 
7
9
  import Login from '@/pages/login';
8
10
  // import {AuthLogin} from '@/components/Auth';
@@ -1,11 +1,14 @@
1
+ // @ts-ignore
2
+ import axios from 'axios';
1
3
 
2
4
  import {GET_TOKEN,GET_DEFAULT_CROSS} from '@/services';
3
- import axios from 'axios';
5
+
4
6
 
5
7
  /**
6
8
  * 获取员工列表
7
9
  */
8
10
  export async function GET_STAFF_LIST() {
11
+ // @ts-ignore
9
12
  let ret = await GET_DEFAULT_CROSS(`${OA_HOST}/common/getNewUserList`);
10
13
  return ret;
11
14
  // let response = await axios({
@@ -23,6 +26,7 @@ export async function GET_STAFF_LIST() {
23
26
  * 所有部门信息
24
27
  */
25
28
  export async function GET_DEP_LIST() {
29
+ // @ts-ignore
26
30
  return GET_DEFAULT_CROSS(`${OA_HOST}/common/getBenefitDept`);
27
31
  }
28
32
 
@@ -31,6 +35,7 @@ export async function GET_DEP_LIST() {
31
35
  * @returns
32
36
  */
33
37
  export function GET_COMPANY_LIST(){
38
+ // @ts-ignore
34
39
  return GET_DEFAULT_CROSS(`${OA_HOST}/filestore/list?status=1`);
35
40
  }
36
41
 
@@ -51,6 +56,7 @@ export async function POST_IMPORT_EXCEL(url, file, onProgress) {
51
56
  url: url,
52
57
  data: formdata,
53
58
  onUploadProgress: (e) => {
59
+ // @ts-ignore
54
60
  onProgress({ percent: `${e.loaded}/${e.total}` * 100 });
55
61
  },
56
62
  });
@@ -61,6 +67,7 @@ export async function POST_IMPORT_EXCEL(url, file, onProgress) {
61
67
  * 获取下载文件的url路径
62
68
  */
63
69
  export function GET_DOWNLOAD_FILE(s_name) {
70
+ // @ts-ignore
64
71
  return `${OA_HOST}/file/download?name=${s_name}`;
65
72
  }
66
73
 
@@ -81,6 +88,7 @@ export async function UPLOAD_FILE(file, param, onProgress) {
81
88
 
82
89
  let response = await axios({
83
90
  method: 'post',
91
+ // @ts-ignore
84
92
  url: `${OA_HOST}/file/upload`,
85
93
  data: formdata,
86
94
  xsrfCookieName: '',
@@ -88,6 +96,7 @@ export async function UPLOAD_FILE(file, param, onProgress) {
88
96
  withCredentials: true,
89
97
 
90
98
  onUploadProgress: (e) => {
99
+ // @ts-ignore
91
100
  let per = parseFloat((e.loaded / e.total) * 100).toFixed(0);
92
101
  onProgress({ percent: per });
93
102
  },
@@ -111,6 +120,9 @@ export async function UPLOAD_FILE(file, param, onProgress) {
111
120
  * types:array|string,['png','gif']|'png' 类型
112
121
  */
113
122
  export function CHECK_FILE_TYPE(types, filename) {
123
+ /**
124
+ * @type RegExp|string
125
+ */
114
126
  let reg = '';
115
127
 
116
128
  if (types.constructor === Array) {
@@ -1,9 +1,15 @@
1
+ // @ts-ignore
1
2
  import Axios from 'axios';
3
+ // @ts-ignore
2
4
  import qs from 'qs';
5
+ // @ts-ignore
3
6
  import { message } from 'antd';
7
+
4
8
  import { toHref, exportExcel } from '@/utils';
5
9
  import { CHANGE_TOKEN, setRefreshToken ,toLogin} from './token';
6
10
  const axios = Axios.create();
11
+
12
+ // @ts-ignore
7
13
  console.log(`========API_HOST:${API_HOST}========`);
8
14
 
9
15
  const tokenMode='header';//header,cookie
@@ -95,10 +101,23 @@ axios.interceptors.response.use(
95
101
  }
96
102
  );
97
103
 
98
-
104
+ /**
105
+ * @typedef RequestOptions 发送请求的扩展信息
106
+ * @property {number|boolean} ttl=false - 接口缓存周期,开启后默认为2秒,ttl单位为毫秒
107
+ * @property {string|boolean} noInterceptors=false - 关闭拦截类型,'all'为关闭包括401、403在内的所有异常,默认情况下只拦截response.code不为0的情况
108
+ *
109
+ */
99
110
 
100
111
 
101
112
  let buffer = {};
113
+ /**
114
+ * @function
115
+ * @description 发送一个GET请求
116
+ * @param {string} url - 请求地址
117
+ * @param {Object} [param] - 请求的参数
118
+ * @param {RequestOptions} [options] - 扩展参数
119
+ * @returns {Promise<Object>}
120
+ */
102
121
  export async function GET_DEFAULT(url, param, options) {
103
122
  if (param) param = qs.stringify(param, { arrayFormat: 'indices' });
104
123
  let now = Date.now();
@@ -131,6 +150,13 @@ export async function GET_DEFAULT(url, param, options) {
131
150
  return response && response.data ? response.data : null;
132
151
  }
133
152
 
153
+ /**
154
+ * @function
155
+ * @description 发送一个GET请求
156
+ * @param {string} url - 请求地址
157
+ * @param {Object} [param] - 请求的参数
158
+ * @returns {Promise<Object>}
159
+ */
134
160
  export async function GET_DEFAULT_CROSS(url, param) {
135
161
  if (param) param = qs.stringify(param, { arrayFormat: 'indices' });
136
162
 
@@ -143,6 +169,14 @@ export async function GET_DEFAULT_CROSS(url, param) {
143
169
  });
144
170
  return response && response.data ? response.data : null;
145
171
  }
172
+
173
+ /**
174
+ * 导出EXCEL
175
+ * @param {string} url - 接口地址
176
+ * @param {any} param - 接口参数
177
+ * @param {any} user - 用户信息
178
+ * @returns {Promise}
179
+ */
146
180
  export async function EXPORT_DEFAULT_CROSS(url, param, user) {
147
181
  if (param) param = qs.stringify(param, { arrayFormat: 'indices' });
148
182
 
@@ -158,7 +192,14 @@ export async function EXPORT_DEFAULT_CROSS(url, param, user) {
158
192
  exportExcel(response, user);
159
193
  }
160
194
 
161
- export async function POST_DEFAULT(url, params, method, options) {
195
+ /**
196
+ * 发送一个POST请求
197
+ * @param {string} url - 请求地址
198
+ * @param {Object} [params] - 请求的参数
199
+ * @param {RequestOptions} [options] - 扩展参数
200
+ * @returns {Promise<Object>}
201
+ */
202
+ export async function POST_DEFAULT(url, params, options) {
162
203
  let data = params;
163
204
  // if (params) params = qs.stringify(params, { arrayFormat: 'indices' });
164
205
  // if (typeof params === 'string') {
@@ -168,7 +209,7 @@ export async function POST_DEFAULT(url, params, method, options) {
168
209
  // }
169
210
  // let token= await GET_TOKEN();
170
211
  let response = await axios({
171
- method: method || 'POST',
212
+ method: 'POST',
172
213
  url: url,
173
214
  data:{
174
215
  // _token:token,
@@ -180,6 +221,12 @@ export async function POST_DEFAULT(url, params, method, options) {
180
221
  return response && response.data ? response.data : null;
181
222
  }
182
223
 
224
+ /**
225
+ * 发送一个POST请求
226
+ * @param {string} url - 请求地址
227
+ * @param {Object} [params] - 请求的参数
228
+ * @returns {Promise<Object>}
229
+ */
183
230
  export async function POST_DEFAULT_CROSS(url, params) {
184
231
  // let token= await GET_TOKEN();
185
232
 
@@ -246,13 +293,10 @@ export function FORMAT_RESPONSE_NO_PAGINATION(response){
246
293
  return req;
247
294
  }
248
295
 
249
- /**
250
- *
251
- * @param {} error 业务接口401时,用 refreshToken 重新获取token,再重试当前接口
252
- * @returns
253
- */
296
+
254
297
  const refreshAndRetry = async (error) => {
255
298
  if (!localStorage.getItem('refreshToken')) {
299
+ // @ts-ignore
256
300
  if(toLogin)toLogin(error.response.data.data.auth_url);
257
301
  return;
258
302
  }
@@ -1,5 +1,8 @@
1
+ // @ts-ignore
1
2
  import Axios from 'axios';
3
+ // @ts-ignore
2
4
  import { message } from 'antd';
5
+
3
6
  import { toHref } from '@/utils';
4
7
  const axios = Axios.create();
5
8
 
@@ -30,6 +33,7 @@ export const setRefreshToken = (value) => {
30
33
 
31
34
  export let logout = ()=>{}
32
35
  export const setLogout=(fn)=>{
36
+ // @ts-ignore
33
37
  window.logout=fn;
34
38
  logout=fn;
35
39
  }
@@ -71,11 +75,13 @@ axios.interceptors.response.use(
71
75
  }
72
76
  console.log('token error:', JSON.stringify(error));
73
77
  const url = error.response.data.data.auth_url;
78
+ // @ts-ignore
74
79
  if(toLogin)toLogin(url);
75
80
  return;
76
81
  // jwt失效
77
82
  if (error.response.status === 401) {
78
83
  const url = error.response.data.data.auth_url;
84
+ // @ts-ignore
79
85
  if(toLogin)toLogin(url);
80
86
  return;
81
87
  } else if (error.response.status === 403) {
@@ -127,6 +133,7 @@ async function POST_DEFAULT_CROSS(url, params) {
127
133
  */
128
134
  export async function CHANGE_TOKEN(params){
129
135
  let values = params ? params : {refresh_token: refreshToken};
136
+ // @ts-ignore
130
137
  const res = await POST_DEFAULT_CROSS(`${KSSO_HOST}/oauth/ksso/exchange`, values);
131
138
  return res;
132
139
  }
@@ -1,10 +1,19 @@
1
+ // @ts-ignore
1
2
  import moment from 'moment';
2
3
 
4
+
5
+ /**
6
+ * 打开一个第三方链接
7
+ * @param {string} link - 链接地址
8
+ * @param {string} [target='_blank'] - 打开方式,_blank:新窗口打开
9
+ */
3
10
  export const openLink = (link, target = '_blank') => {
4
11
  let domLink = document.createElement('a');
5
12
  domLink.href = link;
6
13
  domLink.setAttribute('target', target);
14
+ // @ts-ignore
7
15
  domLink.style.opacity = 0;
16
+ // @ts-ignore
8
17
  domLink.style.zIndex = -999;
9
18
  document.body.appendChild(domLink);
10
19
  domLink.click();
@@ -13,50 +22,60 @@ export const openLink = (link, target = '_blank') => {
13
22
  }, 200);
14
23
  }
15
24
 
25
+ /**
26
+ * 判断当前是否为移动端
27
+ * @returns {boolean}
28
+ */
16
29
  export const isMobile = () => {
17
30
  return navigator.userAgent.match(
18
31
  /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i
19
- )
32
+ )?true:false
20
33
  }
21
34
 
22
- export const toHref = (url, replace, newWindow) => {
23
- if (window.knFeishu) {
24
- window.knFeishu.ToHref(url, replace, newWindow);
25
- return;
26
- }
27
- if (newWindow) {
28
- window.open(url);
29
- return;
30
- }
31
- if (replace) {
32
- location.replace(url);
33
- return;
34
- }
35
- location.href = url;
36
- };
37
35
 
38
- export const jumpUrl = (url, options = {}) => {
39
- const { replace, newWindow, reload } = options;
40
- if (reload) {
36
+ /**
37
+ * 跳转URL-兼容飞书
38
+ * @param {string} url - 链接地址
39
+ * @param {object} [options] - 参数
40
+ * @param {boolean} [options.replace] - 是否要覆盖当前URL记录
41
+ * @param {boolean} [options.newWindow] - 是否新窗口中打开
42
+ * @param {boolean} [options.reload] - 是否重载当前页面
43
+ *
44
+ *
45
+ */
46
+ export const jumpUrl=(url,options={})=>{
47
+ const {replace=false,newWindow=false,reload=false}= options;
48
+ if(!reload){
49
+ // @ts-ignore
50
+ if(window.knFeishu){
51
+ // @ts-ignore
52
+ window.knFeishu.ToHref(url,replace,newWindow);
53
+ return;
54
+ }
55
+ }
56
+
57
+ if(reload){
41
58
  location.reload();
42
59
  return;
43
60
  }
44
- if (replace) {
61
+ if(replace){
45
62
  location.replace(url);
46
63
  return;
47
64
  }
48
- if (newWindow) {
65
+ if(newWindow){
49
66
  window.open(url);
50
67
  return;
51
68
  }
52
- location.href = url;
69
+ location.href=url;
53
70
 
54
71
  }
55
72
 
56
73
 
57
74
  // 关闭页面
58
75
  export const closeWindow = () => {
76
+ // @ts-ignore
59
77
  if (window.knFeishu && window.knFeishu.closeWindow) {
78
+ // @ts-ignore
60
79
  window.knFeishu.closeWindow();
61
80
  } else {
62
81
  if (window.close) {
@@ -66,6 +85,26 @@ export const closeWindow = () => {
66
85
  };
67
86
 
68
87
 
88
+
89
+ export const toHref = (url, replace, newWindow) => {
90
+ // @ts-ignore
91
+ if (window.knFeishu) {
92
+ // @ts-ignore
93
+ window.knFeishu.ToHref(url, replace, newWindow);
94
+ return;
95
+ }
96
+ if (newWindow) {
97
+ window.open(url);
98
+ return;
99
+ }
100
+ if (replace) {
101
+ location.replace(url);
102
+ return;
103
+ }
104
+ location.href = url;
105
+ };
106
+
107
+
69
108
  export function formatMoney(s, n = 2) {
70
109
  if (typeof s === 'undefined' || s === '') {
71
110
  return '-'
@@ -99,6 +138,7 @@ export const isEditAuth = (user) => {
99
138
  }
100
139
 
101
140
  export const exportExcel = (response, user) => {
141
+ // @ts-ignore
102
142
  const blob = new Blob([response.data], { type: `${type},charset=UTF-8` });
103
143
  const disposition = response.headers.get('content-disposition');
104
144
  const fileName = `管理系统-${user.usr_username}-${moment().format('YYYY-MM-DD')}.xlsx`;
@@ -0,0 +1,6 @@
1
+ **/node_modules
2
+ **/package-lock.json
3
+ **/.DS_Store
4
+ **/dist
5
+ **/release
6
+
@@ -1,44 +0,0 @@
1
- import React, { useEffect, useState } from 'react';
2
- import ProviderApp from '@/provider/app';
3
- import { useNavigate } from 'react-router-dom';
4
- import {useLoading} from '@/hooks';
5
-
6
- export const AuthShow=(props)=>{
7
- const {name} = props;
8
- const app = ProviderApp.useContainer();
9
- if(app?.user?.authorities?.includes(name)){
10
- return props.children;
11
- }
12
- return <></>
13
- }
14
-
15
- export const AuthLogin=(props)=>{
16
- const navigate = useNavigate();
17
- const [pass,setPass] = useState(false)
18
- const app = ProviderApp.useContainer();
19
- const loading = useLoading();
20
-
21
- const check=async ()=>{
22
- loading.setLoading(true);
23
- console.log(`[Auth]检查用户登录态`)
24
- const req =await app.isLogin();
25
- loading.setLoading(false);
26
- if(req){
27
- console.log(`[Auth]检查用户登录态成功`)
28
- setPass(true);
29
- }else{
30
- console.log(`[Auth]检查用户登录态失败`)
31
- setPass(false);
32
- navigate('/login');
33
- }
34
- }
35
- useEffect(check,[]);
36
-
37
- if(pass){
38
- return props.children;
39
- }
40
- return <>检查登录态中...</>
41
- }
42
-
43
-
44
- export default {AuthShow,AuthLogin};
@@ -1,150 +0,0 @@
1
- import React from 'react';
2
- import ReactDOM from 'react-dom';
3
-
4
- import IconFont from '@/components/IconFont';
5
-
6
- import Popup from '@/components/Popup';
7
-
8
- import styles from './index.less';
9
- import { Button } from 'antd';
10
-
11
- const Dialog = (props) => {
12
- async function onClose() {
13
- if (props.onClose) {
14
- let ret = await props.onClose();
15
- if (ret) {
16
- props.destory();
17
- }
18
- } else {
19
- props.destory();
20
- }
21
- }
22
- async function onOk() {
23
- if (props.onOk) {
24
- let ret = await props.onOk();
25
- if (ret) {
26
- props.destory();
27
- }
28
- } else {
29
- props.destory();
30
- }
31
- }
32
- return (
33
- <section className={styles.body}>
34
- <div className={styles.mask} />
35
- <section className={styles.wrap}>
36
- <div className={styles.header}>
37
- <span>{props.title}</span>
38
- <IconFont icon='close' className={styles.close} onClick={onClose} />
39
- </div>
40
-
41
- {props.children}
42
-
43
- <div className={styles.footer}>
44
- <Button type='primary' onClick={onOk}>
45
- {props.okText || '确认'}
46
- </Button>
47
- {props.noCancel ? (
48
- ''
49
- ) : (
50
- <Button onClick={onClose} style={{ marginLeft: '10px' }}>
51
- {props.cancelText || '取消'}
52
- </Button>
53
- )}
54
- </div>
55
- </section>
56
- </section>
57
- );
58
- };
59
-
60
- export const ShowDialog = (props) => {
61
- return new Promise((reslove) => {
62
- let popup = Popup(reslove);
63
- ReactDOM.render(
64
- <Dialog
65
- title={props.title}
66
- destory={popup.destory}
67
- onOk={props.onOk}
68
- okText={props.okText}
69
- cancelText={props.cancelText}
70
- noCancel={props.noCancel}
71
- onClose={props.onClose}
72
- >
73
- {props.component}
74
- </Dialog>,
75
- popup.dom
76
- );
77
- });
78
- };
79
-
80
- export const ShowConfirm = async (props) => {
81
- if (typeof props === 'string') {
82
- props = { content: props };
83
- }
84
-
85
- let result = false;
86
- await ShowDialog({
87
- title: props.title || '注意',
88
- okText: props.okText || '确认',
89
- cancelText: props.cancelText || '取消',
90
- noCancel: typeof props.noCancel !== 'undefined' ? props.noCancel : false,
91
- onClose: async () => {
92
- result = false;
93
- return Promise.resolve(true);
94
- },
95
- onOk: async () => {
96
- result = true;
97
- return Promise.resolve(true);
98
- },
99
- component: (
100
- <div className={styles.confirmWrap}>
101
- {props.content}
102
- </div>
103
- ),
104
- });
105
- return result;
106
- };
107
-
108
- const Alert = (props) => {
109
- function onOk() {
110
- if (props.onOk) props.onOk();
111
- props.destory();
112
- }
113
- return (
114
- <section className={styles.body }>
115
- <div className={styles.mask} />
116
- <section className={styles.wrapAlert}>
117
- <div className={styles.alertContent}>
118
- <div className={props.type === 'success' ? styles.iconSuccess : styles.iconError} />
119
- <span>{props.content}</span>
120
- </div>
121
- <div className={styles.alertFooter}>
122
- <span onClick={onOk}>{props.okText || '确认'}</span>
123
- </div>
124
- </section>
125
- </section>
126
- );
127
- };
128
-
129
- export const ShowAlert = (props) => {
130
- if (props.constructor === String) {
131
- props = { content: props };
132
- }
133
- return new Promise((reslove) => {
134
- let popup = Popup(reslove);
135
-
136
- ReactDOM.render(
137
- <Alert destory={popup.destory} type={props.type || 'success'} onOk={props.onOk} content={props.content} />,
138
- popup.dom
139
- );
140
- });
141
- };
142
-
143
- export const ShowErrorAlert = (props) => {
144
- if (props.constructor === String) {
145
- props = { content: props };
146
- }
147
- return ShowAlert({ ...props, type: 'fail' });
148
- };
149
-
150
- export default Dialog;
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import styles from './index.less';
3
-
4
- const Footer = (props) => {
5
- return (
6
- <section className={styles.footer}>
7
- <hgroup>
8
- <p>Copyright@2017 版权所有 kingnet.com,All Rights Reserved 沪ICP备10215773号-1</p>
9
- <p>本系统现仅支持Chrome和Safari浏览器,其他浏览器可能会出现兼容性问题。</p>
10
- <a href='http://oa.test.com/versionlog/view' target='_blank' style={{ marginTop: '10px' }}>
11
- 版本日志
12
- </a>
13
- </hgroup>
14
- </section>
15
- );
16
- };
17
- export default Footer;
@@ -1,28 +0,0 @@
1
- @import '~@/_variable.less';
2
-
3
- .footer {
4
- position: absolute;
5
- bottom: 0;
6
-
7
- box-shadow: 0px -2px 3px #dde3e7;
8
- min-height: var(--height-footer);
9
- width: 100%;
10
- background-color: white;
11
- hgroup {
12
- display: flex;
13
- flex-direction: column;
14
- align-items: center;
15
- justify-content: center;
16
- width: 100%;
17
- min-height: var(--height-footer);
18
- }
19
- p {
20
- color: #9bb5c9;
21
- font-size: 12px;
22
- margin-bottom: 0;
23
- }
24
- a {
25
- color: rgb(119, 119, 119);
26
- font-size: 14px;
27
- }
28
- }
@@ -1,10 +0,0 @@
1
- import React from "react";
2
- import styles from'./index.less';
3
-
4
- const IconFont=(props)=>{
5
- const {icon,className,...others} = props;
6
- return (
7
- <span {...others} className={`iconfont icon-${icon} ${styles.iconBox} ${className||''}`} ></span>
8
- )
9
- }
10
- export default IconFont;