Commit Graph

86 Commits

Author SHA1 Message Date
3d5a9afeda fix: 扫码入库序列号映射优先 external_serial + 半成品自动切换 SN/Batch
- form.serial_number = external_serial || serial_number(优先真实自定义序列号)
- 半成品:扫码后按有无序列号自动切换 SN/Batch 模式,并解除历史锁定
- 修复 onMaterialSelected 未 await checkHistoryAndSetMode 的竞态
2026-09-01 15:11:24 +08:00
bee037f925 feat: MOM 扫码入库对接 Track 产品身份证自动填充
- 半成品/成品入库弹窗顶部新增'扫码入库'按钮,打开扫码面板(扫码枪/摄像头)
- 扫码 Track 身份证后自动填充物料信息与序列号,不再二次搜索
- 后端新增 track_query_service(httpx 调 Track lookup)、track-lookup 接口
- 入库成功后 notify_track 通知 Track 闭环
2026-09-01 13:52:56 +08:00
097fbb319f fix: validateUnique 编辑模式下值未变时跳过重复校验,仅值改变时才检查冲突 2026-07-17 17:04:10 +08:00
9bcd02c742 fix: update_buy perm_code=None 导致 NoneType 崩溃 + validateUnique 编辑时排除自身改用 Number() 防类型不一致 2026-07-17 16:57:46 +08:00
686186d7d6 fix: Create/Update 成本字段分离 — Create 保留 BOM 自动计算值,Update 按 hasFormFieldPermission 剥离敏感字段 2026-07-17 14:50:06 +08:00
8b6539b976 fix: semi/product 对话框中成本字段添加 v-if 权限守卫,与 buy.vue 的 hasFormFieldPermission 模式对齐 2026-07-17 14:43:08 +08:00
036d756fbd fix: 前端 product.vue permissionMap null→显式权限码 + fetchMaterialSuggestions 改用 async/await 修复首次搜索空白 2026-07-17 13:45:38 +08:00
3c0954598c perf: 综合安全加固 — RBAC严格映射+异步邮件+字段权限白名单+前端对齐+导入模板
本次提交包含本会话所有修改的最终统一提交

## 权限系统重构
- permission_service.py: 添加入库/采购操作元素 + ensure_default_permissions
- field_permissions.py: 严格1-to-1 Default Deny 字段映射(StockBuy/Semi/Product/MaterialBase)
- decorators.py: _expand_operation_perms 双向粒度桥接 + prevent_double_submit
- deploy_production.sql: 修复 sys_element 别名码(qty_inbound→in_quantity)

## 采购模块
- purchase.py: 权限驱动可见性 + inbound_purchase独立权限 + 价格字段过滤
- purchase_service.py: 异步邮件 + 三阶段批量模糊匹配防N+1
- purchase/index.vue: canApprove严格操作权限 + upload重复修复

## 导出/入
- base_service.py: export_excel 流式写入防OOM + get_latest_specs 优化
- import_service.py + import_api.py: Excel批量导入(模板+预览+执行)
- ImportDialog.vue: 三步骤导入弹窗

## 异步邮件
- email_service.py: send_email_async (守护线程)
- inventory_task.py: send_email→send_email_async

## 前端对齐
- product/semi/buy.vue: 列对齐in_quantity/stock_quantity/available_quantity + localStorage缓存V2
- buyOdoo.vue: 排序修复 + 导入按钮 + 移除点击展开加载
- BomManage.vue: 懒加载分组 + 导入按钮
- list.vue: 导入按钮
- Selection.vue + borrow/apply: BOM匹配修复 + 导入按钮
- outbound/create.vue: 出库类型必选
- AppMain.vue: 移除transition白屏修复
- material_base.ts, outbound.ts, bom.ts, stock.ts: 新增API函数
2026-07-17 13:07:12 +08:00
56edb92d80 fix: 入库列表缓存被权限清空时回退到全显示, 防止空表头 2026-07-15 09:22:58 +08:00
760f78e016 feat: 添加参考价格列 + 修复公司筛选跨域问题 + CLIP模型持久化
## 新增功能
- material_base 表新增 reference_price 列(NUMERIC(10,2))
- 基础信息 list.vue / buyOdoo.vue 页面增加「参考价格」列展示和编辑
- 新增 material_list:referencePrice 权限元素,支持按角色控制可见性

## Bug 修复
- 入库三页面(buy/product/semi)公司筛选:非超管用户 company=ALL 不再传给旧版后端
- 基础信息两页面(list/buyOdoo):buyOdoo 增加 v-if=isSuperAdmin 与 list.vue 行为统一
- company=ALL 默认值在各页面 getList/fetchData 中自动过滤,兼容旧版后端

