|
|
9c1a9886a5
|
feat(outbound): 领用人改为可搜索下拉,选中申请单自动带出申请人
背景:出库的「领用人/客户」一直是自由文本框(create.vue 的 el-input),
后端 consumer_name 必填但内容不限。实测 1497 条出库里有 7 条领用人对不上
任何在职人员,其中就有把姓名打成「刘」这种错字 —— 手输必然产生这类问题。
而同一个表单里紧挨着的「经办人(库管)」已经是下拉选择了。
改动:
前端 outbound/create.vue
· 领用人由 el-input 改为 el-select(filterable + allow-create +
default-first-option),数据源复用统一的在职人员接口 getActiveUsers()
(与出库补发的「补发给谁」同一份,公司隔离由后端负责)。
· 选中审批单时自动带出申请人(fillConsumerFromRequest),仍可改成别人。
★ 按 applicant_id 在在职名单里**反查**姓名,而不是直接用接口返回的
applicant_name —— 后者是 '高雪/gaoxue'(后端 _get_user_name 返回完整
username),直接落库会把台账的姓名口径搞乱(实测 1497 行无一带 '/')。
· 动态模糊匹配:姓名与**拼音**都能搜。默认 filterable 只匹配 label(姓名),
输 gaoxue 匹配不到高雪,故自定义 filter-method 一并比对账号段。
· 软提示而非硬拦截:填了不在名单里的名字会显示
「「X」不在在职人员名单中,请确认没写错」。保留 allow-create 是因为
销售出库的客户可能是外部人员、没有账号,封死会让这类出库没法登记。
后端 common/users.py
· active_user_options() 增加 account 字段(username 里 '/' 之后那段拼音),
供前端拼音搜索。仍是 id/姓名/账号三项,不含邮箱、角色、部门。
★ 没有做后端强校验(拒绝非系统人员):用户明确选择「下拉为主,保留手输兜底」,
硬拦会挡住外部客户。错字的防线是"默认从名单里选 + 不在名单时给提示"。
验证(12 + 6 项断言全过):
· 39 个在职人员,每项含 id/name/account;name 是裸姓名、account 非空
· 拼音搜索:输 gaoxue / GAOXUE → 高雪;输 gao → 高前赐/高闯/高雪;输 高雪 → 高雪
· 在职人员无重名(按姓名绑定才无歧义)
· 已通过的审批单能反查到在职申请人(单 514/513/512/511/509 全部命中)
· 公司隔离:IRIS 用户 20 人只看到「石利」、LICA 用户 19 人只看到
「石利LICA」、超管 39 人 —— 跨公司同名在各自视角下不会同时出现
· 借库人员选择器(共用同一实现)仍正常,新增字段向后兼容
· 日报三天附件 490.5K/193.4K/92.3K 与 6 列结构未变;出库列表接口未受影响
· vue-tsc 与 vite build exit=0
注意:
· 历史 7 条不匹配的领用人**未改动**(其中「常国玺」疑似离职人员)。
· 前端只做了编译验证,未在浏览器实际点过 —— 下拉交互与提示样式需人工确认。
|
2026-09-28 15:18:43 +08:00 |
|
|
|
27e5589a5e
|
feat(outbound,common): 补发可指定「补发给谁」+ 抽出通用人员名单接口
一、补发申请人可选择(原单退回)
退回接口新增 reissue_applicant_id:
① 前端指定 → 校验用户存在后落库;
② 未指定 → 回退为**当前操作人**(原行为不变,向后兼容)。
为何不自动推断原申请人:trans_outbound **没有申请人字段,也没有指回原审批单
的关联**(扫码出库时只把审批单状态置为 3),按 consumer_name 反查会重蹈
「重名错绑」的覆辙(借用人姓名回填那轮刚踩过)。故把选择权交给现场,不猜。
二、抽出中性人员名单 GET /api/v1/common/active-users
实现抽到 common.active_user_options(),借库的 /transactions/borrow/users
改为调同一函数 —— 实现只有一份,但出库补发走**中性路径**,不再出现
「出库为什么在调借库的接口」这种跨模块语义错位。
仅要求登录、只返回 id 与姓名(与 /auth/users/approvers 同一处理)。
★ 本次无需 DB 迁移:未新增任何列,补发申请人是复用已有的
outbound_approval.applicant_id。
验证(打桩/真实 token 直连接口,12 项断言全通过)
· 名单只含 id/name,无邮箱/角色/部门;借库原路径返回值与新路径完全一致
· 指定「补发给谁」→ 补发单申请人 = 指定的人;备注仍含原领用人
· 不指定 → 回退为当前操作人
★ 指定不存在的用户 → 被拒,且整笔退回回滚(流水未落库)
库存与数据零残留。
|
2026-09-17 12:01:11 +08:00 |
|
|
|
f4d97b6c4f
|
fix(image-search): 成品库存回填误取 batch_number,导致以图搜图必 500
POST /api/v1/common/image-search 在回填 StockProduct 业务数据时读取
r.batch_number,但 stock_product 表没有该列(只有采购件、半成品有),
AttributeError 把整个检索打成 500 —— 即便 stock_buy / stock_semi 两路
已经查好也一起丢掉。
改为与 stock.py /stocktake/all-items 的既有约定一致,用 serial_number 兜底,
保持三个模块回填的字段形状不变。
实测: StockProduct 样例 hasattr(batch_number)=False,serial_number='205'。
|
2026-09-11 11:44:31 +08:00 |
|
|
|
220f73acbd
|
feat: 首页全局搜索支持按 SKU 查库位——采购/半成品/成品库存纳入搜索并显示库位
|
2026-09-07 15:47:25 +08:00 |
|
|
|
fb5b8d873b
|
版本变更V3.35将图像的处理统一更换到新表当中
|
2026-05-26 11:28:26 +08:00 |
|
|
|
92e1f7275e
|
feat: 以图搜图返回 business_data 包含 name/spec_model/url,支持详情页跳转
|
2026-05-25 17:52:03 +08:00 |
|
|
|
3ffcd35093
|
版本变更V3.31添加识图功能
|
2026-05-22 11:40:35 +08:00 |
|
|
|
8c635d6afe
|
版本变更V3.31添加识图功能
|
2026-05-22 10:59:39 +08:00 |
|
|
|
c273f5a9d9
|
feat: 以图搜图功能升级(跨表UNION检索 + 拍照识图入口 + 批量向量初始化脚本)
|
2026-05-21 15:43:45 +08:00 |
|
|
|
1a7c06f197
|
feat: 添加以图搜图功能(CLIP ONNX + pgvector)+ Dify会话修复 + 版本升至V3.30
|
2026-05-21 14:09:57 +08:00 |
|
|
|
6b4ebfa24f
|
feat(upload): 上传组件删除前需二次确认,支持ZIP/RAR/7Z压缩包上传
|
2026-05-12 15:34:26 +08:00 |
|
|
|
d6ae9499db
|
feat: 新增首页全局搜索功能,支持跨模块多词搜索
|
2026-04-27 15:57:26 +08:00 |
|
|
|
dbcb7d0d92
|
perf(system): optimize large data rendering in stocktake, fix N+1 in warehouse, and add upload size limits
|
2026-04-02 18:51:13 +08:00 |
|
|
|
cfb36ebf0b
|
feat: add printer config management API
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
|
2026-02-11 14:23:43 +08:00 |
|
|
|
50361dba9a
|
针对于上传图片以及借库还库和出库选单进行更改
|
2026-02-09 16:08:47 +08:00 |
|
|
|
7fa40115d9
|
采购件图像上传初实现
|
2026-02-03 11:16:12 +08:00 |
|
|
|
cf6a4a8957
|
添加条形码内容
|
2026-02-02 15:06:20 +08:00 |
|