|
|
@@ -1,7 +1,12 @@
|
|
|
<template>
|
|
|
<div class="app-container">
|
|
|
<div class="audit-controls">
|
|
|
- <el-form ref="auditForm" :model="auditForm" :rules="rules">
|
|
|
+ <el-form
|
|
|
+ ref="auditForm"
|
|
|
+ :model="auditForm"
|
|
|
+ :rules="rules"
|
|
|
+ :disabled="auditForm.surveyTemplateId !== ''"
|
|
|
+ >
|
|
|
<el-row>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="" prop="catalogId">
|
|
|
@@ -87,7 +92,12 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
- <el-button type="primary" size="small" @click="handleGenerateTemplate">
|
|
|
+ <el-button
|
|
|
+ v-if="!auditForm.surveyTemplateId"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ @click="handleGenerateTemplate"
|
|
|
+ >
|
|
|
生成核定表
|
|
|
</el-button>
|
|
|
<el-button type="primary" size="small" @click="handleSaveTemplate">
|
|
|
@@ -162,12 +172,9 @@
|
|
|
} from '@/api/costFormManage'
|
|
|
import {
|
|
|
getlistBySurveyTemplateId,
|
|
|
- batchDeleteCostVerifyForm,
|
|
|
- getlistBySurveyTemplateIdcurrentversion,
|
|
|
- batchSave,
|
|
|
- enable,
|
|
|
- getListFixedEnabled,
|
|
|
- listByVerifyTemplateId,
|
|
|
+ getVerifyTemplateDetail,
|
|
|
+ importExcel,
|
|
|
+ exportExcel,
|
|
|
} from '@/api/costVerifyManage'
|
|
|
import { getDetail } from '@/api/auditInitiation'
|
|
|
import { catalogMixin } from '@/mixins/useDict'
|
|
|
@@ -342,12 +349,7 @@
|
|
|
if (newVal) {
|
|
|
this.$nextTick(() => {
|
|
|
// 获取项目的详情数据
|
|
|
- getDetail({ id: newVal.projectId }).then((res) => {
|
|
|
- if (res.code === 200) {
|
|
|
- this.project = res.value
|
|
|
- this.auditForm.catalogId = res.value.catalogId
|
|
|
- }
|
|
|
- })
|
|
|
+ this.getDetail()
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
@@ -355,19 +357,24 @@
|
|
|
created() {
|
|
|
if (this.selectedProject && this.selectedProject.projectId) {
|
|
|
// 获取项目的详情数据
|
|
|
+ this.getDetail()
|
|
|
+ }
|
|
|
+ this.getActiveCostVerifyFormListByType()
|
|
|
+ this.getActiveCostVerifyFormList()
|
|
|
+ // this.handleGenerateTemplate1()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getDetail() {
|
|
|
+ // 获取项目的详情数据
|
|
|
getDetail({ id: this.selectedProject.projectId }).then((res) => {
|
|
|
if (res.code === 200) {
|
|
|
this.project = res.value
|
|
|
this.auditForm.catalogId = res.value.catalogId
|
|
|
+ // this.auditForm.surveyTemplateId = '9368f1cf-77e7-49fe-8502-4a7a2da99668'
|
|
|
this.loadTemplateDataForEdit()
|
|
|
}
|
|
|
})
|
|
|
- }
|
|
|
- this.getActiveCostVerifyFormListByType()
|
|
|
- this.getActiveCostVerifyFormList()
|
|
|
- // this.handleGenerateTemplate1()
|
|
|
- },
|
|
|
- methods: {
|
|
|
+ },
|
|
|
// 获取所有模板类型为固定表的所有启用成本调查表数据
|
|
|
getActiveCostVerifyFormListByType() {
|
|
|
getActiveCostVerifyFormListByType().then((res) => {
|
|
|
@@ -465,12 +472,12 @@
|
|
|
// 并行获取表头和表格数据
|
|
|
const [tableHeadersRes, tableDataRes] = await Promise.all([
|
|
|
getlistBySurveyTemplateId({
|
|
|
- surveyTemplateId: this.auditForm.surveyTemplateId,
|
|
|
taskId: this.selectedProject.taskId,
|
|
|
+ surveyTemplateId: this.auditForm.surveyTemplateId,
|
|
|
}),
|
|
|
getCostFormVersionsByTemplateId({
|
|
|
- surveyTemplateId: this.auditForm.surveyTemplateId,
|
|
|
taskId: this.selectedProject.taskId,
|
|
|
+ surveyTemplateId: '',
|
|
|
}),
|
|
|
])
|
|
|
// 处理表头数据
|
|
|
@@ -485,6 +492,16 @@
|
|
|
parseAndDisplayTableHeaders(res) {
|
|
|
this.tableHeadersRes = Array.isArray(res.value) ? res.value : []
|
|
|
if (this.tableHeadersRes.length > 0) {
|
|
|
+ this.auditForm.surveyTemplateId = res.value[0].surveyTemplateId
|
|
|
+ if (!this.auditForm.surveyTemplateId) {
|
|
|
+ getVerifyTemplateDetail({
|
|
|
+ id: this.auditForm.surveyTemplateId,
|
|
|
+ }).then((res) => {
|
|
|
+ this.auditForm.surveyTemplateName = res.value.surveyTemplateName
|
|
|
+ this.auditForm.catalogId = res.value.catalogId
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
// 表头按照orderNum重新排序
|
|
|
this.tableHeadersRes.sort((a, b) => a.orderNum - b.orderNum)
|
|
|
this.costAuditcolumn = [] // 清空现有列配置
|
|
|
@@ -503,7 +520,10 @@
|
|
|
label: '单位',
|
|
|
width: '80px',
|
|
|
})
|
|
|
- if (this.selectedProject.auditPeriod) {
|
|
|
+ // 检查tableHeadersRes数组是否包含年账面值
|
|
|
+ const hasBookValueColumn = this.checkHasBookValueColumn()
|
|
|
+
|
|
|
+ if (!hasBookValueColumn && this.selectedProject.auditPeriod) {
|
|
|
// 获取审计期间并按年份排序
|
|
|
let auditPeriod = this.selectedProject.auditPeriod
|
|
|
.split(',')
|
|
|
@@ -520,10 +540,11 @@
|
|
|
width: '120px',
|
|
|
align: 'right',
|
|
|
fieldName: item + '年账面值',
|
|
|
- fieldType: 'string',
|
|
|
- format: '255',
|
|
|
- fieldTypelen: '',
|
|
|
+ fieldType: 'integer',
|
|
|
+ format: '',
|
|
|
+ fieldTypelen: '255',
|
|
|
fieldTypenointlen: '',
|
|
|
+ isAuditPeriod: 'true',
|
|
|
isRequired: 'true',
|
|
|
showVisible: '1',
|
|
|
isDict: 'false',
|
|
|
@@ -532,9 +553,10 @@
|
|
|
tabtype: this.tableHeadersRes[0].tabtype,
|
|
|
surveyTemplateId: this.tableHeadersRes[0].surveyTemplateId,
|
|
|
versionId: this.tableHeadersRes[0].versionId,
|
|
|
- orderNum: num + 1,
|
|
|
+ orderNum: this.getMaxOrderNum() + 1,
|
|
|
}
|
|
|
-
|
|
|
+ this.costAuditcolumn.push(bookValueColumn)
|
|
|
+ this.tableHeadersRes.push(bookValueColumn)
|
|
|
// 审核字段
|
|
|
let auditColumn = {
|
|
|
prop: 'year' + item + 'Audit',
|
|
|
@@ -542,11 +564,12 @@
|
|
|
width: '150px',
|
|
|
align: 'center',
|
|
|
fieldName: item + '年审核调整值',
|
|
|
- fieldType: 'string',
|
|
|
- format: '255',
|
|
|
- fieldTypelen: '',
|
|
|
+ fieldType: 'integer',
|
|
|
+ format: '',
|
|
|
+ fieldTypelen: '255',
|
|
|
fieldTypenointlen: '',
|
|
|
isRequired: 'true',
|
|
|
+ isAuditPeriod: 'true',
|
|
|
showVisible: '1',
|
|
|
isDict: 'false',
|
|
|
dictid: '',
|
|
|
@@ -554,9 +577,10 @@
|
|
|
tabtype: this.tableHeadersRes[0].tabtype,
|
|
|
surveyTemplateId: this.tableHeadersRes[0].surveyTemplateId,
|
|
|
versionId: this.tableHeadersRes[0].versionId,
|
|
|
- orderNum: num + 2,
|
|
|
+ orderNum: this.getMaxOrderNum() + num + 1,
|
|
|
}
|
|
|
-
|
|
|
+ this.costAuditcolumn.push(auditColumn)
|
|
|
+ this.tableHeadersRes.push(auditColumn)
|
|
|
// 核定值字段
|
|
|
let approvedValueColumn = {
|
|
|
prop: 'year' + item + 'ApprovedValue',
|
|
|
@@ -564,11 +588,12 @@
|
|
|
width: '120px',
|
|
|
align: 'right',
|
|
|
fieldName: item + '年核定值',
|
|
|
- fieldType: 'string',
|
|
|
- format: '255',
|
|
|
- fieldTypelen: '',
|
|
|
+ fieldType: 'integer',
|
|
|
+ format: '',
|
|
|
+ fieldTypelen: '255',
|
|
|
fieldTypenointlen: '',
|
|
|
isRequired: 'true',
|
|
|
+ isAuditPeriod: 'true',
|
|
|
showVisible: '1',
|
|
|
isDict: 'false',
|
|
|
dictid: '',
|
|
|
@@ -576,20 +601,36 @@
|
|
|
tabtype: this.tableHeadersRes[0].tabtype,
|
|
|
surveyTemplateId: this.tableHeadersRes[0].surveyTemplateId,
|
|
|
versionId: this.tableHeadersRes[0].versionId,
|
|
|
- orderNum: num + 3,
|
|
|
+ orderNum: this.getMaxOrderNum() + num + 1,
|
|
|
}
|
|
|
-
|
|
|
- // 依次添加三个字段到列配置
|
|
|
- this.costAuditcolumn.push(bookValueColumn)
|
|
|
- this.costAuditcolumn.push(auditColumn)
|
|
|
this.costAuditcolumn.push(approvedValueColumn)
|
|
|
- this.tableHeadersRes.push(bookValueColumn)
|
|
|
- this.tableHeadersRes.push(auditColumn)
|
|
|
this.tableHeadersRes.push(approvedValueColumn)
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ getMaxOrderNum() {
|
|
|
+ if (!this.tableHeadersRes || this.tableHeadersRes.length === 0) {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ const maxOrderNum = Math.max(
|
|
|
+ ...this.tableHeadersRes.map((item) => item.orderNum || 0)
|
|
|
+ )
|
|
|
+ return maxOrderNum
|
|
|
+ },
|
|
|
+ // 检查tableHeadersRes数组是否包含年账面值列
|
|
|
+ checkHasBookValueColumn() {
|
|
|
+ if (!this.tableHeadersRes || this.tableHeadersRes.length === 0) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ // 检查是否有列的label或fieldName包含'年账面值'字样
|
|
|
+ return this.tableHeadersRes.some((item) => {
|
|
|
+ return (
|
|
|
+ (item.label && item.label.includes('年账面值')) ||
|
|
|
+ (item.fieldName && item.fieldName.includes('年账面值'))
|
|
|
+ )
|
|
|
+ })
|
|
|
+ },
|
|
|
parseAndDisplayTableData(res) {
|
|
|
// 清空现有数据
|
|
|
this.costAuditData = []
|
|
|
@@ -629,8 +670,8 @@
|
|
|
}
|
|
|
})
|
|
|
|
|
|
- // 为审计期间的三个字段添加初始值
|
|
|
if (this.selectedProject && this.selectedProject.auditPeriod) {
|
|
|
+ // 为审计期间的三个字段添加初始值
|
|
|
// 获取审计期间并按年份排序
|
|
|
let auditPeriod = this.selectedProject.auditPeriod
|
|
|
.split(',')
|
|
|
@@ -640,9 +681,9 @@
|
|
|
|
|
|
// 为每个年份添加三个字段的初始值
|
|
|
auditPeriod.forEach((year) => {
|
|
|
- rowData[`year${year}BookValue`] = '' // 账面价值
|
|
|
- rowData[`year${year}Audit`] = '' // 审核调整值
|
|
|
- rowData[`year${year}ApprovedValue`] = '' // 核定值
|
|
|
+ rowData[`${year}年BookValue账面值`] = '' // 账面值
|
|
|
+ rowData[`${year}年Audit审核调整值`] = '' // 审核调整值
|
|
|
+ rowData[`${year}年ApprovedValue核定值`] = '' // 核定值
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -655,6 +696,14 @@
|
|
|
}
|
|
|
},
|
|
|
handleSaveTemplate(type) {
|
|
|
+ // 显示加载状态
|
|
|
+ this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: '保存数据中...',
|
|
|
+ spinner: 'el-icon-loading',
|
|
|
+ background: 'rgba(0, 0, 0, 0.7)',
|
|
|
+ })
|
|
|
+ // 加上遮罩层
|
|
|
let headersList = this.tableHeadersRes
|
|
|
let splitData = this.splitFixedTableDataForSave(this.costAuditData)
|
|
|
|
|
|
@@ -665,11 +714,15 @@
|
|
|
}
|
|
|
batchSaveOrUpdate(data)
|
|
|
.then((data) => {
|
|
|
+ // 关闭加载状态
|
|
|
+ this.$loading().close()
|
|
|
if (type != 'delete') {
|
|
|
this.$message.success('保存成功')
|
|
|
}
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
+ // 关闭加载状态
|
|
|
+ this.$loading().close()
|
|
|
console.log(err)
|
|
|
})
|
|
|
// this.$message({ type: 'success', message: '保存成功' })
|
|
|
@@ -701,7 +754,7 @@
|
|
|
const newItem = {
|
|
|
id: row.itemId || null,
|
|
|
rkey: correspondingHeader.fieldName,
|
|
|
- rvalue: row[correspondingHeader.fieldName],
|
|
|
+ rvalue: row[correspondingHeader.fieldEname],
|
|
|
surveyTemplateId:
|
|
|
row.surveyTemplateId || correspondingHeader.surveyTemplateId,
|
|
|
versionId: row.versionId || correspondingHeader.versionId,
|
|
|
@@ -796,7 +849,6 @@
|
|
|
|
|
|
//
|
|
|
handleImportData() {
|
|
|
- return
|
|
|
let loading = null
|
|
|
// 第一步:创建文件选择器
|
|
|
const input = document.createElement('input')
|
|
|
@@ -834,17 +886,27 @@
|
|
|
const formData = new FormData()
|
|
|
formData.append('file', file)
|
|
|
|
|
|
- // 先调用上传API
|
|
|
- // const uploadRes = await uploadFile('/api/file/v1/upload', formData)
|
|
|
+ // 其他参数作为query参数传递
|
|
|
+ const queryParams = {
|
|
|
+ materialId: '', // 根据API文档,此参数为必填,但当前没有值,保留空字符串
|
|
|
+ surveyTemplateId:
|
|
|
+ this.auditForm.surveyTemplateId ||
|
|
|
+ '62d10551-1576-49b0-9130-622b513f431e',
|
|
|
+ taskId: this.selectedProject.taskId,
|
|
|
+ periodRecordId: '', // 非必填参数
|
|
|
+ }
|
|
|
+
|
|
|
+ // 先调用上传API,将参数作为query传递
|
|
|
+ const uploadRes = await importExcel(formData, queryParams)
|
|
|
|
|
|
// 第四步:检查上传结果
|
|
|
- // if (!uploadRes || !uploadRes.value) {
|
|
|
- // // this.$message.error('文件上传失败!');
|
|
|
- // return
|
|
|
- // }
|
|
|
+ if (!uploadRes || !uploadRes.value) {
|
|
|
+ this.$message.error('导入失败!')
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
// 第五步:文件上传成功后,再更新数据
|
|
|
- const fileInfo = uploadRes.value
|
|
|
+ // const fileInfo = uploadRes.value
|
|
|
// 创建更新数据对象
|
|
|
// const updateData = {
|
|
|
// id: row.id,
|
|
|
@@ -855,7 +917,7 @@
|
|
|
// await updateScan(updateData)
|
|
|
|
|
|
// 第七步:更新成功,显示提示并刷新
|
|
|
- // this.$message.success('文件上传成功并更新数据!')
|
|
|
+ this.$message.success('导入成功')
|
|
|
// this.$emit('refresh', this.project.projectId) // 通知父组件刷新
|
|
|
} catch (error) {
|
|
|
// 错误处理
|
|
|
@@ -869,8 +931,9 @@
|
|
|
input.click()
|
|
|
},
|
|
|
handleExportTemplate() {
|
|
|
- return
|
|
|
-
|
|
|
+ if (this.costAuditData.length === 0) {
|
|
|
+ return
|
|
|
+ }
|
|
|
// this.$message({ type: 'info', message: '导出数据' })
|
|
|
// 显示加载状态
|
|
|
this.$loading({
|
|
|
@@ -881,8 +944,11 @@
|
|
|
})
|
|
|
|
|
|
// 从API中获取文件URL
|
|
|
- downDocument({
|
|
|
- id: row.id,
|
|
|
+ exportExcel({
|
|
|
+ surveyTemplateId:
|
|
|
+ this.costAuditData[0].surveyTemplateId ||
|
|
|
+ '62d10551-1576-49b0-9130-622b513f431e',
|
|
|
+ versionId: this.costAuditData[0].versionId || '',
|
|
|
})
|
|
|
.then((res) => {
|
|
|
// 关闭加载状态
|