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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kn-cli",
3
- "version": "1.0.91",
3
+ "version": "1.0.92",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/readme.md CHANGED
@@ -140,6 +140,9 @@ report
140
140
 
141
141
 
142
142
  # 更新日志
143
+ * 1.0.92
144
+ 所有模版文件夹首字母大写问题修正
145
+
143
146
  * 1.0.91
144
147
  创建项目时自动将项目名称设置为当前文件夹的名称
145
148
  模版内doc注释规范化、文件夹首字母大写更正
package/src/.DS_Store ADDED
Binary file
@@ -0,0 +1,6 @@
1
+ **/node_modules
2
+ **/package-lock.json
3
+ **/.DS_Store
4
+ **/dist
5
+ **/release
6
+
@@ -0,0 +1,6 @@
1
+ **/node_modules
2
+ **/package-lock.json
3
+ **/.DS_Store
4
+ **/dist
5
+ **/release
6
+
@@ -0,0 +1,6 @@
1
+ **/node_modules
2
+ **/package-lock.json
3
+ **/.DS_Store
4
+ **/dist
5
+ **/release
6
+
@@ -3,8 +3,12 @@
3
3
  "baseUrl": ".",
4
4
  "emitDecoratorMetadata": true,
5
5
  "experimentalDecorators": true,
6
+ "lib": ["dom", "ES2021"],
7
+ "allowJs":true,
8
+ "checkJs": true,
9
+ "jsx": "react",
6
10
  "paths": {
7
11
  "@/*": ["./public/src/*"]
8
- }
12
+ },
9
13
  }
10
14
  }
