diff --git a/permission_list.txt b/permission_list.txt index f298ebf..0b4aae1 100644 --- a/permission_list.txt +++ b/permission_list.txt @@ -52,10 +52,10 @@ system.roles.add # 角色权限-新增(筛选栏中的"新增 system.roles.edit # 角色权限-编辑(表格操作列中的"编辑"按钮) system.roles.delete # 角色权限-删除(表格操作列中的"删除"按钮,红色危险样式) -system.notices.view # 公告管理-查看(页面默认查看权限) -system.notices.add # 公告管理-新增(筛选栏中的"新增"按钮) -system.notices.edit # 公告管理-编辑(表格操作列中的"修改"按钮) -system.notices.delete # 公告管理-删除(表格操作列中的"删除"按钮,红色危险样式) +system.announcement.view # 公告管理-查看(页面默认查看权限) +system.announcement.save # 公告管理-新增(筛选栏中的"新增"按钮) +system.announcement.edit # 公告管理-编辑(表格操作列中的"修改"按钮) +system.announcement.del # 公告管理-删除(表格操作列中的"删除"按钮,红色危险样式) system.logs.view # 操作日志-查看(页面默认查看权限,无操作列按钮) diff --git a/src/api/notices/index.ts b/src/api/notices/index.ts index 3e2e884..b839fbb 100644 --- a/src/api/notices/index.ts +++ b/src/api/notices/index.ts @@ -48,7 +48,7 @@ export function updateNotice(params: NoticeSaveParams): Promise> return post(ANNOUNCEMENT_UPDATE, params); } -/** 删除公告(物理删除,单个)— POST /admin/sys/announcement/delete?id=xxx */ +/** 删除公告(物理删除,单个)— POST /admin/sys/announcement/delete(id 放在请求体) */ export function deleteNotice(id: number): Promise> { - return post(ANNOUNCEMENT_DELETE, undefined, { id: String(id) }); + return post(ANNOUNCEMENT_DELETE, { id }); } diff --git a/src/config/fallbackRoutes.ts b/src/config/fallbackRoutes.ts index af5d3a6..04b05cf 100644 --- a/src/config/fallbackRoutes.ts +++ b/src/config/fallbackRoutes.ts @@ -165,15 +165,13 @@ export const FALLBACK_MENU_NODES: MenuNode[] = [ permission: 'system.roles.view', }, { - // 公告管理:后端 /op/permission 尚未下发 system.notices.view 权限码, - // 暂不挂 permission(否则整条菜单会被权限过滤掉);后端配置后可在下方补回 - // permission: 'system.notices.view', id: 'system_notices', name: '公告管理', path: 'system/notices', component: 'system/notices', componentName: 'SystemNotices', icon: 'AiOutlineSound', + permission: 'system.announcement.view', }, { id: 'system_params', diff --git a/src/pages/system/notices/components/NoticeFormModal.tsx b/src/pages/system/notices/components/NoticeFormModal.tsx index dff6891..923b285 100644 --- a/src/pages/system/notices/components/NoticeFormModal.tsx +++ b/src/pages/system/notices/components/NoticeFormModal.tsx @@ -7,6 +7,7 @@ import { getNoticeList, type NoticeVO } from '../model/services'; import { TITLE_MAX, CONTENT_MAX, + DISPLAY_TIME_FORMAT, SUBMIT_TIME_FORMAT, typeRules, timeRangeRules, @@ -56,10 +57,11 @@ export default defineComponent({ Object.assign(formData, getDefaultForm()); return; } - const startTime = record.startTime ? dayjs(record.startTime) : null; - const endTime = record.endTime ? dayjs(record.endTime) : null; + // 编辑回填时秒统一归零,界面只精确到分钟 + const startTime = record.startTime ? dayjs(record.startTime).second(0) : null; + const endTime = record.endTime ? dayjs(record.endTime).second(0) : null; Object.assign(formData, { - type: record.type || 1, + type: Number(record.type) || 1, timeRange: startTime?.isValid() && endTime?.isValid() ? [startTime, endTime] : null, title: record.title || '', context: record.context || '', @@ -81,7 +83,11 @@ export default defineComponent({ const validateTimeRange = async (startTime: Dayjs, endTime: Dayjs): Promise => { timeRangeChecking.value = true; try { - const res = await getNoticeList({ page: '1', limit: '999', type: formData.type }); + const res = await getNoticeList({ + page: '1', + limit: '999', + type: Number(formData.type) || 1, + }); if (res.code != 200) return true; const editingId = props.record ? String(props.record.id) : ''; @@ -119,7 +125,7 @@ export default defineComponent({ if (!isTimeRangeValid) return; props.onSave({ - type: formData.type, + type: Number(formData.type) || 1, title: formData.title.trim(), context: formData.context.trim(), startTime: startTime.format(SUBMIT_TIME_FORMAT), @@ -146,24 +152,28 @@ export default defineComponent({ {/* 类型 */}