Commit Graph
100 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
wuzilongandCursor 27d69f1af9 fix(pl): hide non-ETC vehicle recharge rows in list and get APIs
Force etc on reads so historical fuel data stays in DB but out of this module.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 08:45:36 +08:00
wuzilongandCursor 542ecc63e7 fix(pl): allow only etc recharge type in vehicle recharge schemas
Reject fuel writes so the shared module can be narrowed to ETC-only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 08:43:49 +08:00
wuzilongandCursor 00849bd998 docs(sql): narrow vehicle recharge menus to ETC-only labels
Rename ETC/fuel menus and soft-disable fuel dict for the ETC-only cutover.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 08:41:55 +08:00
wuzilongandCursor 72d372674a chore: archive mobile-h5 under bak for reference only.
Keep WeChat miniprogram as the primary mobile path; H5 remains available for lookup.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 08:09:41 +08:00
wuzilongandCursor f13eba5623 feat(miniprogram): migrate expense items and workflow admin from bx-mobile.
Enable mobile config of expense tree and advance/reimburse approval nodes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 23:42:16 +08:00
wuzilongandCursor 1bd0503409 feat(miniprogram): migrate invoice wallet mine and admin from bx-mobile.
Reuse invoice-wallets/invoices APIs with summary, upload, ledgers, and admin proxy upload.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 23:37:40 +08:00
wuzilongandCursor 4c24f58b63 feat(miniprogram): migrate mine and all application lists from bx-mobile.
Unify advance/reimburse browsing under workbench view menus with existing detail routes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 23:31:17 +08:00
wuzilongandCursor 006e94ad33 feat(miniprogram): migrate reimburse apply list/form/detail from bx-mobile.
Reuse /reimburses APIs with bx envelope; support multi-line details and draft actions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 23:25:58 +08:00
wuzilongandCursor 2ff754d572 feat(miniprogram): migrate advance apply list/form/detail from bx-mobile.
Reuse /advances APIs with bx envelope and Fresh Mint list/form styling.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 23:20:54 +08:00
wuzilongandCursor 507823dfce feat(miniprogram): add mobile bx menus and Batch1 placeholders.
Insert MINI_BX_* menus with mini:bx:* perms on test/prod, expose 9 workbench entries, and register placeholder pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 23:12:55 +08:00
wuzilongandCursor 279e405149 docs: add mini-program bx migration design from bx-mobile.
Document batched C-scope migration with mini:bx:* perms, vant-weapp styling, and API reuse.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 23:08:06 +08:00
wuzilongandCursor 16c55c0a4a feat(miniprogram): filter workbench menus by mobile menu permissions.
Hide weighbridge entries the current user is not granted via mini:db:* codes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 22:51:13 +08:00
wuzilongandCursor d3de3f5c45 feat(miniprogram): load menu-codes into user store.
Cache menuAll and menuCodes from /web/auth/menu-codes for workbench filtering.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 22:43:37 +08:00
wuzilongandCursor 106ace1ea9 feat(miniprogram): map workbench db menus to mini:db:* perms.
Add MENU_CODES auth path for workbench permission loading.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 22:43:06 +08:00
wuzilongandCursor a5a1c29f01 feat(miniprogram): add workbench menu permission filter helper.
Pure function filters modules by menuAll or mini:db:* menuCodes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 22:42:45 +08:00
wuzilongandCursor fd463c77eb feat(sql): add mini-program weighbridge menus under 移动端.
Insert MINI_DB_* menus with mini:db:* perms and grant them to 超级管理员 only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 22:42:21 +08:00
wuzilongandCursor d5923df26e docs: add mini-db mobile menu permission implementation plan.
Break down SQL grant, workbench filter helper, and store wiring into executable tasks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 22:38:13 +08:00
wuzilongandCursor fed3389ef1 docs: add mini-program weighbridge menu permission design.
Capture agreed decisions for mobile sys_menu under 移动端, mini:db:* perms, and workbench filtering via menu-codes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 22:36:38 +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
wuzilongandCursor ded6aeaa85 feat(pl): require contract package spec on plan stop save
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 18:01:33 +08:00
wuzilongandCursor ff96f2ec25 feat(pl): arrange-qty and overflow checks use product+package key
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 18:00:10 +08:00
wuzilongandCursor 2fc14b1291 feat(pl): key contract plan qty by product and package spec
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 17:52:57 +08:00
wuzilongandCursor 3e6ae41e4b docs: add implementation plan for plan product+package qty key.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 17:50:13 +08:00
wuzilongandCursor ff42d7fe77 docs: add design for plan contract qty keyed by product and package spec.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 17:47:49 +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 7579c36fc6 docs: add DB weighbridge date column sort implementation plan.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:34:33 +08:00
wuzilongandCursor 9e1862f4e7 docs: add DB weighbridge date column dual-caret sort design.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:31:35 +08:00
wuzilongandCursor 9ead177dc3 feat(bx): add datetime list sort helpers and get_paged order_by.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:14:30 +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 cf3c1e6609 docs: add implementation plan for BX date column sort.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:09:51 +08:00
wuzilongandCursor e33b56797a docs: add BX date column dual-caret sort design.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 22:07:29 +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 f14a96b28d feat(crm): support datetime column sort on contract list.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:45:52 +08:00
wuzilongandCursor 8f63430881 feat(crm): support datetime column sort on quote list.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:41:05 +08:00
wuzilongandCursor 72a8f97bd1 feat(crm): support datetime column sort on customer list.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:39:26 +08:00
wuzilongandCursor e6af68a2c3 feat(crm): add whitelist datetime list sort helper.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:37:35 +08:00
wuzilongandCursor b731c728a7 docs: add implementation plan for CRM date column sort.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:31:26 +08:00
wuzilongandCursor 302988f75c docs: add CRM date column dual-caret sort design and demo.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 21:28:41 +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 b4e59ab16b docs: add plan for cert ZIP on self-vehicle and personnel lists.
Cover shared pack core, personnel naming, and toolbar wiring for both pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:37:53 +08:00
wuzilongandCursor b84eec3c90 docs: extend cert batch ZIP design to self-vehicle and personnel lists.
Reuse the frontend JSZip approach with personnel name folders and shared toolbar entry.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:36:25 +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
wuzilongandCursor 65af6e6163 docs: add implementation plan for vehicle cert batch ZIP download.
Break the frontend JSZip approach into TDD tasks for helpers, blob fetch, packing, and toolbar wiring.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:17:05 +08:00
wuzilongandCursor 53a1bea890 docs: add vehicle cert batch ZIP download design and demo.
Capture the approved frontend JSZip approach for third-party vehicle list bulk certificate attachment download.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 20:14:32 +08:00
zlwu 54a1ba0c5c 提交 2026-09-03 13:50:25 +08:00
zlwuandCursor 67d37a1f0e chore: update graphify after transport address notes
Mark the notes-fill design as implemented and refresh backend/frontend graphs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 12:01:40 +08:00
zlwuandCursor d798ef55a7 feat(web-admin): manage transport address notes on library page
Expose notes in list, form, and view dialog for address master data.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 12:00:36 +08:00
zlwuandCursor bf5f6b66be feat(web-admin): edit address library notes in select dialog
Allow create/update of notes while picking an address for a plan stop.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:59:40 +08:00
zlwuandCursor 6021287c97 feat(web-admin): fill load/delivery notes from address when empty
Apply library notes only if the stop notes field is currently blank.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:59:29 +08:00
zlwuandCursor 9c3c53c705 feat(web-admin): pass address library notes through apply payload
Allow load/delivery sections to receive notes when an address is selected.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:59:09 +08:00
zlwuandCursor 22b92ea056 feat(pl): add notes column on transport address library
Persist address-level precautions for later fill into plan load/delivery notes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:58:17 +08:00
zlwuandCursor 86e668920c feat(web-admin): add resolveAddressNotesFill for address library notes
Encode empty-only fill rule for load/delivery notes when selecting an address.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:57:27 +08:00
zlwuandCursor 7f9516e63d docs: use pnpm exec tsx --test in address notes plan
Align frontend unit test commands with existing web-admin plan conventions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:56:09 +08:00
zlwuandCursor ed96976090 docs: add transport address notes fill implementation plan
Break the approved design into TDD-friendly tasks covering DDL, API, apply chain, and address UIs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:55:56 +08:00
zlwuandCursor 209f27606e docs: add transport address notes fill design
Capture the approved design for adding notes on pl_transport_address and filling load/delivery notes only when empty.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:53:22 +08:00
zlwuandCursor 585b731846 chore: update graphify after plan draft-save feature
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:43:47 +08:00
zlwuandCursor 3c7e3c69c5 feat(web-admin): add plan draft save UI and drafting follow-status filters
Rename pending tab to 待安排/草稿, default-select drafting, and add 暂存 with saveMode.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:42:23 +08:00
zlwuandCursor ae91fbc63e feat(backend): support saveMode draft/formal and drafting follow gates
Draft skips business validators and writes drafting; formal promotes drafting to pending_arrange; wait-notice/delete/force allow drafting.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:40:54 +08:00
zlwuandCursor f9cdb8852b feat(backend): add saveMode field on plan create-full and update schemas
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:39:17 +08:00
zlwuandCursor f28e82c1b3 feat(backend): add draft save helpers for plan follow status drafting
Introduce min-field validation and follow_status resolution for saveMode draft/formal.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:39:04 +08:00
zlwuandCursor 16c657b75e docs: add implementation plan for plan draft save / drafting status
Break the approved design into backend helpers, saveMode API, list tab filters, and form dialog tasks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:37:11 +08:00
zlwuandCursor 70c9de3618 docs: add transport plan draft/save design for drafting follow status
Capture approved decisions for 暂存 button, drafting status, list tab, and saveMode API so implementation can follow a single spec.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 11:33:05 +08:00
zlwu 1dfcc66d2c 提交 2026-09-02 08:20:52 +08:00
zlwuandCursor 506cc7991a feat(web-admin): viewport-fill list height for system manage menus
Wire 系统信息 lists (tenant/dict/menu/dept/role/user/post/operlog) and
临时存放 CRM lists under 系统管理 to useListTableViewportHeight, with
onActivated recalc for keep-alive pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 19:42:20 +08:00
zlwuandCursor f457d5e106 feat(web-admin): viewport-fill list height for workflow menus
Wire 流程配置、待办/已办中心、我的申请 and 请假申请 lists to
useListTableViewportHeight for sticky headers and viewport-fill scrolling.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 19:32:30 +08:00
zlwuandCursor c577edc597 feat(web-admin): viewport-fill list height for pl transport menus
Wire 运输管理 list pages (plans, IO orders, freight panels, vehicles,
personnel, and related lists) to useListTableViewportHeight so table body
scrolls with sticky header and pager stays near the content bottom.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 19:27:17 +08:00
zlwuandCursor 11185f066a feat(web-admin): viewport-fill list height for db weighbridge menus
Wire 地磅计划 and 地磅出入库 lists to useListTableViewportHeight (stats +
pager below the table wrap), matching 地磅单管理. Dashboard has no list.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 19:17:33 +08:00
zlwuandCursor 7ed3f26f9c feat(web-admin): viewport-fill list height for bx reimbursement menus
Wire remaining报销管理列表(审批/发放/付款/发票夹/费用项/流程/视图)to
useListTableViewportHeight so table body scrolls with sticky header and
pager stays ~10px above the content viewport bottom.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 19:14:01 +08:00
zlwuandCursor 6f7461d009 feat(web-admin): viewport-fill list height for CRM menu pages
Wire contract, quote, customer, product, and price-letter lists to useListTableViewportHeight.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 19:00:02 +08:00
zlwuandCursor 7f8cd18b4d chore: update web-admin graphify after viewport scroll changes
Keep the frontend knowledge graph in sync with new composables and list wiring.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 18:53:18 +08:00
zlwuandCursor 6e92bf49d8 fix(web-admin): recalc viewport table height on activate
Ensure order and weighing lists refresh table height after tab activation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 18:52:41 +08:00
zlwuandCursor fa48577a74 feat(web-admin): roll out viewport list height to more lists
Apply fill-viewport table height on demo product/order, bx mine, and db weighing.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 18:51:59 +08:00
zlwuandCursor b8efcca1cf docs: specify viewport-fill list table scrolling
Align Fresh Mint §7.6 and OpenSpec ui-conventions with the confirmed UX; include design and plan.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 18:47:48 +08:00
zlwuandCursor aef6927181 feat(web-admin): viewport-fill scroll on reimburse apply list
Wire ListTable height to the shared composable and stop double-scroll on wraps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 18:47:13 +08:00
zlwuandCursor 597fca416d feat(web-admin): use viewport table height on demo unit list
Pilot the fill-viewport list scroll pattern on the standard list template page.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 18:45:49 +08:00
zlwuandCursor 55ac1ebbf6 feat(web-admin): add useListTableViewportHeight composable
Measure content viewport, table top, and pager to drive el-table height.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 18:45:22 +08:00
zlwuandCursor 7d78f76129 feat(web-admin): add list table viewport height formula
Pure calc keeps pagination visible with a 10px bottom gap for main list scroll UX.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 18:45:15 +08:00