@qmlight/web-platform-components 1.0.0

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 (52) hide show
  1. package/AsyncExe/index.tsx +9 -0
  2. package/AsyncExe/src/index.tsx +118 -0
  3. package/AsyncExe/src/lang/en.tsx +11 -0
  4. package/AsyncExe/src/lang/index.tsx +21 -0
  5. package/AsyncExe/src/lang/zh-cn.tsx +11 -0
  6. package/Demo/index.module.less +11 -0
  7. package/Demo/index.tsx +32 -0
  8. package/LICENSE +21 -0
  9. package/README.md +9 -0
  10. package/SearchAssistanceSelect/index.tsx +3 -0
  11. package/SearchAssistanceSelect/src/SearchAssistanceComponent/AdvancedSearch/api/index.js +6 -0
  12. package/SearchAssistanceSelect/src/SearchAssistanceComponent/AdvancedSearch/api/server.js +14 -0
  13. package/SearchAssistanceSelect/src/SearchAssistanceComponent/AdvancedSearch/index.less +23 -0
  14. package/SearchAssistanceSelect/src/SearchAssistanceComponent/AdvancedSearch/index.tsx +115 -0
  15. package/SearchAssistanceSelect/src/SearchAssistanceComponent/AdvancedSearch/popover.tsx +42 -0
  16. package/SearchAssistanceSelect/src/SearchAssistanceComponent/AdvancedSearch/searchboard.tsx +359 -0
  17. package/SearchAssistanceSelect/src/SearchAssistanceComponent/api/server.js +15 -0
  18. package/SearchAssistanceSelect/src/SearchAssistanceComponent/api/tabList/index.js +55 -0
  19. package/SearchAssistanceSelect/src/SearchAssistanceComponent/api/treeData/index.js +26 -0
  20. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/customNode/index.tsx +62 -0
  21. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/customNode/style.less +9 -0
  22. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/customOrg/customModal.tsx +234 -0
  23. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/customOrg/index.tsx +245 -0
  24. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/customOrg/style.less +27 -0
  25. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/dept/index.tsx +104 -0
  26. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/dept/style.less +9 -0
  27. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/dropdownList/index.tsx +74 -0
  28. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/dropdownList/style.less +19 -0
  29. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/recently/index.tsx +86 -0
  30. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/roleList/index.tsx +61 -0
  31. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/search/index.tsx +109 -0
  32. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/subordinate/index.tsx +64 -0
  33. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/tabList/index.tsx +99 -0
  34. package/SearchAssistanceSelect/src/SearchAssistanceComponent/component/tabList/style.less +86 -0
  35. package/SearchAssistanceSelect/src/SearchAssistanceComponent/index.tsx +298 -0
  36. package/SearchAssistanceSelect/src/SearchAssistanceComponent/searchModal.tsx +109 -0
  37. package/SearchAssistanceSelect/src/SearchAssistanceComponent/searchTabs.tsx +153 -0
  38. package/SearchAssistanceSelect/src/SearchAssistanceComponent/style.less +41 -0
  39. package/SearchAssistanceSelect/src/SearchAssistanceComponent/transfer/index.tsx +211 -0
  40. package/SearchAssistanceSelect/src/SearchAssistanceComponent/transfer/searchTransferRight.tsx +93 -0
  41. package/SearchAssistanceSelect/src/SearchAssistanceComponent/transfer/style.less +69 -0
  42. package/SearchAssistanceSelect/src/SearchAssistanceComponent/treeData/index.tsx +407 -0
  43. package/SearchAssistanceSelect/src/SearchAssistanceComponent/treeData/style.less +9 -0
  44. package/SearchAssistanceSelect/src/index.tsx +73 -0
  45. package/SearchAssistanceSelect/src/style.less +29 -0
  46. package/UploadFileMenu/download.ts +15 -0
  47. package/UploadFileMenu/index.tsx +3 -0
  48. package/UploadFileMenu/src/api/index.js +44 -0
  49. package/UploadFileMenu/src/api/server.js +9 -0
  50. package/UploadFileMenu/src/index.tsx +256 -0
  51. package/index.js +10 -0
  52. package/package.json +22 -0
