From c3e7288953d9be8429c62c72ac7c2b7026eaa639 Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Wed, 25 Mar 2026 22:34:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeesite/modules/apps/Module/FileList.java | 50 +++++ .../modules/biz/entity/MyNoticeTodo.java | 2 +- .../biz/web/MyNoticeTodoController.java | 38 ++++ web-vue/packages/biz/api/biz/myNoticeTodo.ts | 15 ++ .../biz/views/biz/myNoticeTodo/list.vue | 4 + .../ListSelect/src/selectType/userSelect.ts | 4 +- .../analysis/components/NoticeInfo.vue | 194 ++++++++++-------- .../public/resource/img/icons/file-docx.png | Bin 0 -> 9927 bytes .../web/public/resource/img/icons/file-gz.png | Bin 0 -> 8966 bytes .../public/resource/img/icons/file-mail.png | Bin 0 -> 112503 bytes .../public/resource/img/icons/file-pdf.png | Bin 0 -> 15165 bytes .../public/resource/img/icons/file-pptx.png | Bin 0 -> 11499 bytes .../web/public/resource/img/icons/file-py.png | Bin 0 -> 8332 bytes .../public/resource/img/icons/file-sql.png | Bin 0 -> 13121 bytes .../public/resource/img/icons/file-wps.png | Bin 0 -> 14271 bytes .../public/resource/img/icons/file-xlsx.png | Bin 0 -> 14777 bytes .../public/resource/img/icons/file-zip.png | Bin 0 -> 8143 bytes .../web/public/resource/img/icons/file.png | Bin 0 -> 8710 bytes 18 files changed, 214 insertions(+), 93 deletions(-) create mode 100644 web-api/src/main/java/com/jeesite/modules/apps/Module/FileList.java create mode 100644 web-vue/web/public/resource/img/icons/file-docx.png create mode 100644 web-vue/web/public/resource/img/icons/file-gz.png create mode 100644 web-vue/web/public/resource/img/icons/file-mail.png create mode 100644 web-vue/web/public/resource/img/icons/file-pdf.png create mode 100644 web-vue/web/public/resource/img/icons/file-pptx.png create mode 100644 web-vue/web/public/resource/img/icons/file-py.png create mode 100644 web-vue/web/public/resource/img/icons/file-sql.png create mode 100644 web-vue/web/public/resource/img/icons/file-wps.png create mode 100644 web-vue/web/public/resource/img/icons/file-xlsx.png create mode 100644 web-vue/web/public/resource/img/icons/file-zip.png create mode 100644 web-vue/web/public/resource/img/icons/file.png diff --git a/web-api/src/main/java/com/jeesite/modules/apps/Module/FileList.java b/web-api/src/main/java/com/jeesite/modules/apps/Module/FileList.java new file mode 100644 index 0000000..234e534 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/apps/Module/FileList.java @@ -0,0 +1,50 @@ +package com.jeesite.modules.apps.Module; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class FileList implements Serializable { + + private String filePath; + private String fileName; + private String fileType; + private String fileIcon; + private String fileSize; + + public FileList() { + } + + public FileList(String filePath, String fileName, String fileType, String fileSize) { + this.filePath = filePath; + this.fileName = fileName; + this.fileType = fileType; + this.fileIcon = getIcon(fileType); + this.fileSize = fileSize; + } + + private String getIcon(String type) { + + switch (type) { + case "gz": + return "icons/file-gz.png"; + case "py": + return "icons/file-py.png"; + case "pdf": + return "icons/file-pdf.png"; + case "sql": + return "icons/file-sql.png"; + case "zip": + return "icons/file-zip.png"; + case "ppt", "pptx": + return "icons/file-pptx.png"; + case "xls", "xlsx": + return "icons/file-xlsx.png"; + case "wps", "doc", "docx": + return "icons/file-wps.png"; + default: + return "icons/file.png"; + } + } +} diff --git a/web-api/src/main/java/com/jeesite/modules/biz/entity/MyNoticeTodo.java b/web-api/src/main/java/com/jeesite/modules/biz/entity/MyNoticeTodo.java index c2df200..84b5f75 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/entity/MyNoticeTodo.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/entity/MyNoticeTodo.java @@ -48,7 +48,7 @@ import java.io.Serial; @Column(name = "user_name", attrName = "userName", label = "接收姓名", isQuery = false), @Column(name = "create_user", attrName = "createUser", label = "创建用户", isQuery = false, isUpdate = false, isUpdateForce = true), @Column(name = "login_user", attrName = "loginUser", label = "接收用户"), -}, orderBy = "a.id DESC" +}, orderBy = "a.create_time DESC" ) @Data public class MyNoticeTodo extends DataEntity implements Serializable { diff --git a/web-api/src/main/java/com/jeesite/modules/biz/web/MyNoticeTodoController.java b/web-api/src/main/java/com/jeesite/modules/biz/web/MyNoticeTodoController.java index 6353fc6..c5a6af4 100644 --- a/web-api/src/main/java/com/jeesite/modules/biz/web/MyNoticeTodoController.java +++ b/web-api/src/main/java/com/jeesite/modules/biz/web/MyNoticeTodoController.java @@ -1,10 +1,17 @@ package com.jeesite.modules.biz.web; +import java.io.File; import java.util.*; import java.util.stream.Collectors; +import com.jeesite.common.io.FileUtils; +import com.jeesite.modules.apps.Module.FileList; import com.jeesite.modules.apps.Module.TabItem; import com.jeesite.modules.apps.dict.NotifyType; +import com.jeesite.modules.file.entity.FileUpload; +import com.jeesite.modules.file.utils.FileUploadUtils; +import com.jeesite.modules.sys.entity.User; +import com.jeesite.modules.sys.utils.UserUtils; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -91,6 +98,9 @@ public class MyNoticeTodoController extends BaseController { @PostMapping(value = "save") @ResponseBody public String save(@Validated MyNoticeTodo myNoticeTodo) { + User user = UserUtils.getUser(); + myNoticeTodo.setAvatar(user.getAvatar()); + myNoticeTodo.setCreateUser(user.getLoginCode()); myNoticeTodoService.save(myNoticeTodo); return renderResult(Global.TRUE, text("保存消息成功!")); } @@ -148,6 +158,34 @@ public class MyNoticeTodoController extends BaseController { return renderResult(Global.TRUE, text("删除消息成功!")); } + @RequestMapping(value = "listAll") + @ResponseBody + public List listAll(MyNoticeTodo myNoticeTodo) { + return myNoticeTodoService.findList(myNoticeTodo); + } + + @RequestMapping(value = "fileList") + @ResponseBody + public List fileList(MyNoticeTodo myNoticeTodo) { + List fileLists = new ArrayList<>(); + List fileUploadList = FileUploadUtils.findFileUpload(myNoticeTodo.getId(), "myNoticeTodo_file"); + for (FileUpload fileUpload : fileUploadList) { + fileLists.add(new FileList(fileUpload.getFileUrl(), fileUpload.getFileName(), fileUpload.getFileEntity().getFileExtension(), fileUpload.getFileEntity().getFileSizeFormat())); + } + return fileLists; + } + + @RequestMapping(value = "downloadFile") + @ResponseBody + public void downloadFile(HttpServletRequest request, HttpServletResponse response, FileList fileList) { + try { + File file = new File("/ogsapp/files/" + fileList.getFilePath()); + FileUtils.downFile(file, request, response, fileList.getFileName()); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + @RequestMapping(value = "tabListData") @ResponseBody diff --git a/web-vue/packages/biz/api/biz/myNoticeTodo.ts b/web-vue/packages/biz/api/biz/myNoticeTodo.ts index 02219f5..c987eb6 100644 --- a/web-vue/packages/biz/api/biz/myNoticeTodo.ts +++ b/web-vue/packages/biz/api/biz/myNoticeTodo.ts @@ -43,12 +43,27 @@ export interface TabItem { unreadlist?: MyNoticeTodo[]; } + +export interface MyFileList { + filePath: string; + fileName: string; + fileType?: number; + fileIcon?: string; + fileSize?: string; +} + export const tabListDataAll = (params?: MyNoticeTodo | any) => defHttp.get({ url: adminPath + '/biz/myNoticeTodo/tabListData', params}); export const myNoticeTodoList = (params?: MyNoticeTodo | any) => defHttp.get({ url: adminPath + '/biz/myNoticeTodo/list', params }); + +export const myNoticeTodoFileList = (params?: MyNoticeTodo | any) => + defHttp.get({ url: adminPath + '/biz/myNoticeTodo/fileList', params }); +export const myNoticeTodoListAll = (params?: MyNoticeTodo | any) => + defHttp.get({ url: adminPath + '/biz/myNoticeTodo/listAll', params }); + export const myNoticeTodoListData = (params?: MyNoticeTodo | any) => defHttp.post>({ url: adminPath + '/biz/myNoticeTodo/listData', params }); diff --git a/web-vue/packages/biz/views/biz/myNoticeTodo/list.vue b/web-vue/packages/biz/views/biz/myNoticeTodo/list.vue index 82c2e10..e2e9da5 100644 --- a/web-vue/packages/biz/views/biz/myNoticeTodo/list.vue +++ b/web-vue/packages/biz/views/biz/myNoticeTodo/list.vue @@ -130,6 +130,7 @@ sorter: true, width: 130, align: 'center', + dictType: 'msg_type', }, { title: t('是否已读'), @@ -138,6 +139,7 @@ sorter: true, width: 130, align: 'center', + dictType: 'read_flag', }, { title: t('是否关闭'), @@ -146,6 +148,7 @@ sorter: true, width: 130, align: 'center', + dictType: 'click_close', }, { title: t('额外信息'), @@ -186,6 +189,7 @@ sorter: true, width: 130, align: 'center', + dictType: 'notice_status', }, ]; diff --git a/web-vue/packages/core/components/ListSelect/src/selectType/userSelect.ts b/web-vue/packages/core/components/ListSelect/src/selectType/userSelect.ts index f553134..fa060b2 100644 --- a/web-vue/packages/core/components/ListSelect/src/selectType/userSelect.ts +++ b/web-vue/packages/core/components/ListSelect/src/selectType/userSelect.ts @@ -103,13 +103,13 @@ const tableProps: BasicTableProps = { }, columns: tableColumns, formConfig: searchForm, - rowKey: 'userCode', + rowKey: 'loginCode', }; export default { modalProps, tableProps, - itemCode: 'userCode', + itemCode: 'loginCode', itemName: 'userName', isShowCode: true, }; diff --git a/web-vue/packages/core/layouts/views/desktop/analysis/components/NoticeInfo.vue b/web-vue/packages/core/layouts/views/desktop/analysis/components/NoticeInfo.vue index 4ea35a1..e15c322 100644 --- a/web-vue/packages/core/layouts/views/desktop/analysis/components/NoticeInfo.vue +++ b/web-vue/packages/core/layouts/views/desktop/analysis/components/NoticeInfo.vue @@ -7,7 +7,7 @@ v-for="item in tabs" :key="item.key" :class="['tab-item', { active: activeTab === item.key }]" - @click="activeTab = item.key" + @click="handleTabChange(item.key)" > {{ item.label }} @@ -15,52 +15,56 @@
- - + + + + - -
- +