68 lines
1.8 KiB
TypeScript
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
|
|
}
|