From 9f6e267d43c265a93884a2476db15713252ebc05 Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 2 Jul 2026 08:10:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(M08-B):=20=E8=A1=A5=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- admin/src/App.vue | 10 +++++ .../components/CleaningSettlementsPanel.vue | 43 ++++++++++++++++++- docs/devlogs/2026-06-25-M08-B-保洁端.md | 11 ++++- docs/feature-status.md | 4 +- docs/module-status.md | 6 +-- scripts/check-admin-m08-b.mjs | 4 ++ 7 files changed, 71 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 5b1f652..46370c0 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ ## 目录 - `backend/`:Fastify + TypeScript 后端 API;若实际后端位于仓库根目录,以 `docs/repository-map.md` 为准 -- `admin/`:Vue3 后台管理端,已接入 M08-B 保洁运营工作台、待验收任务批量验收/驳回、协作者管理、任务详情照片预览、任务操作流水、任务详情协作分账、结算详情、待结算候选预览与导出、结算列表导出、统计明细、每日趋势、保洁员资料管理、微信绑定状态、保洁员选择器和任务/结算/统计筛选,必须适配桌面、平板和手机 +- `admin/`:Vue3 后台管理端,已接入 M08-B 保洁运营工作台、待验收任务批量验收/驳回、协作者管理、任务详情照片预览、任务操作流水、任务详情协作分账、结算详情、待结算候选预览与导出、结算列表导出、结算批量同步微信状态、统计明细、每日趋势、保洁员资料管理、微信绑定状态、保洁员选择器和任务/结算/统计筛选,必须适配桌面、平板和手机 - `miniapp/`:微信原生小程序 - `database/`:迁移、种子和兼容 SQL - `deploy/`:Nginx、PM2、EMQX 模板与部署版本 @@ -121,7 +121,7 @@ WSL 已验证:EMQX `5.8.9`、MQTTX CLI `1.13.0`、EMQX 服务 `active (running 项目已开发部分模块。具体完成度不得从 README 猜测,必须以现有代码、测试、数据库迁移、Git 历史以及 `docs/current-baseline.md`、`docs/module-status.md`、`docs/feature-status.md` 为准。 - 当前执行游标:`M08-B`(PARTIAL) -- 最近工程提交:`M08-B任务详情协作分账增量`,本轮补齐后台任务详情中的负责人/协作者分账明细。 +- 最近工程提交:`M08-B结算批量同步增量`,本轮补齐后台结算单多选批量同步微信转账状态。 - 下一工程目标:继续 M08-B,补更完整保洁运营管理界面。 ## 版本递进 diff --git a/admin/src/App.vue b/admin/src/App.vue index 130b6b8..dad9d7c 100644 --- a/admin/src/App.vue +++ b/admin/src/App.vue @@ -131,6 +131,7 @@ @confirm="handleConfirmSettlement" @transfer="handleTransfer" @sync-transfer="handleSyncTransfer" + @sync-transfer-many="handleSyncTransferMany" @failure="handleFailure" /> @@ -478,6 +479,15 @@ async function handleSyncTransfer(input: { settlementId: string; note?: string } }, '已同步微信状态'); } +async function handleSyncTransferMany(input: { settlementIds: string[]; note?: string }) { + await runAction(async () => { + for (const settlementId of input.settlementIds) { + await syncWechatTransfer(session.value, settlementId, input.note); + } + await Promise.all([loadSettlements(), loadStatistics()]); + }, `已批量同步 ${input.settlementIds.length} 个结算单`); +} + async function handleFailure( input: { settlementId: string; error: string; payoutReference?: string; note?: string } ) { diff --git a/admin/src/components/CleaningSettlementsPanel.vue b/admin/src/components/CleaningSettlementsPanel.vue index aef4cf0..8aa6593 100644 --- a/admin/src/components/CleaningSettlementsPanel.vue +++ b/admin/src/components/CleaningSettlementsPanel.vue @@ -34,6 +34,13 @@ 筛选
+ + 批量同步 + 导出 @@ -49,7 +56,14 @@
- + +