fix: 新增代理系列授权-建议售价使用套餐
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m38s

This commit is contained in:
sexygoat
2026-06-12 10:41:37 +08:00
parent d23e896f97
commit e04a283319
98 changed files with 4279 additions and 6170 deletions

View File

@@ -5,6 +5,7 @@
当前后台“资产信息”页还没有消费接口新增的 `gateway_extend` 字段,因此运营人员无法在资产详情中直接看到运营商侧实际停机原因。
最新接口契约已经补充两类返回:
- 设备资产的绑定卡列表项新增 `gateway_extend`
- 卡资产详情新增 `gateway_extend`

View File

@@ -33,15 +33,19 @@
## Decisions
- Decision: 能力名称使用 `payment-configuration-management`,而不是沿用页面路径中的 `wechat-config`
- Rationale: 该能力已经覆盖微信、小程序、公众号、支付宝和富友相关字段,业务边界明显大于“微信配置”。
- Decision: `provider_type` 在本次 spec 中严格按文档限定为 `wechat``wechat_v2``fuiou`
- Rationale: 这是文档明确枚举出的渠道主类型spec 不应凭猜测新增 `alipay`
- Decision: `ali_*` 字段在本次 spec 中被视为支付配置对象支持的可选扩展字段,但不单独引入新的 `provider_type`
- Rationale: 文档已经明确给出这些字段;在没有更正枚举之前,先把它们作为统一字段模型的一部分记录下来。
- Decision: 所有读取响应中的敏感信息都必须采用脱敏或配置状态标记,不能返回明文密钥
- Rationale: 文档的详情和当前生效配置示例已经给出了 `***``已配置``未配置` 这类语义。
- Decision: 更新接口采用部分更新语义,只要求提交实际需要修改的字段
@@ -50,6 +54,7 @@
## Risks / Trade-offs
- 风险: 当前前端类型定义尚未覆盖 `ali_*` 字段,按 spec 对齐后会触发类型和页面联动修改。
- Mitigation: 实施时先调整 `src/types/api/wechatConfig.ts`,再逐步修改列表、表单和详情展示。
- 风险: 文档没有给出“如何切换当前生效配置”的写接口,只有 `is_active` 状态和 `/active` 查询接口。

View File

@@ -5,6 +5,7 @@
当前后台设备管理和企业设备授权流程还没有完整接入新的设备激活状态字段,导致运营人员无法按“已激活 / 未激活”筛选设备,也无法在资产详情中直接看到设备激活状态名称。
最新接口契约补充了以下内容:
- 设备列表接口新增可选过滤参数 `activation_status`
- 设备列表与资产解析相关响应新增 `activation_status_name`
- 企业设备授权弹窗中的可选设备列表也需要沿用这套激活状态筛选与展示规则

View File

@@ -26,7 +26,7 @@
```typescript
export enum ExchangeFlowType {
SHIPPING = 'shipping', // 物流换货
DIRECT = 'direct' // 直接换货
DIRECT = 'direct' // 直接换货
}
export const EXCHANGE_FLOW_TYPE_MAP = {
@@ -47,6 +47,7 @@ export const EXCHANGE_FLOW_TYPE_MAP = {
**Rationale**: 符合 Element Plus 表单最佳实践,避免不必要的字段提交。
**Alternatives considered**:
- 使用 `v-show` 隐藏:会导致隐藏字段仍参与表单验证
- 使用动态表单项:增加复杂度,不够直观
@@ -55,16 +56,16 @@ export const EXCHANGE_FLOW_TYPE_MAP = {
在详情页组件中定义计算属性:
```typescript
const canShip = computed(() =>
exchange.value.flow_type === 'shipping' && exchange.value.status === 2
const canShip = computed(
() => exchange.value.flow_type === 'shipping' && exchange.value.status === 2
)
const canComplete = computed(() =>
exchange.value.flow_type === 'shipping' && exchange.value.status === 3
const canComplete = computed(
() => exchange.value.flow_type === 'shipping' && exchange.value.status === 3
)
const canCancel = computed(() =>
exchange.value.flow_type === 'shipping' && [1, 2].includes(exchange.value.status)
const canCancel = computed(
() => exchange.value.flow_type === 'shipping' && [1, 2].includes(exchange.value.status)
)
```
@@ -78,6 +79,7 @@ const canCancel = computed(() =>
- **原因**: direct 类型这些字段为 null显示空白区块或"不适用"会造成页面冗余
**Alternatives considered**:
- 显示"不适用"占位:增加不必要的视觉噪音
- 显示空区块:用户体验不佳
@@ -105,6 +107,7 @@ const flowType = exchange.flow_type || 'shipping'
引入流程类型后,详情页的条件渲染逻辑增多。
**Mitigation**:
- 使用计算属性封装权限判断逻辑
- 添加单元测试覆盖不同流程类型的渲染场景