feat(pickup): 线下提号支持扩展字段店铺管理CRUD及时间筛选
- 线下提号创建表单扩展:增加「操作人」、「第三方单号」、「下单金额」、「押金金额」字段,重构弹窗布局为紧凑双列/三列金额卡片排布,消除过度垂直滚动并默认预填操作人 - 店铺管理 CRUD:新增 pickup_shops 配置表与配套 API,支持在提号页面直接管理店铺(增删改查、启用/禁用、筛选),下拉选项自动优先加载活跃配置店铺并兼顾历史店铺 - 列表时间范围筛选:增加精确到秒的「日期+时间」时间范围选择器,支持快捷时段与后端时间范围过滤 - 生产环境数据核查:只读提取线上全部 61 项历史提号店铺名称与单量分布,完整整理沉淀至实施文档供后续映射规则参考 - 验证方式:执行并通过全套端到端代码门禁(scripts/check.sh:SQL约束、go vet、go build、MySQL真实测试库单元测试及覆盖率、vue大小检查、prettier、eslint、vue-tsc及vite构建)
This commit is contained in:
@@ -19,12 +19,16 @@ export interface AdminPickup {
|
||||
owner_id: number
|
||||
owner_phone: string
|
||||
admin_id: number
|
||||
operator: string
|
||||
platform: string
|
||||
third_party_order_no: string
|
||||
shop_name: string
|
||||
account_source: PickupAccountSource
|
||||
source_channel: string
|
||||
settlement_mode: PickupSettlementMode
|
||||
listing_price_cent: number
|
||||
order_amount_cent: number
|
||||
deposit_amount_cent: number
|
||||
owner_price_cent: number
|
||||
website_profit_cent: number
|
||||
profit_amount_cent: number
|
||||
@@ -108,8 +112,12 @@ export interface AvailableListing {
|
||||
|
||||
export interface AdminPickupCreateRequest {
|
||||
listing_id: number
|
||||
operator?: string
|
||||
platform?: string
|
||||
third_party_order_no?: string
|
||||
shop_name?: string
|
||||
order_amount_cent?: number
|
||||
deposit_amount_cent?: number
|
||||
profit_amount_cent?: number
|
||||
remark?: string
|
||||
}
|
||||
@@ -147,6 +155,43 @@ export interface AdminPickupListQuery {
|
||||
shop_name?: string
|
||||
account_source?: PickupAccountSource | ''
|
||||
offline_settlement_status?: PickupOfflineSettlementStatus | ''
|
||||
operator?: string
|
||||
third_party_order_no?: string
|
||||
start_time?: string
|
||||
end_time?: string
|
||||
}
|
||||
|
||||
export interface PickupShop {
|
||||
id: number
|
||||
name: string
|
||||
platform: string
|
||||
status: 'active' | 'disabled'
|
||||
sort_order: number
|
||||
remark: string
|
||||
created_at: string
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
export interface PickupShopCreateRequest {
|
||||
name: string
|
||||
platform?: string
|
||||
status?: 'active' | 'disabled'
|
||||
sort_order?: number
|
||||
remark?: string
|
||||
}
|
||||
|
||||
export interface PickupShopUpdateRequest {
|
||||
name: string
|
||||
platform?: string
|
||||
status: 'active' | 'disabled'
|
||||
sort_order?: number
|
||||
remark?: string
|
||||
}
|
||||
|
||||
export interface PickupShopQuery {
|
||||
keyword?: string
|
||||
platform?: string
|
||||
status?: string
|
||||
}
|
||||
|
||||
function cleanParams(query: object) {
|
||||
@@ -270,3 +315,27 @@ export async function cancelAdminPickup(id: number, reason: string) {
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function fetchPickupShops(query: PickupShopQuery = {}) {
|
||||
const { data } = await apiClient.get<ApiResponse<PickupShop[]>>('/admin/pickups/shops', {
|
||||
params: cleanParams(query),
|
||||
})
|
||||
return Array.isArray(data.data) ? data.data : []
|
||||
}
|
||||
|
||||
export async function createPickupShop(req: PickupShopCreateRequest) {
|
||||
const { data } = await apiClient.post<ApiResponse<PickupShop>>('/admin/pickups/shops', req)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function updatePickupShop(id: number, req: PickupShopUpdateRequest) {
|
||||
const { data } = await apiClient.put<ApiResponse<PickupShop>>(`/admin/pickups/shops/${id}`, req)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function deletePickupShop(id: number) {
|
||||
const { data } = await apiClient.delete<ApiResponse<{ deleted: boolean }>>(
|
||||
`/admin/pickups/shops/${id}`
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user