fetch(add): 订单管理-企业设备
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 3m30s

This commit is contained in:
sexygoat
2026-01-29 15:43:45 +08:00
parent 1812b7a6c4
commit 841cf0442b
58 changed files with 8948 additions and 1164 deletions

View File

@@ -478,3 +478,24 @@ export interface IotCardDetailResponse {
created_at: string // 创建时间
updated_at: string // 更新时间
}
// ========== 批量设置卡的套餐系列绑定相关 ==========
// 批量设置卡的套餐系列绑定请求参数
export interface BatchSetCardSeriesBindingRequest {
iccids: string[] // ICCID列表最多500个
series_allocation_id: number // 套餐系列分配ID0表示清除关联
}
// 卡套餐系列绑定失败项
export interface CardSeriesBindingFailedItem {
iccid: string // ICCID
reason: string // 失败原因
}
// 批量设置卡的套餐系列绑定响应
export interface BatchSetCardSeriesBindingResponse {
success_count: number // 成功数量
fail_count: number // 失败数量
failed_items: CardSeriesBindingFailedItem[] | null // 失败详情列表
}

View File

@@ -119,7 +119,6 @@ export interface CreateWithdrawalSettingParams {
min_withdrawal_amount: number // 最低提现金额(分)
fee_rate: number // 手续费比率(基点,100=1%)
daily_withdrawal_limit: number // 每日提现次数限制
arrival_days: number // 到账天数
}
// ==================== 佣金记录相关 ====================
@@ -248,3 +247,50 @@ export interface ShopCommissionSummaryPageResult {
size: number
total: number
}
// ==================== 我的佣金统计相关 ====================
/**
* 我的佣金统计查询参数
*/
export interface MyCommissionStatsQueryParams {
shop_id?: number // 店铺ID
start_time?: string // 开始时间
end_time?: string // 结束时间
}
/**
* 我的佣金统计响应
*/
export interface MyCommissionStatsResponse {
cost_diff_amount: number // 成本价差收入(分)
cost_diff_count: number // 成本价差笔数
cost_diff_percent: number // 成本价差占比(千分比)
one_time_amount: number // 一次性佣金收入(分)
one_time_count: number // 一次性佣金笔数
one_time_percent: number // 一次性佣金占比(千分比)
tier_bonus_amount: number // 梯度奖励收入(分)
tier_bonus_count: number // 梯度奖励笔数
tier_bonus_percent: number // 梯度奖励占比(千分比)
total_amount: number // 总收入(分)
total_count: number // 总笔数
}
/**
* 我的每日佣金统计查询参数
*/
export interface MyDailyCommissionStatsQueryParams {
shop_id?: number // 店铺ID
start_date?: string // 开始日期YYYY-MM-DD
end_date?: string // 结束日期YYYY-MM-DD
days?: number // 查询天数默认30天最大365天
}
/**
* 每日佣金统计项
*/
export interface DailyCommissionStatsItem {
date: string // 日期YYYY-MM-DD
total_amount: number // 当日总收入(分)
total_count: number // 当日总笔数
}

View File

