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

97 lines
2.7 KiB
TypeScript

/**
* 合同变更记录 API
*/
import request from '@/utils/http'
import type { ChangeForm, ChangeQuery, ChangeVO } from './types'
export type { ChangeForm, ChangeQuery, ChangeVO } from './types'
function unwrapData(res: any) {
return res?.data ?? res ?? {}
}
function mapListQuery(query: ChangeQuery = {}): Record<string, any> {
const params: Record<string, any> = {
pageNum: query.pageNum ?? 1,
pageSize: query.pageSize ?? 20
}
;['contractNo', 'contractName', 'changeType', 'approvalStatus', '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
}
function stringifyIds(ids: number | number[] | string | string[]) {
return Array.isArray(ids) ? ids.map(String).join(',') : String(ids)
}
const BASE = '/web/crm/contract/change'
export async function listChange(query: ChangeQuery) {
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 getChange(id: number | string) {
const data = await request.get({ url: `${BASE}/${String(id)}` })
return { data: unwrapData(data) as ChangeVO }
}
export function addChange(data: ChangeForm) {
return request.post({
url: BASE,
data: { ...data, id: data.id != null ? String(data.id) : undefined, contractId: String(data.contractId) }
})
}
export function updateChange(data: ChangeForm) {
return request.put({
url: BASE,
data: { ...data, id: data.id != null ? String(data.id) : undefined, contractId: String(data.contractId) }
})
}
export function delChange(ids: number | number[] | string | string[]) {
return request.del({ url: `${BASE}/${stringifyIds(ids)}` })
}
export function submitChangeApproval(data: {
id: number | string
approverIds: (number | string)[]
remark?: string
}) {
return request.post({
url: `${BASE}/submitApproval`,
data: {
id: String(data.id),
approverIds: data.approverIds.map(String),
remark: data.remark
}
})
}
export function withdrawChange(id: number | string) {
return request.put({ url: `${BASE}/withdraw/${String(id)}` })
}
export function executeChange(id: number | string) {
return request.put({ url: `${BASE}/execute/${String(id)}` })
}
export async function exportChange(data: Record<string, any> = {}) {
const { ids, columns, ...rest } = data
const body: Record<string, any> = {
...mapListQuery(rest as ChangeQuery),
...(ids ? { ids } : {}),
...(columns ? { columns } : {})
}
return request.post({
url: `${BASE}/export`,
data: body,
responseType: 'blob'
})
}