/** * 合同审批记录 API */ import request from '@/utils/http' import type { ApprovalQuery, ApprovalVO } from './types' export type { ApprovalQuery, ApprovalVO } from './types' function unwrapData(res: any) { return res?.data ?? res ?? {} } function mapListQuery(query: ApprovalQuery = {}): Record { const params: Record = { pageNum: query.pageNum ?? 1, pageSize: query.pageSize ?? 20 } ;[ 'contractNo', 'contractName', 'approverName', 'approvalResult', 'beginTime', 'endTime' ].forEach((key) => { const val = (query as any)[key] if (val != null && val !== '') params[key] = val }) if (query.contractId != null) params.contractId = String(query.contractId) return params } const BASE = '/web/crm/contract/approval' export async function listApproval(query: ApprovalQuery) { const res = await request.get({ url: `${BASE}/list`, params: mapListQuery(query) }) const data = unwrapData(res) return { rows: data.list || data.rows || [], total: data.total ?? 0 } } export async function getApproval(id: number | string) { const data = await request.get({ url: `${BASE}/${String(id)}` }) return { data: unwrapData(data) as ApprovalVO } } export async function getContractApprovalFlow(contractId: number | string) { const data = await request.get({ url: `${BASE}/flow/${String(contractId)}` }) return { data: unwrapData(data) } } export function approvePass(data: { id: number | string; approvalOpinion?: string }) { return request.post({ url: `${BASE}/pass`, data: { id: String(data.id), approvalOpinion: data.approvalOpinion } }) } export function approveReject(data: { id: number | string; approvalOpinion: string }) { return request.post({ url: `${BASE}/reject`, data: { id: String(data.id), approvalOpinion: data.approvalOpinion } }) } export function approveTransfer(data: { id: number | string targetApproverId: number | string transferReason: string }) { return request.post({ url: `${BASE}/transfer`, data: { id: String(data.id), targetApproverId: String(data.targetApproverId), transferReason: data.transferReason } }) } export async function exportApproval(data: Record = {}) { const { ids, columns, ...rest } = data const body: Record = { ...mapListQuery(rest as ApprovalQuery), ...(ids ? { ids } : {}), ...(columns ? { columns } : {}) } return request.post({ url: `${BASE}/export`, data: body, responseType: 'blob' }) } export function refreshApproverNames(contractId?: string | number) { return request.post({ url: `${BASE}/refreshNames`, data: contractId ? { contractId: String(contractId) } : {} }) }