62 lines
3.6 KiB
Markdown
62 lines
3.6 KiB
Markdown
# 2026-04-28 工作记录
|
||
|
||
## 搜索页面条码识别 bug 修复
|
||
|
||
- 修复搜索页面 `res.data.orders` → `res.data.all_orders`(工单和采购订单列表API返回字段名均为 `all_orders`)
|
||
- 搜索页添加条码格式识别:`wo:ID`→工单、`item:ID`→物品、`warehouse:ID`→容器、`po:ID`→采购订单
|
||
- 容器跳转用 `uni.$emit('barcode-navigate-container')` + `switchTab`(tabBar页面不能 navigateTo)
|
||
- 搜索页添加扫码按钮(📷)
|
||
- App端扫码:`uni.getSetting` 仅小程序支持,App端需用 `plus.android` 检查权限
|
||
- 条件编译:`#ifdef APP-PLUS`、`#ifdef MP-WEIXIN`、`#ifdef H5` 分平台处理
|
||
|
||
## download_app 改造
|
||
|
||
- `download.php`:改为扫描 `__DIR__/../` 根目录下的所有 `.apk`,用 `filemtime()` 取最新,不再依赖文件名格式
|
||
- `index.php`:版本信息同时显示文件名和修改时间
|
||
|
||
## 订单详情页打印功能
|
||
|
||
- `order-detail.vue` 右上角添加打印按钮 🖨
|
||
- 点击后用 LcPrinter 插件打印:标题(加粗大字)/ 备注 / 状态 / 创建日期 / 条形码 `po:ID`(height=4,barcodeType=73)
|
||
- 条件编译 `#ifdef APP-PLUS`,非 App 端 toast 提示不支持
|
||
- 订单详情页补充 `order.Styles`(样式)字段显示,插在"链接"和"备注"之间,与 web 端对齐
|
||
- 同步修正打印函数第三行:原打印"状态"→改为打印 `Styles`(样式)
|
||
|
||
## 打印初始化代码补全
|
||
|
||
- 在以下四个页面的打印函数中统一加入初始化代码(`initPrinter` + `setConcentration` + `setLineSpacing`),参照 `printer-test.vue` 写法:
|
||
- `order-detail.vue` → `printOrder()`
|
||
- `show-workorder.vue` → `printWorkOrder()`
|
||
- `item-detail.vue` → `printItem()`
|
||
- `warehouse.vue` → `printContainer()`
|
||
|
||
## 用户登录失败日志表
|
||
|
||
- `apiUsers.go` 新增 `TabUserLoginFailLog` 表结构:记录 `username`、`userID`、`IP`、`userAgent`、`reason`(password_error / user_not_found)、`count`(连续失败次数)、`created_at`、`updated_at`
|
||
- `InitUsersRouter` 中新增 `AutoMigrate(&TabUserLoginFailLog{})`
|
||
- 登录成功时清除该用户失败记录;密码错误和用户不存在时调用 `recordLoginFail()` 记录/更新失败日志(24小时内累计次数)
|
||
- `recordLoginFail()` 在 `TabUserLoginFailLog` 结构体后定义
|
||
|
||
## apiWarehouse.go 查重完善
|
||
|
||
- `add_container` 接口:添加同层级容器 Title 查重(`parent_id` + `title` + `deleted_at IS NULL`),重复返回 `container_title_exist`
|
||
- `add_item` 接口:已有查重逻辑(`Name` + `SerialNumber`)保持不变
|
||
|
||
## 完善 updateSysAdminsCash 函数
|
||
|
||
- 原函数为空,现实现:
|
||
1. 查询 `admins` 用户组 ID
|
||
2. 查询该组所有成员的 `TabUserGroupBinds` 记录
|
||
3. 提取所有 `UserID` 更新到 `sysAdmins` 缓存切片
|
||
4. 组不存在或查询失败时清空缓存
|
||
|
||
## Web 前端系统管理员入口
|
||
|
||
- 后端 `getinfo` 接口返回 `isSysAdmin` 布尔值(不再暴露完整管理员列表)
|
||
- 新建 `apiSysAdmin.go` 文件,专门处理系统管理员接口
|
||
- 后端新增 `POST /admin/sysadmins` 接口(位于 apiSysAdmin.go),仅系统管理员可访问,返回完整 `sysAdmins` 数组
|
||
- 前端 `userStore`:`isSysAdmin` 改为 ref,直接从后端获取
|
||
- `AppHeader.vue` 用户菜单:当 `isSysAdmin` 为 true 时显示「系统管理」入口(琥珀色盾牌图标)
|
||
- 新建 `SysAdminView.vue`:4 个标签页占位符(用户管理、用户组、登录日志、系统配置),页面内调用 `authApi.sysAdmins()` 获取管理员列表
|
||
- 路由 `/admin`:添加 `requireSysAdmin` 元信息,路由守卫拦截非管理员访问
|