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 @@
- - + + + + - -
- +