From 065469cc90312cf742f18d9abc7f12604b5143d2 Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Fri, 19 Dec 2025 00:06:23 +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 --- .../modules/app/dao/file/FolderItem.java | 35 ++ .../modules/biz/entity/BizMyfiles.java | 2 +- .../modules/biz/web/BizFoldersController.java | 212 ++++++----- .../modules/biz/web/BizMyfilesController.java | 202 ++++++----- .../src/main/resources/config/application.yml | 2 +- web-vue/packages/biz/api/biz/folders.ts | 14 + web-vue/packages/biz/api/biz/myfiles.ts | 3 + .../biz/views/biz/calendarSchedule/form.vue | 2 +- .../desktop/myfiles/components/upload.vue | 102 +++++- .../layouts/views/desktop/myfiles/index.vue | 333 ++++++++++-------- 10 files changed, 559 insertions(+), 348 deletions(-) create mode 100644 web-api/src/main/java/com/jeesite/modules/app/dao/file/FolderItem.java diff --git a/web-api/src/main/java/com/jeesite/modules/app/dao/file/FolderItem.java b/web-api/src/main/java/com/jeesite/modules/app/dao/file/FolderItem.java new file mode 100644 index 00000000..0981265b --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/app/dao/file/FolderItem.java @@ -0,0 +1,35 @@ +package com.jeesite.modules.app.dao.file; + + +import com.jeesite.modules.biz.entity.BizFolders; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +@Data +public class FolderItem implements Serializable { + + + private String id; + private String name; + private Boolean expanded; + + private String type; + + List children = new ArrayList<>(); + + public FolderItem() { + } + + public FolderItem(String id, String name, Boolean expanded, String type, List children) { + this.id = id; + this.name = name; + this.expanded = expanded; + this.type = type; + this.children = children; + } + + +} 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 5322fb64..a2c2d9bf 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 @@ -58,7 +58,7 @@ public class BizMyfiles extends DataEntity implements Serializable { private String fileName; // 原始名称 private String filePath; // 存储路径 private String fileHash; // 文件MD5 - private Long fileSize; // 文件大小 + private String fileSize; // 文件大小 private String fileExt; // 文件扩展名 private String mimeType; // 文件类型 private String folderId; // 文件夹标识 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 c531f27c..53e9f3e1 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,6 +1,9 @@ package com.jeesite.modules.biz.web; +import java.util.ArrayList; import java.util.List; + +import com.jeesite.modules.app.dao.file.FolderItem; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -26,6 +29,7 @@ import com.jeesite.modules.biz.service.BizFoldersService; /** * 文件夹信息Controller + * * @author gaoxq * @version 2025-12-18 */ @@ -33,106 +37,122 @@ import com.jeesite.modules.biz.service.BizFoldersService; @RequestMapping(value = "${adminPath}/biz/folders") public class BizFoldersController extends BaseController { - private final BizFoldersService bizFoldersService; + private final BizFoldersService bizFoldersService; - public BizFoldersController(BizFoldersService bizFoldersService) { - this.bizFoldersService = bizFoldersService; - } - - /** - * 获取数据 - */ - @ModelAttribute - public BizFolders get(String folderId, boolean isNewRecord) { - return bizFoldersService.get(folderId, isNewRecord); - } - - /** - * 查询列表 - */ - @RequestMapping(value = {"list", ""}) - public String list(BizFolders bizFolders, Model model) { - model.addAttribute("bizFolders", bizFolders); - return "modules/biz/bizFoldersList"; - } - - /** - * 查询列表数据 - */ - @RequestMapping(value = "listData") - @ResponseBody - public Page listData(BizFolders bizFolders, HttpServletRequest request, HttpServletResponse response) { - bizFolders.setPage(new Page<>(request, response)); - Page page = bizFoldersService.findPage(bizFolders); - return page; - } + public BizFoldersController(BizFoldersService bizFoldersService) { + this.bizFoldersService = bizFoldersService; + } - /** - * 查看编辑表单 - */ - @RequestMapping(value = "form") - public String form(BizFolders bizFolders, Model model) { - model.addAttribute("bizFolders", bizFolders); - return "modules/biz/bizFoldersForm"; - } + /** + * 获取数据 + */ + @ModelAttribute + public BizFolders get(String folderId, boolean isNewRecord) { + return bizFoldersService.get(folderId, isNewRecord); + } - /** - * 保存数据 - */ - @PostMapping(value = "save") - @ResponseBody - public String save(@Validated BizFolders bizFolders) { - bizFoldersService.save(bizFolders); - return renderResult(Global.TRUE, text("保存文件夹信息成功!")); - } + /** + * 查询列表 + */ + @RequestMapping(value = {"list", ""}) + public String list(BizFolders bizFolders, Model model) { + model.addAttribute("bizFolders", bizFolders); + return "modules/biz/bizFoldersList"; + } - /** - * 导出数据 - */ - @RequestMapping(value = "exportData") - public void exportData(BizFolders bizFolders, HttpServletResponse response) { - List list = bizFoldersService.findList(bizFolders); - String fileName = "文件夹信息" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; - try(ExcelExport ee = new ExcelExport("文件夹信息", BizFolders.class)){ - ee.setDataList(list).write(response, fileName); - } - } + /** + * 查询列表数据 + */ + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(BizFolders bizFolders, HttpServletRequest request, HttpServletResponse response) { + bizFolders.setPage(new Page<>(request, response)); + Page page = bizFoldersService.findPage(bizFolders); + return page; + } - /** - * 下载模板 - */ - @RequestMapping(value = "importTemplate") - public void importTemplate(HttpServletResponse response) { - BizFolders bizFolders = new BizFolders(); - List list = ListUtils.newArrayList(bizFolders); - String fileName = "文件夹信息模板.xlsx"; - try(ExcelExport ee = new ExcelExport("文件夹信息", BizFolders.class, Type.IMPORT)){ - ee.setDataList(list).write(response, fileName); - } - } + /** + * 查看编辑表单 + */ + @RequestMapping(value = "form") + public String form(BizFolders bizFolders, Model model) { + model.addAttribute("bizFolders", bizFolders); + return "modules/biz/bizFoldersForm"; + } + + /** + * 保存数据 + */ + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated BizFolders bizFolders) { + bizFoldersService.save(bizFolders); + return renderResult(Global.TRUE, text("保存文件夹信息成功!")); + } + + /** + * 导出数据 + */ + @RequestMapping(value = "exportData") + public void exportData(BizFolders bizFolders, HttpServletResponse response) { + List list = bizFoldersService.findList(bizFolders); + String fileName = "文件夹信息" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; + try (ExcelExport ee = new ExcelExport("文件夹信息", BizFolders.class)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 下载模板 + */ + @RequestMapping(value = "importTemplate") + public void importTemplate(HttpServletResponse response) { + BizFolders bizFolders = new BizFolders(); + List list = ListUtils.newArrayList(bizFolders); + String fileName = "文件夹信息模板.xlsx"; + try (ExcelExport ee = new ExcelExport("文件夹信息", BizFolders.class, Type.IMPORT)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 导入数据 + */ + @ResponseBody + @PostMapping(value = "importData") + public String importData(MultipartFile file) { + try { + String message = bizFoldersService.importData(file); + return renderResult(Global.TRUE, "posfull:" + message); + } catch (Exception ex) { + return renderResult(Global.FALSE, "posfull:" + ex.getMessage()); + } + } + + /** + * 删除数据 + */ + @RequestMapping(value = "delete") + @ResponseBody + public String delete(BizFolders bizFolders) { + bizFoldersService.delete(bizFolders); + return renderResult(Global.TRUE, text("删除文件夹信息成功!")); + } + + @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)); + } + } + return folderItems; + } - /** - * 导入数据 - */ - @ResponseBody - @PostMapping(value = "importData") - public String importData(MultipartFile file) { - try { - String message = bizFoldersService.importData(file); - return renderResult(Global.TRUE, "posfull:"+message); - } catch (Exception ex) { - return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); - } - } - - /** - * 删除数据 - */ - @RequestMapping(value = "delete") - @ResponseBody - public String delete(BizFolders bizFolders) { - bizFoldersService.delete(bizFolders); - return renderResult(Global.TRUE, text("删除文件夹信息成功!")); - } - } \ 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 97644ff5..872e0410 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 @@ -1,6 +1,8 @@ package com.jeesite.modules.biz.web; import java.util.List; + +import com.jeesite.modules.file.utils.FileUploadUtils; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -26,6 +28,7 @@ import com.jeesite.modules.biz.service.BizMyfilesService; /** * 文件信息Controller + * * @author gaoxq * @version 2025-12-18 */ @@ -33,106 +36,113 @@ import com.jeesite.modules.biz.service.BizMyfilesService; @RequestMapping(value = "${adminPath}/biz/myfiles") public class BizMyfilesController extends BaseController { - private final BizMyfilesService bizMyfilesService; + private final BizMyfilesService bizMyfilesService; - public BizMyfilesController(BizMyfilesService bizMyfilesService) { - this.bizMyfilesService = bizMyfilesService; - } - - /** - * 获取数据 - */ - @ModelAttribute - public BizMyfiles get(Long tid, boolean isNewRecord) { - return bizMyfilesService.get(tid, isNewRecord); - } - - /** - * 查询列表 - */ - @RequestMapping(value = {"list", ""}) - public String list(BizMyfiles bizMyfiles, Model model) { - model.addAttribute("bizMyfiles", bizMyfiles); - return "modules/biz/bizMyfilesList"; - } - - /** - * 查询列表数据 - */ - @RequestMapping(value = "listData") - @ResponseBody - public Page listData(BizMyfiles bizMyfiles, HttpServletRequest request, HttpServletResponse response) { - bizMyfiles.setPage(new Page<>(request, response)); - Page page = bizMyfilesService.findPage(bizMyfiles); - return page; - } + public BizMyfilesController(BizMyfilesService bizMyfilesService) { + this.bizMyfilesService = bizMyfilesService; + } - /** - * 查看编辑表单 - */ - @RequestMapping(value = "form") - public String form(BizMyfiles bizMyfiles, Model model) { - model.addAttribute("bizMyfiles", bizMyfiles); - return "modules/biz/bizMyfilesForm"; - } + /** + * 获取数据 + */ + @ModelAttribute + public BizMyfiles get(Long tid, boolean isNewRecord) { + return bizMyfilesService.get(tid, isNewRecord); + } - /** - * 保存数据 - */ - @PostMapping(value = "save") - @ResponseBody - public String save(@Validated BizMyfiles bizMyfiles) { - bizMyfilesService.save(bizMyfiles); - return renderResult(Global.TRUE, text("保存文件信息成功!")); - } + /** + * 查询列表 + */ + @RequestMapping(value = {"list", ""}) + public String list(BizMyfiles bizMyfiles, Model model) { + model.addAttribute("bizMyfiles", bizMyfiles); + return "modules/biz/bizMyfilesList"; + } - /** - * 导出数据 - */ - @RequestMapping(value = "exportData") - public void exportData(BizMyfiles bizMyfiles, HttpServletResponse response) { - List list = bizMyfilesService.findList(bizMyfiles); - String fileName = "文件信息" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; - try(ExcelExport ee = new ExcelExport("文件信息", BizMyfiles.class)){ - ee.setDataList(list).write(response, fileName); - } - } + /** + * 查询列表数据 + */ + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(BizMyfiles bizMyfiles, HttpServletRequest request, HttpServletResponse response) { + bizMyfiles.setPage(new Page<>(request, response)); + Page page = bizMyfilesService.findPage(bizMyfiles); + return page; + } - /** - * 下载模板 - */ - @RequestMapping(value = "importTemplate") - public void importTemplate(HttpServletResponse response) { - BizMyfiles bizMyfiles = new BizMyfiles(); - List list = ListUtils.newArrayList(bizMyfiles); - String fileName = "文件信息模板.xlsx"; - try(ExcelExport ee = new ExcelExport("文件信息", BizMyfiles.class, Type.IMPORT)){ - ee.setDataList(list).write(response, fileName); - } - } + /** + * 查看编辑表单 + */ + @RequestMapping(value = "form") + public String form(BizMyfiles bizMyfiles, Model model) { + model.addAttribute("bizMyfiles", bizMyfiles); + return "modules/biz/bizMyfilesForm"; + } + + /** + * 保存数据 + */ + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated BizMyfiles bizMyfiles) { +// bizMyfilesService.save(bizMyfiles); + FileUploadUtils.saveFileUpload(bizMyfiles, bizMyfiles.getId(), "bizMyfiles_file"); + return renderResult(Global.TRUE, text("保存文件信息成功!")); + } + + /** + * 导出数据 + */ + @RequestMapping(value = "exportData") + public void exportData(BizMyfiles bizMyfiles, HttpServletResponse response) { + List list = bizMyfilesService.findList(bizMyfiles); + String fileName = "文件信息" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; + try (ExcelExport ee = new ExcelExport("文件信息", BizMyfiles.class)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 下载模板 + */ + @RequestMapping(value = "importTemplate") + public void importTemplate(HttpServletResponse response) { + BizMyfiles bizMyfiles = new BizMyfiles(); + List list = ListUtils.newArrayList(bizMyfiles); + String fileName = "文件信息模板.xlsx"; + try (ExcelExport ee = new ExcelExport("文件信息", BizMyfiles.class, Type.IMPORT)) { + ee.setDataList(list).write(response, fileName); + } + } + + /** + * 导入数据 + */ + @ResponseBody + @PostMapping(value = "importData") + public String importData(MultipartFile file) { + try { + String message = bizMyfilesService.importData(file); + return renderResult(Global.TRUE, "posfull:" + message); + } catch (Exception ex) { + return renderResult(Global.FALSE, "posfull:" + ex.getMessage()); + } + } + + /** + * 删除数据 + */ + @RequestMapping(value = "delete") + @ResponseBody + public String delete(BizMyfiles bizMyfiles) { + bizMyfilesService.delete(bizMyfiles); + return renderResult(Global.TRUE, text("删除文件信息成功!")); + } + + @RequestMapping(value = "listAll") + @ResponseBody + public List listAll(BizMyfiles bizMyfiles) { + return bizMyfilesService.findList(bizMyfiles); + } - /** - * 导入数据 - */ - @ResponseBody - @PostMapping(value = "importData") - public String importData(MultipartFile file) { - try { - String message = bizMyfilesService.importData(file); - return renderResult(Global.TRUE, "posfull:"+message); - } catch (Exception ex) { - return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); - } - } - - /** - * 删除数据 - */ - @RequestMapping(value = "delete") - @ResponseBody - public String delete(BizMyfiles bizMyfiles) { - bizMyfilesService.delete(bizMyfiles); - return renderResult(Global.TRUE, text("删除文件信息成功!")); - } - } \ 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 da1ccdeb..bc131f64 100644 --- a/web-api/src/main/resources/config/application.yml +++ b/web-api/src/main/resources/config/application.yml @@ -57,7 +57,7 @@ jdbc: # Mysql 数据库配置 type: mysql driver: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://crontab.club:33069/worker?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true + url: jdbc:mysql://192.168.31.189:33069/worker?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true username: dream password: info_dream testSql: SELECT 1 diff --git a/web-vue/packages/biz/api/biz/folders.ts b/web-vue/packages/biz/api/biz/folders.ts index 26385567..98b7f65d 100644 --- a/web-vue/packages/biz/api/biz/folders.ts +++ b/web-vue/packages/biz/api/biz/folders.ts @@ -24,8 +24,22 @@ 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 const bizFoldersList = (params?: BizFolders | any) => defHttp.get({ url: adminPath + '/biz/folders/list', params }); + +export const bizFolderItemAll = (params?: BizFolders | any) => + defHttp.get({ url: adminPath + '/biz/folders/foldersAll', params }); export const bizFoldersListData = (params?: BizFolders | any) => defHttp.post>({ url: adminPath + '/biz/folders/listData', params }); diff --git a/web-vue/packages/biz/api/biz/myfiles.ts b/web-vue/packages/biz/api/biz/myfiles.ts index 1ed11a49..1968bb64 100644 --- a/web-vue/packages/biz/api/biz/myfiles.ts +++ b/web-vue/packages/biz/api/biz/myfiles.ts @@ -33,6 +33,9 @@ export interface BizMyfiles extends BasicModel { export const bizMyfilesList = (params?: BizMyfiles | any) => defHttp.get({ url: adminPath + '/biz/myfiles/list', params }); +export const bizMyfilesListAll = (params?: BizMyfiles | any) => + defHttp.get({ url: adminPath + '/biz/myfiles/listAll', params }); + export const bizMyfilesListData = (params?: BizMyfiles | any) => defHttp.post>({ url: adminPath + '/biz/myfiles/listData', params }); diff --git a/web-vue/packages/biz/views/biz/calendarSchedule/form.vue b/web-vue/packages/biz/views/biz/calendarSchedule/form.vue index fa764298..d89a80ae 100644 --- a/web-vue/packages/biz/views/biz/calendarSchedule/form.vue +++ b/web-vue/packages/biz/views/biz/calendarSchedule/form.vue @@ -64,7 +64,7 @@ maxlength: 64, }, required: true, - dynamicDisabled: true, + dynamicDisabled: true, }, { label: t('通知人员'), diff --git a/web-vue/packages/core/layouts/views/desktop/myfiles/components/upload.vue b/web-vue/packages/core/layouts/views/desktop/myfiles/components/upload.vue index dedab506..fc4427de 100644 --- a/web-vue/packages/core/layouts/views/desktop/myfiles/components/upload.vue +++ b/web-vue/packages/core/layouts/views/desktop/myfiles/components/upload.vue @@ -3,36 +3,114 @@ v-bind="$attrs" @register="register" title="上传文件" - width="40%" + width="60%" @cancel="handleCancel" + @ok="handleSubmit" > - + + \ No newline at end of file