97 lines
2.7 KiB
TypeScript
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'
|
|
})
|
|
}
|