Commit Graph
376 Commits
Author SHA1 Message Date
wuzilongandCursor 9968fc72a3 docs: add ETC-only vehicle recharge design/plan and refresh graphify
Persist the approved cutover spec and implementation plan; sync graphs after the ETC-only changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 08:50:12 +08:00
wuzilongandCursor 9a8dd691d8 chore(web-admin): update recharge column filter comments for ETC-only
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 08:48:17 +08:00
wuzilongandCursor 62d46d6e57 chore: update graphify after ETC-only vehicle recharge cutover
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 08:48:14 +08:00
wuzilongandCursor f13e18329a fix(web-admin): rename ETC recharge menus and drop fuel type option
Align UI with ETC-only scope; list filtering is enforced by the backend.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 08:46:49 +08:00
wuzilong 8e87c7d576 提交 2026-09-11 21:19:52 +08:00
wuzilong 83192719b0 提交 2026-09-11 09:41:09 +08:00
wuzilongandCursor 166e5735df chore: update graphify after plan product+package key
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 18:09:47 +08:00
wuzilongandCursor 6548316644 fix(web-admin): allow same product with different packages on delivery stop
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 18:08:02 +08:00
wuzilongandCursor 39161e43e4 feat(web-admin): plan form package UI keyed by product and package spec
Contract-bound stop products use package options from the contract, arrange-qty
cache/API include packageSpec, and save validates required package selections.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 18:06:52 +08:00
wuzilong 05559def40 提交 2026-09-09 13:03:02 +08:00
wuzilongandCursor 4529166e16 fix(web-admin): prevent duplicate date sort carets on CRM column headers.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:55:08 +08:00
wuzilongandCursor 45a6fc5cc5 feat(pl): add datetime column dual-caret sort on scoped transport lists.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:50:35 +08:00
wuzilongandCursor 100b0880f0 feat(db): add datetime column dual-caret sort on inventory and weighing lists.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:36:55 +08:00
wuzilongandCursor 5410bf8836 feat(web-admin): show dual carets on ColumnHeaderFilter datetime columns.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:13:31 +08:00
wuzilongandCursor 9dca19a2e4 chore: update graphify after CRM date column sort.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:54:12 +08:00
wuzilongandCursor 626f91d4a8 feat(crm): wire date column sort on contract manage and approval lists.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:51:35 +08:00
wuzilongandCursor 381ece40df feat(crm): wire date column sort on quote manage and approval lists.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:50:15 +08:00
wuzilongandCursor a2d1de4c41 feat(crm): wire date column sort on customer list page.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:49:05 +08:00
wuzilongandCursor 23d23d0b86 feat(web-admin): show dual carets on CRM datetime column headers.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:48:05 +08:00
wuzilongandCursor 58b5d9d7de feat(web-admin): add useColumnSort for CRM date headers.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:47:37 +08:00
wuzilongandCursor d1c85ec5b8 chore: update graphify after personnel/self-vehicle cert zip.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:40:47 +08:00
wuzilongandCursor 2357c46e4d feat(pl): add cert batch ZIP download on personnel lists.
Wire third-party and Shanxia escort/driver lists to personnel cert zip packing.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:40:06 +08:00
wuzilongandCursor 6d8e5578c9 feat(pl): add cert batch ZIP download on self-vehicle list.
Reuse vehicle cert zip packing on the Shanxia owned-vehicle toolbar.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:39:37 +08:00
wuzilongandCursor 55abe614f8 feat(pl): add personnel cert zip packing and shared pack core.
Extract packAndSaveCertZip for reuse; keep vehicle API; name folders with _2 on collisions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:38:43 +08:00
wuzilongandCursor a4a272d842 chore: update web-admin graphify after vehicle cert zip utils.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:27:47 +08:00
wuzilongandCursor a6dff669d4 feat(pl): add toolbar batch ZIP download for vehicle certs.
Wire selected rows to frontend JSZip packing on the third-party vehicle list.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:26:46 +08:00
wuzilongandCursor 31ef9d4053 feat(pl): pack selected vehicle cert attachments into zip.
Add JSZip builder with concurrency, injectable fetch/save for tests, and multi-vehicle folders.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:25:27 +08:00
wuzilongandCursor e07af251c0 feat(web-admin): add fetchAttachmentBlob for zip packing.
Reuse attachment download-url flow to load file bytes without triggering anchor download.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:21:54 +08:00
wuzilongandCursor 8d3062a5af feat(pl): add vehicle cert zip naming and collect helpers.
Pure functions for toolbar batch ZIP: plate folders, 主·/挂· labels, and collision-safe paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:19:50 +08:00
zlwu b6485f3b6c 提交 2026-09-07 10:34:41 +08:00
zlwu 7f05162fd1 提交 2026-09-06 20:44:56 +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 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 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 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 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