@@ -29,11 +29,25 @@ export interface PaginationData<T> {
pages?: number
}
// 新版分页响应数据(使用 list 字段)
export interface PaginationDataV2<T> {
list: T[] // 新版API使用 list 字段
total: number
page_size: number
page: number
total_pages: number // 总页数
}
// 分页响应
export interface PaginationResponse<T = any> extends BaseResponse {
data: PaginationData<T>
}
// 新版分页响应(使用 list 字段)
export interface PaginationResponseV2<T = any> extends BaseResponse {
data: PaginationDataV2<T>
}
// 列表响应
export interface ListResponse<T = any> extends BaseResponse {
data: T[]

View File

@@ -202,3 +202,25 @@ export interface DeviceImportTaskDetail extends DeviceImportTask {
failed_items: DeviceImportResultItem[] | null // 失败记录详情
skipped_items: DeviceImportResultItem[] | null // 跳过记录详情
}
// ========== 批量设置设备的套餐系列绑定相关 ==========
// 批量设置设备的套餐系列绑定请求参数
export interface BatchSetDeviceSeriesBindingRequest {
device_ids: number[] // 设备ID列表最多500个
series_allocation_id: number // 套餐系列分配ID0表示清除关联
}
// 设备套餐系列绑定失败项
export interface DeviceSeriesBindingFailedItem {
device_id: number // 设备ID
device_no: string // 设备号
reason: string // 失败原因
}
// 批量设置设备的套餐系列绑定响应
export interface BatchSetDeviceSeriesBindingResponse {
success_count: number // 成功数量
fail_count: number // 失败数量
failed_items: DeviceSeriesBindingFailedItem[] | null // 失败详情列表
}

View File

@@ -0,0 +1,89 @@
/**
* 企业设备授权相关类型定义
*/
import { PaginationParams } from '@/types'
// ==================== 企业设备列表相关 ====================
/**
* 企业设备列表项
*/
export interface EnterpriseDeviceItem {
device_id: number // 设备ID
device_no: string // 设备号
device_name: string // 设备名称
device_model: string // 设备型号
card_count: number // 绑定卡数量
authorized_at: string // 授权时间
}
/**
* 企业设备列表查询参数
*/
export interface EnterpriseDeviceListParams extends PaginationParams {
device_no?: string // 设备号(模糊搜索)
}
/**
* 企业设备列表分页结果
*/
export interface EnterpriseDevicePageResult {
list: EnterpriseDeviceItem[] | null // 设备列表
total: number // 总数
}
// ==================== 授权设备相关 ====================
/**
* 授权设备请求参数
*/
export interface AllocateDevicesRequest {
device_nos: string[] | null // 设备号列表最多100个
remark?: string // 授权备注
}
/**
* 已授权设备项
*/
export interface AuthorizedDeviceItem {
device_id: number // 设备ID
device_no: string // 设备号
card_count: number // 绑定卡数量
}
/**
* 失败设备项
*/
export interface FailedDeviceItem {
device_no: string // 设备号
reason: string // 失败原因
}
/**
* 授权设备响应
*/
export interface AllocateDevicesResponse {
success_count: number // 成功数量
fail_count: number // 失败数量
authorized_devices: AuthorizedDeviceItem[] | null // 已授权设备列表
failed_items: FailedDeviceItem[] | null // 失败项列表
}
// ==================== 撤销授权相关 ====================
/**
* 撤销设备授权请求参数
*/
export interface RecallDevicesRequest {
device_nos: string[] | null // 设备号列表最多100个
}
/**
* 撤销设备授权响应
*/
export interface RecallDevicesResponse {
success_count: number // 成功数量
fail_count: number // 失败数量
failed_items: FailedDeviceItem[] | null // 失败项列表
}

View File

@@ -29,8 +29,23 @@ export * from './shop'
// 网卡相关
export * from './card'
// 套餐相关
export * from './package'
// 套餐相关(旧)- 为避免冲突,保留旧类型但使用别名
export type {
PackageStatus,
PackageType as OldPackageType,
PackageSeries as OldPackageSeries,
Package,
PackageQueryParams as OldPackageQueryParams,
PackageSeriesQueryParams as OldPackageSeriesQueryParams,
PackageSeriesFormData,
PackageFormData,
PackageAssignParams,
PackageChangeRecord,
PackageAssignRecord
} from './package'
// 套餐管理系统相关(新)
export * from './packageManagement'
// 设备相关
export * from './device'
@@ -53,5 +68,11 @@ export * from './authorization'
// 企业卡授权相关
export * from './enterpriseCard'
// 企业设备授权相关
export * from './enterpriseDevice'
// 运营商相关
export * from './carrier'
// 订单相关
export * from './order'

90
src/types/api/order.ts Normal file
View File

@@ -0,0 +1,90 @@
/**
* 订单管理相关类型定义
*/
// 支付状态枚举
export enum PaymentStatus {
PENDING = 1, // 待支付
PAID = 2, // 已支付
CANCELLED = 3, // 已取消
REFUNDED = 4 // 已退款
}
// 订单类型
export type OrderType = 'single_card' | 'device'
// 买家类型
export type BuyerType = 'personal' | 'agent'
// 订单支付方式
export type OrderPaymentMethod = 'wallet' | 'wechat' | 'alipay'
// 订单佣金状态
export enum OrderCommissionStatus {
NOT_APPLICABLE = 0, // 不适用
PENDING = 1, // 待结算
SETTLED = 2 // 已结算
}
// 订单明细
export interface OrderItem {
id: number
package_id: number
package_name: string
quantity: number
unit_price: number // 单价(分)
amount: number // 小计金额(分)
}
// 订单响应
export interface Order {
id: number
order_no: string
order_type: OrderType
buyer_id: number
buyer_type: BuyerType
payment_status: PaymentStatus
payment_status_text: string
payment_method: OrderPaymentMethod
total_amount: number // 订单总金额(分)
paid_at: string | null
commission_status: OrderCommissionStatus
commission_config_version: number
device_id: number | null
iot_card_id: number | null
items: OrderItem[] | null
created_at: string
updated_at: string
}
// 订单查询参数
export interface OrderQueryParams {
page?: number
page_size?: number
payment_status?: PaymentStatus
order_type?: OrderType
order_no?: string
start_time?: string
end_time?: string
dateRange?: string[] | any // For date range picker in UI
}
// 订单列表响应
export interface OrderListResponse {
items: Order[]
page: number
page_size: number
total: number
total_pages: number
}
// 创建订单请求
export interface CreateOrderRequest {
order_type: OrderType
package_ids: number[]
iot_card_id?: number | null
device_id?: number | null
}
// 创建订单响应 (返回订单详情)
export type CreateOrderResponse = Order

View File

@@ -0,0 +1,332 @@
/**
* 套餐管理系统类型定义
* 使用下划线命名与后端 API 保持一致
*/
import { PaginationParams } from './common'
// ==================== 套餐系列管理 ====================
/**
* 套餐系列响应
*/
export interface PackageSeriesResponse {
id: number
series_code: string
series_name: string
description?: string
status: number // 1:启用, 2:禁用
created_at: string
updated_at: string
}
/**
* 套餐系列查询参数
*/
export interface PackageSeriesQueryParams extends PaginationParams {
series_name?: string // 系列名称(模糊搜索)
status?: number // 状态筛选
}
/**
* 创建套餐系列请求
*/
export interface CreatePackageSeriesRequest {
series_code: string // 系列编码,必填
series_name: string // 系列名称,必填
description?: string // 描述,可选
}
/**
* 更新套餐系列请求
*/
export interface UpdatePackageSeriesRequest {
series_code?: string
series_name?: string
description?: string
}
/**
* 更新套餐系列状态请求
*/
export interface UpdatePackageSeriesStatusRequest {
status: number // 1:启用, 2:禁用
}
// ==================== 套餐管理 ====================
/**
* 套餐响应
*/
export interface PackageResponse {
id: number
package_code: string
package_name: string
series_id: number
series_name?: string
package_type: string // 'formal':正式套餐, 'addon':加油包
data_type: string // 'real':真实流量, 'virtual':虚拟流量
real_data_mb: number // 真流量额度MB
virtual_data_mb: number // 虚流量额度MB
duration_months: number // 有效期(月)
price: number // 价格(分)
shelf_status: number // 上架状态 (1:上架, 2:下架)
status: number // 状态 (1:启用, 2:禁用)
description?: string
created_at: string
updated_at: string
}
/**
* 套餐查询参数
*/
export interface PackageQueryParams extends PaginationParams {
package_name?: string // 套餐名称(模糊搜索)
series_id?: number // 系列ID
package_type?: string // 套餐类型
data_type?: string // 流量类型
shelf_status?: number // 上架状态
status?: number // 状态
}
/**
* 创建套餐请求
*/
export interface CreatePackageRequest {
package_code: string // 套餐编码,必填
package_name: string // 套餐名称,必填
series_id: number // 所属系列ID必填
package_type: string // 套餐类型,必填
data_type: string // 流量类型,必填
real_data_mb: number // 真流量额度MB必填
virtual_data_mb: number // 虚流量额度MB必填
duration_months: number // 有效期(月),必填
price: number // 价格(分),必填
description?: string // 描述,可选
}
/**
* 更新套餐请求
*/
export interface UpdatePackageRequest {
package_code?: string
package_name?: string
series_id?: number
package_type?: string
data_type?: string
real_data_mb?: number
virtual_data_mb?: number
duration_months?: number
price?: number
description?: string
}
/**
* 更新套餐状态请求
*/
export interface UpdatePackageStatusRequest {
status: number // 1:启用, 2:禁用
}
/**
* 更新套餐上架状态请求
*/
export interface UpdatePackageShelfStatusRequest {
shelf_status: number // 1:上架, 2:下架
}
/**
* 系列下拉选项响应
*/
export interface SeriesSelectOption {
id: number
series_name: string
series_code: string
}
// ==================== 代理可售套餐 ====================
/**
* 我的可售套餐响应
*/
export interface MyPackageResponse {
id: number
package_code: string
package_name: string
series_id: number
series_name: string
package_type: string
data_type: string
real_data_mb: number // 真流量额度MB
virtual_data_mb: number // 虚流量额度MB
duration_months: number
price: number // 套餐原价(分)
cost_price: number // 成本价(分)
suggested_retail_price: number // 建议售价(分)
profit_margin: number // 利润空间(分)
price_source: string // 价格来源:'series_pricing':系列加价, 'package_override':单套餐覆盖
shelf_status: number
status: number
description?: string
created_at: string
updated_at: string
}
/**
* 我的可售套餐查询参数
*/
export interface MyPackageQueryParams extends PaginationParams {
series_id?: number // 系列ID筛选
package_type?: string // 套餐类型筛选
}
/**
* 我的被分配系列响应
*/
export interface MySeriesAllocationResponse {
id: number // 分配ID
series_id: number
series_code: string
series_name: string
pricing_mode: string // 定价模式:'fixed':固定金额, 'percent':百分比
pricing_value: number // 定价值
allocator_shop_name: string // 分配者店铺名称
package_count: number // 可售套餐数量
status: number
created_at: string
}
// ==================== 单套餐分配 ====================
/**
* 单套餐分配响应
*/
export interface ShopPackageAllocationResponse {
id: number
package_id: number
package_code: string
package_name: string
shop_id: number
shop_name: string
cost_price: number // 覆盖的成本价(分)
calculated_cost_price: number // 原计算成本价(分,供参考)
allocation_id?: number // 关联的系列分配ID
status: number // 1:启用, 2:禁用
created_at: string
updated_at: string
}
/**
* 单套餐分配查询参数
*/
export interface ShopPackageAllocationQueryParams extends PaginationParams {
shop_id?: number // 店铺ID筛选
package_id?: number // 套餐ID筛选
status?: number // 状态筛选
}
/**
* 创建单套餐分配请求
*/
export interface CreateShopPackageAllocationRequest {
package_id: number // 套餐ID必填
shop_id: number // 店铺ID必填
cost_price: number // 覆盖的成本价(分),必填
}
/**
* 更新单套餐分配请求
*/
export interface UpdateShopPackageAllocationRequest {
cost_price: number // 只允许修改成本价
}
/**
* 更新单套餐分配状态请求
*/
export interface UpdateShopPackageAllocationStatusRequest {
status: number // 1:启用, 2:禁用
}
// ==================== 套餐系列分配 ====================
/**
* 基础返佣配置
*/
export interface BaseCommissionConfig {
mode: 'fixed' | 'percent' // 返佣模式:'fixed':固定金额, 'percent':百分比
value: number // 返佣值:固定金额(分)或百分比的千分比(如200表示20%)
}
/**
* 梯度档位配置
*/
export interface TierEntry {
threshold: number // 阈值(销量或销售额)
mode: 'fixed' | 'percent' // 返佣模式
value: number // 返佣值
}
/**
* 梯度返佣配置
*/
export interface TierCommissionConfig {
period_type: 'monthly' | 'quarterly' | 'yearly' // 周期类型
tier_type: 'sales_count' | 'sales_amount' // 梯度类型:销量或销售额
tiers: TierEntry[] // 梯度档位数组
}
/**
* 套餐系列分配响应
*/
export interface ShopSeriesAllocationResponse {
id: number
series_id: number
series_name: string
shop_id: number
shop_name: string
allocator_shop_id: number // 分配者店铺ID
allocator_shop_name: string // 分配者店铺名称
base_commission: BaseCommissionConfig // 基础返佣配置
enable_tier_commission: boolean // 是否启用梯度返佣
tier_config?: TierCommissionConfig // 梯度返佣配置(可选)
status: number // 1:启用, 2:禁用
created_at: string
updated_at: string
}
/**
* 套餐系列分配查询参数
*/
export interface ShopSeriesAllocationQueryParams extends PaginationParams {
shop_id?: number // 店铺ID筛选
series_id?: number // 系列ID筛选
status?: number // 状态筛选
}
/**
* 创建套餐系列分配请求
*/
export interface CreateShopSeriesAllocationRequest {
series_id: number // 套餐系列ID必填
shop_id: number // 店铺ID必填
base_commission: BaseCommissionConfig // 基础返佣配置,必填
enable_tier_commission?: boolean // 是否启用梯度返佣可选默认false
tier_config?: TierCommissionConfig // 梯度返佣配置当enable_tier_commission为true时必填
}
/**
* 更新套餐系列分配请求
*/
export interface UpdateShopSeriesAllocationRequest {
base_commission?: BaseCommissionConfig // 基础返佣配置
enable_tier_commission?: boolean // 是否启用梯度返佣
tier_config?: TierCommissionConfig // 梯度返佣配置
}
/**
* 更新套餐系列分配状态请求
*/
export interface UpdateShopSeriesAllocationStatusRequest {
status: number // 1:启用, 2:禁用
}