@@ -0,0 +1,256 @@
1
+ import React, { useState, useRef, useEffect } from "react";
2
+ import {
3
+ QmUploadFile,
4
+ QmButton,
5
+ QmModal,
6
+ QmSearchTree,
7
+ } from "dcp-design-react";
8
+ import {
9
+ getFileTreeData,
10
+ multiUpload,
11
+ rename,
12
+ multiSecurityDown,
13
+ filePreview,
14
+ } from "./api/index";
15
+ import {
16
+ AppstoreOutlined,
17
+ FolderOutlined,
18
+ FileTextOutlined,
19
+ ShareAltOutlined,
20
+ } from "@/icons";
21
+ import { Message } from "@/utils";
22
+ import { download } from "../download";
23
+
24
+ const UploadFileMenu = ({
25
+ menuFlag = true,
26
+ menuValue,
27
+ value,
28
+ onChange,
29
+ option,
30
+ $$form,
31
+ }) => {
32
+ const [visible, setVisible] = useState(false);
33
+ const [categoryCode, setCategoryCode] = useState<any>();
34
+ const [fetchParams] = useState<any>({});
35
+ const [fileList, setFileList] = useState<any[]>([]);
36
+ const [viewVisible, setViewVisible] = useState(false);
37
+ const [viewInfo, setViewInfo] = useState({
38
+ title: "",
39
+ url: "",
40
+ });
41
+ const menuHandle = () => {
42
+ setVisible(true);
43
+ };
44
+ useEffect(() => {
45
+ if (menuValue) {
46
+ setCategoryCode(menuValue);
47
+ }
48
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49
+ }, [menuValue]);
50
+ useEffect(() => {
51
+ if (value) {
52
+ setFileList(value);
53
+ }
54
+ }, [value]);
55
+ const onDataChange = (data) => {
56
+ onChange && onChange(data);
57
+ option?.onChagne && option?.onChange(data);
58
+ };
59
+ // useEffect(() => {
60
+
61
+ // // eslint-disable-next-line react-hooks/exhaustive-deps
62
+ // }, [fileList]);
63
+ const renameChange = async (file) => {
64
+ if (file.status !== "done" || !file?.status) {
65
+ return;
66
+ }
67
+ rename({ name: file.name, id: file.uid })
68
+ .then((res) => {
69
+ if (res.code === 200) {
70
+ Message(`${file.name} 修改成功`, "success");
71
+ } else {
72
+ Message(`${file.name} 修改失败`, "error");
73
+ setFileList(fileList);
74
+ }
75
+ })
76
+ .catch(() => {
77
+ setFileList(fileList);
78
+ });
79
+ };
80
+ const filePreviewChange = async (info) => {
81
+ const res = await filePreview({ id: info.uid });
82
+ if (res.code === 200) {
83
+ setViewInfo({ title: info.name, url: res.data });
84
+ setViewVisible(true);
85
+ }
86
+ };
87
+ return (
88
+ <>
89
+ {menuFlag && (
90
+ <QmButton
91
+ onClick={() => menuHandle()}
92
+ disabled={
93
+ option?.readOnly ||
94
+ option?.disabled ||
95
+ $$form?.props?.formType === "onlyShow"
96
+ }
97
+ >
98
+ <FolderOutlined />
99
+ </QmButton>
100
+ )}
101
+
102
+ <QmUploadFile
103
+ fileSize={option?.fileSize || 100}
104
+ fileTypes={option?.fileTypes || []}
105
+ maxCount={option?.maxCount || 5}
106
+ action={`/dcp-base-cms/cms/articleFile/uploadAndSave`}
107
+ beforeUpload={() => {
108
+ if (!categoryCode) {
109
+ return false;
110
+ }
111
+ return true;
112
+ }}
113
+ customRequest={(info: any) => {
114
+ const formData = new FormData();
115
+ formData.append("file", info.file);
116
+ formData.append("categoryCode", categoryCode);
117
+ multiUpload(formData)
118
+ .then((res) => {
119
+ if (res.code === 200) {
120
+ Message(`${info.file.name} 文件上传成功`, "success");
121
+ info?.onSuccess && info?.onSuccess(res.data);
122
+ } else {
123
+ Message(`${info.file.name} 文件上传失败`, "error");
124
+ info?.onError && info.onError();
125
+ }
126
+ })
127
+ .catch(() => {
128
+ Message(`${info.file.name} 文件上传失败`, "error");
129
+ info?.onError && info.onError();
130
+ });
131
+ }}
132
+ disabled={
133
+ (!categoryCode && fileList.length === 0) ||
134
+ option?.readOnly ||
135
+ option?.disabled ||
136
+ $$form?.props?.formType === "onlyShow"
137
+ }
138
+ fileList={fileList}
139
+ onPreview={(info) => {
140
+ if (info.status === "done") {
141
+ filePreviewChange(info);
142
+ }
143
+ }}
144
+ batchDownload={async (fileList) => {
145
+ console.log(fileList);
146
+ const data = fileList
147
+ .filter((item) => item.status === "done")
148
+ .map((item: any) => {
149
+ return {
150
+ name: item.name,
151
+ path: item.path,
152
+ };
153
+ });
154
+ multiSecurityDown({ articleFileList: data })
155
+ // .then((response: any) => new Blob([response], { type: 'application/zip' }))
156
+ .then((res: any) => {
157
+ if (res.data) {
158
+ download(res.data, "files.zip");
159
+ }
160
+ });
161
+ // console.log(res);
162
+ }}
163
+ onChange={(value: any) => {
164
+ const { fileList: newFileList } = value;
165
+ if (!categoryCode) {
166
+ Message("文档目录不能为空", "error");
167
+ return;
168
+ }
169
+ const list = newFileList.map((item) => {
170
+ if (item.status === "done") {
171
+ return {
172
+ ...item,
173
+ url: item.url || item?.response?.securityUrl,
174
+ uid: item?.response?.id || item.uid,
175
+ path: item?.response?.dummyName || item?.path,
176
+ };
177
+ }
178
+ return item;
179
+ });
180
+ setFileList(list);
181
+ onDataChange(list);
182
+ }}
183
+ onEditChange={renameChange}
184
+ draggable
185
+ editable
186
+ />
187
+
188
+ <QmModal
189
+ width={400}
190
+ height={300}
191
+ title={"选择上传目录"}
192
+ visible={visible}
193
+ onClose={() => setVisible(false)}
194
+ >
195
+ <QmSearchTree
196
+ fetch={{
197
+ api: getFileTreeData,
198
+ params: fetchParams,
199
+ dataKey: "records",
200
+ }}
201
+ showSearchBar={false}
202
+ filterable={false}
203
+ showCollapse={false}
204
+ defaultExpandAll={false}
205
+ fieldsDefine={{
206
+ valueKey: "categoryCode",
207
+ textKey: "name",
208
+ }}
209
+ asyncLoad={false}
210
+ value={[categoryCode]}
211
+ onSelectChange={(node: any) => {
212
+ if (node?.moduleType === "2") {
213
+ setVisible(false);
214
+ setCategoryCode(node.categoryCode);
215
+ }
216
+ }}
217
+ titleRender={(node) => {
218
+ return node.moduleType === "0" ? (
219
+ <span>
220
+ <FileTextOutlined /> {node.name}
221
+ </span>
222
+ ) : node.moduleType === "1" ? (
223
+ <span>
224
+ <ShareAltOutlined /> {node.name}
225
+ </span>
226
+ ) : node.moduleType === "2" ? (
227
+ <span>
228
+ <FolderOutlined /> {node.name}
229
+ </span>
230
+ ) : (
231
+ <span>
232
+ <AppstoreOutlined /> {node.name}
233
+ </span>
234
+ );
235
+ }}
236
+ />
237
+ </QmModal>
238
+ <QmModal
239
+ title={viewInfo.title}
240
+ bodyStyle={{ height: "calc(80vh - 48px)", overflow: "auto" }}
241
+ visible={viewVisible}
242
+ onClose={() => {
243
+ setViewVisible(false);
244
+ }}
245
+ >
246
+ <iframe
247
+ src={viewInfo.url}
248
+ name={"aaa"}
249
+ style={{ width: "100%", height: "98%" }}
250
+ ></iframe>
251
+ </QmModal>
252
+ </>
253
+ );
254
+ };
255
+ UploadFileMenu.displayName = "UploadFileMenu";
256
+ export default UploadFileMenu;
package/index.js ADDED
@@ -0,0 +1,10 @@
1
+ /*
2
+ * @Author: 焦质晔
3
+ * @Date: 2024-03-07 12:27:01
4
+ * @Last Modified by: 焦质晔
5
+ * @Last Modified time: 2024-04-26 10:47:13
6
+ */
7
+ export { default as Demo } from "./Demo";
8
+ export { default as AsyncExe } from "./AsyncExe";
9
+ export { default as UploadFileMenu } from "./UploadFileMenu";
10
+ export { default as SearchAssistanceSelect } from "./SearchAssistanceSelect";
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@qmlight/web-platform-components",
3
+ "version": "1.0.0",
4
+ "description": "A platform components for React",
5
+ "keywords": [
6
+ "React",
7
+ "components",
8
+ "typescript"
9
+ ],
10
+ "author": "jiaozhiye",
11
+ "license": "MIT",
12
+ "scripts": {
13
+ "test": "echo \"Error: no test specified\" && exit 1"
14
+ },
15
+ "publishConfig": {
16
+ "registry": "https://registry.npmjs.org/",
17
+ "access": "public"
18
+ },
19
+ "main": "index.js",
20
+ "dependencies": {},
21
+ "devDependencies": {}
22
+ }