|
|
b1f39acb97
|
style(borrow): 持有人高亮统一为条件蓝色,姓名按两字补全角空格等宽
一、当前持有人高亮策略统一
----
还库页(return.vue)该列原为橙色标签(type="warning"),与列表页在上一轮
已完成的条件高亮不一致。现统一为:
· 当前持有人 ≠ 借用人(确曾转交)→ 主题色 var(--el-color-primary) 加粗
· 两者同一人(常态)→ 普通深色文本,不做任何高亮
比对前把两侧都归一化到「斜杠前段」:历史数据可能混入「姓名/拼音」的完整
username 写法,不归一化会把同一人误判成转交,让整列无故飘蓝。
(records.vue 该列在 ba5394f 已是此策略,本轮仅同步调用 formatName。)
二、姓名两字补全角空格,实现等宽对齐
----
新增 formatName()(放在 src/utils/format.ts,而非各组件内复制 —— 列表页与
还库页都要用,规则改动只需改一处):
'高雪' -> '高 雪' U+3000 全角空格,占一个汉字宽
'郭俊玥' -> '郭俊玥'
'欧阳娜娜' -> '欧阳娜娜'
'AB' -> 'AB' 纯拉丁不补,否则渲染出 'A B' 怪相
null/'测试01'/混合字符 -> 原样
★ 纯展示层:只在模板 {{ formatName(row.borrower_name) }} 中调用,
row.borrower_name 等底层对象**一个字节都没动**。
姓名是转交/归还责任链的匹配键(records.vue 的 currentHolderList、
return.vue 的 isTransferred),往数据里插不可见字符会让比对、检索、
导出、复制全部带上它 —— 这正是上一轮拒绝「插空格」的原因,本轮改用
渲染期格式化,视觉要求与数据纯洁性同时满足。
★ 为什么用 U+3000 而非普通空格:普通空格宽度随字体浮动(约半个汉字),
补进去反而难对齐;U+3000 稳定占一个汉字宽,与「1 汉字 ≈ 1em」一致。
三、配套
----
· 归还人 / 当前持有人 / 借用人三列(含转交弹窗的持有人列)统一走 formatName;
· .name-fixed 增加 margin-right,避免同一格内多个姓名(同一单持有人/归还人
不同)紧贴成「高 雪张 三」。
|
2026-09-17 09:45:34 +08:00 |
|
|
|
511e822d12
|
feat(ui): 按钮级权限守卫与数量显示格式化
按钮级权限(与后端 @permission_required 用同一批权限码):
- 出库记录页「退回」按钮 -> v-permission="'outbound_return'"
- 不良品看板「修复回库」 -> v-permission="'defective_restock'"
- 不良品看板「报废销毁」 -> v-permission="'defective_scrap'"
两个处置按钮是**独立权限**,可能有人只有其一,故分别判定、分别隐藏;
两者都无时显示「无处置权限」。均保留响应式的 v-if 兜底——v-permission
只在 mounted 执行一次,而 Element Plus 表格行会重渲染,两者用同一权限码
判定一致。hasPermission() 内部已对 SUPER_ADMIN 放行,与后端装饰器的
超管旁路对齐。
另外去掉了出库记录页原本套用的 username === 'IRIS' 特例放行:退回是实物
交接的 SOP 动作,后端不认这个特例,前端也不该认,否则会出现「按钮可见但
接口 403」的错位。
数量显示格式化(新增 utils/format.ts,该文件原本是 0 字节空文件):
- formatQty() 显示用:1.0000 -> '1',2.5000 -> '2.5'
- normalizeQty() 数值用:同上但返回 number,供 el-input-number 的
v-model / :max —— 喂字符串会让步进与边界比较退化
应用于 不良品看板(退回总数、剩余待处理、两个弹窗的在管数量与输入框)、
出库记录页(已退 N 提示、退回弹窗三项数字)、退回记录页(退回数量列)。
同时移除三个 el-input-number 上的 :precision="4" —— 它会把 1 强制渲染成
1.0000,是截图上多余小数点的直接来源。数量本身仍支持小数(后端按
numeric(19,4) 收),只是不再强制补零。
表格列原本不受影响(接口返回 JSON 数字,1.0 经 JS 解析即 1),但后端有一批
运算是 float 累加,可能吐出 0.30000000000000004 这类尾巴,格式化按
numeric(19,4) 量纲先收敛到 4 位再做归一。
|
2026-09-16 16:46:20 +08:00 |
|
|
|
8e561836eb
|
feat: 库位按物料公司白名单显示——WarehouseSelector 支持 allowedTopPrefixes,IRIS 仅显 Y、LICA 显 C/L
|
2026-09-04 11:02:03 +08:00 |
|
|
|
4223a95f10
|
feat: generate permission sql for stocktake modules and implement single-device login restriction
|
2026-03-20 09:11:54 +08:00 |
|
|
|
96122ed671
|
fix: increase axios timeout to 60s to fix photo upload failure
|
2026-03-13 09:16:23 +08:00 |
|
|
|
525acae423
|
feat: 新增按钮级权限指令 v-permission 与 Axios 全局防重复提交机制
|
2026-03-10 11:59:41 +08:00 |
|
|
|
1708a8ba79
|
fix: 修复 axios 类型导出导致的 vite 构建报错及白屏问题
|
2026-03-10 09:55:26 +08:00 |
|
|
|
e4632086a1
|
feat: 重构鉴权系统为双Token无感刷新,并增加前端Token过期安全预判机制
|
2026-03-10 09:45:41 +08:00 |
|
|
|
1b88171985
|
(no commit message provided)
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
|
2026-02-09 11:04:04 +08:00 |
|
|
|
f234ca6793
|
(no commit message provided)
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
|
2026-02-09 10:59:36 +08:00 |
|
|
|
13590b1fac
|
超级管理员登录设置
|
2026-02-04 13:30:07 +08:00 |
|
|
|
3afea217b7
|
物料-采购件入库页面功能实现
|
2026-01-27 15:50:23 +08:00 |
|
|
|
2f8a5c55b1
|
python-flask和Vue两种模式初模板
|
2026-01-26 17:00:12 +08:00 |
|