|
|
f499346f74
|
refactor(purchase): 批次概念改为基于 request_no 前缀推导,撤销数据库字段
按用户反馈:不需要新增数据库字段,现有 request_no (PUR-20260831-1021-0001)
本身就能推导批次——去掉末尾4位流水号即为批次前缀。
- 撤销 purchase_request.batch_no 字段(模型/数据库)
- 撤销 create 接口的 batch_no 参数与 generate_batch_no
- 批次标识 = request_no 去掉末尾 -XXXX 段
getBatchKey('PUR-20260831-1021-0001') = 'PUR-20260831-1021'
- 按批次查询/批量审批接口改用 batch_key (request_no LIKE 前缀)
- 前端列表批次号列、整批弹窗、一键审批本批均基于前缀推导
- 零数据库迁移,历史数据立即可用
|
2026-08-31 13:49:11 +08:00 |
|
|
|
664127ee30
|
feat(purchase): 采购批次号支持,同一批提交的记录可分组查看/统计
背景: 循环提交把一批物品生成多条独立申请,无法识别'哪些是同一批采购'
后端:
- purchase_request 模型新增 batch_no 字段(同一批提交共享)
- create 接口接收 batch_no,无则自动生成 BATCH-yyyyMMdd-HHmm-随机
- 新增 GET /purchase/batch/<batch_no> 按批次查询所有记录
- 批量审批接口支持按 batch_no 一键审批整批
前端:
- 提交时生成 batch_no 共享给所有行
- 列表新增批次号列(可点击)
- 新增'整批查看'弹窗:显示同批次所有记录 + 一键批量通过本批
- 操作列新增'整批'按钮
数据库需执行: ALTER TABLE purchase_request ADD COLUMN batch_no VARCHAR(100);
|
2026-08-31 13:46:46 +08:00 |
|
|
|
39f3f8af45
|
feat(outbound): 审批单手动完结/作废功能
- 后端: outbound_service 新增 close_request 方法(状态 1-已通过 → 4-已完结)
- 后端: 新增 POST /api/v1/outbound/request/<id>/close 接口
- 模型: status_text 数组增加「已完结」
- 前端: create.vue 审批单选择区新增「强制完结此单」按钮
完结后刷新列表,该单从已通过下拉中移除
- 权限: 超级管理员/审批人/拥有 outbound_create:operation 的用户可完结(库管可操作)
|
2026-08-31 10:15:33 +08:00 |
|
|
|
23fc10a25f
|
fix: Day2就绪 — 删除硬化+索引补全+全局异常处理
## base_service.py — MaterialBase删除硬化
- 新增 BomTable 引用检查(bom_usage_count)
- 物料被BOM引用时禁止删除,提示「请先解除BOM绑定」
## models/base.py + bom.py — 缺失索引补全
- material_base: company_name + is_enabled 添加 index=True
- bom_table: is_enabled 添加 index=True
## __init__.py — 全局异常处理
- @app.errorhandler(ValueError) → 400 + 自定义消息
- @app.errorhandler(404/405) → 标准错误
- @app.errorhandler(Exception) → 500 + 通用消息
堆栈仅记录服务器日志,不泄露到前端
|
2026-07-16 14:14:43 +08:00 |
|
|
|
4934cd4d8f
|
feat: 采购管理税率+分开单价总价列 + 按单出/借库锁定扫描 + 含税法计算
- purchase: 新增tax_rate字段(model+service+frontend), 表格拆分为不含税单价/总价/税率三列
- buy.vue: 含税法计算(含税总价=数量×含税单价), 含税总价自动计算可手动覆盖
- create.vue: 按单出库模式下未选审批单时锁定摄像头和SKU输入
- borrow.vue: 未选审批单时锁定摄像头和SKU输入
- deploy_production.sql: 整合全部数据库变更(表结构+权限码+角色分配)
|
2026-07-15 16:07:59 +08:00 |
|
|
|
538b6cb818
|
feat: 采购单导入自动填充采购人/邮箱/详情链接 + 实时搜索
- PurchaseRequest.to_dict() 新增 requester_email
- 导入时自动填入: 采购人(requester_name) + 邮箱(requester_email) + 详情链接(supplier_link)
- 移除原始链接/详情链接的历史 autocomplete, 改为纯输入框+权限守卫
- 采购单导入搜索改为实时输入搜索(300ms防抖), 保留搜索按钮
|
2026-07-14 16:29:19 +08:00 |
|
|
|
a11b7972c3
|
feat: 打通采购申请与入库的按单入库链路
后端变更:
- PurchaseRequest 新增 base_id 硬关联 MaterialBase,StockBuy 新增 request_id 关联采购单
- handle_inbound 支持 request_id 入参,入库后自动反写采购单状态为已完成
- 新增 get_approved_requests 接口,返回已审批未入库采购单列表(含物料信息+历史数据回退匹配)
- create_purchase_request 新增 name+spec_model 自动匹配 MaterialBase
- 新增 SQL 和 Alembic 数据库迁移脚本
前端变更:
- 入库表单新增"从采购单导入"弹窗,支持搜索/选中已审批采购单并一键填充物料和商务信息
- 单价/总价交叉推算,缺项自动补全
- 选中行蓝色高亮+点击整行选中,行级交互优化
|
2026-07-14 15:25:00 +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 |
|
|
|
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 |
|
|
|
7ef22a3830
|
feat(借库审批流): 完整前后端实现
|
2026-06-12 14:08:19 +08:00 |
|
|
|
c7b84ff3c6
|
fix: BOM草稿模块缺陷修复(事务回滚 + 外键约束 + 前端状态清理)
|
2026-06-10 11:30:07 +08:00 |
|
|
|
1da4b454cd
|
feat: 新增物料/入库单实时 CLIP 向量提取(新建+更新),修复 I/O 延迟和路径解析静默失败
|
2026-05-25 10:04:32 +08:00 |
|
|
|
6e1e1aa998
|
perf: 为库存三表/BOM/物料基础表补全高频查询列索引,防止全表扫描
|
2026-05-19 10:21:50 +08:00 |
|
|
|
3c9d7a999d
|
fix(purchase): 审批人下拉隐藏角色/物料搜索下拉/价格弹窗确认/图片必填校验
|
2026-05-12 17:27:51 +08:00 |
|
|
|
9dfcb93146
|
feat(purchase): 新增采购申请模块后端(模型+Service+API路由)
|
2026-05-12 16:33:18 +08:00 |
|
|
|
259f3a7e0d
|
4.29扫码获取库位小工具接口
|
2026-04-29 15:40:43 +08:00 |
|
|
|
183b93012e
|
4.28
|
2026-04-28 16:07:11 +08:00 |
|
|
|
62c0e3738e
|
fix(outbound+trans): 修复POST接口错误数据清洗导致的sku/quantity字段被清除Bug,并新增出库审批工作流全链路
|
2026-04-28 16:02:34 +08:00 |
|
|
|
3085d9f447
|
feat(repair): decouple material base, sync global sku sequence and add scan/print features
|
2026-04-08 19:36:14 +08:00 |
|
|
|
ec468b266d
|
refactor(repair): upgrade TransRepair model with base_id, status, and SN for independent operation
|
2026-04-08 18:23:22 +08:00 |
|
|
|
46dd8f1c3a
|
fix(auth,audit): ensure display_name persists in token refresh and add fallback in audit log
|
2026-03-25 11:16:13 +08:00 |
|
|
|
faea0379da
|
refactor: replace transfer outbound type with production outbound across frontend and backend
|
2026-03-19 17:13:24 +08:00 |
|
|
|
6cc3d1b6e0
|
feat: upgrade adjustment workflow to require explicit inbound SKU or outbound tracking number and fix UTC timezone issue
|
2026-03-19 15:26:40 +08:00 |
|
|
|
09869667c8
|
fix: add extend_existing=True to StockAdjustment model to resolve MetaData conflict
|
2026-03-19 14:25:43 +08:00 |
|
|
|
c55eed0d75
|
fix: remove duplicate StockAdjustment model from stocktake.py to fix SQLAlchemy MetaData conflict
|
2026-03-19 14:20:27 +08:00 |
|
|
|
d8a57ab66e
|
feat: initialize inventory profit and loss adjustment module
|
2026-03-19 12:06:32 +08:00 |
|
|
|
83745caacc
|
feat: create models and SQL schemas for stocktake remarks and inventory adjustments
|
2026-03-19 10:56:40 +08:00 |
|
|
|
79d4a365e0
|
feat: add partial return support with returned_quantity tracking
|
2026-03-18 10:41:19 +08:00 |
|
|
|
c1c494893f
|
feat: implement dynamic inspection requirement logic based on material master data
|
2026-03-17 11:56:04 +08:00 |
|
|
|
332f928c78
|
refactor: simplify stocktake flow without DB schema changes and remove invalid field queries
|
2026-03-13 10:45:37 +08:00 |
|
|
|
7e23141870
|
refactor: redesign stocktake flow to require manual discrepancy audit and individual adjustments
|
2026-03-13 09:59:01 +08:00 |
|
|
|
d2d9abe201
|
全局审计日fix: 使用鸭子类型强制安全解包 SQLAlchemy Row 对象,彻底解决 to_dict 报错志
|
2026-03-11 13:11:16 +08:00 |
|
|
|
cd192624b9
|
fix: 统一系统生成时间为北京时间(UTC+8)并优化审计日志表格列展示
|
2026-03-10 17:33:14 +08:00 |
|
|
|
be6575344a
|
feat: 新增企业级操作审计日志闭环模块(包含底层模型、记录装饰器与前端看板)
|
2026-03-10 12:15:26 +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 |
|
|
|
cc33108e88
|
feat: add TransBorrow.get_borrowed_quantity method
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
|
2026-02-28 11:43:10 +08:00 |
|
|
|
657c916703
|
feat: add post-tax unit price, company filter, and frontend price linkage
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
|
2026-02-27 15:58:55 +08:00 |
|
|
|
3c1c822f88
|
feat: add pre/post-tax price linkage, hide barcode, and tablet adapt
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
|
2026-02-27 15:44:10 +08:00 |
|
|
|
7431f1f41e
|
权限管理,没有页面修改之前版本
|
2026-02-25 16:10:12 +08:00 |
|
|
|
82a9a4c2ba
|
修改登录,实现中文名称显示,以及修改登录逻辑
|
2026-02-25 11:18:01 +08:00 |
|
|
|
1c3f116c50
|
修改登录,添加超级管理员权限
|
2026-02-25 11:02:06 +08:00 |
|
|
|
31ddb1aafd
|
将半成品成品同样进行新增所属公司以及内容修改
|
2026-02-24 16:16:17 +08:00 |
|
|
|
42171ed612
|
对于采购件的税率添加以及所属公司添加
|
2026-02-24 15:43:14 +08:00 |
|
|
|
7e2fa8db8e
|
基础信息修改,新增所属公司,同时修正类别排序以及新增时候类别选择的功能
|
2026-02-24 15:13:37 +08:00 |
|
|
|
b682d4b02f
|
对于出库选单和Bom库的逻辑完善以及功能美化
|
2026-02-12 16:54:26 +08:00 |
|
|
|
32f031b047
|
feat: add non-null and unique constraints to BOM model
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
|
2026-02-12 09:41:40 +08:00 |
|
|
|
e900326571
|
修改semi,product,service的搜索逻辑
|
2026-02-11 15:12:20 +08:00 |
|