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/index.vue b/src/pages/work/index.vue index 7268191..cd6dd54 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/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..54fe5f0 --- /dev/null +++ b/src/pages/work/notice/index.vue @@ -0,0 +1,306 @@ + + +