| | |
| | | { value: "106", label: "人力资源部" }, |
| | | ]; |
| | | |
| | | export const STORAGE_KEY = "oa_notice_announcement_v1"; |
| | | |
| | | export function noticeTypeLabel(v) { |
| | | return NOTICE_TYPE_OPTIONS.find((x) => x.value === v)?.label || v || "—"; |
| | | } |
| | |
| | | createTime: "", |
| | | updateTime: "", |
| | | }; |
| | | } |
| | | |
| | | export function createInitialMockNotices() { |
| | | return [ |
| | | { |
| | | id: "notice_1", |
| | | noticeNo: "NA202605100001", |
| | | title: "关于台风天气居家办公的紧急通知", |
| | | noticeType: "emergency", |
| | | priority: "urgent", |
| | | contentHtml: |
| | | "<p><strong>紧急通知</strong></p><p>受台风影响,明日(5月17日)全体员工居家办公,请各部门负责人做好工作安排与员工联络。</p>", |
| | | publishDate: "2026-05-16", |
| | | expireDate: "2026-05-20", |
| | | readScope: "all", |
| | | targetDeptIds: [], |
| | | requireReadConfirm: true, |
| | | publishStatus: "published", |
| | | publisherName: "行政部", |
| | | publishTime: "2026-05-16 08:30:00", |
| | | readCount: 128, |
| | | createTime: "2026-05-16 08:00:00", |
| | | updateTime: "2026-05-16 08:30:00", |
| | | }, |
| | | { |
| | | id: "notice_2", |
| | | noticeNo: "NA202605120002", |
| | | title: "2026年端午节放假安排公告", |
| | | noticeType: "employee", |
| | | priority: "high", |
| | | contentHtml: |
| | | "<p>根据国家法定节假日安排,端午节放假时间为 6月8日至6月10日,共3天。6月7日(周六)正常上班。</p>", |
| | | publishDate: "2026-05-12", |
| | | expireDate: "2026-06-15", |
| | | readScope: "all", |
| | | targetDeptIds: [], |
| | | requireReadConfirm: false, |
| | | publishStatus: "published", |
| | | publisherName: "人力资源部", |
| | | publishTime: "2026-05-12 10:00:00", |
| | | readCount: 256, |
| | | createTime: "2026-05-12 09:30:00", |
| | | updateTime: "2026-05-12 10:00:00", |
| | | }, |
| | | { |
| | | id: "notice_3", |
| | | noticeNo: "NA202605140003", |
| | | title: "办公区域消防演练通知", |
| | | noticeType: "company", |
| | | priority: "normal", |
| | | contentHtml: "<p>定于 5月25日 14:00 在总部大楼进行消防演练,请各部门提前安排人员参加。</p>", |
| | | publishDate: "2026-05-14", |
| | | expireDate: "2026-05-26", |
| | | readScope: "department", |
| | | targetDeptIds: ["101", "102", "103"], |
| | | requireReadConfirm: false, |
| | | publishStatus: "draft", |
| | | publisherName: "行政部", |
| | | publishTime: "", |
| | | readCount: 0, |
| | | createTime: "2026-05-14 15:00:00", |
| | | updateTime: "2026-05-14 15:00:00", |
| | | }, |
| | | ]; |
| | | } |
| | | |
| | | export function loadStoredNotices() { |
| | | try { |
| | | const raw = localStorage.getItem(STORAGE_KEY); |
| | | if (!raw) return null; |
| | | const data = JSON.parse(raw); |
| | | return Array.isArray(data) ? data : null; |
| | | } catch { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | export function saveStoredNotices(rows) { |
| | | try { |
| | | localStorage.setItem(STORAGE_KEY, JSON.stringify(rows)); |
| | | } catch { |
| | | /* ignore */ |
| | | } |
| | | } |
| | | |
| | | export function nextNoticeNo() { |