## 运维优化
- docker-compose.prod.yml 增加 models_prod 卷挂载,CLIP模型持久化免重复上传
- deploy_code.sh 增加 models_prod 目录检查与模型文件存在性告警
2026-07-13 17:30:52 +08:00
dxc
67bc5b6c5d V3.45 2026-06-11 17:36:34 +08:00
DXC
907c083107 feat: 新增 Odoo 风格物料管理视图及相关路由,优化成品入库逻辑 2026-06-05 15:35:43 +08:00
DXC
355a21e94c 物料搜索:el-select 重构为 el-autocomplete Regression 修复(value-key 缺失 + parentNameInput 未声明 + onChildClear 不完整) 2026-06-05 11:02:35 +08:00
DXC
ff5418afa3 入库模块:物料搜索点击无感修复 + 类别校验白名单准入制
前端(buy/semi/product/service.vue,4 文件):

修复物料搜索"点击已聚焦 input 时内容被清空"交互 bug。

el-select 在 filterable+remote 模式下点击已聚焦的 input 时,el-select 内部

会 emit query='' 触发 remote-method,绕过 handleMaterialDropdownVisible

入口保护,直接清空 searchKeyword 和 materialOptions,导致用户被迫重写。

新增两层防御实现"编辑无感":

1) handleMaterialDropdownVisible 入口拦截:已选过物料(form.base_id 有值)

   时下拉打开直接 return,不请求默认列表

2) handleSearchMaterial 内部拦截:拦截 el-select 内部 emit 的空 query,

   仅在 form.base_id 有值 + safeQuery 为空 + 列表非空时 return

后端(buy/semi/product_service.py,3 文件):

入库类别校验从黑名单改为白名单准入制,彻底杜绝"成品进半成品库"

等非法组合(d94b52b 黑名单方案"成品不能进采购库"已挡不住这种组合)。

- buy_service.py: 黑名单(禁半成品/成品进采购)→ 白名单(必须含"原材料")

- semi_service.py: 统一错误信息格式为"只有【半成品】才允许半成品入库!"

- product_service.py: 统一错误信息格式为"只有【成品】才允许成品入库!"

- 三处空 category 统一显示为"未分类"

配合前端已修复的 catch 块(e.response.data.msg 精准提取),后端新错误

信息可原样弹窗给用户。
2026-06-04 17:57:17 +08:00
DXC
cdac915a4b 半成品/成品入库:物料/BOM 远程搜索粘贴失效 Bug 修复(三层防御)
- 深度净化 query:剔除零宽字符(U+200B-U+200D)/BOM(U+FEFF)/控制字符(U+0000-U+001F,U+007F-U+009F),应对外部复制粘贴混入隐形 Unicode 导致 ilike 匹配失败的场景

- 显式 reserve-keyword="true" / default-first-option="true":物料与 BOM 两个 <el-select> 全部显式标注,防止 Element 框架在选择后清空关键字(BOM 下拉框原缺失)

