From ae42fe87ed97abdb5a0f9896ac18e621d7c900c1 Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Sat, 20 Dec 2025 18:21:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BE=85=E5=8A=9E=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jeesite/modules/app/test.json | 0 .../modules/app/utils/MyFileUtils.java | 18 + .../jeesite/modules/app/utils/MyUtils.java | 34 + .../modules/biz/entity/BizMyfiles.java | 159 +-- .../modules/biz/web/BizFoldersController.java | 116 +- .../modules/biz/web/BizMyfilesController.java | 18 +- .../src/main/resources/config/application.yml | 13 +- web-vue/packages/biz/api/biz/folders.ts | 25 +- web-vue/packages/biz/api/biz/myfiles.ts | 1 + .../packages/biz/views/biz/folders/form.vue | 139 -- .../biz/views/biz/folders/formImport.vue | 103 -- .../packages/biz/views/biz/folders/list.vue | 258 ---- .../packages/biz/views/biz/folders/select.ts | 151 --- .../packages/biz/views/biz/myfiles/form.vue | 182 --- .../biz/views/biz/myfiles/formImport.vue | 103 -- .../packages/biz/views/biz/myfiles/list.vue | 314 ----- .../packages/biz/views/biz/myfiles/select.ts | 207 --- .../desktop/analysis/components/BizApps.vue | 13 - .../desktop/myfiles/components/folder.vue | 42 - .../layouts/views/desktop/myfiles/index.vue | 709 ---------- .../workbench/components/myfiles/folder.vue | 134 ++ .../workbench/components/myfiles/index.vue | 1177 +++++++++++++++++ .../components/myfiles}/upload.vue | 79 +- .../layouts/views/desktop/workbench/index.vue | 4 + .../core/locales/lang/en/routes/dashboard.ts | 1 - .../locales/lang/zh-CN/routes/dashboard.ts | 1 - .../core/router/routes/modules/desktop.ts | 10 - web-vue/web/.env.development | 1 - web-vue/web/.env.production | 1 - web-vue/web/.env.tomcat | 1 - .../resource/img/icons/database-2-fill.svg | 1 + .../resource/img/icons/database-2-line.svg | 1 + .../resource/img/icons/file-excel-fill.svg | 1 + .../resource/img/icons/file-excel-line.svg | 1 + .../resource/img/icons/file-pdf-fill.svg | 1 + .../resource/img/icons/file-pdf-line.svg | 1 + .../resource/img/icons/file-ppt-line.svg | 1 + .../resource/img/icons/file-text-fill.png | Bin 0 -> 274 bytes .../resource/img/icons/file-text-line.png | Bin 0 -> 279 bytes .../resource/img/icons/file-word-fill.svg | 1 + .../resource/img/icons/file-word-line.svg | 1 + .../resource/img/icons/file-zip-fill.svg | 1 + .../resource/img/icons/file-zip-line.svg | 1 + .../resource/img/icons/folder-zip-fill.svg | 1 + .../resource/img/icons/folder-zip-line.svg | 1 + 45 files changed, 1644 insertions(+), 2383 deletions(-) create mode 100644 web-api/src/main/java/com/jeesite/modules/app/test.json create mode 100644 web-api/src/main/java/com/jeesite/modules/app/utils/MyUtils.java delete mode 100644 web-vue/packages/biz/views/biz/folders/form.vue delete mode 100644 web-vue/packages/biz/views/biz/folders/formImport.vue delete mode 100644 web-vue/packages/biz/views/biz/folders/list.vue delete mode 100644 web-vue/packages/biz/views/biz/folders/select.ts delete mode 100644 web-vue/packages/biz/views/biz/myfiles/form.vue delete mode 100644 web-vue/packages/biz/views/biz/myfiles/formImport.vue delete mode 100644 web-vue/packages/biz/views/biz/myfiles/list.vue delete mode 100644 web-vue/packages/biz/views/biz/myfiles/select.ts delete mode 100644 web-vue/packages/core/layouts/views/desktop/myfiles/components/folder.vue delete mode 100644 web-vue/packages/core/layouts/views/desktop/myfiles/index.vue create mode 100644 web-vue/packages/core/layouts/views/desktop/workbench/components/myfiles/folder.vue create mode 100644 web-vue/packages/core/layouts/views/desktop/workbench/components/myfiles/index.vue rename web-vue/packages/core/layouts/views/desktop/{myfiles/components => workbench/components/myfiles}/upload.vue (70%) create mode 100644 web-vue/web/public/resource/img/icons/database-2-fill.svg create mode 100644 web-vue/web/public/resource/img/icons/database-2-line.svg create mode 100644 web-vue/web/public/resource/img/icons/file-excel-fill.svg create mode 100644 web-vue/web/public/resource/img/icons/file-excel-line.svg create mode 100644 web-vue/web/public/resource/img/icons/file-pdf-fill.svg create mode 100644 web-vue/web/public/resource/img/icons/file-pdf-line.svg create mode 100644 web-vue/web/public/resource/img/icons/file-ppt-line.svg create mode 100644 web-vue/web/public/resource/img/icons/file-text-fill.png create mode 100644 web-vue/web/public/resource/img/icons/file-text-line.png create mode 100644 web-vue/web/public/resource/img/icons/file-word-fill.svg create mode 100644 web-vue/web/public/resource/img/icons/file-word-line.svg create mode 100644 web-vue/web/public/resource/img/icons/file-zip-fill.svg create mode 100644 web-vue/web/public/resource/img/icons/file-zip-line.svg create mode 100644 web-vue/web/public/resource/img/icons/folder-zip-fill.svg create mode 100644 web-vue/web/public/resource/img/icons/folder-zip-line.svg diff --git a/web-api/src/main/java/com/jeesite/modules/app/test.json b/web-api/src/main/java/com/jeesite/modules/app/test.json new file mode 100644 index 00000000..e69de29b diff --git a/web-api/src/main/java/com/jeesite/modules/app/utils/MyFileUtils.java b/web-api/src/main/java/com/jeesite/modules/app/utils/MyFileUtils.java index 1fd4ea22..1d025997 100644 --- a/web-api/src/main/java/com/jeesite/modules/app/utils/MyFileUtils.java +++ b/web-api/src/main/java/com/jeesite/modules/app/utils/MyFileUtils.java @@ -45,4 +45,22 @@ public class MyFileUtils { logger.error(e.getMessage()); } } + + + public static String getIcon(String ext) { + switch (ext) { + case "doc", "docx": + return "icons/file-word-line.svg"; + case "xls", "xlsx": + return "icons/file-excel-line.svg"; + case "ppt", "pptx": + return "icons/file-ppt-line.svg"; + case "pdf": + return "icons/file-pdf-line.svg"; + case "zip", "gz": + return "icons/folder-zip-line.svg"; + default: + return "icons/file-text-line.svg"; + } + } } diff --git a/web-api/src/main/java/com/jeesite/modules/app/utils/MyUtils.java b/web-api/src/main/java/com/jeesite/modules/app/utils/MyUtils.java new file mode 100644 index 00000000..13d7ca96 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/app/utils/MyUtils.java @@ -0,0 +1,34 @@ +package com.jeesite.modules.app.utils; + +import com.jeesite.modules.biz.entity.BizFolders; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +public class MyUtils { + + + public static Map convertToTreeNode(BizFolders folder, String parentName) { + Map node = new HashMap<>(); + node.put("folderId", folder.getFolderId()); + node.put("folderName", folder.getFolderName()); + node.put("parentId", folder.getParentId()); + node.put("parentName", parentName); + node.put("userName", folder.getUserName()); + node.put("loginCode", folder.getLoginCode()); + node.put("children", new ArrayList<>()); + return node; + } + + public static Map convertToTreeNode(BizFolders folder, boolean isDisabled) { + Map node = new HashMap<>(); + node.put("id", folder.getFolderId()); // folderId → id + node.put("name", folder.getFolderName()); // folderName → name + node.put("children", new ArrayList<>()); // 初始化children空数组 + if (isDisabled) { + node.put("disabled", true); + } + return node; + } +} diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMyfiles.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMyfiles.java index a2c2d9bf..5175185e 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMyfiles.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/BizMyfiles.java @@ -2,6 +2,7 @@ package com.jeesite.modules.biz.entity; import java.io.Serializable; import java.util.Date; + import com.jeesite.common.mybatis.annotation.JoinTable; import com.jeesite.common.mybatis.annotation.JoinTable.Type; import com.fasterxml.jackson.annotation.JsonFormat; @@ -25,91 +26,95 @@ import java.io.Serial; /** * 文件信息Entity + * * @author gaoxq * @version 2025-12-18 */ @EqualsAndHashCode(callSuper = true) -@Table(name="biz_myfiles", alias="a", label="文件信息信息", columns={ - @Column(name="create_time", attrName="createTime", label="记录时间", isUpdate=false, isUpdateForce=true), - @Column(name="id", attrName="tid", label="文件标识", isPK=true), - @Column(name="file_name", attrName="fileName", label="原始名称", queryType=QueryType.LIKE), - @Column(name="file_path", attrName="filePath", label="存储路径", isQuery=false), - @Column(name="file_hash", attrName="fileHash", label="文件MD5"), - @Column(name="file_size", attrName="fileSize", label="文件大小", isQuery=false), - @Column(name="file_ext", attrName="fileExt", label="文件扩展名", isQuery=false), - @Column(name="mime_type", attrName="mimeType", label="文件类型", isQuery=false), - @Column(name="folder_id", attrName="folderId", label="文件夹标识"), - @Column(name="user_name", attrName="userName", label="用户姓名", isUpdate=false, isQuery=false), - @Column(name="login_code", attrName="loginCode", label="用户名称", isUpdate=false), - @Column(name="download_count", attrName="downloadCount", label="下载次数", isUpdate=false, isQuery=false, isUpdateForce=true), - @Column(name="view_count", attrName="viewCount", label="查看次数", isUpdate=false, isQuery=false, isUpdateForce=true), - @Column(name="expire_time", attrName="expireTime", label="过期时间", isQuery=false, isUpdateForce=true), - @Column(name="is_delete", attrName="isDelete", label="是否删除", isUpdateForce=true), - @Column(name="update_time", attrName="updateTime", label="更新时间", isQuery=false, isUpdateForce=true), - }, orderBy="a.create_time DESC" +@Table(name = "biz_myfiles", alias = "a", label = "文件信息信息", columns = { + @Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdate = false, isUpdateForce = true), + @Column(name = "id", attrName = "id", label = "文件标识", isPK = true), + @Column(name = "file_name", attrName = "fileName", label = "原始名称", queryType = QueryType.LIKE), + @Column(name = "file_path", attrName = "filePath", label = "存储路径", isQuery = false), + @Column(name = "file_hash", attrName = "fileHash", label = "文件MD5"), + @Column(name = "file_size", attrName = "fileSize", label = "文件大小", isQuery = false), + @Column(name = "file_ext", attrName = "fileExt", label = "文件扩展名", isQuery = false), + @Column(name = "mime_type", attrName = "mimeType", label = "文件类型", isQuery = false), + @Column(name = "folder_id", attrName = "folderId", label = "文件夹标识"), + @Column(name = "user_name", attrName = "userName", label = "用户姓名", isUpdate = false, isQuery = false), + @Column(name = "login_code", attrName = "loginCode", label = "用户名称", isUpdate = false), + @Column(name = "download_count", attrName = "downloadCount", label = "下载次数", isUpdate = false, isQuery = false, isUpdateForce = true), + @Column(name = "view_count", attrName = "viewCount", label = "查看次数", isUpdate = false, isQuery = false, isUpdateForce = true), + @Column(name = "expire_time", attrName = "expireTime", label = "过期时间", isQuery = false, isUpdateForce = true), + @Column(name = "is_delete", attrName = "isDelete", label = "是否删除", isUpdateForce = true), + @Column(name = "update_time", attrName = "updateTime", label = "更新时间", isQuery = false, isUpdateForce = true), + @Column(name = "svg_icon", attrName = "svgIcon", label = "文件夹标识"), + +}, orderBy = "a.create_time DESC" ) @Data public class BizMyfiles extends DataEntity implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - private Date createTime; // 记录时间 - private Long tid; // 文件标识 - private String fileName; // 原始名称 - private String filePath; // 存储路径 - private String fileHash; // 文件MD5 - private String fileSize; // 文件大小 - private String fileExt; // 文件扩展名 - private String mimeType; // 文件类型 - private String folderId; // 文件夹标识 - private String userName; // 用户姓名 - private String loginCode; // 用户名称 - private Integer downloadCount; // 下载次数 - private Integer viewCount; // 查看次数 - private Date expireTime; // 过期时间 - private Integer isDelete; // 是否删除 - private Date updateTime; // 更新时间 - @ExcelFields({ - @ExcelField(title="记录时间", attrName="createTime", align=Align.CENTER, sort=10, dataFormat="yyyy-MM-dd hh:mm"), - @ExcelField(title="文件标识", attrName="tid", align=Align.CENTER, sort=20), - @ExcelField(title="原始名称", attrName="fileName", align=Align.CENTER, sort=30), - @ExcelField(title="存储路径", attrName="filePath", align=Align.CENTER, sort=40), - @ExcelField(title="文件MD5", attrName="fileHash", align=Align.CENTER, sort=50), - @ExcelField(title="文件大小", attrName="fileSize", align=Align.CENTER, sort=60), - @ExcelField(title="文件扩展名", attrName="fileExt", align=Align.CENTER, sort=70), - @ExcelField(title="文件类型", attrName="mimeType", align=Align.CENTER, sort=80), - @ExcelField(title="文件夹标识", attrName="folderId", align=Align.CENTER, sort=90), - @ExcelField(title="用户姓名", attrName="userName", align=Align.CENTER, sort=100), - @ExcelField(title="用户名称", attrName="loginCode", align=Align.CENTER, sort=110), - @ExcelField(title="下载次数", attrName="downloadCount", align=Align.CENTER, sort=120), - @ExcelField(title="查看次数", attrName="viewCount", align=Align.CENTER, sort=130), - @ExcelField(title="过期时间", attrName="expireTime", align=Align.CENTER, sort=140, dataFormat="yyyy-MM-dd hh:mm"), - @ExcelField(title="是否删除", attrName="isDelete", dictType="sys_yes_no", align=Align.CENTER, sort=150), - @ExcelField(title="更新时间", attrName="updateTime", align=Align.CENTER, sort=160, dataFormat="yyyy-MM-dd hh:mm"), - }) - public BizMyfiles() { - this(null); - } - - public BizMyfiles(String id){ - super(id); - } - - public Date getCreateTime_gte() { - return sqlMap.getWhere().getValue("create_time", QueryType.GTE); - } + @Serial + private static final long serialVersionUID = 1L; + private Date createTime; // 记录时间 + private String id; // 文件标识 + private String fileName; // 原始名称 + private String filePath; // 存储路径 + private String fileHash; // 文件MD5 + private String fileSize; // 文件大小 + private String fileExt; // 文件扩展名 + private String mimeType; // 文件类型 + private String folderId; // 文件夹标识 + private String userName; // 用户姓名 + private String loginCode; // 用户名称 + private Integer downloadCount; // 下载次数 + private Integer viewCount; // 查看次数 + private Date expireTime; // 过期时间 + private Integer isDelete; // 是否删除 + private Date updateTime; // 更新时间 + private String svgIcon; //文件图标 - public void setCreateTime_gte(Date createTime) { - sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); - } - - public Date getCreateTime_lte() { - return sqlMap.getWhere().getValue("create_time", QueryType.LTE); - } + @ExcelFields({ + @ExcelField(title = "记录时间", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "文件标识", attrName = "id", align = Align.CENTER, sort = 20), + @ExcelField(title = "原始名称", attrName = "fileName", align = Align.CENTER, sort = 30), + @ExcelField(title = "存储路径", attrName = "filePath", align = Align.CENTER, sort = 40), + @ExcelField(title = "文件MD5", attrName = "fileHash", align = Align.CENTER, sort = 50), + @ExcelField(title = "文件大小", attrName = "fileSize", align = Align.CENTER, sort = 60), + @ExcelField(title = "文件扩展名", attrName = "fileExt", align = Align.CENTER, sort = 70), + @ExcelField(title = "文件类型", attrName = "mimeType", align = Align.CENTER, sort = 80), + @ExcelField(title = "文件夹标识", attrName = "folderId", align = Align.CENTER, sort = 90), + @ExcelField(title = "用户姓名", attrName = "userName", align = Align.CENTER, sort = 100), + @ExcelField(title = "用户名称", attrName = "loginCode", align = Align.CENTER, sort = 110), + @ExcelField(title = "下载次数", attrName = "downloadCount", align = Align.CENTER, sort = 120), + @ExcelField(title = "查看次数", attrName = "viewCount", align = Align.CENTER, sort = 130), + @ExcelField(title = "过期时间", attrName = "expireTime", align = Align.CENTER, sort = 140, dataFormat = "yyyy-MM-dd hh:mm"), + @ExcelField(title = "是否删除", attrName = "isDelete", dictType = "sys_yes_no", align = Align.CENTER, sort = 150), + @ExcelField(title = "更新时间", attrName = "updateTime", align = Align.CENTER, sort = 160, dataFormat = "yyyy-MM-dd hh:mm"), + }) + public BizMyfiles() { + this(null); + } + + public BizMyfiles(String id) { + super(id); + } + + public Date getCreateTime_gte() { + return sqlMap.getWhere().getValue("create_time", QueryType.GTE); + } + + public void setCreateTime_gte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.GTE, createTime); + } + + public Date getCreateTime_lte() { + return sqlMap.getWhere().getValue("create_time", QueryType.LTE); + } + + public void setCreateTime_lte(Date createTime) { + sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); + } - public void setCreateTime_lte(Date createTime) { - sqlMap.getWhere().and("create_time", QueryType.LTE, createTime); - } - } \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/biz/web/BizFoldersController.java b/web-api/src/main/java/com/jeesite/modules/biz/web/BizFoldersController.java index e7d32a9f..6636577a 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/web/BizFoldersController.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/web/BizFoldersController.java @@ -1,9 +1,13 @@ package com.jeesite.modules.biz.web; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.jeesite.modules.app.dao.file.FolderItem; +import com.jeesite.modules.app.utils.MyUtils; +import com.jeesite.modules.app.utils.vDate; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -86,8 +90,9 @@ public class BizFoldersController extends BaseController { @PostMapping(value = "save") @ResponseBody public String save(@Validated BizFolders bizFolders) { + bizFolders.setUpdateTime(vDate.getUpdateTime(bizFolders.getIsNewRecord())); bizFoldersService.save(bizFolders); - return renderResult(Global.TRUE, text("保存文件夹信息成功!")); + return renderResult(Global.TRUE, text("操作文件夹成功!")); } /** @@ -136,29 +141,114 @@ public class BizFoldersController extends BaseController { @ResponseBody public String delete(BizFolders bizFolders) { bizFoldersService.delete(bizFolders); - return renderResult(Global.TRUE, text("删除文件夹信息成功!")); + return renderResult(Global.TRUE, text("删除文件夹成功!")); } @RequestMapping(value = "listAll") @ResponseBody public List listAll(BizFolders bizFolders) { - return bizFoldersService.findList(bizFolders); + List originalList = bizFoldersService.findList(bizFolders); + List newList = new ArrayList<>(); + BizFolders fixedFolder = new BizFolders(); + fixedFolder.setFolderId("0"); + fixedFolder.setFolderName("根目录"); + newList.add(fixedFolder); + newList.addAll(originalList); + return newList; } @RequestMapping(value = "foldersAll") @ResponseBody - public List foldersAll(BizFolders bizFolders) { - List folderItems = new ArrayList<>(); - List foldersList = bizFoldersService.findList(bizFolders); - for (BizFolders folder : foldersList) { - if (folder.getParentId().equals("0")) { - BizFolders childFolder = new BizFolders(); - childFolder.setParentId(folder.getFolderId()); - List childFolders = bizFoldersService.findList(childFolder); - folderItems.add(new FolderItem(folder.getFolderId(), folder.getFolderName(), false, "folder", childFolders)); + public List> foldersAll(BizFolders bizFolders) { + List> treeData = new ArrayList<>(); + Map rootNode = new HashMap<>(); + rootNode.put("id", "0"); + rootNode.put("name", "根目录"); + rootNode.put("disabled", false); + rootNode.put("children", new ArrayList<>()); + bizFolders.setParentId("0"); + bizFolders.setIsDeleted(0); + List firstLevelFolders = bizFoldersService.findList(bizFolders); + List> firstNodeList = new ArrayList<>(); + for (BizFolders firstFolder : firstLevelFolders) { + Map firstNode = MyUtils.convertToTreeNode(firstFolder, "根目录"); + BizFolders secondQuery = new BizFolders(); + secondQuery.setParentId(firstFolder.getFolderId()); + secondQuery.setIsDeleted(0); + List secondLevelFolders = bizFoldersService.findList(secondQuery); + List> secondNodeList = new ArrayList<>(); + for (BizFolders secondFolder : secondLevelFolders) { + Map secondNode = MyUtils.convertToTreeNode(secondFolder, firstFolder.getFolderName()); + BizFolders thirdQuery = new BizFolders(); + thirdQuery.setParentId(secondFolder.getFolderId()); + thirdQuery.setIsDeleted(0); + List thirdLevelFolders = bizFoldersService.findList(thirdQuery); + List> thirdNodeList = new ArrayList<>(); + for (BizFolders thirdFolder : thirdLevelFolders) { + Map thirdNode = MyUtils.convertToTreeNode(thirdFolder, secondFolder.getFolderName()); + BizFolders fourthQuery = new BizFolders(); + fourthQuery.setParentId(thirdFolder.getFolderId()); + fourthQuery.setIsDeleted(0); + List fourthLevelFolders = bizFoldersService.findList(fourthQuery); + List> fourthNodeList = new ArrayList<>(); + for (BizFolders fourthFolder : fourthLevelFolders) { + Map fourthNode = MyUtils.convertToTreeNode(fourthFolder, thirdFolder.getFolderName()); + fourthNodeList.add(fourthNode); + } + thirdNode.put("children", fourthNodeList); + thirdNodeList.add(thirdNode); + } + secondNode.put("children", thirdNodeList); + secondNodeList.add(secondNode); } + firstNode.put("children", secondNodeList); + firstNodeList.add(firstNode); } - return folderItems; + rootNode.put("children", firstNodeList); + treeData.add(rootNode); + return treeData; } + + @RequestMapping(value = "treeData") + @ResponseBody + public List> treeFoldersData(BizFolders bizFolders) { + List> treeData = new ArrayList<>(); + Map rootNode = new HashMap<>(); + rootNode.put("id", "0"); + rootNode.put("name", "根目录"); + rootNode.put("disabled", false); + rootNode.put("children", new ArrayList<>()); + bizFolders.setParentId("0"); + bizFolders.setIsDeleted(0); + List firstLevelFolders = bizFoldersService.findList(bizFolders); + List> firstNodeList = new ArrayList<>(); + for (BizFolders firstFolder : firstLevelFolders) { + Map firstNode = MyUtils.convertToTreeNode(firstFolder, false); + BizFolders secondQuery = new BizFolders(); + secondQuery.setParentId(firstFolder.getFolderId()); + secondQuery.setIsDeleted(0); + List secondLevelFolders = bizFoldersService.findList(secondQuery); + List> secondNodeList = new ArrayList<>(); + for (BizFolders secondFolder : secondLevelFolders) { + Map secondNode = MyUtils.convertToTreeNode(secondFolder, false); + BizFolders thirdQuery = new BizFolders(); + thirdQuery.setParentId(secondFolder.getFolderId()); + thirdQuery.setIsDeleted(0); + List thirdLevelFolders = bizFoldersService.findList(thirdQuery); + List> thirdNodeList = new ArrayList<>(); + for (BizFolders thirdFolder : thirdLevelFolders) { + Map thirdNode = MyUtils.convertToTreeNode(thirdFolder, false); + thirdNodeList.add(thirdNode); + } + secondNode.put("children", thirdNodeList); + secondNodeList.add(secondNode); + } + firstNode.put("children", secondNodeList); + firstNodeList.add(firstNode); + } + rootNode.put("children", firstNodeList); + treeData.add(rootNode); + return treeData; + } } \ No newline at end of file diff --git a/web-api/src/main/java/com/jeesite/modules/biz/web/BizMyfilesController.java b/web-api/src/main/java/com/jeesite/modules/biz/web/BizMyfilesController.java index a729d1db..43829037 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/web/BizMyfilesController.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/web/BizMyfilesController.java @@ -4,8 +4,10 @@ import java.util.Date; import java.util.List; import cn.hutool.core.net.multipart.UploadFile; +import com.jeesite.modules.app.utils.FileDownloadUtils; import com.jeesite.modules.app.utils.MyFileUtils; import com.jeesite.modules.app.utils.vId; +import com.jeesite.modules.biz.entity.BizMailAttachments; import com.jeesite.modules.file.entity.FileUpload; import com.jeesite.modules.file.utils.FileUploadUtils; import jakarta.servlet.http.HttpServletRequest; @@ -96,13 +98,14 @@ public class BizMyfilesController extends BaseController { List fileList = FileUploadUtils.findFileUpload(bizMyfiles.getId(), "bizMyfiles_file"); for (FileUpload fileUpload : fileList) { bizMyfiles.setCreateTime(new Date()); - bizMyfiles.setTid(vId.getLongId()); + bizMyfiles.setId(vId.getCid()); bizMyfiles.setFileName(fileUpload.getFileName()); bizMyfiles.setFilePath(FILE_PATH + fileUpload.getFileUrl()); bizMyfiles.setFileHash(fileUpload.getFileEntity().getFileMd5()); bizMyfiles.setFileSize(MyFileUtils.formatFileSize(fileUpload.getFileEntity().getFileSize(), 2)); bizMyfiles.setFileExt(fileUpload.getFileEntity().getFileExtension()); bizMyfiles.setMimeType(fileUpload.getFileEntity().getFileContentType()); + bizMyfiles.setSvgIcon(MyFileUtils.getIcon(fileUpload.getFileEntity().getFileExtension())); bizMyfilesService.save(bizMyfiles); } return renderResult(Global.TRUE, text("保存文件信息成功!")); @@ -154,7 +157,7 @@ public class BizMyfilesController extends BaseController { @ResponseBody public String delete(BizMyfiles bizMyfiles) { bizMyfilesService.delete(bizMyfiles); - return renderResult(Global.TRUE, text("删除文件信息成功!")); + return renderResult(Global.TRUE, text("删除文件成功!")); } @RequestMapping(value = "listAll") @@ -163,4 +166,15 @@ public class BizMyfilesController extends BaseController { return bizMyfilesService.findList(bizMyfiles); } + + @PostMapping(value = "downloadFile") + public void downloadFile(BizMyfiles bizMyfiles, HttpServletResponse response) { + try { + BizMyfiles myfiles = bizMyfilesService.get(bizMyfiles); + FileDownloadUtils.downloadFile(myfiles.getFilePath(), myfiles.getFileName(), response); + } catch (Exception e) { + System.out.print(e.getMessage()); + } + } + } \ No newline at end of file diff --git a/web-api/src/main/resources/config/application.yml b/web-api/src/main/resources/config/application.yml index bc131f64..835f6685 100644 --- a/web-api/src/main/resources/config/application.yml +++ b/web-api/src/main/resources/config/application.yml @@ -30,7 +30,7 @@ server: tomcat: uri-encoding: UTF-8 # 表单请求数据的最大大小 - max-http-form-post-size: 20MB + max-http-form-post-size: 200MB # 客户端发送请求参数个数限制 max-parameter-count: 10000 # 文件上传的表单请求参数个数限制 @@ -110,7 +110,7 @@ spring: # 事务超时时间,单位秒(30分钟)(spring boot 3) transaction: - default-timeout: 30m + default-timeout: 120m # 日志配置(fatal、error、warn、info、debug) logging: @@ -705,15 +705,18 @@ error: # 文件上传 file: enabled: true - + # # 文件上传根路径,设置路径中不允许包含“userfiles”,在指定目录中系统会自动创建userfiles目录,如果不设置默认为contextPath路径 baseDir: /ogsapp/files + maxFileSize: '500*1024*1024' + + isFileStreamDown: true # # # 上传文件的相对路径(支持:yyyy、MM、dd、HH、mm、ss、E、bizType、corpCode、userCode、userType、userCache中的key) - # uploadPath: '{yyyy}{MM}/' +# uploadPath: '{yyyy}{MM}/' # # # 上传单个文件最大字节(500M),在这之上还有 > Tomcat限制 > Nginx限制,等,此设置会覆盖 spring.http.multipart.maxFileSize 设置 - # maxFileSize: '500*1024*1024' +# maxFileSize: '500*1024*1024' # # # 设置允许上传的文件后缀(全局设置) # imageAllowSuffixes: .gif,.bmp,.jpeg,.jpg,.ico,.png,.tif,.tiff,.webp, diff --git a/web-vue/packages/biz/api/biz/folders.ts b/web-vue/packages/biz/api/biz/folders.ts index 7905835d..c485106b 100644 --- a/web-vue/packages/biz/api/biz/folders.ts +++ b/web-vue/packages/biz/api/biz/folders.ts @@ -9,13 +9,14 @@ import { BasicModel, Page } from '@jeesite/core/api/model/baseModel'; import { UploadApiResult } from '@jeesite/core/api/sys/upload'; import { UploadFileParams } from '@jeesite/types/axios'; import { AxiosProgressEvent } from 'axios'; +import { TreeDataModel, TreeModel, Page } from '@jeesite/core/api/model/baseModel'; const { ctxPath, adminPath } = useGlobSetting(); export interface BizFolders extends BasicModel { createTime?: string; // 记录时间 folderId?: string; // 文件夹标识 - folderName: string; // 文件夹名称 + folderName?: string; // 文件夹名称 parentId?: string; // 父文件夹 userName: string; // 用户姓名 loginCode: string; // 用户名称 @@ -24,15 +25,13 @@ export interface BizFolders extends BasicModel { description?: string; // 文件夹描述 } -export interface FolderItem { - id: string; - name: string; - expanded: boolean; - children: Array<{ - folderId: string; - folderName: string; - type: 'folder' | 'file'; - }>; + +export interface BizFolders extends TreeModel { + folderId?: string; // 文件夹标识 + folderName?: string; // 文件夹名称 + parentId?: string; // 父文件夹 + userName: string; // 用户姓名 + loginCode: string; // 用户名称 } export const bizFoldersList = (params?: BizFolders | any) => @@ -67,3 +66,9 @@ export const bizFoldersImportData = ( export const bizFoldersDelete = (params?: BizFolders | any) => defHttp.get({ url: adminPath + '/biz/folders/delete', params }); + +export const bizFolderTreeData = (params?: any) => + defHttp.get({ url: adminPath + '/biz/folders/treeData', params }); + +export const bizFoldersAllData = (params?: any) => + defHttp.get({ url: adminPath + '/biz/folders/foldersAll', params }); \ No newline at end of file diff --git a/web-vue/packages/biz/api/biz/myfiles.ts b/web-vue/packages/biz/api/biz/myfiles.ts index 1968bb64..17accf75 100644 --- a/web-vue/packages/biz/api/biz/myfiles.ts +++ b/web-vue/packages/biz/api/biz/myfiles.ts @@ -28,6 +28,7 @@ export interface BizMyfiles extends BasicModel { expireTime?: string; // 过期时间 isDelete?: number; // 是否删除 updateTime?: string; // 更新时间 + svgIcon?: string; //文件图标 } export const bizMyfilesList = (params?: BizMyfiles | any) => diff --git a/web-vue/packages/biz/views/biz/folders/form.vue b/web-vue/packages/biz/views/biz/folders/form.vue deleted file mode 100644 index 7dc3618b..00000000 --- a/web-vue/packages/biz/views/biz/folders/form.vue +++ /dev/null @@ -1,139 +0,0 @@ - - - diff --git a/web-vue/packages/biz/views/biz/folders/formImport.vue b/web-vue/packages/biz/views/biz/folders/formImport.vue deleted file mode 100644 index 70642788..00000000 --- a/web-vue/packages/biz/views/biz/folders/formImport.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - diff --git a/web-vue/packages/biz/views/biz/folders/list.vue b/web-vue/packages/biz/views/biz/folders/list.vue deleted file mode 100644 index 26154b8f..00000000 --- a/web-vue/packages/biz/views/biz/folders/list.vue +++ /dev/null @@ -1,258 +0,0 @@ - - - diff --git a/web-vue/packages/biz/views/biz/folders/select.ts b/web-vue/packages/biz/views/biz/folders/select.ts deleted file mode 100644 index e871f33e..00000000 --- a/web-vue/packages/biz/views/biz/folders/select.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { useI18n } from '@jeesite/core/hooks/web/useI18n'; -import { BasicColumn, BasicTableProps, FormProps } from '@jeesite/core/components/Table'; -import { bizFoldersListData } from '@jeesite/biz/api/biz/folders'; - -const { t } = useI18n('biz.folders'); - -const modalProps = { - title: t('文件夹信息选择'), -}; - -const searchForm: FormProps = { - baseColProps: { md: 8, lg: 6 }, - labelWidth: 90, - schemas: [ - { - label: t('记录时间起'), - field: 'createTime_gte', - component: 'DatePicker', - componentProps: { - format: 'YYYY-MM-DD HH:mm', - showTime: { format: 'HH:mm' }, - }, - }, - { - label: t('记录时间止'), - field: 'createTime_lte', - component: 'DatePicker', - componentProps: { - format: 'YYYY-MM-DD HH:mm', - showTime: { format: 'HH:mm' }, - }, - }, - { - label: t('文件夹名称'), - field: 'folderName', - component: 'Input', - }, - { - label: t('父文件夹'), - field: 'parentId', - component: 'Input', - }, - { - label: t('用户名称'), - field: 'loginCode', - component: 'Input', - }, - { - label: t('是否删除'), - field: 'isDeleted', - component: 'Select', - componentProps: { - dictType: 'sys_yes_no', - allowClear: true, - }, - }, - { - label: t('文件夹描述'), - field: 'description', - component: 'Input', - }, - ], -}; - -const tableColumns: BasicColumn[] = [ - { - title: t('记录时间'), - dataIndex: 'createTime', - key: 'a.create_time', - sorter: true, - width: 230, - align: 'left', - slot: 'firstColumn', - }, - { - title: t('文件夹名称'), - dataIndex: 'folderName', - key: 'a.folder_name', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('父文件夹'), - dataIndex: 'parentId', - key: 'a.parent_id', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('用户姓名'), - dataIndex: 'userName', - key: 'a.user_name', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('用户名称'), - dataIndex: 'loginCode', - key: 'a.login_code', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('更新时间'), - dataIndex: 'updateTime', - key: 'a.update_time', - sorter: true, - width: 130, - align: 'center', - }, - { - title: t('是否删除'), - dataIndex: 'isDeleted', - key: 'a.is_deleted', - sorter: true, - width: 130, - align: 'center', - dictType: 'sys_yes_no', - }, - { - title: t('文件夹描述'), - dataIndex: 'description', - key: 'a.description', - sorter: true, - width: 130, - align: 'left', - }, -]; - -const tableProps: BasicTableProps = { - api: bizFoldersListData, - beforeFetch: (params) => { - params['isAll'] = true; - return params; - }, - columns: tableColumns, - formConfig: searchForm, - rowKey: 'folderId', -}; - -export default { - modalProps, - tableProps, - itemCode: 'folderId', - itemName: 'folderId', - isShowCode: false, -}; diff --git a/web-vue/packages/biz/views/biz/myfiles/form.vue b/web-vue/packages/biz/views/biz/myfiles/form.vue deleted file mode 100644 index 6ca22cd4..00000000 --- a/web-vue/packages/biz/views/biz/myfiles/form.vue +++ /dev/null @@ -1,182 +0,0 @@ - - - diff --git a/web-vue/packages/biz/views/biz/myfiles/formImport.vue b/web-vue/packages/biz/views/biz/myfiles/formImport.vue deleted file mode 100644 index 17292f88..00000000 --- a/web-vue/packages/biz/views/biz/myfiles/formImport.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - diff --git a/web-vue/packages/biz/views/biz/myfiles/list.vue b/web-vue/packages/biz/views/biz/myfiles/list.vue deleted file mode 100644 index 1886bb8a..00000000 --- a/web-vue/packages/biz/views/biz/myfiles/list.vue +++ /dev/null @@ -1,314 +0,0 @@ - - - diff --git a/web-vue/packages/biz/views/biz/myfiles/select.ts b/web-vue/packages/biz/views/biz/myfiles/select.ts deleted file mode 100644 index 096bddb4..00000000 --- a/web-vue/packages/biz/views/biz/myfiles/select.ts +++ /dev/null @@ -1,207 +0,0 @@ -import { useI18n } from '@jeesite/core/hooks/web/useI18n'; -import { BasicColumn, BasicTableProps, FormProps } from '@jeesite/core/components/Table'; -import { bizMyfilesListData } from '@jeesite/biz/api/biz/myfiles'; - -const { t } = useI18n('biz.myfiles'); - -const modalProps = { - title: t('文件信息选择'), -}; - -const searchForm: FormProps = { - baseColProps: { md: 8, lg: 6 }, - labelWidth: 90, - schemas: [ - { - label: t('记录时间起'), - field: 'createTime_gte', - component: 'DatePicker', - componentProps: { - format: 'YYYY-MM-DD HH:mm', - showTime: { format: 'HH:mm' }, - }, - }, - { - label: t('记录时间止'), - field: 'createTime_lte', - component: 'DatePicker', - componentProps: { - format: 'YYYY-MM-DD HH:mm', - showTime: { format: 'HH:mm' }, - }, - }, - { - label: t('原始名称'), - field: 'fileName', - component: 'Input', - }, - { - label: t('文件MD5'), - field: 'fileHash', - component: 'Input', - }, - { - label: t('文件夹标识'), - field: 'folderId', - component: 'Input', - }, - { - label: t('用户名称'), - field: 'loginCode', - component: 'Input', - }, - { - label: t('是否删除'), - field: 'isDelete', - component: 'Select', - componentProps: { - dictType: 'sys_yes_no', - allowClear: true, - }, - }, - ], -}; - -const tableColumns: BasicColumn[] = [ - { - title: t('记录时间'), - dataIndex: 'createTime', - key: 'a.create_time', - sorter: true, - width: 230, - align: 'left', - slot: 'firstColumn', - }, - { - title: t('原始名称'), - dataIndex: 'fileName', - key: 'a.file_name', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('存储路径'), - dataIndex: 'filePath', - key: 'a.file_path', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('文件MD5'), - dataIndex: 'fileHash', - key: 'a.file_hash', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('文件大小'), - dataIndex: 'fileSize', - key: 'a.file_size', - sorter: true, - width: 130, - align: 'center', - }, - { - title: t('文件扩展名'), - dataIndex: 'fileExt', - key: 'a.file_ext', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('文件类型'), - dataIndex: 'mimeType', - key: 'a.mime_type', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('文件夹标识'), - dataIndex: 'folderId', - key: 'a.folder_id', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('用户姓名'), - dataIndex: 'userName', - key: 'a.user_name', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('用户名称'), - dataIndex: 'loginCode', - key: 'a.login_code', - sorter: true, - width: 130, - align: 'left', - }, - { - title: t('下载次数'), - dataIndex: 'downloadCount', - key: 'a.download_count', - sorter: true, - width: 130, - align: 'center', - }, - { - title: t('查看次数'), - dataIndex: 'viewCount', - key: 'a.view_count', - sorter: true, - width: 130, - align: 'center', - }, - { - title: t('过期时间'), - dataIndex: 'expireTime', - key: 'a.expire_time', - sorter: true, - width: 130, - align: 'center', - }, - { - title: t('是否删除'), - dataIndex: 'isDelete', - key: 'a.is_delete', - sorter: true, - width: 130, - align: 'center', - dictType: 'sys_yes_no', - }, - { - title: t('更新时间'), - dataIndex: 'updateTime', - key: 'a.update_time', - sorter: true, - width: 130, - align: 'center', - }, -]; - -const tableProps: BasicTableProps = { - api: bizMyfilesListData, - beforeFetch: (params) => { - params['isAll'] = true; - return params; - }, - columns: tableColumns, - formConfig: searchForm, - rowKey: 'tid', -}; - -export default { - modalProps, - tableProps, - itemCode: 'tid', - itemName: 'tid', - isShowCode: false, -}; diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/components/BizApps.vue b/web-vue/packages/core/layouts/views/desktop/analysis/components/BizApps.vue index 25f2f313..ad525b64 100644 --- a/web-vue/packages/core/layouts/views/desktop/analysis/components/BizApps.vue +++ b/web-vue/packages/core/layouts/views/desktop/analysis/components/BizApps.vue @@ -1,15 +1,6 @@ @@ -22,6 +25,7 @@ import Calendar from './components/calendar/list.vue'; import TableInfo from './components/tableInfo/list.vue'; import ItemsInfo from './components/listItem/list.vue'; + import MyfileInfo from './components/myfiles/index.vue'; const activeKey = ref('1'); diff --git a/web-vue/packages/core/locales/lang/en/routes/dashboard.ts b/web-vue/packages/core/locales/lang/en/routes/dashboard.ts index 3a78aa18..6d047b57 100644 --- a/web-vue/packages/core/locales/lang/en/routes/dashboard.ts +++ b/web-vue/packages/core/locales/lang/en/routes/dashboard.ts @@ -3,5 +3,4 @@ export default { about: 'About', workbench: 'Workbench', analysis: 'Analysis', - files:'files' }; diff --git a/web-vue/packages/core/locales/lang/zh-CN/routes/dashboard.ts b/web-vue/packages/core/locales/lang/zh-CN/routes/dashboard.ts index 6b28df2d..e3b19e54 100644 --- a/web-vue/packages/core/locales/lang/zh-CN/routes/dashboard.ts +++ b/web-vue/packages/core/locales/lang/zh-CN/routes/dashboard.ts @@ -3,5 +3,4 @@ export default { workbench: '我的工作', analysis: '首页', about: '关于我们', - files: '文件管理' }; diff --git a/web-vue/packages/core/router/routes/modules/desktop.ts b/web-vue/packages/core/router/routes/modules/desktop.ts index 92f01d5c..0ce0ce6f 100644 --- a/web-vue/packages/core/router/routes/modules/desktop.ts +++ b/web-vue/packages/core/router/routes/modules/desktop.ts @@ -43,16 +43,6 @@ const desktop: AppRouteModule = { hideMenu: true, }, }, - { - path: 'myfiles', - name: 'MyfilePage', - component: () => import('@jeesite/core/layouts/views/desktop/myfiles/index.vue'), - meta: { - title: t('routes.dashboard.files'), - icon: 'i-ant-design:tag-outlined', - hideMenu: true, - }, - }, ], }; diff --git a/web-vue/web/.env.development b/web-vue/web/.env.development index f278139f..fcbc7a64 100644 --- a/web-vue/web/.env.development +++ b/web-vue/web/.env.development @@ -10,7 +10,6 @@ VITE_PROXY = [["/js","http://127.0.0.1:8980/js",false]] # 是否删除 console 调试信息 VITE_DROP_CONSOLE = false -# 访问接口的根路径(例如:https://vue.jeesite.com)建议为空 VITE_GLOB_API_URL = # 访问接口的前缀,在根路径之后 diff --git a/web-vue/web/.env.production b/web-vue/web/.env.production index 0571c211..ff100b96 100644 --- a/web-vue/web/.env.production +++ b/web-vue/web/.env.production @@ -14,7 +14,6 @@ VITE_BUILD_COMPRESS = 'none' # 是否删除源文件时使用压缩,默认为 false VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false -# 访问接口的根路径(例如:https://vue.jeesite.com)建议为空 VITE_GLOB_API_URL = # 访问接口的前缀,在根路径之后 diff --git a/web-vue/web/.env.tomcat b/web-vue/web/.env.tomcat index 7fc70e94..bdb0d1c9 100644 --- a/web-vue/web/.env.tomcat +++ b/web-vue/web/.env.tomcat @@ -17,7 +17,6 @@ VITE_BUILD_COMPRESS = 'none' # 是否删除源文件时使用压缩,默认为 false VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false -# 访问接口的根路径(例如:https://vue.jeesite.com)建议为空 VITE_GLOB_API_URL = # 访问接口的前缀,在根路径之后 diff --git a/web-vue/web/public/resource/img/icons/database-2-fill.svg b/web-vue/web/public/resource/img/icons/database-2-fill.svg new file mode 100644 index 00000000..2d94f3c9 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/database-2-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/database-2-line.svg b/web-vue/web/public/resource/img/icons/database-2-line.svg new file mode 100644 index 00000000..6aaeab6a --- /dev/null +++ b/web-vue/web/public/resource/img/icons/database-2-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/file-excel-fill.svg b/web-vue/web/public/resource/img/icons/file-excel-fill.svg new file mode 100644 index 00000000..5f691d07 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/file-excel-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/file-excel-line.svg b/web-vue/web/public/resource/img/icons/file-excel-line.svg new file mode 100644 index 00000000..b1471b2c --- /dev/null +++ b/web-vue/web/public/resource/img/icons/file-excel-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/file-pdf-fill.svg b/web-vue/web/public/resource/img/icons/file-pdf-fill.svg new file mode 100644 index 00000000..63be2d49 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/file-pdf-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/file-pdf-line.svg b/web-vue/web/public/resource/img/icons/file-pdf-line.svg new file mode 100644 index 00000000..59b46cf8 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/file-pdf-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/file-ppt-line.svg b/web-vue/web/public/resource/img/icons/file-ppt-line.svg new file mode 100644 index 00000000..da1a8a61 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/file-ppt-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/file-text-fill.png b/web-vue/web/public/resource/img/icons/file-text-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..c917dd5d34db48b077f5b66ead9880d9b07e5a67 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj$30yfLn;{WOuEQ>$biSC@nnMV z43-%zW{qbb+&Xntv-fTAly8ft&bHXOIzIVnNyN{aG9L~$);;3BE%Cjur0o++`f>4G zdxc#Sgc$OJcT9+Dc({Jmgn12GE{rlCm+titPn>nuzf6PSTXEgf*6G>|`?keAZ)MG% z<2=iW(dXQ;K*osty_PQ84I3QPv>4vy>heo+Dd3qT z*+>2|-n%)G_3!CX>h literal 0 HcmV?d00001 diff --git a/web-vue/web/public/resource/img/icons/file-text-line.png b/web-vue/web/public/resource/img/icons/file-text-line.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ad70fca26a0c24fadbe6102d865560d373ac93 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjXFOdTLn;`LOzh@8WWeLncrrmm ztugQhi&?Yx5|=!?=fAOPj#*t9`<{yz%s0rLSbD9jVCl`hKU_MTq8L7H zp8N5eSkR`x6Fd|A+2VpvL^XWTckW=?;OyUe literal 0 HcmV?d00001 diff --git a/web-vue/web/public/resource/img/icons/file-word-fill.svg b/web-vue/web/public/resource/img/icons/file-word-fill.svg new file mode 100644 index 00000000..783b839a --- /dev/null +++ b/web-vue/web/public/resource/img/icons/file-word-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/file-word-line.svg b/web-vue/web/public/resource/img/icons/file-word-line.svg new file mode 100644 index 00000000..aec155e2 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/file-word-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/file-zip-fill.svg b/web-vue/web/public/resource/img/icons/file-zip-fill.svg new file mode 100644 index 00000000..c869b762 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/file-zip-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/file-zip-line.svg b/web-vue/web/public/resource/img/icons/file-zip-line.svg new file mode 100644 index 00000000..e62354d2 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/file-zip-line.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/folder-zip-fill.svg b/web-vue/web/public/resource/img/icons/folder-zip-fill.svg new file mode 100644 index 00000000..647119c5 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/folder-zip-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-vue/web/public/resource/img/icons/folder-zip-line.svg b/web-vue/web/public/resource/img/icons/folder-zip-line.svg new file mode 100644 index 00000000..56bec5b3 --- /dev/null +++ b/web-vue/web/public/resource/img/icons/folder-zip-line.svg @@ -0,0 +1 @@ + \ No newline at end of file