Files
one-pipe-system/src/views/finance/agent-recharge/agentRechargeActions.ts
luo 17d2eeebc5
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 6m55s
fix: 回调配置, 调整信用位置, 套餐
2026-07-29 18:20:42 +08:00

68 lines
1.8 KiB
TypeScript

import { AgentRechargeStatus, type AgentRecharge } from '@/types/api'
import { hasVoucherKeys } from '@/utils/business'
export interface AgentRechargeAction {
label: string
handler: () => void
type: 'primary' | 'danger'
}
interface BuildAgentRechargeActionsOptions {
hasAuth: (permission: string) => boolean
onViewPaymentVoucher: (row: AgentRecharge) => void
onConfirmPayment: (row: AgentRecharge) => void
onReject: (row: AgentRecharge) => void
}
export const buildAgentRechargeActions = (
row: AgentRecharge,
options: BuildAgentRechargeActionsOptions
): AgentRechargeAction[] => {
const actions: AgentRechargeAction[] = []
const hasApprovalRecord =
row.approval_provider === 'wecom' ||
row.approval_source === 'wecom' ||
row.approval_source === 'legacy' ||
(row.approval_instance_id !== undefined && row.approval_instance_id !== null)
if (
row.payment_method === 'offline' &&
hasVoucherKeys(row.payment_voucher_key) &&
options.hasAuth('agent_recharge:view_payment_voucher')
) {
actions.push({
label: '查看支付凭证',
handler: () => options.onViewPaymentVoucher(row),
type: 'primary'
})
}
if (
!hasApprovalRecord &&
row.status === AgentRechargeStatus.PENDING &&
row.payment_method === 'offline' &&
options.hasAuth('agent_recharge:confirm_payment')
) {
actions.push({
label: '确认支付',
handler: () => options.onConfirmPayment(row),
type: 'primary'
})
}
if (
!hasApprovalRecord &&
row.status === AgentRechargeStatus.PENDING &&
row.payment_method === 'offline' &&
options.hasAuth('agent_recharge:reject')
) {
actions.push({
label: '拒绝',
handler: () => options.onReject(row),
type: 'danger'
})
}
return actions
}