@@ -0,0 +1,237 @@
1
+ // @ts-ignore
2
+ import React from 'react';
3
+ // @ts-ignore
4
+ import ReactDOM from 'react-dom';
5
+ // @ts-ignore
6
+ import { Button } from 'antd';
7
+
8
+ import IconFont from '@/components/iconFont';
9
+
10
+ import Popup from '@/components/popup';
11
+ // @ts-ignore
12
+ import styles from './index.less';
13
+
14
+
15
+ /**
16
+ * 对话框组件
17
+ * @param {object} props
18
+ * @param {string} props.title - 对话框的标题内容
19
+ * @param {string} [props.okText='确认'] - 确认按钮文案
20
+ * @param {string} [props.cancelText='取消'] - 取消按钮文案
21
+ * @param {boolean} [props.noCancel=false] - 不显示取消按钮
22
+ * @param {()=>Promise<boolean>} [props.onOk] - 点击确认按钮回调
23
+ * @param {()=>Promise<boolean>} [props.onClose] - 点击关闭的回调
24
+ * @param {()=>void} [props.destory] - 对话框销毁的回调
25
+ * @param {JSX.Element|any} [props.children] - 子组件
26
+ *
27
+ * @returns {JSX.Element}
28
+ */
29
+ const Dialog = (props) => {
30
+ const {
31
+ title='',
32
+ okText='确认',
33
+ cancelText='取消',
34
+ noCancel=false,
35
+ onOk:fnOnOk,
36
+ onClose:fnOnClose,
37
+ destory,
38
+ children
39
+ }= props;
40
+ async function onClose() {
41
+ if (fnOnClose) {
42
+ let ret = await fnOnClose();
43
+ if (ret) {
44
+ destory();
45
+ }
46
+ } else {
47
+ destory();
48
+ }
49
+ }
50
+ async function onOk() {
51
+ if (fnOnOk) {
52
+ let ret = await fnOnOk();
53
+ if (ret) {
54
+ destory();
55
+ }
56
+ } else {
57
+ destory();
58
+ }
59
+ }
60
+ return (
61
+ <section className={styles.body}>
62
+ <div className={styles.mask} />
63
+ <section className={styles.wrap}>
64
+ <div className={styles.header}>
65
+ <span>{title}</span>
66
+ <IconFont icon='close' className={styles.close} onClick={onClose} />
67
+ </div>
68
+
69
+ {children}
70
+
71
+ <div className={styles.footer}>
72
+ <Button type='primary' onClick={onOk}>
73
+ {okText}
74
+ </Button>
75
+ {noCancel ? (
76
+ ''
77
+ ) : (
78
+ <Button onClick={onClose} style={{ marginLeft: '10px' }}>
79
+ {cancelText}
80
+ </Button>
81
+ )}
82
+ </div>
83
+ </section>
84
+ </section>
85
+ );
86
+ };
87
+
88
+ /**
89
+ * 显示一个对话框
90
+ * @param {Object} props
91
+ * @param {string} props.title - 对话框标题
92
+ * @param {string} [props.okText='确认'] - 确认按钮文案
93
+ * @param {string} [props.cancelText='取消'] - 取消按钮文案
94
+ * @param {boolean} [props.noCancel=false] - 不显示取消按钮
95
+ * @param {()=>Promise<boolean>} [props.onOk] - 点击确认按钮回调
96
+ * @param {()=>Promise<boolean>} [props.onClose] - 点击关闭的回调
97
+ * @param {JSX.Element|any} [props.component] - 对话框内的实际内容
98
+ *
99
+ * @returns {Promise<boolean>}
100
+ */
101
+ export const ShowDialog = (props={title:''}) => {
102
+ const {title,onOk,okText,cancelText,noCancel,onClose,component}= props;
103
+ return new Promise((reslove) => {
104
+ let popup = Popup(reslove);
105
+ ReactDOM.render(
106
+ <Dialog
107
+ title={title}
108
+ destory={popup.destory}
109
+ onOk={onOk}
110
+ okText={okText}
111
+ cancelText={cancelText}
112
+ noCancel={noCancel}
113
+ onClose={onClose}
114
+ >
115
+ {component}
116
+ </Dialog>,
117
+ popup.dom
118
+ );
119
+ });
120
+ };
121
+
122
+ /**
123
+ * 一个带确认和取消的确认对话框
124
+ * @param {Object} props
125
+ * @param {string} props.title - 对话框标题
126
+ * @param {string} [props.okText='确认'] - 确认按钮文案
127
+ * @param {string} [props.cancelText='取消'] - 取消按钮文案
128
+ * @param {boolean} [props.noCancel=false] - 不显示取消按钮
129
+ * @param {JSX.Element|any} [props.content] - 对话框内的实际内容
130
+ * @returns {Promise<boolean>}
131
+ */
132
+ export const ShowConfirm = async (props) => {
133
+ if (typeof props === 'string') {
134
+ // @ts-ignore
135
+ props = { content: props };
136
+ }
137
+ const {title='注意',okText='确认',cancelText='取消',noCancel=false,content}= props;
138
+
139
+ let result = false;
140
+ await ShowDialog({
141
+ title: title || '注意',
142
+ okText: okText || '确认',
143
+ cancelText: cancelText || '取消',
144
+ noCancel: noCancel,
145
+ onClose: async () => {
146
+ result = false;
147
+ return Promise.resolve(true);
148
+ },
149
+ onOk: async () => {
150
+ result = true;
151
+ return Promise.resolve(true);
152
+ },
153
+ component: (
154
+ <div className={styles.confirmWrap}>
155
+ {content}
156
+ </div>
157
+ ),
158
+ });
159
+ return result;
160
+ };
161
+
162
+ /**
163
+ * 一个只有确认按钮的提示框
164
+ * @param {Object} props
165
+ * @param {string} [props.okText='确认'] - 确认按钮文案
166
+ * @param {JSX.Element|any} [props.content] - 对话框内的实际内容
167
+ * @param {()=>void} [props.onOk] - 点击确认的回调
168
+ * @param {()=>void} props.destory - 关闭对话框的回调
169
+ * @param {string} [props.type='error'] - 警告类型,'error'|'suuccess'
170
+ *
171
+ * @returns {JSX.Element}
172
+ */
173
+ const Alert = (props) => {
174
+ const {onOk:fnOnOk,destory,type,content,okText='确认'}= props;
175
+ function onOk() {
176
+ if (fnOnOk) fnOnOk();
177
+ destory();
178
+ }
179
+ return (
180
+ <section className={styles.body }>
181
+ <div className={styles.mask} />
182
+ <section className={styles.wrapAlert}>
183
+ <div className={styles.alertContent}>
184
+ <div className={type === 'success' ? styles.iconSuccess : styles.iconError} />
185
+ <span>{content}</span>
186
+ </div>
187
+ <div className={styles.alertFooter}>
188
+ <span onClick={onOk}>{okText}</span>
189
+ </div>
190
+ </section>
191
+ </section>
192
+ );
193
+ };
194
+
195
+ /**
196
+ * 显示一个alert
197
+ * @param {Object} props
198
+ * @param {JSX.Element|any} [props.content] - 对话框内的实际内容
199
+ * @param {()=>void} [props.onOk] - 点击确认的回调
200
+ * @param {string} [props.type='success'] - 警告类型,'error'|'suuccess'
201
+ *
202
+ * @returns {Promise<void>}
203
+ */
204
+ export const ShowAlert = (props) => {
205
+ if (props.constructor === String) {
206
+ // @ts-ignore
207
+ props = { content: props };
208
+ }
209
+
210
+ const {type='success',onOk,content}=props;
211
+
212
+ return new Promise((reslove) => {
213
+ let popup = Popup(reslove);
214
+
215
+ ReactDOM.render(
216
+ <Alert destory={popup.destory} type={type} onOk={onOk} content={content} />,
217
+ popup.dom
218
+ );
219
+ });
220
+ };
221
+
222
+ /**
223
+ * 显示一个错误提示alert
224
+ * @param {Object} props
225
+ * @param {JSX.Element|any} [props.content] - 对话框内的实际内容
226
+ * @param {()=>void} [props.onOk] - 点击确认的回调
227
+ *
228
+ * @returns {Promise<void>}
229
+ */
230
+ export const ShowErrorAlert = (props) => {
231
+ if (props.constructor === String) {
232
+ props = { content: props };
233
+ }
234
+ return ShowAlert({ ...props, type: 'fail' });
235
+ };
236
+
237
+ export default Dialog;
@@ -1,9 +1,18 @@
1
+ // @ts-ignore
1
2
  import React from 'react';
