saiadmin-artd/src/views/water/enterprises/index.vue 为独立企业客户页,替代通用 WaterWorkspace。布局包含四张经营统计卡、条件筛选、六行分页表格、客户增长及转化漏斗;详情提供档案、分规格权益/库存、公司人数和最近十笔购水订单。编辑继续复用高德地图选点。
GET /core/water/enterprises/dashboard:统计、图表、代理选项及分页列表。GET /core/water/enterprises/detail?id=...:企业详情。POST /core/water/enterprises/export:全部匹配客户的 XLSX,最多 50000 条,防公式注入。POST /core/water/enterprises/batch-status:ids(1–100 个)、status(1 启用、2 停用),事务全成功或全回滚;重复提交不重复记审计。POST /core/water/enterprises;支持已有 agent_id 字段,0 表示直营。停用代理不可新分配,原关联允许保留;省略字段不清空原关联。查询和导出要求 water:enterprises:read,档案与批量操作要求 water:enterprises:write;控制器每次重新校验账号及角色权限。
DeviceStatusPolicy,15 分钟内上报且无故障计在线;没有上报计未接入。created_at DESC, id DESC 取最新已登记线下收款,不依据前端样例数字。控制器采用薄控制器/应用服务门面分层,仅负责鉴权、解析请求和返回响应。WaterEnterpriseDashboard 组织查询及批量事务;EnterpriseFilters 是查询值对象;EnterpriseReplenishmentPolicy 是补货状态策略。全部数据通过 Eloquent 业务模型访问,WaterEnterprise 定义代理、账户、订单、设备关系。
账户、设备、有效任务先按企业聚合再关联,避免多个一对多关系导致权益和库存被重复累计。无表结构迁移,查询不改业务记录;批量启停不改变权益、库存或已存在配送任务。
php -d extension=mbstring tests/water_enterprise_dashboard_test.php --http:68 项通过,覆盖多规格汇总、在线边界、补货优先级、筛选分页、统计口径、代理校验、批量事务/审计、导出和权限;测试数据均回滚,HTTP 只读查询及导出。
原 tests/water_business_test.php 69 项通过;前端 vue-tsc、ESLint、Stylelint 和 Vite 生产构建通过,已更新 saiadmin-artd/dist。浏览器工具返回 unsupported Codex auth method: apikey,未完成浏览器交互及截图对照验收。