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 { InvoiceIncomeService } from './typing'; enum Api { GetInvoiceIncomeList = '/api/InvoiceIncome/QueryPage', GetInvoiceIncomeDetail = '/api/InvoicePublic/{orgId}/{id}', ReturnInvoiceIncome = '/api/InvoiceIncome/ReturnPrevious', ExportInvoiceIncome = '/api/InvoiceIncome/{orgid}/export-non-check', GetInvoiceIncomePreview = '/api/InvoiceIncome/{orgId}/preview', GetInvoiceIncomePreviewEmail = '/api/InvoiceIncome/{orgId}/preview-email', InvoiceIncomeSendEmail = '/api/InvoiceIncome/{orgId}/send-email', } /** * 待核销发票列表 * @param data */ function getInvoiceIncomeList(data: InvoiceIncomeService.GetInvoiceIncomeListParams) { const { getCompanyId } = useUserStoreWithOut(); return request.post( { url: Api.GetInvoiceIncomeList, data: { ...data, orgId: getCompanyId }, }, { showLoading: true, }, ); } /** * 获取待核销发票详情 * @param id */ function getInvoiceIncomeDetail(id: number) { const { getCompanyId } = useUserStoreWithOut(); return request.get( { url: replaceVariables(Api.GetInvoiceIncomeDetail, { id, orgId: getCompanyId }), }, { showLoading: true, }, ); } /** * 待核销发票返回 * @param id */ function returnInvoiceIncome(id: number) { return request.post( { url: Api.ReturnInvoiceIncome, data: { id }, }, { showLoading: true, loadingTip: 'EMPTY', successMessage: '返回成功', successMessageMode: 'message', }, ); } /** * 待核销发票导出 */ async function exportInvoiceIncome(data: FilterJson['filtersConditions']) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportInvoiceIncome, { 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: 'Invoice-income', suffix: 'xlsx' })); createMessage.success('导出成功'); } /** * 预览待核销发票详情 * @param clientId * @param currencyId * @param ids * @param no */ function getInvoiceIncomePreview(clientId: number, currencyId: number, ids: string, no: string) { const { getCompanyId } = useUserStoreWithOut(); return request.get( { url: replaceVariables(Api.GetInvoiceIncomePreview, { orgId: getCompanyId }), params: { clientId, currencyId, ids, no }, }, { showLoading: true, }, ); } /** * 获取待核销发票预览Email * @param ids */ function getInvoiceIncomePreviewEmail(ids: string) { const { getCompanyId } = useUserStoreWithOut(); return request.get( { url: replaceVariables(Api.GetInvoiceIncomePreviewEmail, { orgId: getCompanyId }), params: { ids }, }, { showLoading: true, }, ); } /** * 发送Email * @param data * @constructor */ function sendInvoiceIncomeSendEmail(data: InvoiceIncomeService.GetInvoiceIncomePreviewEmail) { const { getCompanyId } = useUserStoreWithOut(); return request.post( { url: replaceVariables(Api.InvoiceIncomeSendEmail, { orgId: getCompanyId }), data, }, { showLoading: true, loadingTip: 'EMPTY', successMessage: '发送成功', successMessageMode: 'message', }, ); } export { exportInvoiceIncome, getInvoiceIncomeDetail, getInvoiceIncomeList, getInvoiceIncomePreview, getInvoiceIncomePreviewEmail, returnInvoiceIncome, sendInvoiceIncomeSendEmail, }; export type { InvoiceIncomeService } from './typing';