|
|
88b754120b
|
V3.56
|
2026-07-14 08:48:19 +08:00 |
|
|
|
928f494124
|
fix: 统一所有页面名称列点击编辑功能及样式
- material/list.vue: 名称列增加 clickable-text,有编辑权限可点击编辑
- material/buyOdoo.vue: 同上
- stock/inbound/semi.vue: 补上遗漏的 .clickable-text CSS 样式
|
2026-07-14 08:46:19 +08:00 |
|
|
|
a928b0527b
|
V3.55
|
2026-07-13 17:33:28 +08:00 |
|
|
|
a2f9a3e754
|
V3.54
|
2026-07-13 17:33:16 +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 |
|
|
|
4f5965db02
|
feat: JWT多租户数据权限隔离 & 主管系统管理权限 & 含税单价补齐
## 多租户公司数据隔离
- 新增 get_current_company_filter() 工具函数 (decorators.py)
SUPER_ADMIN: 可传company_name参数过滤或传ALL看全量
其他角色: 强制隔离到JWT中的company_name
- 重构 base_service.py / buy_service.py: 用集中式函数替换内联公司过滤
- SysRolePermission 表新增 company_name 字段,支持同角色不同公司权限
- get_user_permissions() 新增 company_name 参数,查公司定制+全局模板权限
- permission.py API 新增 @permission_required 拦截 + 公司过滤
- 19个API/service文件传递 company_name 到权限查询
## 主管系统管理权限
- delete_user() 允许SUPERVISOR删除同公司用户 (原仅SUPER_ADMIN)
- get_all_users() 新增 company_name 参数过滤
- 用户列表/权限分配 API 应用 get_current_company_filter()
- 前端 UserCreate.vue: 超管可见公司下拉框,主管隐藏部门字段
## 前端多租户适配
- material/list.vue / buy.vue: 公司下拉框仅超管可见,默认ALL
- UserCreate.vue: 新增搜索栏公司筛选,部门字段按角色显隐
- auth.ts: getUserList() 支持 params 参数
## Bug修复: 含税单价字段补齐
- buy.vue: 表格列/高级筛选/排序/权限映射新增 post_tax_unit_price
- buy_service.py: allowed_fields/sort_field_map 新增 post_tax_unit_price
|
2026-07-13 15:12:22 +08:00 |
|
|
|
4ce42309db
|
V3.53对基础信息数据库进行修改,添加了两列备注内容,同时拆解展示图和备注的json存储方式
|
2026-07-10 10:54:10 +08:00 |
|
|
|
ffafa635bb
|
feat: 将产品图/说明书备注字段从JSON数组中分离为独立数据库列
- 数据库新增 product_image_remark 和 manual_link_remark 两个TEXT列
- 备注文字不再与上传文件URL混存在 generalImage/generalManual JSON数组中
- 前端输入框改为textarea,绑定独立的备注字段
- 修复 handlePasteLink 忽略field参数的bug
- 新增 isInternalFile 辅助函数,用于区分上传文件与纯文本
- 同步修改 list.vue 和 buyOdoo.vue 两个页面
|
2026-07-10 10:52:23 +08:00 |
|
|
|
4fb5a96c4c
|
V3.52修改BOM另存为问题
|
2026-06-26 16:09:52 +08:00 |
|
|
|
6a895347d0
|
V3.51
|
2026-06-25 15:44:31 +08:00 |
|
|
|
c1092407ad
|
V3.50
|
2026-06-25 15:21:43 +08:00 |
|
|
|
8ba1ff37f0
|
V3.49
|
2026-06-16 14:54:03 +08:00 |
|
|
|
b9c25ff4c5
|
V3.47
|
2026-06-16 13:57:23 +08:00 |
|
|
|
bfeb397c4a
|
fix(借库扫码出库): items 字段名 stock_id → id 修复 400 + dispatch_borrow docstring 补全 sku 字段说明
|
2026-06-16 13:38:51 +08:00 |
|
|
|
dcef91c3b1
|
V3.47
|
2026-06-12 15:05:06 +08:00 |
|
|
|
6f5652b90e
|
fix(借库菜单): 调整路由顺序 + 统一菜单命名
|
2026-06-12 14:21:03 +08:00 |
|
|
|
7ef22a3830
|
feat(借库审批流): 完整前后端实现
|
2026-06-12 14:08:19 +08:00 |
|
|
|
7ee6b0e02f
|
借库申请页面:恢复按 BOM 套餐添加功能
|
2026-06-12 13:19:01 +08:00 |
|
|
|
9e83c31f39
|
V3.46
|
2026-06-12 11:10:58 +08:00 |
|
|
|
6ad00884ba
|
借库列表:主子表聚合 + 展开行内嵌明细
|
2026-06-12 11:07:23 +08:00 |
|
|
|
67bc5b6c5d
|
V3.45
|
2026-06-11 17:36:34 +08:00 |
|
|
|
6cf5a25d77
|
V3.44
|
2026-06-10 12:16:00 +08:00 |
|
|
|
6686747e57
|
BomManage: saveDraftData 简化为全局唯一草稿静默覆盖模式
|
2026-06-10 12:11:53 +08:00 |
|
|
|
74bc751624
|
V3.43
|
2026-06-10 11:36:06 +08:00 |
|
|
|
c7b84ff3c6
|
fix: BOM草稿模块缺陷修复(事务回滚 + 外键约束 + 前端状态清理)
|
2026-06-10 11:30:07 +08:00 |
|
|
|
0e6d294052
|
V3.42
|
2026-06-05 16:28:43 +08:00 |
|
|
|
93b9846fc6
|
feat: 以图搜图集成拍照功能,支持直接调起摄像头搜图
|
2026-06-05 15:47:50 +08:00 |
|
|
|
1def8c7747
|
fix: 修复物料管理菜单空白,修正子菜单显示名称
|
2026-06-05 15:41:05 +08:00 |
|
|
|
907c083107
|
feat: 新增 Odoo 风格物料管理视图及相关路由,优化成品入库逻辑
|
2026-06-05 15:35:43 +08:00 |
|
|
|
ffc482bd9e
|
BomManage: 增删改刷新保留折叠状态,搜索时才重置 activeCategories
|
2026-06-05 11:31:37 +08:00 |
|
|
|
7087769a33
|
BomManage: 首屏懒渲染优化 — el-table 加 v-if 按需挂载,v-loading 替换为骨架屏
|
2026-06-05 11:24:40 +08:00 |
|
|
|
3d30cbc5c2
|
BomManage: autocomplete 添加 validate-event=false,rules 校验字段从 parent_id 改为 parentNameInput
|
2026-06-05 11:05:41 +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 |
|
|
|
8bb3e58b44
|
前端全局:<el-select remote> 三道防线扩展到 BOM 配方/采购/采购入库/售后入库
- 第一道防线:<el-select> 模板显式补充 reserve-keyword="true" / default-first-option="true",覆盖 4 文件 5 实例
- 第二道防线:handleRemoteSearch / handleSearchMaterial 首行深度净化 query(零宽字符/控制字符/BOM/不可见 Unicode)
- 第三道防线:handleVisibleChange / handleMaterialDropdownVisible 加竞态守卫,已有 searchKeyword 或 options 非空时跳过默认列表加载;带 debounce 的场景主动 clearTimeout 互斥
- service.vue 原本缺少 searchKeyword 状态,本轮新增 ref('') 专供 el-select 守卫使用
- BomManage.vue 父件/子件共用 handleVisibleChange,两套守卫分别按 parentQueryParams.keyword 和 state.queryParams.keyword 隔离判断
|
2026-06-04 16:44:59 +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 |
|
|
|
332ae3c4cf
|
基础信息页:产品图/说明书上传后预览不显示修复 + 新增 Ctrl+V 粘贴蓝字提示
- customUpload 改为手动 push:移除 onSuccess(res) 调用,规避 el-upload 2.13.1 handleSuccess 未从 res.data.url 提取 url 的问题
|
2026-06-04 15:43:38 +08:00 |
|
|
|
d51c6f147f
|
前端:所有 <el-dialog> 统一添加 :close-on-click-modal="false" 防误触关闭(保留 Esc 关闭)
|
2026-06-04 15:16:16 +08:00 |
|
|
|
2977acbae7
|
BOM 配方管理:禁止编辑原数据,引入另存为(深拷贝+清 ID)+ 只读查看模式(点击编号进只读弹窗)
|
2026-06-04 14:44:29 +08:00 |
|
|
|
90eed24441
|
基础信息页:编辑弹窗新增另存为新项功能(清主键+切标题+清脏检查基准,复用 addMaterialBase 接口)
|
2026-06-04 14:07:34 +08:00 |
|
|
|
91444034e0
|
基础信息页:将出厂名称展示文案统一改为专业名称(5 处,变量名/接口字段保持不变)
|
2026-06-04 13:32:52 +08:00 |
|
|
|
8f901e3f08
|
基础信息页:类别→规格型号自动提取正则扩展为支持字母+数字(如 Opt9)
|
2026-06-04 13:27:00 +08:00 |
|
|
|
bac670ef7a
|
基础信息页:计量单位改 el-select(下拉历史+手动输入);表单排版重排为 4 行(类别占满行);类别末级英文后缀自动填规格型号
|
2026-06-04 13:22:51 +08:00 |
|
|
|
1c0c02fd36
|
基础信息页新增/编辑弹窗隐藏“可见等级”表单项(v-if=“false”,代码保留可恢复)
|
2026-06-04 11:40:34 +08:00 |
|
|
|
a3d47f6328
|
入库管理三页面类别搜索统一为级联选择器;基础信息“俗名”改名为“出厂名称”
|
2026-06-04 11:05:58 +08:00 |
|
|
|
6149662fd8
|
V3.41修改AI接口
|
2026-06-01 11:07:24 +08:00 |
|
|
|
992e08aee9
|
V3.40
|
2026-06-01 09:29:03 +08:00 |
|
|
|
f27488e693
|
V3.39版本推送,出库选单依据BOM子件0的逻辑修改
|
2026-06-01 09:28:22 +08:00 |
|
|
|
034418df8a
|
V3.38版本修改,三种入库按照基础信息内容进行修改
|
2026-05-29 14:26:52 +08:00 |
|