- handleMaterialDropdownVisible 竞态守卫:粘贴时 remote-method 与 @visible-change 同时触发,后者会 clearTimeout 前者的 debounce 定时器并加载默认列表覆盖结果。新增 !searchKeyword 守卫 + 主动 clearTimeout 互斥
2026-06-04 16:34:36 +08:00
DXC
8a2da1ac1e 半成品/成品入库:BOM 编号下拉按父件规格联动过滤(前后端双端改造)
- 后端 /inbound/{semi,product}/search-bom 增加 parent_spec 可选参数,Service 层在 MaterialBase.spec_model 上加等值过滤
2026-06-04 16:01:48 +08:00
DXC
d51c6f147f 前端:所有 <el-dialog> 统一添加 :close-on-click-modal="false" 防误触关闭(保留 Esc 关闭) 2026-06-04 15:16:16 +08:00
DXC
a3d47f6328 入库管理三页面类别搜索统一为级联选择器;基础信息“俗名”改名为“出厂名称” 2026-06-04 11:05:58 +08:00
dxc
034418df8a V3.38版本修改,三种入库按照基础信息内容进行修改 2026-05-29 14:26:52 +08:00
dxc
895d78a5e7 版本变更V3.33添加支持更新后识图功能 2026-05-25 11:20:45 +08:00
DXC
567c3175f6 fix: 审计日志跳过向量字段,修复 numpy 数组比较异常;补全三大入库单更新向量提取,统一删除确认弹窗 2026-05-25 11:11:10 +08:00
DXC
ee893485bb feat: 推广粘贴上传功能至所有图片上传页面(purchase/buy/product/semi) 2026-05-15 14:29:25 +08:00
DXC
97e7618bf3 feat(bom+inbound): BOM子件跳转规格修复 + 成品/半成品按钮迁移到标题行 2026-04-28 10:10:45 +08:00
DXC
ec71cb24f4 feat: 新增物料/成品/半成品页面一键直达BOM管理功能 2026-04-27 15:24:07 +08:00
DXC
6c0e13e52d fix(frontend): reclassify global cross-company privilege as an operation to fix UI placement, and strictly enforce permission-driven table columns by bypassing localstorage 2026-04-17 09:36:23 +08:00
DXC
c72e6e198e fix(inbound): remove redundant /api prefix in history location requests 2026-04-08 17:38:19 +08:00
DXC
4a4baa2f8f fix: sort warehouse tree by name, fix tree batch delete cascade, and implement safe history location autofill 2026-04-08 17:32:00 +08:00
DXC
08c921fe66 feat: standardize default page size to 20, add pagination to pick list, and fix table horizontal scrollbar visibility 2026-03-23 14:38:08 +08:00
DXC
2242aca6fe feat: implement user-specific column preferences and remove hardcoded defaults in inbound tables 2026-03-23 11:57:45 +08:00
DXC
ec5331ffb3 feat: fix table alignment in product view and implement self-service password update with role masking 2026-03-23 11:41:09 +08:00
DXC
f701ed7fc8 fix: disable clickable material name links for users without edit permissions across all inbound tables 2026-03-23 11:19:25 +08:00
DXC
d53362f06f feat: adjust page size, fix missing stock column, and implement smart SKU aggregation when SN is hidden 2026-03-23 11:13:43 +08:00
DXC
6dfc540dc1 fix: enforce field-level permission checks for semi-finished and finished goods tables 2026-03-23 10:58:28 +08:00
DXC
e6dafc7775 feat: add global toast message on form validation failure for inbound operations 2026-03-18 17:25:14 +08:00
DXC
878d11af28 fix: reset stock quantity color and enforce location validation for all inbound operations 2026-03-18 17:04:23 +08:00
DXC
3ba4e74a60 fix: support multiple copies printing natively in backend print service 2026-03-13 10:06:28 +08:00
DXC
9b290506da feat: lock dialog and disable close actions during image upload to prevent orphan files and state errors 2026-03-13 09:23:35 +08:00
dxc
d8e86959b8 fix: 基础信息排序问题 2026-03-12 09:29:50 +08:00
dxc
25fbb293df fix: 禁用高级筛选内下拉框的 teleport,解决选择选项后导致 Popover 意外关闭的问题 2026-03-11 15:09:49 +08:00
dxc
31d91bceb0 fix: 恢复搜索框原有的动态搜索功能,并与指定字段精确搜索前缀完美融合 2026-03-11 13:43:43 +08:00
dxc
b1cc280a71 feat: 重构全局搜索框为复合条件选择,支持按名称、俗名、规格进行精准查杂 2026-03-11 13:37:52 +08:00
DXC
6fc6851e57 perf: 开启列表图片懒加载并优化分页大小 2026-03-10 09:29:49 +08:00
DXC
43d16cd196 feat: 列表页搜索框增加即时搜索与防抖机制 2026-03-09 17:36:54 +08:00
DXC
5d813c24bc feat: 采购/半成品/成品列表拆分SKU独立搜索框 2026-03-09 17:29:24 +08:00
DXC
646baa08fe feat: 采购/半成品/成品列表支持基于SKU的模糊搜索 2026-03-09 17:21:00 +08:00
DXC
f9eb3e9646 feat: 封装下钻式库位选择器,并修复层级颜色识别问题 2026-03-06 15:11:30 +08:00
DXC
8aaf45468e style: 优化库位树层级颜色,并升级入库页面的库位选择为树形选择器 2026-03-06 15:00:04 +08:00
DXC
7201b658fb feat: 优化库位树UI层级颜色,并将入库页面库位输入升级为级联选择器 2026-03-06 14:52:47 +08:00
dxc
359b8a8345 "feat: 1-实现动态层级树形库位管理功能
2 - 首页新增库位设置按钮和树形管理弹窗
     3 - 后端添加 SysWarehouseLocation 模型和 CRUD API
     4 - 树形结构支持无限层级,自动计算 full_path
     5 - 修复 product.vue 中 defaultColumns 未定义 bug
2026-03-06 14:33:13 +08:00
dxc
e39c3fd030 筛选高级权限修改,基础信息启用禁用修改 2026-03-03 17:29:21 +08:00