|
|
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 |
|
|
|
67bc5b6c5d
|
V3.45
|
2026-06-11 17:36:34 +08:00 |
|
|
|
907c083107
|
feat: 新增 Odoo 风格物料管理视图及相关路由,优化成品入库逻辑
|
2026-06-05 15:35:43 +08:00 |
|
|
|
355a21e94c
|
物料搜索:el-select 重构为 el-autocomplete Regression 修复(value-key 缺失 + parentNameInput 未声明 + onChildClear 不完整)
|
2026-06-05 11:02:35 +08:00 |
|
|
|
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 |
|
|
|
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 |
|
|
|
8a2da1ac1e
|
半成品/成品入库:BOM 编号下拉按父件规格联动过滤(前后端双端改造)
- 后端 /inbound/{semi,product}/search-bom 增加 parent_spec 可选参数,Service 层在 MaterialBase.spec_model 上加等值过滤
|
2026-06-04 16:01:48 +08:00 |
|
|
|
d51c6f147f
|
前端:所有 <el-dialog> 统一添加 :close-on-click-modal="false" 防误触关闭(保留 Esc 关闭)
|
2026-06-04 15:16:16 +08:00 |
|
|
|
a3d47f6328
|
入库管理三页面类别搜索统一为级联选择器;基础信息“俗名”改名为“出厂名称”
|
2026-06-04 11:05:58 +08:00 |
|
|
|
034418df8a
|
V3.38版本修改,三种入库按照基础信息内容进行修改
|
2026-05-29 14:26:52 +08:00 |
|
|
|
895d78a5e7
|
版本变更V3.33添加支持更新后识图功能
|
2026-05-25 11:20:45 +08:00 |
|
|
|
567c3175f6
|
fix: 审计日志跳过向量字段,修复 numpy 数组比较异常;补全三大入库单更新向量提取,统一删除确认弹窗
|
2026-05-25 11:11:10 +08:00 |
|
|
|
ee893485bb
|
feat: 推广粘贴上传功能至所有图片上传页面(purchase/buy/product/semi)
|
2026-05-15 14:29:25 +08:00 |
|
|
|
97e7618bf3
|
feat(bom+inbound): BOM子件跳转规格修复 + 成品/半成品按钮迁移到标题行
|
2026-04-28 10:10:45 +08:00 |
|
|
|
ec71cb24f4
|
feat: 新增物料/成品/半成品页面一键直达BOM管理功能
|
2026-04-27 15:24:07 +08:00 |
|
|
|
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 |
|
|
|
c72e6e198e
|
fix(inbound): remove redundant /api prefix in history location requests
|
2026-04-08 17:38:19 +08:00 |
|
|
|
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 |
|
|
|
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 |
|
|
|
2242aca6fe
|
feat: implement user-specific column preferences and remove hardcoded defaults in inbound tables
|
2026-03-23 11:57:45 +08:00 |
|
|
|
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 |
|
|
|
f701ed7fc8
|
fix: disable clickable material name links for users without edit permissions across all inbound tables
|
2026-03-23 11:19:25 +08:00 |
|
|
|
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 |
|
|
|
6dfc540dc1
|
fix: enforce field-level permission checks for semi-finished and finished goods tables
|
2026-03-23 10:58:28 +08:00 |
|
|
|
e6dafc7775
|
feat: add global toast message on form validation failure for inbound operations
|
2026-03-18 17:25:14 +08:00 |
|
|
|
878d11af28
|
fix: reset stock quantity color and enforce location validation for all inbound operations
|
2026-03-18 17:04:23 +08:00 |
|
|
|
3ba4e74a60
|
fix: support multiple copies printing natively in backend print service
|
2026-03-13 10:06:28 +08:00 |
|
|
|
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 |
|
|
|
d8e86959b8
|
fix: 基础信息排序问题
|
2026-03-12 09:29:50 +08:00 |
|
|
|
25fbb293df
|
fix: 禁用高级筛选内下拉框的 teleport,解决选择选项后导致 Popover 意外关闭的问题
|
2026-03-11 15:09:49 +08:00 |
|
|
|
31d91bceb0
|
fix: 恢复搜索框原有的动态搜索功能,并与指定字段精确搜索前缀完美融合
|
2026-03-11 13:43:43 +08:00 |
|
|
|
b1cc280a71
|
feat: 重构全局搜索框为复合条件选择,支持按名称、俗名、规格进行精准查杂
|
2026-03-11 13:37:52 +08:00 |
|
|
|
6fc6851e57
|
perf: 开启列表图片懒加载并优化分页大小
|
2026-03-10 09:29:49 +08:00 |
|
|
|
43d16cd196
|
feat: 列表页搜索框增加即时搜索与防抖机制
|
2026-03-09 17:36:54 +08:00 |
|
|
|
5d813c24bc
|
feat: 采购/半成品/成品列表拆分SKU独立搜索框
|
2026-03-09 17:29:24 +08:00 |
|
|
|
646baa08fe
|
feat: 采购/半成品/成品列表支持基于SKU的模糊搜索
|
2026-03-09 17:21:00 +08:00 |
|
|
|
f9eb3e9646
|
feat: 封装下钻式库位选择器,并修复层级颜色识别问题
|
2026-03-06 15:11:30 +08:00 |
|
|
|
8aaf45468e
|
style: 优化库位树层级颜色,并升级入库页面的库位选择为树形选择器
|
2026-03-06 15:00:04 +08:00 |
|
|
|
7201b658fb
|
feat: 优化库位树UI层级颜色,并将入库页面库位输入升级为级联选择器
|
2026-03-06 14:52:47 +08:00 |
|
|
|
359b8a8345
|
"feat: 1-实现动态层级树形库位管理功能
2 - 首页新增库位设置按钮和树形管理弹窗
3 - 后端添加 SysWarehouseLocation 模型和 CRUD API
4 - 树形结构支持无限层级,自动计算 full_path
5 - 修复 product.vue 中 defaultColumns 未定义 bug
|
2026-03-06 14:33:13 +08:00 |
|
|
|
e39c3fd030
|
筛选高级权限修改,基础信息启用禁用修改
|
2026-03-03 17:29:21 +08:00 |
|