3
+ // @ts-ignore
2
4
  import { Empty, Button } from 'antd';
5
+
6
+ // @ts-ignore
3
7
  import styles from './index.less';
4
8
 
5
9
  /**
6
10
  * 当table数据为空时下方有“添加数据”按钮
11
+ * @param {object} props
12
+ * @param {()=>void} [props.onClick] - 点击添加数据的回调
13
+ * @param {boolean} [props.editmode] - 是否允许编辑模式,允许的话就会有添加数据的按钮
14
+ *
15
+ * @returns {JSX.Element}
7
16
  */
8
17
  function TableEmpty(props) {
9
18
  return (
@@ -1,6 +1,16 @@
1
- import React, { useState } from 'react';
1
+ // @ts-ignore
2
+ import React from 'react';
3
+
4
+ // @ts-ignore
2
5
  import styles from './index.less';
3
6
 
7
+ /**
8
+ * 表单的行组件,用于将子组件按照一行2列方式排列
9
+ * @param {Object} props
10
+ * @param {JSX.Element[]|JSX.Element} props.children
11
+ *
12
+ * @returns {JSX.Element}
13
+ */
4
14
  const FormRow = (props) => {
5
15
  function createCol(item, idx) {
6
16
  if (!item) return '';
@@ -9,6 +19,7 @@ const FormRow = (props) => {
9
19
  <div key={idx} className={styles.formRow}>
10
20
  <hgroup className={styles.row}>
11
21
  <div className={styles.title}>
22
+ {/* @ts-ignore */}
12
23
  <div required={editmode && item.props.required}>{item.props.label}</div>
13
24
  </div>
14
25
  <div className={styles.data}>{item}</div>
@@ -18,20 +29,31 @@ const FormRow = (props) => {
18
29
  }
19
30
  return (
20
31
  <section className={styles.formRowBody}>
32
+ {/* @ts-ignore */}
21
33
  {props.children.length > 0 ? props.children.map(createCol) : createCol(props.children)}
22
34
  </section>
23
35
  );
24
36
  };
25
37
 
38
+ /**
39
+ * 表单的行组件中的列组件
40
+ * @param {Object} props
41
+ * @param {JSX.Element[]|JSX.Element} props.children
42
+ * @param {boolean} [props.editmode=true] - 可编辑模式
43
+ * @param {string} [props.txtdata='-'] - 列的标题
44
+ * @param {boolean} [props.textarea=false] - 是否多行显示文本
45
+ *
46
+ * @returns {JSX.Element|JSX.Element[]|any}
47
+ */
26
48
  function HocEditControl(props) {
27
49
  const { editmode = true, txtdata ,textarea} = props;
28
50
  if (editmode) {
29
51
  return props.children;
30
52
  }
31
53
  if(textarea){
32
- return <span style={{whiteSpace:'pre-wrap'}}>{txtdata||'-'}</span>
54
+ return <span style={{whiteSpace:'pre-wrap'}}>{txtdata}</span>
33
55
  }
34
- return <span>{txtdata || '-'}</span>;
56
+ return <span>{txtdata}</span>;
35
57
  }
36
58
 
37
59
  FormRow.Col = HocEditControl;
@@ -1,7 +1,46 @@
1
+ // @ts-ignore
1
2
  import React ,{useImperativeHandle,useState,forwardRef} from 'react';
3
+
4
+ // @ts-ignore
2
5
  import uuid from 'js-uuid';
6
+
7
+ // @ts-ignore
3
8
  import styles from './index.less';
4
9
 
10
+
11
+ /**
12
+ * @typedef {object} ColumnsOptions
13
+ * @property {string} formItemName
14
+ * @property {(record:any,index:number,event:any)=>void} onDel
15
+ * @property {(record:any,index:number,event:any)=>void} onAdd
16
+ * @property {(record:any,index:number,event:any)=>void} onCopy
17
+ * @property {(initValue:[],event:any)=>void} onReset
18
+ */
19
+
20
+ /**
21
+ * 表格表单组件
22
+ * @param {Object} props
23
+ * @param {JSX.Element|any} props.Table - Table组件,一般为antd的Table组件
24
+ * @param {Object} props.form - Form组件
25
+ * @param {string} props.formItemName - 表格FormItem的name
26
+ * @param {boolean} [props.saveLast=false] - 是否当没有数据时,默认保留一行数据
27
+ * @param {Object[]} [props.initialValue] - 初始数据
28
+ *
29
+ * @param {(record:object,index:number)=>object[]} [props.onCopy] - 点击复制的回调
30
+ * @param {(record:object,index:number)=>object[]} [props.onAdd] - 点击添加的回调
31
+ *
32
+ * @param {(value:any)=>void} [props.onChange] - 数据发生变动时的回调
33
+ * @param {(value:any)=>void} [props.onRefresh] - 刷新时的回调
34
+ *
35
+ * @param {(options:ColumnsOptions)=>[]} props.columns - 获取列配置数据的回调
36
+ *
37
+ * @param {Object} [props.newdata] - 添加新行的数据模版
38
+ * @param {Object} [props.antTableOptions] - antd的Table扩展参数
39
+ *
40
+ * @param {any} ref
41
+ *
42
+ * @returns
43
+ */
5
44
  const TableFormItem =(props,ref)=> {
6
45
  const {Table,form,formItemName,saveLast} = props;
7
46
  const getNewId=()=>{
@@ -121,7 +160,6 @@ const TableFormItem =(props,ref)=> {
121
160
  }));
122
161
 
123
162
  return (
124
-
125
163
  <Table
126
164
  className={styles.table}
127
165
  {...{rowKey: '_rowKey',...props.antTableOptions}}
@@ -0,0 +1,22 @@
1
+ // @ts-ignore
2
+ import React from "react";
3
+
4
+ // @ts-ignore
5
+ import styles from'./index.less';
6
+
7
+ /**
8
+ * iconFont图标
9
+ * @param {object} props
10
+ * @param {string} [props.icon] - 图标名称
11
+ * @param {string} [props.className] - 扩展类名
12
+ * @param {()=>void} [props.onClick] - 点击回调
13
+ *
14
+ * @returns {JSX.Element}
15
+ */
16
+ const IconFont=(props)=>{
17
+ const {icon,className,...others} = props;
18
+ return (
19
+ <span {...others} className={`iconfont icon-${icon} ${styles.iconBox} ${className||''}`} ></span>
20
+ )
21
+ }
22
+ export default IconFont;
@@ -1,20 +1,34 @@
1
+ // @ts-ignore
1
2
  import React, { useEffect,useState,useRef } from 'react';
3
+
4
+ // @ts-ignore
2
5
  import styles from './index.less';
3
6
 
7
+ /**
8
+ * iframe组件
9
+ * @param {object} props
10
+ * @param {string} props.name - iframe的唯一名称
11
+ * @param {string} props.url - url地址
12
+ *
13
+ * @param {string} [props.className] - 扩展样式名
14
+ *
15
+ * @returns {JSX.Element}
16
+ */
4
17
  const Iframe=(props)=>{
5
- const {className=''}=props;
18
+ const {className='',name,url}=props;
6
19
  const ref = useRef();
7
20
  const [height,setHeight] = useState('0px');
8
21
 
9
22
  useEffect(()=>{
10
23
  window.addEventListener('message',(e)=>{
11
24
  if(e?.data?.msg==='resize'){
12
- if(e.data.id===props.name){
25
+ if(e.data.id===name){
13
26
  setHeight(e.data.height+2+'px');
14
27
  }
15
28
  }else if(e?.data?.msg==='link'){
16
29
  location.href=e.data.url;
17
30
  }else if(e?.data?.msg==='server'){
31
+ // @ts-ignore
18
32
  const url = `${OA_KSSO_HOST}?target=${encodeURIComponent(location.href)}`;
19
33
  location.href=url;
20
34
  }else{
@@ -27,9 +41,9 @@ const Iframe=(props)=>{
27
41
  <iframe
28
42
  className={`${styles.iframeWrap} ${className}`}
29
43
  sandbox='allow-same-origin allow-scripts'
30
- name={props.name}
44
+ name={name}
31
45
  ref={ref}
32
- src={props.url}
46
+ src={url}
33
47
  style={{width:'100%',height:height,verticalAlign:'bottom'}}
34
48
  scrolling="none"
35
49
  frameBorder="0"
@@ -1,6 +1,11 @@
1
+ // @ts-ignore
1
2
  import React from 'react';
3
+ // @ts-ignore
2
4
  import {Outlet} from 'react-router-dom';
3
- import Iframe from '@/components/IFrame';
5
+
6
+ import Iframe from '@/components/iframe';
7
+
8
+ // @ts-ignore
4
9
  import styles from './index.less';
5
10
 
6
11
 
@@ -8,6 +13,7 @@ const LayoutBasic=(props)=>{
8
13
  const {nav=""} = props;
9
14
  return (
10
15
  <section className={styles.htmlWrap}>
16
+ {/* @ts-ignore */}
11
17
  <Iframe name='header' url={OA_MENU_HOST} className={styles.iframeHeader} />
12
18
  <section className={styles.headerSpace}></section>
13
19
 
@@ -1,5 +1,7 @@
1
+ // @ts-ignore
1
2
  import React from 'react';
2
3
 
4
+ // @ts-ignore
3
5
  import styles from './index.less';
4
6
 
5
7
 
@@ -1,6 +1,8 @@
1
+ // @ts-ignore
1
2
  import React from 'react';
2
- import styles from './index.less';
3
3
 
4
+ // @ts-ignore
5
+ import styles from './index.less';
4
6
 
5
7
 
6
8
  export const FormBlockByTitle = (props) => {
@@ -1,13 +1,19 @@
1
+ // @ts-ignore
1
2
  import React from 'react';
2
- import ProviderApp from '@/provider/app';
3
-
4
-
3
+ // @ts-ignore
5
4
  import {Outlet} from 'react-router-dom';
6
- import { ConfigProvider } from 'antd';
7
- import LayoutBasic from './Basic';
8
- import LayoutCenterBody from './CenterBody';
5
+ // @ts-ignore
9
6
  import zhCN from 'antd/lib/locale/zh_CN';
7
+ // @ts-ignore
8
+ import { ConfigProvider } from 'antd';
9
+
10
+
11
+ import ProviderApp from '@/provider/app';
12
+
13
+ import LayoutBasic from './basic';
14
+ import LayoutCenterBody from './centerBody';
10
15
 
16
+ // @ts-ignore
11
17
  import styles from './index.less';
12
18
  styles;
13
19
 
@@ -1,5 +1,9 @@
1
+ // @ts-ignore
1
2
  import React from 'react';
3
+ // @ts-ignore
2
4
  import {Outlet} from 'react-router-dom';
5
+
6
+
3
7
  import ProviderApp from '@/provider/app';
4
8
 
5
9
  const LayoutProvider=(props)=>{
@@ -1,7 +1,23 @@
1
+ // @ts-ignore
1
2
  import React from 'react';
3
+
2
4
  import { openLink,jumpUrl } from '@/utils';
5
+
6
+ // @ts-ignore
3
7
  import styles from './index.less';
4
8
 
9
+
10
+ /**
11
+ * 超链接组件
12
+ * @param {object} [props]
13
+ * @param {JSX.Element|string} [props.children] - 子组件
14
+ * @param {string} [props.className] - 扩展类样式名称
15
+ * @param {Function} [props.onClick] - 点击链接的回调
16
+ * @param {string} [props.href] - 跳转链接
17
+ * @param {string} [props.target] - 当target='_blank'时代表新窗口打开
18
+ *
19
+ * @returns {JSX.Element}
20
+ */
5
21
  const Link=(props)=>{
6
22
  const {children,className='',onClick,href='',target=''} = props;
7
23
 
@@ -1,9 +1,15 @@
1
- import { Menu } from 'antd';
1
+ // @ts-ignore
2
2
  import React, { useEffect, useRef, useState } from 'react';
3
+ // @ts-ignore
3
4
  import {matchPath,useLocation,useNavigate,} from 'react-router-dom';
5
+ // @ts-ignore
6
+ import { Menu } from 'antd';
7
+ // @ts-ignore
4
8
  import { AppstoreOutlined, MailOutlined, SettingOutlined } from '@ant-design/icons';
9
+
5
10
  import {useLoading} from '@/hooks';
6
11
 
12
+ // @ts-ignore
7
13
  import styles from './index.less';
8
14
 
9
15
  const ICON_NAME={
@@ -92,7 +98,7 @@ const LeftMenu=(props)=>{
92
98
  return item;
93
99
  }
94
100
 
95
-
101
+ // @ts-ignore
96
102
  window.matchPath=matchPath;
97
103
 
98
104
 
@@ -1,13 +1,27 @@
1
- import React,{useEffect, useState} from 'react';
1
+ // @ts-ignore
2
+ import React from 'react';
3
+ // @ts-ignore
2
4
  import ReactDOM from 'react-dom';
3
- import CSS from './index.less';
4
- import Popup from '@/components/Popup';
5
+
6
+ import Popup from '@/components/popup';
7
+
8
+ // @ts-ignore
5
9
  import imgLoading from '@/assets/images/loading.svg';
6
10
 
11
+ // @ts-ignore
12
+ import CSS from './index.less';
13
+
14
+ /**
15
+ * 页面Loading状态
16
+ * @param {object} [props]
17
+ * @param {boolean} [props.visible=true] - 是否显示状态
18
+ *
19
+ * @returns {JSX.Element}
20
+ */
7
21
  const PageLoading = (props) => {
8
22
  const {visible=true} = props;
9
23
  if(!visible){
10
- return '';
24
+ return <></>;
11
25
  }
12
26
  return (
13
27
  <div className={CSS.wrap } >
@@ -18,6 +32,13 @@ const PageLoading = (props) => {
18
32
  );
19
33
  };
20
34
 
35
+ /**
36
+ * 全屏置顶显示一个页面loading组件
37
+ * @param {object} [props]
38
+ * @param {boolean} [props.canTouch=false] - 是否允许用户点击屏幕穿透到下面的组件
39
+ *
40
+ * @returns {(string)=>void}
41
+ */
21
42
  export const ShowPageLoading=(props={canTouch:false})=>{
22
43
  let popup = Popup(()=>{},{cantouch:props.canTouch});
23
44
  ReactDOM.render(