wangjia
|
c2f4b97423
|
fix(client): 状态下拉对照原型 .menu(白底圆角 + 选中蓝勾蓝字)
实现原是 Material 默认下拉(灰底 + 灰高亮块),改为对照原型 .menu/.menu-item:
白底圆角描边、选中项 lucide check 蓝勾 + 蓝字 fw600、去掉 initialValue 灰高亮。
注:此菜单样式多处复用(主题器/用户/列设置),下一步抽成 DsMenu 统一。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 22:58:08 +08:00 |
|
wangjia
|
0b19a99fda
|
feat(client): KPI 图标改用 lucide(与原型同源图形库)
原型图标源自 lucide-static(icons.js)。引入 lucide_icons_flutter 包,
库存屏 KPI 图标改 LucideIcons.box/database/box/triangleAlert,与原型一模一样
(不再用 Material 凑近似)。golden_harness 加载 Lucide package 字体(family 带
packages/ 前缀),golden 正确渲染。flutter test 242 通过。
后续:侧栏/顶栏/状态栏图标也逐步换 lucide(对照 shell.js)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 22:56:10 +08:00 |
|
wangjia
|
00d9410bd3
|
fix(client): 补提交 ds_table.dart(库存屏依赖)+ 库存移动端 golden
ds_table.dart 在 ds 地基提交后新建、库存屏提交时漏 add,补回避免仓库缺文件。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 21:59:07 +08:00 |
|
wangjia
|
7b611211c5
|
refactor(client): 库存屏改用 ds 组件库重写(屏内零内联样式)
按「屏只组合组件、不写样式」用 widgets/ds/ 重写库存屏:
- KPI: KpiCard → DsKpi(4 卡,ic 右上 + mono 数字 + 缺货 accent)
- 表格: DataTableCard → DsTable(列头漏斗 header + 状态 DsBadge 圆点 + 库存 accent 染色 + 分页)
- 工具栏: TextField → DsSearchBox;状态内联 chip → DsChip;重置/导出 → DsButton
- _buildInventoryCell 改返回 Widget(供 DsRow.cells),状态走 _dsStatusBadge(DsBadge)
- 颜色全走 token(闸 0 违规),analyze 0 error,flutter test 242 通过
旧 DataTableCard/KpiCard/StatusPill 依赖仅剩未用的预警/流水 tab,下一步清理。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 21:58:00 +08:00 |
|
wangjia
|
9ce8934412
|
feat(client): ds 组件库地基(镜像 atoms.css 原子,屏重写前置)
按「先建单一组件源、屏只组合不重写样式」重立组件层:
- 新建 widgets/ds/:DsButton(.btn ghost/primary/danger/sm) · DsBadge(.badge+圆点) ·
DsChip(.chip 状态筹码) · DsSearchBox(.searchbox) · DsKpi(.kpi 含 .ic 右上块+环比 .d)
- 每个组件一对一对照 atoms.css 尺寸/间距/圆角/字号,颜色/尺寸全引 token(0 硬编码,颜色闸过)
- 现有 KpiCard/StatusPill 等逐步迁入 ds/ 废弃
下一步:建 DsTable(表格+列头漏斗+分页+状态徽章用 DsBadge)→ 用 ds 组件重写库存屏。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 21:30:59 +08:00 |
|
wangjia
|
7623a4c702
|
fix(client): 真机字体改回系统默认(PingFang,对齐原型) + 原型去新增入库
- themes.dart 不再全局强制 NotoSansSC:真机用系统字体(macOS/iOS=PingFang SC,
与原型 --font 一致),消除真机字体偏离原型;Noto 仅 golden 测试加载(CI 无中文字体)
- 原型 inventory.html 同步去掉「新增入库」按钮,与代码保持一致
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 21:20:46 +08:00 |
|
wangjia
|
904bfbe67d
|
feat(client): Phase 2 库存屏照原型重建(去tab/KPI货值/库存·成本价·单价列)
照原型 inventory.html 把库存屏从「3 tab」重排为单视图:
- 去 3 tab(库存查询/预警/流水)→ 单视图;预警并入 KPI 缺货卡点击筛选;流水移商品详情
- 头部:库存管理 + 共 N 个 SKU·数据实时 + 列设置/导出(盘点/新增入库去掉,走专门菜单)
- KPI 4 卡走全店汇总接口:SKU总数/库存货值(Σqty×进价)/在库数量/缺货预警(可点筛选)
- 表格 12 列:加 库存(低库存染色)/成本价(进价)/单价(售价);操作列只「查看详情」;状态圆点
- 仓库/备注默认隐藏;工具栏 搜索+状态筛选+重置
- 后端 GET /inventory/summary 全店汇总(守 shop_id);前端 model/repository/provider 配套
- golden_harness:monospace 指向 Noto(消等宽数字黑块,全 golden 受益);库存屏存量 grey 清零
后端编译/库存测试通过;前端 analyze 0 error,flutter test 242 通过;代码端颜色闸 0 违规。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 20:40:54 +08:00 |
|
wangjia
|
5e4cc668e5
|
feat(backend): 库存接口带出售价 sale_price(库存屏成本价/单价两列地基)
照原型库存表「成本价(进价)+单价(售价)」两列:
- 库存查询 SELECT 加 p.sale_price AS sale_price;成本价 unit_price 补 p.purchase_price 兜底
- inventoryRow 加 SalePrice;前端 Inventory model 加 salePrice
- 多租户隔离不变(baseWhere 仍 inv.shop_id);库存测试通过
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 19:56:27 +08:00 |
|
wangjia
|
23a583918d
|
feat(tools): 代码端真相源闸 check_ds_code + 外壳硬编码颜色清零
把原型 check-ds 的「单一真源」纪律延伸到 Flutter 代码:
- client/tool/check_ds_code.mjs:扫 lib/(排除.g.dart) 硬编码 Color(0x..)/Colors.具名色,
--strict/--changed 报错挡提交,合理特例须显式 // ds-ignore: 理由
- tokens.css(单源,client+原型同步) 加 chrome 前景色 --brand-dot/--on-accent/--on-accent-faint,
codegen 进 AppChrome;外壳 14 处硬编码(白字/品牌点/grace橙)全部改走 token
- 外壳+3 新 widget 现 0 违规;全量存量 172→158(其余屏后续逐步清)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 19:14:47 +08:00 |
|
wangjia
|
d85d68574d
|
fix(client): 账号菜单弹按钮正上方不遮挡 + side-user hover 变色
对照原型修两点:
1. 菜单原先 over 盖住 side-user 按钮;改为按「菜单估高」把菜单完整弹到按钮上方
留 8px 间隙,触发器始终可见(对齐原型)
2. side-user 抽成 _SideUserTile,加 hover 变色(t.sideHover,与左侧 nav 一致)
- user_menu_width_test 增断言:菜单末项底 ≤ 触发器顶(不遮挡)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 18:51:55 +08:00 |
|
wangjia
|
0ebf26c282
|
fix(client): 账号菜单改 showMenu 等宽触发器 + 向上弹(修菜单溢出盖内容)
上一版用 PopupMenuButton width:218 + offset:-12 反而把菜单外扩、右缘越过侧栏
盖住内容区。改为 GestureDetector + showMenu,菜单宽度 = 用户区实测宽度(自动与
侧栏内容等宽、绝不溢出),底部空间不足 showMenu 自动向上弹、不遮触发器。
加 user_menu_width_test:点开后断言菜单宽≈194、右缘≤218(弹出态回归)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 18:40:07 +08:00 |
|
wangjia
|
f9668848b6
|
fix(client): 外壳两处对齐修正(顶栏右组靠右 + 用户菜单与侧栏等宽)
- 顶栏:左组(品牌+门店)改 Expanded 占满,主题器+通知铃挤到最右;
原 Flexible(flex1) 与 Spacer(flex1) 平分剩余空间导致右组浮在中右
- 侧栏底部用户菜单:constraints 固定 218 宽 + offset 左对齐侧栏左缘,与侧栏等宽
- 状态栏操作员显示 realName(王经理)而非 username
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 18:13:16 +08:00 |
|
wangjia
|
1b43dfc75d
|
refactor(client): Phase 1 照原型重建 app 外壳(顶栏两级品牌 + 主题器 + 通知铃 + 分组侧栏 + 状态栏)
照 shell.js/statusbar.js/atoms.css 把外壳从「旧单品牌+换色」彻底重建为原型样式:
- 顶栏:岩美酒库(线描山形 mark CustomPaint,软件品牌) │分隔│ 鼎晟酒行(门店字标+店名);
右侧 ThemePickerPill(主题器,从系统设置迁来,A/B/C 切换) + NotificationBell(通知)
- 侧栏(218w):分组 单据/经营/系统(nav-label) + nav(active 高亮) + 底部 side-user(头像/姓名/店·角色→菜单)
- 状态栏:AppStatusBar(原型 .statusbar,AppChrome 主题无关色):店号/操作员/登录/当前(走字) · 连接/版本/授权
- 保留全部既有行为:更新/强制更新/授权横幅与弹窗、离线横幅、心跳、apiMessage、窄屏 Drawer
- 新增 widgets/theme_picker_pill.dart · notification_bell.dart · app_status_bar.dart
- golden:加载真实 MaterialIcons 字体(消图标豆腐块,全 golden 受益);
app_shell golden 用 9 分支+冻结时钟(可测试缝)确定化,对齐原型数据(鼎晟酒行/王经理/库存激活)
- fidelity:外壳 vs 原型 diff 3.5% ≤ 阈,montage 目检 chrome 与原型一致
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 18:02:38 +08:00 |
|
wangjia
|
d3fab1857d
|
feat(client): Phase 0.4 codegen 补主题无关 chrome 色(AppChrome)
外壳要用的状态栏/品牌/遮罩/Toast 色在 tokens.css :root,固定不随 A/B/C 主题切换,
原先没进 Dart token。扩展 gen_tokens.mjs 从 :root 生成 AppChrome 常量类
(statusbar-* / brand-* / scrim / hero-glass / toast-bg),外壳直接引用、禁硬编码。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 17:45:31 +08:00 |
|
wangjia
|
55c23e869e
|
refactor(client): Phase 0.1 统一中文字体地基(golden 消豆腐块,可与原型保真比对)
- 打包 Noto Sans SC(pubspec fonts:),ThemeData.fontFamily 全平台统一
- golden_harness 用 FontLoader 注入 ttf + withGoldenFont,golden 渲染真实中文
- 修复 data_table_card 根因:DefaultTextStyle → .merge(替换式会吞掉继承字体,
导致所有表格屏表头/单元格渲染豆腐块);顺手 hover 硬编码色 → context.tokens.rowHover
- 全部 golden 用新字体重生成;test/golden/failures/ 加入 gitignore
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 17:39:23 +08:00 |
|
wangjia
|
d9f0d3feca
|
feat(client): 应用内注册新门店(两栏品牌页 + 表单)
- 新增 RegisterScreen(左品牌面板 3 步引导 + 右表单:门店名/电话/地址/
管理员/账号/密码/确认 + 同意条款),还原原型两栏设计,全 token 化
- AuthRepository.register → POST /api/v1/register(后端已有),成功弹门店编号
引导去登录
- 路由加 /register(公开路由);登录页「前往官网注册」→ 应用内「立即注册」
- 整屏 golden ×三主题入回归闸
(购买流/通知中心按指示暂不做)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 16:34:48 +08:00 |
|
wangjia
|
36f2fe1526
|
feat(client): 基础数据加商品档案全量表 + 原型 5 tab 置前
非破坏式向原型靠拢:
- 新增「商品档案」tab(productListProvider 全量商品表:商品 name+code/系列/规格/
分类/单位/默认成本价/查看,行点进详情),原型头牌功能(此前基础数据页只管字典)
- tab 重排:原型 5 个(商品档案/商品介绍/系列/规格/香型)置前;描述文档→商品介绍
- 保留 商品名称/产地/保质期/储存/仓库 字典 tab 在后(不删管理入口、不孤立数据)
整屏 golden ×三主题入回归闸。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 16:22:47 +08:00 |
|
wangjia
|
8e01e7afe7
|
feat(client): 商品详情加价格历史卡(接 /products/:id/price-history)
repo.getPriceHistory → 详情异步加载,新增价格历史卡:date + 进价,按相邻点
算涨跌(绿涨/红跌箭头)。至此商品详情 100% 对齐原型富数据版
(KPI + 各仓库分布 + 价格历史 + 近期流水)。golden 三主题已含该卡。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 16:09:43 +08:00 |
|
wangjia
|
38e2ea1c6c
|
feat(client): 商品基础数据加香型字典 tab(接后端 categories CRUD)
新增 ProductCategoryOption 模型 + repo(list/create/update/deleteCategory)+
provider(productCategoryListProvider),基础数据页加「香型」tab(增删改查、
搜索、导出,仅名称字段)。接通后端 /product-options/categories。
(原型 5-tab 整合是更大 IA 任务,本次先把香型管理补齐可用。)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 15:42:23 +08:00 |
|
wangjia
|
355ac0ebc3
|
feat(client): 商品详情升级富数据版(KPI + 仓库分布 + 流水)
接后端新能力:listInventory 加 productId 透传;详情异步拉本商品库存+流水(失败
静默不阻塞主数据),渲染原型富数据三件套:
- 3 KPI 卡(当前库存 / 库存货值=库存×进价 / 近30天出库=出库流水30天聚合)
- 各仓库库存分布(按仓库分组 数量+货值)
- 近期流水(StatusPill 入/出 + 增减量,最近 8 条)
价格历史待后端第二步。整屏 golden ×三主题入回归闸。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 15:34:57 +08:00 |
|
wangjia
|
f47f6edcd3
|
feat(client): 入库/出库录单表单(旗舰屏)斑马行 token 化 + 整屏 golden
录单明细网格斑马行 Colors.white/FFFAFAFA → surface/bg(修暗色破绽,两表单
现 0 硬编码色残留);入库+出库录单表单整屏 golden ×三主题(桌面+移动)入回归闸,
锁住 单据信息卡 + 可编辑明细网格 + 底栏。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 14:33:46 +08:00 |
|
wangjia
|
d3134f633d
|
feat(client): 登录屏离线提示条 token 化 + 整屏 golden ×三主题
服务器不可达提示条 FFF8E1/F57F17/5D4037 → warnBg/warn;
品牌 hero + 表单整屏 golden 入回归闸(覆盖联网首检避免 Timer 泄漏)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 14:02:58 +08:00 |
|
wangjia
|
abd1058bcb
|
refactor(client): 盘点屏斑马行 token 化(修暗色破绽)
盘点明细行无差异时的斑马底 Colors.white/FFFAFAFA → surface/bg,
深色主题 B 下不再泛白。该屏现 0 硬编码色残留。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 13:59:38 +08:00 |
|
wangjia
|
a8f5364aea
|
feat(client): 系统设置角色徽章 → StatusPill + 系统参数 Tab golden
- _RoleBadge(超管/管理员/操作员/只读)硬编码 FCE4EC/E3F2FD/E8F5E9/F5F5F5
→ StatusPill(danger/primary/success/muted + 对应软底,走 token)
- 系统参数 Tab golden ×三主题:锁住外观主题选择器三色板微缩预览 + 参数卡
- 残留 0xFF0F3057 为品牌标识色(--brand-deep,主题无关),保留
analyze 0 error.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 13:43:50 +08:00 |
|
wangjia
|
2d28b067d8
|
feat(client): 设备管理屏在线状态徽章 → StatusPill + golden
onlineBadge(在线/离线 圆点文字)→ StatusPill(圆点软底 pill,
success/okSoft 与 muted/infoSoft);整屏 golden ×三主题(桌面+移动)入回归闸。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 13:41:07 +08:00 |
|
wangjia
|
ae447f61e3
|
feat(client): 财务屏设计语言重建(KpiCard + StatusPill 徽章 + token 清扫)
- 3 张汇总卡 _SummaryCard → KpiCard(合计/未结清/已结清,info/warn/ok)
- _StatusBadge / _TypeBadge → StatusPill(结清状态 + 应收/应付/收款/付款,
硬编码 E3F2FD/FFEBEE/E8F5E9/FFF3E0/F5F5F5 全清,走 token)
- _OfflineBanner 离线条 FFF8E1/F57F17 → warnBg/warn
- 整屏 golden ×三主题(桌面+移动)入回归闸;该屏 0 硬编码色残留
analyze 0 error.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 13:38:41 +08:00 |
|
wangjia
|
539852c7b3
|
feat(client): 出库列表设计语言重建(副标 + 共享 StatusPill + golden)
副标「共 N 笔出库单」+ 详情弹窗斑马行 token 化;复用已升级的共享
StatusBadge→StatusPill;整屏 golden ×三主题(桌面+移动)入回归闸。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 13:32:28 +08:00 |
|
wangjia
|
99a2b533e6
|
feat(client): 入库列表 + 共享订单状态徽章设计语言重建
- StatusBadge → StatusPill(草稿/待审核/已审核/已拒绝 圆点软底,色走 token:
infoSoft/warnBg/successBg/dangerBg)——入库/出库列表共享,一处升级两屏受益
- 入库列表副标「共 N 笔入库单」+ 详情弹窗斑马行/灰字 token 化(修暗色破绽)
- 整屏 golden ×三主题(桌面+移动)入回归闸
analyze 0 error.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 13:29:56 +08:00 |
|
wangjia
|
f994fbd031
|
feat(client): 往来单位屏设计语言重建(副标/状态徽章/两行名称/响应式 toolbar)
- 副标「共 N 个供应商/客户」(还原 .head .sub)
- 状态 → StatusPill(启用绿/停用灰,新 _PartnerStatusPill),桌面+移动一致
- 编码+名称合并两行(name 加粗 + code 等宽 muted)
- toolbar 响应式(窄屏搜索独占一行 + 操作行)+ token 间距,修预存窄屏溢出
- 整屏 golden ×三主题(桌面+移动)入回归闸
暂缓(数据缺口/有意偏差):应收/应付列(Partner 模型无该字段)、
类型 chips(现保留 供应商/客户 两 Tab)。
analyze 0 error · flutter test +181(往来桌面/移动各 3 golden)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 13:05:12 +08:00 |
|
wangjia
|
1632f5f1d9
|
feat(client): 库存列表收尾——副标/toolbar 间距/移动端 golden
- 副标(还原原型 .head .sub):KPI 上方「共 N 个商品 · 数据实时」(千分位)
- toolbar 间距 token 化:搜索框对齐原型 240,间隔走 AppDims.sp2/sp3
- 移动端 golden:窄屏(390)卡片流路径 ×三主题入回归闸
- 顺带修 DataTableCard 分页条窄屏横向溢出(mobile 隐藏每页选择器,
golden 闸抓出的预存 bug)
analyze 0 error · flutter test +175(库存桌面/移动各 3 golden 全过)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 12:11:17 +08:00 |
|
wangjia
|
a719840ede
|
feat(client): 库存表列按原型重排 + 商品列 name/code 合并两行
列序照原型:商品(name+code 两行) · 规格 · 系列 · 批次 · 单价 · 生产日期 ·
入库时间 · 供应商 · 仓库 · 备注 · 状态 · 操作。遵项目铁律跳过「库存数量/成本价」
(装箱数脏数据 + 进价敏感),仓库/备注保留为可隐藏列。新增 _productCell
(name 加粗可点进详情 + code 等宽 muted,fsXs 走 AppDims)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 10:05:00 +08:00 |
|
wangjia
|
60483ae483
|
feat(client): 库存列表 KPI 卡 + 状态徽章按原型重建(阶段3 首切)
新增可复用 widgets/kpi_card.dart:KpiCard(还原原型 .kpi/.ic,6 档色调
info/ok/blue/alert/warn/danger,token+AppDims 驱动)+ StatusPill(.badge
圆点软底)。库存查询页 3 张旧 _SummaryCard → 4 张 KPI 卡(商品总数/在库数量/
库存预警/缺货,商品总数可点清筛选)。状态徽章 正常/库存不足→在售/预警,
硬编码 FFEBEE/FFF3E0/E8F5E9 → dangerBg/warnBg/okSoft;出入库方向徽章同迁。
该屏 0 硬编码色残留,三主题随 token 换色。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 06:56:45 +08:00 |
|
wangjia
|
b037486401
|
feat(client): token 地基补字阶/圆角/间距标量层 AppDims(codegen 单源)
gen_tokens.mjs 扩展解析 :root 共享块 → 生成 app_dims.g.dart:
间距 sp1-10 / 圆角 rSm-rPill / 字号 fsDisplay-fsXs,主题无关 const 标量。
为屏幕重建提供「禁硬编码 px」的单一真源;app_tokens.g.dart 保持字节一致。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 06:51:52 +08:00 |
|
wangjia
|
5964fd0eba
|
feat(client): 设置页新增外观主题选择器(A/B/C 实时切换)
系统参数 Tab 顶部加「外观主题」卡片:三枚带微缩预览的主题色板
(经典蓝/琥珀/酒窖),点选即调用 themeController.set 实时换色并持久化。
表格列头 F0F4FF → thBg 一并清理。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 06:21:35 +08:00 |
|
wangjia
|
c18c37944a
|
refactor(client): 裸色字面量 F0F6FF/F0F4FF 迁移到 token
入库选填区/退单提示条 F0F6FF → infoSoft;表格列头 F0F4FF → thBg;
登录历史项/外壳用户菜单 hover → rowHover、菜单文字 → text。
深色主题 B / 暖色主题 C 下这些 chrome 现可正确随主题换色。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
|
2026-06-25 06:21:35 +08:00 |
|
wangjia
|
93cb5dae25
|
refactor(client): license_copy 内联色 + 删除 app_theme.dart(AppTheme 退役)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-25 00:25:42 +08:00 |
|
wangjia
|
6570ac792c
|
refactor(client): 往来/设备/登录/关于颜色迁移到 context.tokens
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-25 00:20:11 +08:00 |
|
wangjia
|
8ef2424090
|
refactor(client): 设置/外壳颜色迁移到 context.tokens
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-25 00:10:15 +08:00 |
|
wangjia
|
9c2a73c4b6
|
refactor(client): 商品/财务域颜色迁移到 context.tokens
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 23:57:49 +08:00 |
|
wangjia
|
9709986ff0
|
refactor(client): 出库域颜色迁移到 context.tokens
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 23:47:35 +08:00 |
|
wangjia
|
0c9d7137e3
|
refactor(client): 入库域颜色迁移到 context.tokens
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 23:36:58 +08:00 |
|
wangjia
|
c0a7feac55
|
refactor(client): 库存域颜色迁移到 context.tokens
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 23:25:34 +08:00 |
|
wangjia
|
b37c46fb9c
|
refactor(client): widgets 颜色迁移到 context.tokens
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 23:12:20 +08:00 |
|
wangjia
|
1671edd913
|
refactor(client): 移除 themes.dart 未使用 import
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 22:06:46 +08:00 |
|
wangjia
|
82d1e860a7
|
feat(client): main 接入可切换三主题(启动恢复持久化选择)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 22:00:59 +08:00 |
|
wangjia
|
d743bb04b6
|
feat(client): 主题选择 controller + SharedPreferences 持久化
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 21:46:51 +08:00 |
|
wangjia
|
48b9340219
|
feat(client): context.tokens 取色扩展
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 21:44:03 +08:00 |
|
wangjia
|
ede33c8bf5
|
feat(client): 三套 ThemeData 构建(挂 AppTokens,B 为 dark)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 21:40:51 +08:00 |
|
wangjia
|
a95a4ac86b
|
feat(client): codegen 单源生成三主题 AppTokens(禁手写 hex)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 21:36:22 +08:00 |
|
wangjia
|
1ac2632c45
|
feat(client): 新增 AppTokens ThemeExtension 类型
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-24 21:30:31 +08:00 |
|