import { useMessage } from '@eciol/ant-ui'; import { request } from '@eciol/request'; import { blobToJson, downloadByData, replaceVariables } from '@eciol/shared'; import { FilterJson } from '@/api'; import { useUserStoreWithOut } from '@/store/modules/user'; import { generateFileName } from '@/utils'; import type { ReceivablesService } from './typing'; enum Api { GetReceivablesList = '/api/Receivable/QueryPage', ExportReceivables = '/api/Receivable/{orgId}/export-non-check', SubmitReceivables = '/api/Receivable/SubmitReceivable', ApproveReceivables = '/api/Receivable/ApproveReceivable', ReversalReceivables = '/api/Receivable/ReversalReceivable', } /** * 获取收款单列表 * @param data */ function getReceivablesList(data: ReceivablesService.GetReceivablesListParams) { const { getCompanyId } = useUserStoreWithOut(); return request.post( { url: Api.GetReceivablesList, data: { ...data, orgId: getCompanyId }, }, { showLoading: true, }, ); } /** * 应收单导出 * @param data */ async function exportReceivables(data: FilterJson['filtersConditions']) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportReceivables, { orgId: getCompanyId }), data, responseType: 'blob', }, { showLoading: true, successMessage: '导出成功', successMessageMode: 'message', isTransformResponse: false, }, ); if (_data.type === 'application/json') { const result = await blobToJson(_data); createMessage.error(result.message); return false; } downloadByData(_data, generateFileName({ fileName: 'Receivables', suffix: 'xlsx' })); createMessage.success('导出成功'); } /** * 提交审核 * @param ids */ function submitReceivables(ids: number[]) { return request.post( { url: Api.SubmitReceivables, data: { ids }, }, { showLoading: true, loadingTip: 'EMPTY', successMessage: '提交审核成功', successMessageMode: 'message', }, ); } /** * 审核应收单 * @param ids */ function approvalReceivables(ids: number[]) { return request.post( { url: Api.ApproveReceivables, data: { ids }, }, { showLoading: true, loadingTip: 'EMPTY', successMessage: '审核成功', successMessageMode: 'message', }, ); } /** * 审核应收单 * @param ids */ function reversalReceivables(ids: number[]) { return request.post( { url: Api.ReversalReceivables, data: { ids }, }, { showLoading: true, loadingTip: 'EMPTY', successMessage: '红冲成功', successMessageMode: 'message', }, ); } export { approvalReceivables, exportReceivables, getReceivablesList, reversalReceivables, submitReceivables, }; export type { ReceivablesService } from './typing';