feat: 新增IM即时通讯(浮窗)、工作流、打印模块及工作台增强

- IM: 新增浮窗聊天(ImFloatWindow)、管理页(monitor/config/service/message)、SSE推送
- 工作流: 新增待办/我的流程页面及后端服务
- 打印: 新增打印模板、出库单打印(PrintPage)、模板种子脚本
- 工作台: 增强快捷入口与工作台数据
- 修复: TagsView页签关闭、CrudPage通用表格增强
- 移除导航菜单中的即时通讯入口,改为右下角浮窗
This commit is contained in:
2026-08-16 00:19:24 +08:00
parent 7235265749
commit 1bec470647
49 changed files with 5791 additions and 51 deletions
+37
View File
@@ -0,0 +1,37 @@
/**
* 一次性演示:群发一条「公告」类型系统通知(msgType=0)
* 用法:node server/scripts/seed-notice.mjs
*/
const BASE = process.env.F9MES_API || 'http://localhost:5136';
const PHONE = '13800000000';
const PASSWORD = '123456';
async function main() {
const login = await fetch(BASE + '/api/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ phone: PHONE, password: PASSWORD }),
});
const lj = await login.json();
if (login.status !== 200 || lj.code !== 0) throw new Error('登录失败: ' + JSON.stringify(lj).slice(0, 300));
const token = lj.data.token;
const h = { Authorization: 'Bearer ' + token, 'Content-Type': 'application/json' };
const r = await fetch(BASE + '/api/im/notify', {
method: 'POST',
headers: h,
body: JSON.stringify({
msgType: 0,
title: '关于8月16日全厂停电检修的通知',
content: '各位同事:因供电局线路检修,8月16日(周日)08:00-18:00 全厂停电,请各车间提前做好设备断电与原料防护工作。综合管理部',
}),
});
const j = await r.json();
if (r.status !== 200 || j.code !== 0) throw new Error('发送失败: ' + JSON.stringify(j).slice(0, 300));
console.log('公告已群发:' + j.data + ' 条');
}
main().catch((e) => {
console.error('ERR: ' + e.message);
process.exit(1);
});