Files
shanxia2.0/web-admin/src/api/crm/contract/approval.ts
T
2026-08-22 09:08:05 +08:00

100 lines
2.7 KiB
TypeScript

/**
* 合同审批记录 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<string, any> {
const params: Record<string, any> = {
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<string, any> = {}) {
const { ids, columns, ...rest } = data
const body: Record<string, any> = {
...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) } : {}
})
}