128 lines
3.7 KiB
Markdown
128 lines
3.7 KiB
Markdown
# 工单系统监测
|
||
|
||
基于 **Tauri 2.x + Vue 3** 的工单监测桌面应用,用于监测 CRM 系统的待处理工单并发送系统通知。
|
||
|
||
## 环境要求
|
||
|
||
- Node.js >= 18
|
||
- Rust (stable)
|
||
- Visual Studio Build Tools(Windows,含 C++ 工具链)
|
||
|
||
## 开发
|
||
|
||
```bash
|
||
# 安装依赖
|
||
pnpm install
|
||
|
||
# 启动开发模式(前端 + Tauri)
|
||
pnpm tauri dev
|
||
|
||
# 仅启动前端
|
||
pnpm dev
|
||
```
|
||
|
||
## 构建
|
||
|
||
签名密钥已包含在项目中(`.tauri/` 目录),构建脚本会自动加载,直接运行:
|
||
|
||
```bash
|
||
pnpm run tauri-build
|
||
```
|
||
|
||
构建产物位于 `src-tauri/target/release/bundle/nsis/`。
|
||
|
||
## 版本号管理
|
||
|
||
使用自定义脚本统一更新 `package.json`、`tauri.conf.json`、`Cargo.toml` 三个文件的版本号:
|
||
|
||
```bash
|
||
node scripts/bump-version.mjs # 默认 patch: 0.2.0 → 0.2.1
|
||
node scripts/bump-version.mjs minor # minor: 0.2.0 → 0.3.0
|
||
node scripts/bump-version.mjs major # major: 0.2.0 → 1.0.0
|
||
node scripts/bump-version.mjs 1.2.3 # 指定版本
|
||
```
|
||
|
||
## 发布
|
||
|
||
构建完成后,运行发布脚本将安装包和更新元数据上传到远程服务器:
|
||
|
||
```bash
|
||
node scripts/publish.mjs --notes "更新说明"
|
||
```
|
||
|
||
脚本会自动:
|
||
1. 从构建产物中读取 `.nsis.zip` 和 `.nsis.zip.sig`
|
||
2. 生成 `update.json`(供应用内自动更新使用)
|
||
3. 通过 SCP 上传到服务器 `192.168.2.127:/var/www/html/work-order-monitor/`
|
||
|
||
更新地址:`http://web.nps.yunvip123.cn/work-order-monitor/update.json`
|
||
|
||
## 完整发版流程
|
||
|
||
```bash
|
||
# 1. 更新版本号
|
||
node scripts/bump-version.mjs minor
|
||
|
||
# 2. 构建
|
||
pnpm run tauri-build
|
||
|
||
# 3. 发布到服务器
|
||
node scripts/publish.mjs --notes "v0.3.0 新功能说明"
|
||
```
|
||
|
||
## 签名密钥
|
||
|
||
项目已内置 updater 签名密钥(`.tauri/signing-key` 和 `.tauri/signing-key.pub`),无密码保护,任何人克隆项目后即可直接构建。
|
||
|
||
如需重新生成密钥:
|
||
|
||
```bash
|
||
pnpm tauri signer generate -w .tauri/signing-key -p "" --ci -f
|
||
```
|
||
|
||
生成后需将 `.tauri/signing-key.pub` 的内容更新到 `src-tauri/tauri.conf.json` 的 `plugins.updater.pubkey` 字段。
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
src/ # 前端(Vue 3)
|
||
├── App.vue # 主界面
|
||
├── stores/monitor.ts # Pinia 状态管理(核心业务逻辑)
|
||
├── components/
|
||
│ ├── MonitorControl.vue # 监测面板(工单数据卡片)
|
||
│ ├── LoginForm.vue # 登录表单
|
||
│ ├── SettingsPanel.vue # 配置面板
|
||
│ ├── StatusHeader.vue # 顶部状态栏
|
||
│ ├── LogViewer.vue # 日志查看器
|
||
│ ├── CloseDialog.vue # 关闭确认弹窗
|
||
│ └── UpdateDialog.vue # 更新确认弹窗
|
||
|
||
src-tauri/ # Rust 后端
|
||
├── src/lib.rs # 应用初始化、插件注册
|
||
├── src/notification.rs # Windows Toast 通知
|
||
├── tauri.conf.json # Tauri 配置
|
||
├── capabilities/default.json # 权限配置
|
||
|
||
scripts/
|
||
├── build.mjs # 构建(自动加载签名密钥)
|
||
├── bump-version.mjs # 版本号管理
|
||
└── publish.mjs # 构建发布
|
||
```
|
||
|
||
## 监测的 API
|
||
|
||
| 接口 | 说明 | 触发通知条件 |
|
||
| --- | --- | --- |
|
||
| `SystemUser/Login` | 登录获取 Session | - |
|
||
| `DemandManage/QueryIndexCount` | 工单统计 | PendingCount / StaycloseCount / ConfirmCount > 0 |
|
||
| `DemandManage/GetWorkOrderListPage` | 待审核工单列表 | DataCount > 0 |
|
||
|
||
## Tauri 插件
|
||
|
||
- `tauri-plugin-http` — HTTP 请求
|
||
- `tauri-plugin-notification` — 系统通知
|
||
- `tauri-plugin-autostart` — 开机自启动
|
||
- `tauri-plugin-opener` — 打开外部链接
|
||
- `tauri-plugin-updater` — 应用内自动更新
|
||
- `tauri-plugin-process` — 进程管理(重启)
|