让凭证数组与套餐作废任务进入可联调状态
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 7m52s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 7m52s
Constraint: 后端订单套餐作废接口使用 /api/admin/order-package-invalidate-tasks,上传 purpose 只能使用 attachment。 Rejected: 继续提交逗号拼接凭证字符串 | 新提交路径必须使用 string[],历史字符串只做读取归一化。 Confidence: high Scope-risk: broad Directive: 新增订单套餐作废权限时需同时配置菜单 URL 与 order_package_invalidate_task:create/detail 按钮权限。 Tested: bun run build;development 真实后端联调上传、创建、列表、详情通过;复机接口未触发。 Not-tested: 未逐一手工覆盖所有历史凭证数据、全部角色权限组合和所有文件扩展名预览
This commit is contained in:
@@ -31,7 +31,8 @@ export interface AgentRecharge {
|
||||
payment_channel: AgentRechargePaymentChannel
|
||||
payment_config_id: number | null
|
||||
payment_transaction_id: string
|
||||
payment_voucher_key?: string // 凭证 file_key(仅 offline 支付时有值)
|
||||
payment_voucher_key?: string[] | string // 凭证附件列表;历史数据可能为单字符串或逗号字符串
|
||||
remark?: string // 运营备注
|
||||
created_at: string
|
||||
paid_at: string | null
|
||||
completed_at: string | null
|
||||
@@ -63,7 +64,8 @@ export interface CreateAgentRechargeRequest {
|
||||
amount: number // 充值金额(单位:分),最小 1(即 ¥0.01)
|
||||
payment_method: AgentRechargePaymentMethod
|
||||
shop_id: number
|
||||
payment_voucher_key?: string // 线下支付凭证(payment_method=offline 时必填)
|
||||
payment_voucher_key?: string[] // 线下支付凭证附件列表(payment_method=offline 时必填)
|
||||
remark?: string // 运营备注,最多 1000 字
|
||||
}
|
||||
|
||||
// 确认线下充值请求
|
||||
|
||||
@@ -39,6 +39,8 @@ export interface UserInfo {
|
||||
enterprise_name?: string // 企业名称(可选)
|
||||
shop_id?: number // 店铺ID(可选)
|
||||
shop_name?: string // 店铺名称(可选)
|
||||
roles?: string[]
|
||||
permissions?: string[]
|
||||
}
|
||||
|
||||
// 获取用户信息响应数据 (GET /api/admin/me)
|
||||
|
||||
@@ -296,6 +296,7 @@ export interface IotCardImportTask {
|
||||
carrier_name: string // 运营商名称
|
||||
file_name: string // 文件名
|
||||
file_key?: string // 原始导入文件存储键
|
||||
creator_name?: string // 创建人姓名
|
||||
card_category?: CardCategory // 卡业务类型
|
||||
status: IotCardImportTaskStatus // 任务状态
|
||||
status_text: string // 任务状态文本
|
||||
@@ -343,6 +344,7 @@ export enum StandaloneCardStatus {
|
||||
|
||||
// 单卡查询参数
|
||||
export interface StandaloneCardQueryParams extends PaginationParams {
|
||||
keyword?: string // 通用关键字搜索
|
||||
has_active_package?: boolean // has active package filter
|
||||
carrier_name?: string // carrier name filter
|
||||
is_standalone?: boolean // standalone filter
|
||||
|
||||
@@ -14,6 +14,8 @@ export interface BaseResponse<T = any> {
|
||||
export interface PaginationParams {
|
||||
page?: number
|
||||
page_size?: number
|
||||
current?: number
|
||||
size?: number
|
||||
}
|
||||
|
||||
// 分页响应数据
|
||||
|
||||
@@ -217,6 +217,7 @@ export interface DeviceImportTask {
|
||||
batch_no: string // 批次号
|
||||
file_name: string // 文件名
|
||||
file_key?: string // 原始导入文件存储键
|
||||
creator_name?: string // 创建人姓名
|
||||
status: DeviceImportTaskStatus // 任务状态
|
||||
status_text: string // 任务状态文本
|
||||
total_count: number // 总数
|
||||
@@ -309,6 +310,7 @@ export interface SwitchCardRequest {
|
||||
|
||||
// 设置WiFi请求参数
|
||||
export interface SetWiFiRequest {
|
||||
card_no?: string // 设备资产标识
|
||||
enabled: boolean // 启用状态
|
||||
ssid: string // WiFi 名称(1-32字符)
|
||||
password: string // WiFi 密码(8-63字符)
|
||||
|
||||
@@ -33,6 +33,7 @@ export interface EnterprisePageResult {
|
||||
|
||||
// 查询企业客户列表参数
|
||||
export interface EnterpriseQueryParams {
|
||||
id?: number
|
||||
page?: number
|
||||
page_size?: number
|
||||
enterprise_name?: string
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
// 通用类型
|
||||
export * from './common'
|
||||
export * from './request'
|
||||
|
||||
// 认证相关
|
||||
export * from './auth'
|
||||
@@ -90,7 +91,16 @@ export * from './alert'
|
||||
export * from './pollingConcurrency'
|
||||
|
||||
// 轮询配置管理相关
|
||||
export * from './pollingConfig'
|
||||
export type {
|
||||
CardCategory as PollingCardCategory,
|
||||
CardCondition,
|
||||
PollingConfig,
|
||||
PollingConfigQueryParams,
|
||||
PollingConfigListResponse,
|
||||
CreatePollingConfigRequest,
|
||||
UpdatePollingConfigRequest,
|
||||
UpdatePollingConfigStatusRequest
|
||||
} from './pollingConfig'
|
||||
|
||||
// 手动触发相关
|
||||
export * from './manualTrigger'
|
||||
@@ -100,3 +110,6 @@ export * from './pollingMonitor'
|
||||
|
||||
// 导出任务相关
|
||||
export * from './exportTask'
|
||||
|
||||
// 订单套餐批量作废任务相关
|
||||
export * from './orderPackageInvalidateTask'
|
||||
|
||||
@@ -83,7 +83,7 @@ export interface Order {
|
||||
seller_shop_id?: number | null // 销售店铺ID
|
||||
seller_shop_name?: string // 销售店铺名称
|
||||
items: OrderItem[] | null
|
||||
payment_voucher_key?: string // 支付凭证(线下支付时才有值)
|
||||
payment_voucher_key?: string[] | string // 支付凭证附件列表;历史数据可能为单字符串或逗号字符串
|
||||
created_at: string
|
||||
updated_at: string
|
||||
}
|
||||
@@ -123,7 +123,7 @@ export interface CreateOrderRequest {
|
||||
identifier?: string // 资产标识符(ICCID 或 VirtualNo)
|
||||
package_ids: number[] // 套餐ID列表(前端限制单选,后端支持1-10个)
|
||||
payment_method: OrderPaymentMethod // 支付方式
|
||||
payment_voucher_key?: string // 线下支付凭证(仅 offline 必填)
|
||||
payment_voucher_key?: string[] // 线下支付凭证附件列表(仅 offline 必填)
|
||||
}
|
||||
|
||||
// 创建订单响应 (返回订单详情)
|
||||
|
||||
64
src/types/api/orderPackageInvalidateTask.ts
Normal file
64
src/types/api/orderPackageInvalidateTask.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import type { BaseResponse, PaginationParams } from './common'
|
||||
|
||||
export enum OrderPackageInvalidateTaskStatus {
|
||||
PENDING = 1,
|
||||
PROCESSING = 2,
|
||||
COMPLETED = 3,
|
||||
FAILED = 4
|
||||
}
|
||||
|
||||
export interface OrderPackageInvalidateTaskQueryParams extends PaginationParams {
|
||||
status?: OrderPackageInvalidateTaskStatus
|
||||
}
|
||||
|
||||
export interface OrderPackageInvalidateFailedItem {
|
||||
line: number
|
||||
order_no: string
|
||||
reason: string
|
||||
}
|
||||
|
||||
export interface OrderPackageInvalidateTask {
|
||||
id: number
|
||||
task_no: string
|
||||
status: OrderPackageInvalidateTaskStatus
|
||||
status_text?: string
|
||||
status_name?: string
|
||||
total_count: number
|
||||
success_count: number
|
||||
fail_count: number
|
||||
skip_count?: number
|
||||
file_name: string
|
||||
file_key?: string
|
||||
voucher_keys?: string[]
|
||||
remark?: string
|
||||
creator_name?: string
|
||||
error_message?: string
|
||||
created_at: string
|
||||
started_at?: string | null
|
||||
completed_at?: string | null
|
||||
}
|
||||
|
||||
export interface OrderPackageInvalidateTaskDetail extends OrderPackageInvalidateTask {
|
||||
failed_items?: OrderPackageInvalidateFailedItem[] | null
|
||||
}
|
||||
|
||||
export interface OrderPackageInvalidateTaskListResponse {
|
||||
items: OrderPackageInvalidateTask[]
|
||||
page: number
|
||||
page_size: number
|
||||
total: number
|
||||
total_pages?: number
|
||||
}
|
||||
|
||||
export interface CreateOrderPackageInvalidateTaskRequest {
|
||||
file_key: string
|
||||
file_name: string
|
||||
voucher_keys?: string[]
|
||||
remark?: string
|
||||
}
|
||||
|
||||
export type OrderPackageInvalidateTaskListApiResponse =
|
||||
BaseResponse<OrderPackageInvalidateTaskListResponse>
|
||||
export type OrderPackageInvalidateTaskDetailApiResponse =
|
||||
BaseResponse<OrderPackageInvalidateTaskDetail>
|
||||
export type CreateOrderPackageInvalidateTaskApiResponse = BaseResponse<OrderPackageInvalidateTask>
|
||||
@@ -26,7 +26,7 @@ export interface Refund {
|
||||
actual_received_amount?: number | null // 实收金额(分)
|
||||
status: RefundStatus
|
||||
refund_reason: string
|
||||
refund_voucher_key?: string // 退款凭证 file_key,多个以英文逗号分隔
|
||||
refund_voucher_key?: string[] | string // 退款凭证附件列表;历史数据可能为单字符串或逗号字符串
|
||||
reject_reason: string
|
||||
remark: string
|
||||
asset_reset: boolean
|
||||
@@ -64,7 +64,7 @@ export interface CreateRefundRequest {
|
||||
order_id: number
|
||||
requested_refund_amount: number // 申请退款金额(分)
|
||||
actual_received_amount: number // 实收金额(分)
|
||||
refund_voucher_key: string // 退款凭证对象存储 file_key,多个以英文逗号分隔
|
||||
refund_voucher_key: string[] // 退款凭证附件列表
|
||||
refund_reason?: string
|
||||
}
|
||||
|
||||
@@ -83,6 +83,7 @@ export interface RejectRefundRequest {
|
||||
export interface ResubmitRefundRequest {
|
||||
requested_refund_amount?: number
|
||||
actual_received_amount?: number
|
||||
refund_voucher_key?: string[]
|
||||
refund_reason?: string
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ export interface ShopResponse {
|
||||
|
||||
// 店铺列表查询参数
|
||||
export interface ShopQueryParams extends PaginationParams {
|
||||
id?: number // 店铺ID
|
||||
shop_name?: string // 店铺名称模糊查询
|
||||
shop_code?: string // 店铺编号模糊查询
|
||||
parent_shop_name?: string // 上级店铺名称模糊查询
|
||||
|
||||
@@ -2,6 +2,18 @@
|
||||
export * from './api'
|
||||
export * from './common'
|
||||
export * from './component'
|
||||
export * from './store'
|
||||
export type {
|
||||
UserInfo as StoreUserInfo,
|
||||
SystemThemeType,
|
||||
SystemThemeTypes,
|
||||
MenuThemeType,
|
||||
SettingState,
|
||||
WorkTab,
|
||||
UserState,
|
||||
SettingStoreState,
|
||||
WorkTabState,
|
||||
MenuState,
|
||||
RootState
|
||||
} from './store'
|
||||
export * from './router'
|
||||
export * from './config'
|
||||
|
||||
Reference in New Issue
Block a user