100 lines
2.7 KiB
TypeScript
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) } : {}
|
|
})
|
|
}
|