fix: 优化体验
Some checks failed
构建并部署前端到测试环境 / build-and-deploy (push) Failing after 3h10m20s

This commit is contained in:
sexygoat
2026-05-09 16:13:39 +08:00
parent b54d8f5b32
commit 28246f5345
17 changed files with 1684 additions and 255 deletions

View File

@@ -0,0 +1,207 @@
# 代理首页佣金展示 Spec
## 1. 背景
代理首页当前已经会请求 `getFundSummary()`,但佣金区域使用了 `v-if="isAgent && commissionSummary"`
这会带来两个问题:
- 只要 `commissionSummary` 为空,首页代理佣金模块就整块不显示
- 首页顶部还保留了“佣金概览”标题文案,这个文案本次不再需要
本次需求明确为:
- 首页里去掉“佣金概览”这个标题文案
- 只要当前账号是代理账号,就显示首页代理佣金区域
- 不管接口有没有值,模块都要显示
---
## 2. 目标
- 首页代理佣金区域的外层显示条件改为仅判断 `isAgent`
- 首页不再展示“佣金概览”标题
- 当佣金概览数据未返回、为空或请求失败时,佣金卡片仍然保留,金额位置显示占位内容
---
## 3. 范围
### 页面
- `src/pages/agent-system/home/index.vue`
### 用户
- 代理账号显示:`user_type === 3`
- 企业账号不显示:`user_type === 4`
---
## 4. 数据来源与约束
### 数据来源
- 接口:`GET /api/admin/shops/fund-summary`
- 方法:`getFundSummary()`
- 现有状态:`commissionSummary`
### 关键字段
| 字段 | 类型 | 说明 |
|------|------|------|
| `available_commission` | number | 可提现佣金,单位分 |
| `total_commission` | number | 累计佣金,单位分 |
| `withdrawn_commission` | number | 已提现佣金,单位分 |
| `frozen_commission` | number | 冻结佣金,单位分 |
### 约束
1. 首页不得新增新的佣金概览接口请求
2. 首页直接复用现有 `commissionSummary`
3. 本次不改后端接口、不改接口字段
---
## 5. 展示规则
### 5.1 外层显示条件
首页代理佣金区域显示条件改为:
- `isAgent === true`
不再要求:
- `commissionSummary` 必须有值
### 5.2 标题文案
首页移除“佣金概览”标题文案,包括:
- 不再在卡片上方展示“佣金概览”
- 保留卡片内部的“可提现佣金”主标题
### 5.3 金额展示
佣金卡片继续展示以下内容:
- `可提现佣金`
- `累计佣金`
- `已提现`
- `冻结`
展示规则:
- 有值时,按现有金额格式化规则显示
- 无值时,显示 `--`
- 不允许因为空值显示错误金额
### 5.4 今日佣金区域
“今日佣金”区域继续跟随代理佣金模块一起显示。
展示规则保持现状:
- 日期无值显示 `--`
- 佣金金额无值显示 `¥0.00`
- 订单笔数无值显示 `0`
- 无当日数据时显示“今日暂无佣金数据”
---
## 6. 交互与状态
### 6.1 跳转
点击佣金卡片后跳转到:
- `/pages/agent-system/commission-center/index`
### 6.2 加载态
`commissionSummary` 还未返回时:
- 佣金卡片仍然显示
- 金额区域显示 `--`
### 6.3 异常态
`getFundSummary()` 请求失败时:
- 佣金卡片仍然显示
- 金额区域显示 `--`
- 不影响首页其他模块渲染
---
## 7. 非目标
- 不修改佣金中心页面结构
- 不修改提现管理页面结构
- 不新增首页专用佣金接口
- 不修改企业账号首页展示逻辑
---
## 8. 验收标准
### 用例 1代理账号且接口有值
前置条件:
- `user_type === 3`
- `commissionSummary.available_commission = 85000`
期望:
- 首页显示代理佣金卡片
- 首页不显示“佣金概览”标题
- 主金额显示 `¥850.00`
### 用例 2代理账号但接口无值
前置条件:
- `user_type === 3`
- `commissionSummary = null`
期望:
- 首页仍显示代理佣金卡片
- `可提现佣金 / 累计佣金 / 已提现 / 冻结` 均显示 `--`
- 今日佣金区域仍显示
### 用例 3代理账号且接口失败
前置条件:
- `user_type === 3`
- `getFundSummary()` 请求失败
期望:
- 首页仍显示代理佣金卡片
- 金额不显示错误数据
- 页面其他内容正常渲染
### 用例 4企业账号
前置条件:
- `user_type === 4`
期望:
- 首页不显示代理佣金区域
### 用例 5不重复请求
前置条件:
- 首页已执行 `getFundSummary()`
期望:
- 不因本次需求新增第二次佣金接口请求
- 页面继续复用 `commissionSummary`

View File

@@ -0,0 +1,60 @@
1. 资产列表页面的IoT卡, 响应新增了返回了一个device_virtual_no这个字段
如果这个字段为空显示的就是未绑定设备, 如果是有值就显示已绑定设备
2.资产列表里面加一个店铺联级查询条件
/api/admin/iot-cards/standalone?shop_id=xxxx
# 店铺联级查询
## 基本信息
| 项目 | 内容 |
|------|------|
| 接口地址 | `GET /api/admin/shops/cascade` |
| 认证方式 | Bearer Token (JWT) |
| 所属模块 | 店铺管理 |
## 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| `shop_name` | string | 否 | 店铺名称(模糊查询),最大长度 100 |
| `parent_id` | integer | 否 | 上级店铺 ID不传则查询顶级店铺 |
## 响应参数
### 成功响应200
{
"code": 0,
"data": [
{
"id": 1,
"shop_name": "总店",
"has_children": true
},
{
"id": 2,
"shop_name": "分店 A",
"has_children": false
}
],
"msg": "success",
"timestamp": "2026-05-09T14:28:00Z"
}
#### DtoShopCascadeItem
| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | integer | 店铺 ID |
| `shop_name` | string | 店铺名称 |
| `has_children` | boolean | 是否有下级店铺 |
3. 资产列表是设备的情况下让默认选择的搜索类型是虚拟号, 并把这个虚拟号改成设备号, 然后那个选择搜索类型的不要了,如果是IoT卡的时候就是ICCID, 也不要那个选择搜索类型去掉
4. 在资产详情里面制造商,批次号字段去掉, 然后绑定的IoT卡里面电话改成MSISDN, 实名改显眼一点, 加一个运营商(carrier_name)返回里面有返回这个字段
5. 设备实时状态里面的下载流量,上传流量去掉.
6. 套餐列表里面的生肖中的那xxx至xxx 时间要明显一点
7. 创建时间和网关同步删掉, 把最后在线改成最后上线时间放到设备实时状态里面