Commit Graph
81 Commits
Author SHA1 Message Date
zlwuandCursor 180b5cdaa7 chore(pl): remove unused inventory editable guard after force sync
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 19:45:39 +08:00
zlwuandCursor 4dde13e7d7 fix(pl): sync dibang inventory and weighing fields after rearrange
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 19:43:32 +08:00
zlwuandCursor cd64463c0a test(pl): expect dibang plate sync even after weighing
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 19:37:34 +08:00
zlwuandCursor 912b79a2ca docs: add plan-arrange upsert cascade implementation plan.
Break phase-1 dibang field sync and monthly-plan remount into TDD tasks; defer stop stable ids to the 2026-09-05 plan.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 19:33:51 +08:00
zlwuandCursor 410d293287 docs: add transport plan arrange upsert cascade design.
Capture confirmed rules for stable-id updates, dibang inventory/weighing field sync, and monthly plan remap on plan rearrange.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 19:28:15 +08:00
zlwuandCursor fbf830172f feat(crm): wire customer and pool list filters to column params.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 08:19:48 +08:00
zlwuandCursor 3bb905bc20 feat(crm): add customer list column filter builder.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 08:17:06 +08:00
zlwuandCursor f33b905f0d refactor(web-admin): generalize server column filter queryKey mapping.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 08:15:49 +08:00
zlwuandCursor 3ab447b735 docs: add implementation plan for CRM customer column filters.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 08:14:54 +08:00
zlwuandCursor 16d382e6aa docs: add design for CRM customer server-side column filters.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 08:13:48 +08:00
zlwuandCursor 55cbd1d3d2 feat(bx): server-side column filters on reimburse apply list.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 07:53:28 +08:00
zlwuandCursor 1604ffceb1 feat(web-admin): use fuzzy text input in column header filter.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 07:50:50 +08:00
zlwuandCursor e492cedab9 feat(web-admin): add useServerColumnFilters for list column queries.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 07:47:15 +08:00
zlwuandCursor 36afab503a feat(bx): wire reimburse my list and export to column filters.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 07:43:45 +08:00
zlwuandCursor e7054dc244 feat(bx): add shared reimburse list column filter builder.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 07:41:23 +08:00
zlwuandCursor e56e1c9144 docs: add implementation plan for reimburse server column filters.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 07:36:43 +08:00
zlwuandCursor 3fa1f8e312 docs: add design for reimburse apply server-side column filters.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-06 07:32:11 +08:00
zlwuandCursor 45ed795501 chore(pl): add script to remount orphaned transport dibang stop links.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:43:10 +08:00
zlwuandCursor 4e3c2a9ffb fix(pl): keep driver/site tokens stable on rearrange.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:41:32 +08:00
zlwuandCursor 2a9cc6084b fix(pl): drop accidental cert-perm guard from dibang upsert commit.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:40:48 +08:00
zlwuandCursor 68564c61f0 feat(pl): upsert dibang links by stop instead of revoke-and-rebuild.
Keep inventory ids across rearrange/plan edits; block cancel when weighing exists.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:40:29 +08:00
zlwuandCursor c90ff7c419 feat(web-admin): submit stable load/delivery/product ids on plan save.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:31:59 +08:00
zlwuandCursor 2e5b05f477 fix(pl): reject unknown plan product ids on upsert with 422.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:30:15 +08:00
zlwuandCursor 857067ec80 feat(pl): upsert plan product rows by id on update.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:24:43 +08:00
zlwuandCursor 6a7dfbcd38 feat(pl): upsert plan deliveries by stable id on save.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:18:06 +08:00
zlwuandCursor ca14bb7ca5 feat(pl): allow optional stop/product ids on plan write bodies.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:15:28 +08:00
zlwuandCursor 9e2f563a04 docs: add implementation plan for stable plan stop IDs and link reuse.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:14:33 +08:00
zlwuandCursor f8d0d10b2c docs: add design for stable plan stop IDs and in-place link reuse.
Captures brainstorming decisions so edits after arrange no longer break dibang/driver/site associations by regenerating stop UUIDs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 18:08:55 +08:00
zlwuandCursor 945bfcea54 feat(bx-mobile): bind and load reimburse apply attachments on save/edit
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 17:18:40 +08:00
zlwuandCursor 8d14909165 feat(bx-mobile): add optional apply-attachment uploader on reimburse apply
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 17:17:21 +08:00
zlwuandCursor 6adb3cee9d fix(bx): rename historical attachments label to apply attachments
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 17:16:05 +08:00
zlwuandCursor d373776526 feat(bx): bind reimburse apply attachments on save and submit
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 17:12:37 +08:00
zlwuandCursor 24aca104ad feat(bx): add apply-attachment upload UI on reimburse apply dialog
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 17:10:47 +08:00
zlwuandCursor 112ad31428 docs: add implementation plan for reimburse apply attachments
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 17:08:55 +08:00
zlwuandCursor 4b012923bf docs: add design for optional reimburse apply attachments
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 17:05:03 +08:00
zlwuandCursor f09399f5f0 fix(web-admin): prevent blank Word export from broken seal img tags
Self-closing slash before style produced invalid HTML that caused html-to-docx to emit an empty document.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 15:38:54 +08:00
zlwuandCursor 0dc7ce0de8 fix(web-admin): polish Word header layout and floating seals
Use float text rows for header meta without table borders; rewrite seal images to float over party fields while keeping title underlines.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 15:33:47 +08:00
zlwuandCursor da2f36af7f fix(web-admin): keep contract header meta side-by-side in Word export
Convert flex+absolute rows (供方/合同编号, 需方/签订地点) into borderless two-column tables before html-to-docx.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 15:26:31 +08:00
zlwuandCursor 57c2a37171 fix(web-admin): drop Word watermark and keep party columns side-by-side
Word export no longer injects watermarks; convert the flex 供方/需方 footer into a two-cell table so html-to-docx preserves left-right layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 15:21:10 +08:00
zlwuandCursor f872333df6 fix(web-admin): polyfill Buffer/global for contract Word export in Vite
html-to-docx still reads Node globals after Vite rebundles; inject buffer polyfill, map global to globalThis, and alias the package to the browser build.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 15:06:20 +08:00
zlwuandCursor 8bbc716d17 fix(web-admin): use html-to-docx browser build and inline images for Word export
Vite was resolving the Node ESM entry which needs Buffer/global; switch to the browser bundle and pre-convert images to data URLs so seals and watermarks embed.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 14:59:58 +08:00
zlwuandCursor deefdf7bb4 fix(web-admin): resolve html-to-docx default import interop for Word export
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 14:52:03 +08:00
zlwuandCursor 591736f11f feat(web-admin): add Generate Word on contract detail print dialog
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 14:50:00 +08:00
zlwuandCursor 9ac37d1196 feat(web-admin): add Generate Word on contract print dialog
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 14:44:36 +08:00
zlwuandCursor b078245fbc feat(web-admin): generate contract DOCX blob from prepared HTML
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 14:42:44 +08:00
zlwuandCursor 17b42dc06c feat(web-admin): add contract HTML prep helpers for Word export
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 14:38:23 +08:00
zlwuandCursor e2b676121a chore(web-admin): add @turbodocx/html-to-docx for contract Word export
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 14:35:23 +08:00
zlwuandCursor cf579284e7 docs: add implementation plan for contract Word export
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 14:33:47 +08:00
zlwuandCursor 32f51274eb docs: add design for contract print dialog Word export
Capture the agreed frontend HTML-to-DOCX approach for CRM contract print dialog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 14:30:40 +08:00
zlwuandCursor f43ef91d70 chore(web-admin): update frontend knowledge graph after plan tab sync
Refresh graphify outputs after handlePlanTypeTabChange arranged tab wiring.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-04 17:36:46 +08:00
zlwuandCursor 75d60c5b75 feat(web-admin): sync followStatus when switching to arranged plan tab
Mirror pending_arrange behavior so the arranged tab forces followStatus filter to arranged.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-04 17:36:34 +08:00
zlwuandCursor 01946dde8e feat(web-admin): add arranged tab to transport plan list filters
Insert「已安排」after「待安排」in PL_PLAN_LIST_TABS and map it to followStatus=arranged.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-04 17:34:34 +08:00
zlwuandCursor 87374f3976 docs: add implementation plan for transport plan arranged tab
Break the arranged-tab design into TDD utility steps and list-page filter sync.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-04 17:33:11 +08:00
zlwuandCursor a4e107b2e6 docs: add design for transport plan arranged tab
Record the approved design to insert an「已安排」list tab after「待安排」, filtering by followStatus=arranged.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-04 17:31:47 +08:00
zlwuandCursor 6bf4e7b249 fix(sql): avoid UUID collision in plan-archive price role backfill
MySQL may evaluate UUID() once per INSERT...SELECT, causing duplicate
primary keys when backfilling multiple sys_role_menu rows.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:53:06 +08:00
zlwuandCursor 7a5b8c3d96 chore: update graphify after plan-archive price permission
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:48:28 +08:00
zlwuandCursor b92418fa4a feat(web-admin): gate archive actions and price columns by menu codes
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:34:49 +08:00
zlwuandCursor af0ae031a5 feat(web-admin): split archive qty vs price display flags
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:33:04 +08:00
zlwuandCursor b47c809300 feat(backend): gate archive writes and mask plan prices by menu code
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:30:31 +08:00
zlwuandCursor ce70265c92 feat(backend): add plan archive price mask helpers
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:25:17 +08:00
zlwuandCursor 7fbfcffd43 chore(sql): add pl:plan-archive:price menu and backfill roles
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:21:12 +08:00
zlwuandCursor 27c1cbba15 docs: add plan-archive price permission implementation plan
Break the approved design into SQL, backend mask/API, and
web-admin permission wiring tasks with verification steps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:19:16 +08:00
zlwuandCursor 513d3b0fb3 docs: add plan-archive price permission design
Document button-level archive/price controls on the existing
transport plan archive page instead of a separate view module.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-03 16:16:13 +08:00
zlwu dd3bb3cf06 提交 2026-09-03 15:54:34 +08:00
zlwu d84f4b944c 提交 2026-06-29 11:15:39 +08:00
zlwuandCursor 493f8d6756 docs: 补充数据权限分批实施计划并更新知识图谱
记录 Phase 0–6 改造范围与 PR 切分建议,同步 backend/web-admin graphify 输出。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 21:00:35 +08:00
zlwuandCursor 98aec80d71 feat(pl): 运费结算审批分流与车辆挂车号等 PL 能力完善
拆分运费审批/出款页面,补充结算发票附件与菜单 SQL,并同步前后端模型与车辆相关展示。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 21:00:31 +08:00
zlwuandCursor 66d5a8714b feat(db): 地磅、操作日志与工作流补全数据权限过滤
DB 列表/仪表盘 scoped 聚合,操作日志按 user_id 过滤,工作流实例详情与审批前校验 scope。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 21:00:19 +08:00
zlwuandCursor 2905dc3d5f feat(bx): 报销模块接入数据权限过滤
新增 bx_data_scope 与 BxUserContext.to_user_info,列表/我的单据 AND scope,待办审批不加 scope,审批操作 skip_scope。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 21:00:18 +08:00
zlwuandCursor eff99edeea feat(pl): 运输计划模块接入数据权限过滤
新增 pl_data_scope 辅助,PL 列表/统计 apply_pl_scope,详情与改删 assert_pl_row_in_scope;运费结算待办审批 skip_scope。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 21:00:15 +08:00
zlwuandCursor bf73b6b2d8 feat(crm): 联系人、产品、报价与合同域接入数据权限过滤
补全 PR3 Phase 2.4–2.7,列表 apply_data_scope、详情/CUD assert_row_in_data_scope,合同/报价主表支持 owner_user_id。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 21:00:12 +08:00
zlwuandCursor ee531e9cfe feat(crm): 商机域接入数据权限过滤(PR3 Task 2.3)
主表列表/统计/看板/漏斗按 owner_user_id 过滤,CUD 与跟进/产品子表校验父商机 scope。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 20:33:05 +08:00
zlwuandCursor 3107d537f6 feat(crm): 客户与线索模块接入数据权限过滤
列表按 owner_user_id/create_by 过滤,详情与 CUD 校验 scope;公海客户列表保持租户内全员可见。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 20:30:41 +08:00
zlwuandCursor f5ab023ab5 feat(auth): 扩展数据权限核心能力并接入系统管理辅助接口
为 apply_data_scope 增加 owner_field 与行级校验,补充 DbUserContext.to_user_info() 及单元测试,并在用户/角色/字典下拉与用户详情接口生效。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 20:30:36 +08:00
zlwu cedb7ee681 提交 2026-06-21 12:56:33 +08:00
zlwu e46c0480d4 提交 2026-06-21 12:41:39 +08:00
zlwu 299609706c 提交 2026-06-21 09:19:07 +08:00
zlwu 725774ef0c 提交 2026-06-07 00:40:01 +08:00
zlwu f9676f8759 提交 2026-06-06 19:44:18 +08:00
zlwu 9b88581450 提交“ 2026-05-30 14:03:11 +08:00
zlwu 545ada33e5 first commit 2026-05-11 09:21:41 +08:00