|
@@ -7,34 +7,6 @@
|
|
|
:rules="rules"
|
|
:rules="rules"
|
|
|
:disabled="auditForm.surveyTemplateId !== ''"
|
|
:disabled="auditForm.surveyTemplateId !== ''"
|
|
|
>
|
|
>
|
|
|
- <el-row>
|
|
|
|
|
- <el-col :span="6">
|
|
|
|
|
- <el-form-item label="" prop="catalogId">
|
|
|
|
|
- <div
|
|
|
|
|
- style="display: flex; justify-self: start; align-items: center"
|
|
|
|
|
- >
|
|
|
|
|
- <div style="width: 120px">监审类别:</div>
|
|
|
|
|
- <el-cascader
|
|
|
|
|
- v-model="auditForm.catalogId"
|
|
|
|
|
- :options="catalogListOptions"
|
|
|
|
|
- v-bind="props"
|
|
|
|
|
- style="width: 200px"
|
|
|
|
|
- clearable
|
|
|
|
|
- ></el-cascader>
|
|
|
|
|
- </div>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
- <el-col :span="6">
|
|
|
|
|
- <el-form-item label="核定模板名称:" prop="surveyTemplateName">
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="auditForm.surveyTemplateName"
|
|
|
|
|
- style="width: 200px"
|
|
|
|
|
- clearable
|
|
|
|
|
- placeholder="请输入核定模板名称"
|
|
|
|
|
- ></el-input>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-col>
|
|
|
|
|
- </el-row>
|
|
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
|
<el-form-item label="" prop="templateType">
|
|
<el-form-item label="" prop="templateType">
|
|
@@ -96,6 +68,7 @@
|
|
|
v-if="!auditForm.surveyTemplateId"
|
|
v-if="!auditForm.surveyTemplateId"
|
|
|
type="primary"
|
|
type="primary"
|
|
|
size="small"
|
|
size="small"
|
|
|
|
|
+ :loading="loading"
|
|
|
@click="handleGenerateTemplate"
|
|
@click="handleGenerateTemplate"
|
|
|
>
|
|
>
|
|
|
生成核定表
|
|
生成核定表
|
|
@@ -343,6 +316,10 @@
|
|
|
return {}
|
|
return {}
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
|
|
+ catalogId: {
|
|
|
|
|
+ type: [String, Number],
|
|
|
|
|
+ default: '',
|
|
|
|
|
+ },
|
|
|
currentNode: {
|
|
currentNode: {
|
|
|
type: String,
|
|
type: String,
|
|
|
default: '',
|
|
default: '',
|
|
@@ -385,9 +362,6 @@
|
|
|
catalogId: [
|
|
catalogId: [
|
|
|
{ required: true, message: '请输选择监审类别', trigger: 'change' },
|
|
{ required: true, message: '请输选择监审类别', trigger: 'change' },
|
|
|
],
|
|
],
|
|
|
- surveyTemplateName: [
|
|
|
|
|
- { required: true, message: '请输入模版名称', trigger: 'blur' },
|
|
|
|
|
- ],
|
|
|
|
|
},
|
|
},
|
|
|
tableHeadersRes: [],
|
|
tableHeadersRes: [],
|
|
|
tableDataRes: [],
|
|
tableDataRes: [],
|
|
@@ -400,6 +374,8 @@
|
|
|
yearPropMap: {},
|
|
yearPropMap: {},
|
|
|
// 字典缓存(当未使用 dictMixin 批量加载时备用)
|
|
// 字典缓存(当未使用 dictMixin 批量加载时备用)
|
|
|
dictCache: {},
|
|
dictCache: {},
|
|
|
|
|
+ // 生成核定表时的加载状态
|
|
|
|
|
+ loading: false,
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
computed: {
|
|
computed: {
|
|
@@ -497,8 +473,9 @@
|
|
|
},
|
|
},
|
|
|
async generateFromSurveyTemplate() {
|
|
async generateFromSurveyTemplate() {
|
|
|
try {
|
|
try {
|
|
|
|
|
+ this.loading = true
|
|
|
const resp = await generateCostVerifyForm({
|
|
const resp = await generateCostVerifyForm({
|
|
|
- catalogId: this.auditForm.catalogId,
|
|
|
|
|
|
|
+ catalogId: this.catalogId,
|
|
|
templatename: this.auditForm.surveyTemplateName,
|
|
templatename: this.auditForm.surveyTemplateName,
|
|
|
templateId: this.auditForm.dataTable,
|
|
templateId: this.auditForm.dataTable,
|
|
|
taskId: (this.selectedProject && this.selectedProject.taskId) || '',
|
|
taskId: (this.selectedProject && this.selectedProject.taskId) || '',
|
|
@@ -511,10 +488,13 @@
|
|
|
}
|
|
}
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error('生成模板失败:', error)
|
|
console.error('生成模板失败:', error)
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ this.loading = false
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
async generateFromHistoryTemplate() {
|
|
async generateFromHistoryTemplate() {
|
|
|
try {
|
|
try {
|
|
|
|
|
+ this.loading = true
|
|
|
const resp = await generateCostVerifyFormData({
|
|
const resp = await generateCostVerifyFormData({
|
|
|
catalogId: this.auditForm.catalogId,
|
|
catalogId: this.auditForm.catalogId,
|
|
|
templatename: this.auditForm.surveyTemplateName,
|
|
templatename: this.auditForm.surveyTemplateName,
|
|
@@ -529,6 +509,50 @@
|
|
|
}
|
|
}
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.error('生成模板失败:', error)
|
|
console.error('生成模板失败:', error)
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ this.loading = false
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ // 生成后,按模板ID加载表头与详情,保持与 base 管理页一致
|
|
|
|
|
+ async loadTemplateDataForEdit(surveyTemplateId) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const id = surveyTemplateId || this.auditForm?.surveyTemplateId || ''
|
|
|
|
|
+ if (!id) return
|
|
|
|
|
+ // 并行获取:表头配置 + 版本数据(明细) + 模板详情(兜底)
|
|
|
|
|
+ const [tableHeadersRes, versionsRes, detailRes] = await Promise.all([
|
|
|
|
|
+ getlistBySurveyTemplateId({ surveyTemplateId: id }),
|
|
|
|
|
+ getCostFormVersionsByTemplateId({ surveyTemplateId: id }),
|
|
|
|
|
+ getVerifyTemplateDetail({ id }),
|
|
|
|
|
+ ])
|
|
|
|
|
+
|
|
|
|
|
+ if (tableHeadersRes && tableHeadersRes.code === 200) {
|
|
|
|
|
+ await this.parseAndDisplayTableHeaders(tableHeadersRes)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.tableHeadersRes = []
|
|
|
|
|
+ this.costAuditcolumn = []
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 优先使用版本接口返回的数据;若无则回退到模板详情
|
|
|
|
|
+ let parsedDataRes = null
|
|
|
|
|
+ if (versionsRes && versionsRes.code === 200) {
|
|
|
|
|
+ const list = Array.isArray(versionsRes.value)
|
|
|
|
|
+ ? versionsRes.value
|
|
|
|
|
+ : (versionsRes.value && versionsRes.value.itemlist) || []
|
|
|
|
|
+ parsedDataRes = { value: { itemlist: list } }
|
|
|
|
|
+ } else if (detailRes && detailRes.code === 200) {
|
|
|
|
|
+ parsedDataRes = detailRes
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (parsedDataRes) {
|
|
|
|
|
+ this.parseAndDisplayTableData(parsedDataRes)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.costAuditData = []
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 依据当前数据触发一次联动计算
|
|
|
|
|
+ this.computeApprovedForAllRows()
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ console.error('加载核定模板数据失败:', e)
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
// 单元格输入联动:当账面值或审核调整值变化时,自动计算核定值
|
|
// 单元格输入联动:当账面值或审核调整值变化时,自动计算核定值
|