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'; import { generateFileName } from '@/utils'; import { KingdeeBalance } from './typing'; enum Api { GetKingdeeBalancePmList = '/api/KBPM/KBPMQueryPage', ExportKingdeeBalancePmList = '/api/KBPM/{orgid}/export-pmdata-check', ExportKingdeeBalancePmOther = '/api/KBPM/{orgid}/{kdmonth}/export-kdpmdata-check', GetKingdeeBalanceRelatedCostList = '/api/KBRelatedCost/KBRelatedCostQueryPage', ExportKingdeeBalanceRelatedCostList = '/api/KBRelatedCost/{orgid}/export-relateddata-check', ExportKingdeeBalanceRelatedCostOther = '/api/KBRelatedCost/{orgid}/{kdmonth}/export-kdrelateddata-check', GetKingdeeBalanceIncomeList = '/api/KBIncome/KBIncomeQueryPage', ExportKingdeeBalanceIncomeList = '/api/KBIncome/{orgid}/export-incomedata-check', ExportKingdeeBalanceIncomeOther = '/api/KBIncome/{orgid}/{kdmonth}/export-kdincomedata-check', GetKingdeeBalanceInterList = '/api/KBInter/KBInterQueryPage', ExportKingdeeBalanceInterList = '/api/KBInter/{orgid}/export-interdata-check', ExportKingdeeBalanceInterOther = '/api/KBInter/{orgid}/{kdmonth}/export-kdinterdata-check', ExportKingdeeBalanceInterFree = '/api/KBInter/{orgid}/{kdmonth}/export-kdinterfreedata-check', GetKingdeeBalanceCostList = '/api/KBCost/KBCostQueryPage', ExportKingdeeBalanceCostList = '/api/KBCost/{orgid}/export-costdata-check', ExportKingdeeBalanceCostOther = '/api/KBCost/{orgid}/{kdmonth}/export-kdcostdata-check', GetKingdeeBalanceExterList = '/api/KBExter/KBExterQueryPage', ExportKingdeeBalanceExterList = '/api/KBExter/{orgid}/export-exterdata-check', ExportKingdeeBalanceExterOther = '/api/KBExter/{orgid}/{kdmonth}/export-kdexterdata-check', ExportKingdeeBalanceExterFree = '/api/KBExter/{orgid}/{kdmonth}/export-kdexterfreedata-check', GetKingdeeBalanceExportMonthOptions = '/api/KBPublic/GetMonthList', GetMonthListByRevenueCarryover = '/api/KBPublic/GetMonthListByRevenueCarryover', GetMonthListByCostCarryover = '/api/KBPublic/GetMonthListByCostCarryover', } const getFileName = ({ data, name, isKingdeeExport, }: { data?: FilterJson['filtersConditions'] & { kdmonth?: string }; name?: string; isKingdeeExport?: boolean; } = {}) => { const month = data?.conditions?.find((item) => item.field === 'DataMonth'); let date = month ? (month.value as string[]).join('至') : ''; if (isKingdeeExport) { date = data?.kdmonth ?? ''; return `${name}-${date}`; } return `月收入及成本数-${name}${date ? '-' + date : ''}`; }; /** * 除结转其他获取时间 * @param data */ async function getKingdeeBalanceExportMonthOptions() { try { const data = await request.get( { url: Api.GetKingdeeBalanceExportMonthOptions, }, { isTransformResponse: false, }, ); return (data ?? []).map((item) => ({ label: item, value: item })); } catch { return []; } } /** * 结转收入时间 * @param data */ async function getMonthListByRevenueCarryover() { try { const data = await request.get( { url: Api.GetMonthListByRevenueCarryover, }, { isTransformResponse: false, }, ); return (data ?? []).map((item) => ({ label: item, value: item })); } catch { return []; } } /** * 结转成本时间 * @param data */ async function getMonthListByCostCarryover() { try { const data = await request.get( { url: Api.GetMonthListByCostCarryover, }, { isTransformResponse: false, }, ); return (data ?? []).map((item) => ({ label: item, value: item })); } catch { return []; } } /** * 获取金蝶数据pm列表 * @param data */ function getKingdeeBalancePmList(data) { const { getCompanyId } = useUserStoreWithOut(); return request.post( { url: Api.GetKingdeeBalancePmList, data: { orgId: getCompanyId, ...data }, }, { showLoading: true, }, ); } /** * 金蝶数据pm列表导出 */ async function exportKingdeeBalancePmList(data: FilterJson['filtersConditions']) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalancePmList, { orgid: getCompanyId }), responseType: 'blob', data, }, { 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: getFileName({ data, name: 'PM维度' }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 金蝶数据导出 [ 其他应付单_PM ] ( 含Early ) */ async function exportKingdeeBalancePmOther(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalancePmOther, { orgid: getCompanyId, kdmonth: data.kdmonth, }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '其他应付单_PM', isKingdeeExport: true }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 获取金蝶数据关联交易成本维度列表 * @param data */ function getKingdeeBalanceRelatedCostList(data) { const { getCompanyId } = useUserStoreWithOut(); return request.post( { url: Api.GetKingdeeBalanceRelatedCostList, data: { orgId: getCompanyId, ...data }, }, { showLoading: true, }, ); } /** * 金蝶数据关联交易成本维度列表导出 */ async function exportKingdeeBalanceRelatedCostList(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceRelatedCostList, { orgid: getCompanyId }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '关联交易成本维度', isKingdeeExport: false }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 金蝶数据关联交易成本维度列表导出 [ 应付单_关联交易 ] */ async function exportKingdeeBalanceRelatedCostOther(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceRelatedCostOther, { orgid: getCompanyId, kdmonth: data.kdmonth, }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '应付单_关联交易', isKingdeeExport: true }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 获取项目结转收入明细表 * @param data */ function getKingdeeBalanceIncomeList(data) { const { getCompanyId } = useUserStoreWithOut(); return request.post( { url: Api.GetKingdeeBalanceIncomeList, data: { orgId: getCompanyId, ...data }, }, { showLoading: true, }, ); } /** * 项目结转收入明细表导出 */ async function exportKingdeeBalanceIncomeList(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceIncomeList, { orgid: getCompanyId }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '项目结转收入明细表', isKingdeeExport: false }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 项目结转收入明细表导出 [ 应收单 ] ( 含Early ) */ async function exportKingdeeBalanceIncomeOther(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceIncomeOther, { orgid: getCompanyId, kdmonth: data.kdmonth, }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '应收单( 含Early )', isKingdeeExport: true }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 获取内部译员列表 * @param data */ function getKingdeeBalanceInterList(data) { const { getCompanyId } = useUserStoreWithOut(); return request.post( { url: Api.GetKingdeeBalanceInterList, data: { orgId: getCompanyId, ...data }, }, { showLoading: true, }, ); } /** * 内部译员列表导出 */ async function exportKingdeeBalanceInterList(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceInterList, { orgid: getCompanyId }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '内部译员维度', isKingdeeExport: false }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 内部译员列表导出 [ 其他应付单_内部译员 ] ( 含Early ) */ async function exportKingdeeBalanceInterOther(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceInterOther, { orgid: getCompanyId, kdmonth: data.kdmonth, }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '其他应付单_内部译员', isKingdeeExport: true }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 内部译员列表导出 [ 其他应付单_内部译员_免费项目] */ async function exportKingdeeBalanceInterFree(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceInterFree, { orgid: getCompanyId, kdmonth: data.kdmonth, }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '其他应付单_内部译员_免费项目', isKingdeeExport: true }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 获取项目结转成本明细表 * @param data */ function getKingdeeBalanceCostList(data) { const { getCompanyId } = useUserStoreWithOut(); return request.post( { url: Api.GetKingdeeBalanceCostList, data: { orgId: getCompanyId, ...data }, }, { showLoading: true, }, ); } /** * 项目结转成本明细表导出 */ async function exportKingdeeBalanceCostList(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceCostList, { orgid: getCompanyId }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '项目结转成本明细表', isKingdeeExport: false }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 项目结转成本明细表导出 [ 成本引入 ] ( 含Early ) */ async function exportKingdeeBalanceCostOther(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceCostOther, { orgid: getCompanyId, kdmonth: data.kdmonth, }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '成本引入', isKingdeeExport: true }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 获取外部译员列表 * @param data */ function getKingdeeBalanceExterList(data) { const { getCompanyId } = useUserStoreWithOut(); return request.post( { url: Api.GetKingdeeBalanceExterList, data: { orgId: getCompanyId, ...data }, }, { showLoading: true, }, ); } /** * 外部译员列表导出 */ async function exportKingdeeBalanceExterList(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceExterList, { orgid: getCompanyId }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '外部译员维度', isKingdeeExport: false }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 外部译员列表导出 [ 应付单_收费项目 ] */ async function exportKingdeeBalanceExterOther(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceExterOther, { orgid: getCompanyId, kdmonth: data.kdmonth, }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '应付单_收费项目', isKingdeeExport: true }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } /** * 外部译员列表导出 [ 应付单_免费项目] */ async function exportKingdeeBalanceExterFree(data) { const { createMessage } = useMessage(); const { getCompanyId } = useUserStoreWithOut(); const _data = await request.post( { url: replaceVariables(Api.ExportKingdeeBalanceExterFree, { orgid: getCompanyId, kdmonth: data.kdmonth, }), responseType: 'blob', data, }, { 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: getFileName({ data, name: '应付单_免费项目', isKingdeeExport: true }), suffix: 'xlsx', joinTime: false, joinUuid: false, }), ); createMessage.success('导出成功'); } export { exportKingdeeBalanceCostList, exportKingdeeBalanceCostOther, exportKingdeeBalanceExterFree, exportKingdeeBalanceExterList, exportKingdeeBalanceExterOther, exportKingdeeBalanceIncomeList, exportKingdeeBalanceIncomeOther, exportKingdeeBalanceInterFree, exportKingdeeBalanceInterList, exportKingdeeBalanceInterOther, exportKingdeeBalancePmList, exportKingdeeBalancePmOther, exportKingdeeBalanceRelatedCostList, exportKingdeeBalanceRelatedCostOther, getKingdeeBalanceCostList, getKingdeeBalanceExportMonthOptions, getKingdeeBalanceExterList, getKingdeeBalanceIncomeList, getKingdeeBalanceInterList, getKingdeeBalancePmList, getKingdeeBalanceRelatedCostList, getMonthListByCostCarryover, getMonthListByRevenueCarryover, };