From 01b67ea8dfbb8d4407e6ff1bd691ff9ec61fbebe Mon Sep 17 00:00:00 2001 From: Theo <971366405@qq.com> Date: Thu, 21 Nov 2024 23:32:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20:sparkles:=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=85=AC=E5=91=8A=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增通知公告菜单 --- src/api/system/notice.ts | 201 ++++++++++++++++++++ src/pages.json | 14 +- src/pages/work/config/index.vue | 277 +++++++++++++++++++++++++++ src/pages/work/notice/detail.vue | 148 +++++++++++++++ src/pages/work/notice/index.vue | 314 +++++++++++++++++++++++++++++++ 5 files changed, 953 insertions(+), 1 deletion(-) create mode 100644 src/api/system/notice.ts create mode 100644 src/pages/work/config/index.vue create mode 100644 src/pages/work/notice/detail.vue create mode 100644 src/pages/work/notice/index.vue diff --git a/src/api/system/notice.ts b/src/api/system/notice.ts new file mode 100644 index 0000000..b876cc2 --- /dev/null +++ b/src/api/system/notice.ts @@ -0,0 +1,201 @@ +import request from "@/utils/request"; + +const NOTICE_BASE_URL = "/api/v1/notices"; + +const NoticeAPI = { + /** 获取通知公告分页数据 */ + getPage(queryParams?: NoticePageQuery) { + return request>({ + url: `${NOTICE_BASE_URL}/page`, + method: "GET", + data: queryParams, + }); + }, + + /** + * 获取通知公告表单数据 + * + * @param id NoticeID + * @returns Notice表单数据 + */ + getFormData(id: number) { + return request({ + url: `${NOTICE_BASE_URL}/${id}/form`, + method: "GET", + }); + }, + + /** + * 添加通知公告 + * + * @param data Notice表单数据 + * @returns + */ + add(data: NoticeForm) { + return request({ + url: `${NOTICE_BASE_URL}`, + method: "POST", + data: data, + }); + }, + + /** + * 更新通知公告 + * + * @param id NoticeID + * @param data Notice表单数据 + */ + update(id: number, data: NoticeForm) { + return request({ + url: `${NOTICE_BASE_URL}/${id}`, + method: "PUT", + data: data, + }); + }, + + /** + * 批量删除通知公告,多个以英文逗号(,)分割 + * + * @param ids 通知公告ID字符串,多个以英文逗号(,)分割 + */ + deleteByIds(ids: string) { + return request({ + url: `${NOTICE_BASE_URL}/${ids}`, + method: "DELETE", + }); + }, + + /** + * 发布通知 + * + * @param id 被发布的通知公告id + * @returns + */ + publish(id: number) { + return request({ + url: `${NOTICE_BASE_URL}/${id}/publish`, + method: "PUT", + }); + }, + + /** + * 撤回通知 + * + * @param id 撤回的通知id + * @returns + */ + revoke(id: number) { + return request({ + url: `${NOTICE_BASE_URL}/${id}/revoke`, + method: "PUT", + }); + }, + /** + * 查看通知 + * + * @param id + */ + getDetail(id: string) { + return request({ + url: `${NOTICE_BASE_URL}/${id}/detail`, + method: "GET", + }); + }, + + /* 全部已读 */ + readAll() { + return request({ + url: `${NOTICE_BASE_URL}/read-all`, + method: "PUT", + }); + }, + + /** 获取我的通知分页列表 */ + getMyNoticePage(queryParams?: NoticePageQuery) { + return request>({ + url: `${NOTICE_BASE_URL}/my-page`, + method: "GET", + data: queryParams, + }); + }, +}; + +export default NoticeAPI; + +/** 通知公告分页查询参数 */ +export interface NoticePageQuery extends PageQuery { + /** 标题 */ + title?: string; + /** 发布状态(0:未发布,1:已发布,-1:已撤回) */ + publishStatus?: number; + + isRead?: number; +} + +/** 通知公告表单对象 */ +export interface NoticeForm { + id?: number; + /** 通知标题 */ + title?: string; + /** 通知内容 */ + content?: string; + /** 通知类型 */ + type?: number; + /** 优先级(L:低,M:中,H:高) */ + level?: string; + /** 目标类型(1-全体 2-指定) */ + targetType?: number; + /** 目标ID合集,以,分割 */ + targetUserIds?: string; +} + +/** 通知公告分页对象 */ +export interface NoticePageVO { + id: string; + /** 通知标题 */ + title?: string; + /** 通知内容 */ + content?: string; + /** 通知类型 */ + type?: number; + /** 发布人 */ + publisherName?: string; + /** 优先级(0-低 1-中 2-高) */ + priority?: number; + /** 目标类型(0-全体 1-指定) */ + targetType?: number; + /** 发布状态(0-未发布 1已发布 2已撤回) */ + publishStatus?: number; + /** 发布时间 */ + publishTime?: Date; + /** 撤回时间 */ + revokeTime?: Date; + /** 优先级(L-低 M-中 H-高) */ + level?: string | number; +} + +export interface NoticeDetailVO { + /** 通知ID */ + id?: string; + + /** 通知标题 */ + title?: string; + + /** 通知内容 */ + content?: string; + + /** 通知类型 */ + type?: number; + + /** 发布人 */ + publisherName?: string; + + /** 优先级(L-低 M-中 H-高) */ + level?: string; + + /** 发布时间 */ + publishTime?: Date; + + /** 发布状态 */ + publishStatus?: number; +} diff --git a/src/pages.json b/src/pages.json index a69c164..8406b4b 100644 --- a/src/pages.json +++ b/src/pages.json @@ -50,7 +50,7 @@ } }, { - "path": "pages/work/config/config", + "path": "pages/work/config/index", "style": { "navigationBarTitleText": "系统配置" } @@ -60,6 +60,18 @@ "style": { "navigationBarTitleText": "配置详情" } + }, + { + "path": "pages/work/notice/index", + "style": { + "navigationBarTitleText": "通知公告" + } + }, + { + "path": "pages/work/notice/detail", + "style": { + "navigationBarTitleText": "通知详情" + } } ], "globalStyle": { diff --git a/src/pages/work/config/index.vue b/src/pages/work/config/index.vue new file mode 100644 index 0000000..a46404f --- /dev/null +++ b/src/pages/work/config/index.vue @@ -0,0 +1,277 @@ + + + + diff --git a/src/pages/work/notice/detail.vue b/src/pages/work/notice/detail.vue new file mode 100644 index 0000000..f7a5835 --- /dev/null +++ b/src/pages/work/notice/detail.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/pages/work/notice/index.vue b/src/pages/work/notice/index.vue new file mode 100644 index 0000000..fdfe664 --- /dev/null +++ b/src/pages/work/notice/index.vue @@ -0,0 +1,314 @@ + + + + + From 3825d847406208d8658dab0bdd3a19d9581ccd50 Mon Sep 17 00:00:00 2001 From: Theo <971366405@qq.com> Date: Thu, 21 Nov 2024 23:32:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20:sparkles:=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=85=AC=E5=91=8A=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增通知公告菜单 --- src/pages/work/index.vue | 3 +- src/pages/work/notice/index.vue | 192 +++++++++++++++----------------- 2 files changed, 94 insertions(+), 101 deletions(-) diff --git a/src/pages/work/index.vue b/src/pages/work/index.vue index 2558315..3e72f8a 100644 --- a/src/pages/work/index.vue +++ b/src/pages/work/index.vue @@ -51,12 +51,13 @@ const gridList = reactive([ { icon: "/static/icons/config.png", title: "系统配置", - url: "/pages/work/config", + url: "/pages/work/config/index", prem: "sys:config:query", }, { icon: "/static/icons/notice.png", title: "通知公告", + url: "/pages/work/notice/index", prem: "sys:notice:query", }, ], diff --git a/src/pages/work/notice/index.vue b/src/pages/work/notice/index.vue index fdfe664..54fe5f0 100644 --- a/src/pages/work/notice/index.vue +++ b/src/pages/work/notice/index.vue @@ -2,13 +2,7 @@ - + - - + + - - 通告目标类型: - {{ item.targetType === 1 ? "指定" : "全体" }} - + 通告目标类型: - - 发布时间: - {{ formatDate(item.publishTime) }} - + {{ item.targetType === 1 ? "指定" : "全体" }} - - - - - - - 发布人: - {{ item.publisherName || "-" }} - + + + + 发布时间: - - - 发布时间: - {{ formatDate(item.publishTime) }} - + + {{ formatDate(item.publishTime) }} - - + + + + 撤回时间: + + + {{ formatDate(item.revokeTime) }} + + + + + + + 发布人: + + + {{ item.publisherName || "-" }} + + + + + 紧急程度: + + + {{ getLevelType(item.level) || "-" }} + + + + - - + + + - -