diff --git a/src/api/cost/cost.js b/src/api/cost/cost.js index e86b8411..d0e2b730 100644 --- a/src/api/cost/cost.js +++ b/src/api/cost/cost.js @@ -292,5 +292,50 @@ export function viewRepairCodeApi(query) { }) } +// 查询历史报表列表(按年月) +export function getHistoryReportList(query) { + return request({ + url: '/material/slt_agreement_info/getHistoryReportList', + method: 'get', + params: query + }) +} + +// 查询历史租赁费用详情 +export function getHistoryLeaseCostDetails(query) { + return request({ + url: '/material/slt_agreement_info/getHistoryLeaseCostDetails', + method: 'get', + params: query + }) +} + +// 查询历史维修费用详情 +export function getHistoryRepairCostDetails(query) { + return request({ + url: '/material/slt_agreement_info/getHistoryRepairCostDetails', + method: 'get', + params: query + }) +} + +// 查询历史丢失费用详情 +export function getHistoryLoseCostDetails(query) { + return request({ + url: '/material/slt_agreement_info/getHistoryLoseCostDetails', + method: 'get', + params: query + }) +} + +// 查询历史报废费用详情 +export function getHistoryScrapCostDetails(query) { + return request({ + url: '/material/slt_agreement_info/getHistoryScrapCostDetails', + method: 'get', + params: query + }) +} + diff --git a/src/views/material/cost/component/unreportHome.vue b/src/views/material/cost/component/unreportHome.vue index bd041d5d..dc319dd5 100644 --- a/src/views/material/cost/component/unreportHome.vue +++ b/src/views/material/cost/component/unreportHome.vue @@ -27,6 +27,7 @@ 重置 导出Excel 批量导出ZIP + 查看历史报表 @@ -330,6 +331,209 @@ 关闭 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -339,7 +543,7 @@ import { getUnitList, getAgreementInfoById, getUnitListFilterTeam, } from '@/api/back/index.js' -import {getSltList, costExamine, getSltReportedList, getSltReportList} from '@/api/cost/cost' +import {getSltList, costExamine, getSltReportedList, getSltReportList, getHistoryReportList, getHistoryLeaseCostDetails, getHistoryRepairCostDetails, getHistoryLoseCostDetails, getHistoryScrapCostDetails} from '@/api/cost/cost' import { toChineseAmount } from '@/utils/bonus.js' import vueEasyPrint from "vue-easy-print"; import Treeselect from "@riophae/vue-treeselect"; @@ -421,6 +625,22 @@ export default { costDetailTitle: '', costDetailList: [], costDetailType: '', // 当前查看的费用类型 + // 历史报表相关 + historyReportDialogVisible: false, + historyReportListVisible: false, + historyReportLoading: false, + historyReportTitle: '', + historyReportList: [], + historyReportParams: { + yearMonth: null, + }, + // 历史费用详情相关 + historyCostDetailVisible: false, + historyCostDetailLoading: false, + historyCostDetailTitle: '', + historyCostDetailList: [], + historyCostDetailType: '', // 当前查看的历史费用类型 + currentHistoryRow: {}, // 当前选中的历史报表行 } }, created() { @@ -1018,6 +1238,127 @@ export default { return leaseCost + repairCost + loseCost + scrapCost - reductionCost; }, + // 显示历史报表选择弹窗 + showHistoryReportDialog() { + this.historyReportParams.yearMonth = null; + this.historyReportDialogVisible = true; + }, + + // 查询历史报表 + queryHistoryReport() { + if (!this.historyReportParams.yearMonth) { + this.$message.error('请选择年月'); + return; + } + + this.historyReportLoading = true; + const params = { + yearMonth: this.historyReportParams.yearMonth + }; + + getHistoryReportList(params).then((response) => { + this.historyReportList = response.rows || []; + this.historyReportTitle = `${this.historyReportParams.yearMonth}历史报表`; + this.historyReportDialogVisible = false; + this.historyReportListVisible = true; + this.historyReportLoading = false; + }).catch(() => { + this.historyReportLoading = false; + }); + }, + + // 显示历史费用详情 + showHistoryCostDetail(row, costType) { + this.currentHistoryRow = row; + const costTypeMap = { + 'lease': '租赁费用', + 'repair': '维修费用', + 'lose': '丢失费用', + 'scrap': '报废费用' + }; + + this.historyCostDetailTitle = `${costTypeMap[costType]}详情 - ${row.agreementCode}`; + this.historyCostDetailType = costType; + this.historyCostDetailVisible = true; + this.historyCostDetailLoading = true; + this.historyCostDetailList = []; + + // 根据费用类型调用不同的接口 + const params = { + agreementId: row.agreementId, + yearMonth: this.historyReportParams.yearMonth + }; + + let apiCall; + switch (costType) { + case 'lease': + apiCall = getHistoryLeaseCostDetails(params); + break; + case 'repair': + apiCall = getHistoryRepairCostDetails(params); + break; + case 'lose': + apiCall = getHistoryLoseCostDetails(params); + break; + case 'scrap': + apiCall = getHistoryScrapCostDetails(params); + break; + default: + this.historyCostDetailLoading = false; + return; + } + + apiCall.then((response) => { + const sourceList = response.rows || []; + + // 根据不同费用类型处理数据 + this.historyCostDetailList = sourceList.map(item => { + const baseData = { + name: item.typeName || '', + model: item.modelName || '', + unit: item.mtUnitName || '', + cost: item.costs || 0, + costType: costType + }; + + // 根据费用类型添加特定字段 + if (costType === 'lease') { + return { + ...baseData, + unitPrice: item.leasePrice || 0, + quantity: item.num || 0, + returnQuantity: item.backNum || 0, + leaseDate: item.startTime || '', + returnDate: item.endTime || '', + days: item.leaseDays || 0 + }; + } else if (costType === 'repair') { + return { + ...baseData, + repairQuantity: item.num || 0, + partType: item.partType + }; + } else if (costType === 'lose') { + return { + ...baseData, + loseQuantity: item.num || 0 + }; + } else if (costType === 'scrap') { + return { + ...baseData, + scrapQuantity: item.num || 0 + }; + } + + return baseData; + }); + + this.historyCostDetailLoading = false; + }).catch(() => { + this.historyCostDetailLoading = false; + }); + }, + }, }