@@ -31,7 +31,7 @@ | |||||
"pinia": "^2.0.22", | "pinia": "^2.0.22", | ||||
"pinia-plugin-persist": "^1.0.0", | "pinia-plugin-persist": "^1.0.0", | ||||
"qrcode.vue": "^3.3.3", | "qrcode.vue": "^3.3.3", | ||||
"vue": "^3.5.1", | |||||
"vue": "^3.4.38", | |||||
"vue-router": "4", | "vue-router": "4", | ||||
"vue3-seamless-scroll": "^2.0.1", | "vue3-seamless-scroll": "^2.0.1", | ||||
"xlsx": "^0.16.0", | "xlsx": "^0.16.0", | ||||
@@ -35,7 +35,7 @@ | |||||
"pinia": "^2.0.22", | "pinia": "^2.0.22", | ||||
"pinia-plugin-persist": "^1.0.0", | "pinia-plugin-persist": "^1.0.0", | ||||
"qrcode.vue": "^3.3.3", | "qrcode.vue": "^3.3.3", | ||||
"vue": "^3.5.1", | |||||
"vue": "^3.4.38", | |||||
"vue-router": "4", | "vue-router": "4", | ||||
"vue3-seamless-scroll": "^2.0.1", | "vue3-seamless-scroll": "^2.0.1", | ||||
"xlsx": "^0.16.0", | "xlsx": "^0.16.0", | ||||
@@ -18,3 +18,31 @@ export const annualPlanModify = data => | |||||
http.post('/api/v1/annualPlan/modify', data) // 年度计划-编辑 | http.post('/api/v1/annualPlan/modify', data) // 年度计划-编辑 | ||||
export const projectExcel = data => | export const projectExcel = data => | ||||
http.post('/api/v1/annualPlan/exportList', data, { responseType: 'blob' }) // 项目库导出 | http.post('/api/v1/annualPlan/exportList', data, { responseType: 'blob' }) // 项目库导出 | ||||
export const operationPackageList = data => | |||||
http.get('/api/v1/annualPlan/operationPackageList') // 查询所有的运维包 | |||||
// api/v1/annualPlan/operationPackageSave | |||||
// 添加运维包,两个参数 | |||||
// operationPackageName运维包名称 | |||||
// operationPackageYear预算年度 | |||||
// 传参: | |||||
// { | |||||
// "operationPackageName": "", | |||||
// "operationPackageYear": 1 | |||||
// } | |||||
export const operationPackageSave = data => | |||||
http.post('/api/v1/annualPlan/operationPackageSave', data) // 添加运维包,两个参数 | |||||
// api/v1/annualPlan/relevancyPackage | |||||
// 关联运维包 | |||||
// 传参: | |||||
// { | |||||
// "operationPackageId":1, | |||||
// "projectCodes": | |||||
// [ | |||||
// "33050000020240400003" | |||||
// ] | |||||
// } | |||||
export const relevancyPackage = data => | |||||
http.post('/api/v1/annualPlan/relevancyPackage', data) // 年度计划-编辑 |
@@ -43,6 +43,7 @@ const uploadUrl = store.dictStore.uploadUrl, | |||||
], | ], | ||||
projectApplicationForm: [{ required: true, message: '请上传项目申报书' }], | projectApplicationForm: [{ required: true, message: '请上传项目申报书' }], | ||||
baseResearchReportFile: [{ required: true, message: '请上传可行性研究报告' }], | baseResearchReportFile: [{ required: true, message: '请上传可行性研究报告' }], | ||||
operationPlan: [{ required: true, message: '请上传运维方案' }], | |||||
constructionPlanFile: [{ required: true, message: '请上传建设方案' }], | constructionPlanFile: [{ required: true, message: '请上传建设方案' }], | ||||
mainAccusationDoc: [{ required: true, message: '请上传申报单位主要职责(单位三定方案)', trigger: 'blur' }] | mainAccusationDoc: [{ required: true, message: '请上传申报单位主要职责(单位三定方案)', trigger: 'blur' }] | ||||
}, | }, | ||||
@@ -60,6 +61,9 @@ const uploadUrl = store.dictStore.uploadUrl, | |||||
mainResponsibilitiesApplicantFile: data.mainResponsibilitiesApplicantFile ? reviewFileParam(JSON.parse(data.mainResponsibilitiesApplicantFile)) : [], | mainResponsibilitiesApplicantFile: data.mainResponsibilitiesApplicantFile ? reviewFileParam(JSON.parse(data.mainResponsibilitiesApplicantFile)) : [], | ||||
supportingMaterialsFile: data.supportingMaterialsFile ? reviewFileParam(JSON.parse(data.supportingMaterialsFile)) : [], | supportingMaterialsFile: data.supportingMaterialsFile ? reviewFileParam(JSON.parse(data.supportingMaterialsFile)) : [], | ||||
baseResearchReportFile: data.baseResearchReportFile ? reviewFileParam(JSON.parse(data.baseResearchReportFile)) : [], | baseResearchReportFile: data.baseResearchReportFile ? reviewFileParam(JSON.parse(data.baseResearchReportFile)) : [], | ||||
operationPlan: data.operationPlan ? reviewFileParam(JSON.parse(data.operationPlan)) : [], | |||||
calculationTotalInvestmentFile: data.calculationTotalInvestmentFile ? reviewFileParam(JSON.parse(data.calculationTotalInvestmentFile)) : [], | calculationTotalInvestmentFile: data.calculationTotalInvestmentFile ? reviewFileParam(JSON.parse(data.calculationTotalInvestmentFile)) : [], | ||||
projectApplicationForm: data.projectApplicationForm ? reviewFileParam(JSON.parse(data.projectApplicationForm)) : [], | projectApplicationForm: data.projectApplicationForm ? reviewFileParam(JSON.parse(data.projectApplicationForm)) : [], | ||||
baseProjOtherFile: data.baseProjOtherFile ? reviewFileParam(JSON.parse(data.baseProjOtherFile)) : [], | baseProjOtherFile: data.baseProjOtherFile ? reviewFileParam(JSON.parse(data.baseProjOtherFile)) : [], | ||||
@@ -199,7 +203,7 @@ defineExpose({ validForm, formData, setFormData }) | |||||
</el-upload> | </el-upload> | ||||
</el-form-item> | </el-form-item> | ||||
</el-col> | </el-col> | ||||
<el-col :span="12"> | |||||
<el-col v-if="projectType!=='04'&&projectType!=='05'" :span="12"> | |||||
<el-form-item label="可行性研究报告" prop="baseResearchReportFile"> | <el-form-item label="可行性研究报告" prop="baseResearchReportFile"> | ||||
<el-upload | <el-upload | ||||
v-model:file-list="formData.baseResearchReportFile" | v-model:file-list="formData.baseResearchReportFile" | ||||
@@ -220,6 +224,27 @@ defineExpose({ validForm, formData, setFormData }) | |||||
</el-upload> | </el-upload> | ||||
</el-form-item> | </el-form-item> | ||||
</el-col> | </el-col> | ||||
<el-col v-if="projectType==='04'||projectType==='05'" :span="12"> | |||||
<el-form-item label="运维方案" prop="operationPlan"> | |||||
<el-upload | |||||
v-model:file-list="formData.operationPlan" | |||||
class="w-full" | |||||
:action="uploadUrl" | |||||
:limit="1" | |||||
:on-success="res => handleFileSuccess(res, formData.operationPlan, true)" | |||||
:before-upload="file=>fileFormatVerification(file, {types: fileTypes})" | |||||
:accept="fileTypes.map(i=>`.${i}`).join(',')" | |||||
:on-preview="handleFilePreview" | |||||
> | |||||
<el-button type="primary" plain>选择文件</el-button> | |||||
<template #tip> | |||||
<div class="el-upload__tip"> | |||||
支持{{ fileDesc }}文件 | |||||
</div> | |||||
</template> | |||||
</el-upload> | |||||
</el-form-item> | |||||
</el-col> | |||||
<el-col v-if="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" :span="12"> | <el-col v-if="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" :span="12"> | ||||
<el-form-item label="建设方案" prop="constructionPlanFile"> | <el-form-item label="建设方案" prop="constructionPlanFile"> | ||||
<el-upload | <el-upload | ||||
@@ -18,6 +18,7 @@ import RelatedProjectDialog from '@/pages/projectCollection/projectCollectionEnt | |||||
import ProjectContentDialog from '@/pages/projectCollection/projectCollectionEnter/components/projectContentDialog.vue' | import ProjectContentDialog from '@/pages/projectCollection/projectCollectionEnter/components/projectContentDialog.vue' | ||||
import { getOrganizationByCode } from '@/http/apis/commonApi' | import { getOrganizationByCode } from '@/http/apis/commonApi' | ||||
import { templateTypePage } from '@/http/apis/performanceEvaluation/indicatorTemplate' | import { templateTypePage } from '@/http/apis/performanceEvaluation/indicatorTemplate' | ||||
import { unitCodeRules } from '@/utils/validate' | |||||
const props = defineProps({ | const props = defineProps({ | ||||
detailData: { | detailData: { | ||||
@@ -41,7 +42,8 @@ const | |||||
formData = ref({ | formData = ref({ | ||||
baseProjIsConfidentiality: '01', | baseProjIsConfidentiality: '01', | ||||
buildOrgName: userInfo.value.empPosUnitName, | buildOrgName: userInfo.value.empPosUnitName, | ||||
beseExpectedResults: [] | |||||
beseExpectedResults: [], | |||||
projectType: '01' | |||||
}), | }), | ||||
formRef = ref(), | formRef = ref(), | ||||
// 手机号码校验 | // 手机号码校验 | ||||
@@ -102,18 +104,12 @@ const | |||||
{ validator: checkTelPhone, trigger: 'blur' } | { validator: checkTelPhone, trigger: 'blur' } | ||||
], | ], | ||||
buildOrgName: [{ required: true, message: '请输入建设单位', trigger: 'blur' }], | buildOrgName: [{ required: true, message: '请输入建设单位', trigger: 'blur' }], | ||||
orgCreditCode: [ | |||||
{ | |||||
required: true, | |||||
message: '请输入建设单位统一信用代码', | |||||
trigger: 'blur' | |||||
} | |||||
], | |||||
orgCreditCode: unitCodeRules(), | |||||
superOrg: [ | superOrg: [ | ||||
{ required: true, message: '请选择主管单位:', trigger: 'change' } | { required: true, message: '请选择主管单位:', trigger: 'change' } | ||||
], | ], | ||||
superOrgCode: [{ required: true, message: '请选择主管单位:', trigger: 'change' }], | superOrgCode: [{ required: true, message: '请选择主管单位:', trigger: 'change' }], | ||||
superOrgCreditCode: [{ required: true, message: '请选择主管单位:' }], | |||||
superOrgCreditCode: unitCodeRules(), | |||||
baseProvManDeprtType: [ | baseProvManDeprtType: [ | ||||
{ required: true, message: '请选择上级主管单位类型:', trigger: 'change' } | { required: true, message: '请选择上级主管单位类型:', trigger: 'change' } | ||||
], | ], | ||||
@@ -226,7 +222,7 @@ const | |||||
formData.value = { | formData.value = { | ||||
baseProjIsConfidentiality: data.baseProjIsConfidentiality || '01', | baseProjIsConfidentiality: data.baseProjIsConfidentiality || '01', | ||||
projectName: data.projectName, | projectName: data.projectName, | ||||
projectType: data.projectType, | |||||
projectType: data.projectType ? data.projectType : '01', | |||||
isFirst: data.isFirst, | isFirst: data.isFirst, | ||||
baseConstructionType: data?.baseConstructionType?.split(';') || undefined, | baseConstructionType: data?.baseConstructionType?.split(';') || undefined, | ||||
// isInnovateWholeProvinceShare: data.isInnovateWholeProvinceShare, | // isInnovateWholeProvinceShare: data.isInnovateWholeProvinceShare, | ||||
@@ -927,24 +923,6 @@ watch(() => formData.value, val => { | |||||
/> | /> | ||||
</el-form-item> | </el-form-item> | ||||
</el-col> | </el-col> | ||||
<el-col :span="12"> | |||||
<el-form-item v-if="declareAmount>=1000&&false" label="发改编码" prop="developCode"> | |||||
<el-input | |||||
v-model="formData.developCode" | |||||
maxlength="50" | |||||
placeholder="请填写" | |||||
:disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||||
/> | |||||
</el-form-item> | |||||
<el-form-item v-else label="发改编码"> | |||||
<el-input | |||||
v-model="formData.developCode" | |||||
maxlength="50" | |||||
placeholder="请填写" | |||||
:disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||||
/> | |||||
</el-form-item> | |||||
</el-col> | |||||
<el-col :span="24"> | <el-col :span="24"> | ||||
<el-form-item label="项目概述" prop="projectOverview"> | <el-form-item label="项目概述" prop="projectOverview"> | ||||
<el-input | <el-input | ||||
@@ -77,17 +77,7 @@ const { proxy } = getCurrentInstance(), | |||||
if (valid) resolve() | if (valid) resolve() | ||||
}) | }) | ||||
})) | })) | ||||
form.push(new Promise((resolve, reject) => { | |||||
fundsAllocationRef.value.validForm((valid) => { | |||||
if (valid) resolve() | |||||
}) | |||||
})) | |||||
form.push(new Promise((resolve, reject) => { | |||||
annualPaymentPlanRef.value.validForm((valid) => { | |||||
if (valid) resolve() | |||||
}) | |||||
})) | |||||
formConfig.value.isCoreBusiness && form.push(new Promise((resolve, reject) => { | formConfig.value.isCoreBusiness && form.push(new Promise((resolve, reject) => { | ||||
coreBusinessRef.value.validForm((valid) => { | coreBusinessRef.value.validForm((valid) => { | ||||
if (valid) resolve() | if (valid) resolve() | ||||
@@ -130,22 +120,38 @@ const { proxy } = getCurrentInstance(), | |||||
fundsInfoRef.value.validForm((valid) => { | fundsInfoRef.value.validForm((valid) => { | ||||
if (valid) { | if (valid) { | ||||
const total = floatAdd([fundsInfoRef.value.formData.declareHaveAmount, fundsInfoRef.value.formData.declareGovOwnFinanceAmount, fundsInfoRef.value.formData.declareGovSuperiorFinanceAmount, fundsInfoRef.value.formData.declareBankLendingAmount, fundsInfoRef.value.formData.declareOtherAmount]) | const total = floatAdd([fundsInfoRef.value.formData.declareHaveAmount, fundsInfoRef.value.formData.declareGovOwnFinanceAmount, fundsInfoRef.value.formData.declareGovSuperiorFinanceAmount, fundsInfoRef.value.formData.declareBankLendingAmount, fundsInfoRef.value.formData.declareOtherAmount]) | ||||
if (fundsInfoRef.value.formData.declareAmount > 0 && fundsInfoRef.value.formData.declareAmount === total) { resolve() } else { | |||||
if (fundsInfoRef.value.formData.declareAmount > 0 && fundsInfoRef.value.formData.declareAmount === total) { | |||||
resolve() | |||||
} else { | |||||
reject('资金申报情况:5类资金总和必须等于申报金额') | reject('资金申报情况:5类资金总和必须等于申报金额') | ||||
} | } | ||||
} | } | ||||
}) | }) | ||||
})) | })) | ||||
form.push(new Promise((resolve, reject) => { | |||||
fundsAllocationRef.value.validForm(valid => { | |||||
if (valid) { | |||||
const total = floatAdd([fundsAllocationRef.value.formData.softwareDevelopmentAmount, fundsAllocationRef.value.formData.cloudHardwarePurchaseAmount, fundsAllocationRef.value.formData.thirdPartyAmount]) | |||||
if (fundsInfoRef.value.formData.declareAmount > 0 && fundsInfoRef.value.formData.declareAmount === total) { resolve() } else { | |||||
reject('资金分配情况:3类资金总和必须等于申报金额') | |||||
if (basicInfoRef?.value.formData.projectType !== '04' && basicInfoRef?.value.formData.projectType !== '05') { | |||||
form.push(new Promise((resolve, reject) => { | |||||
fundsAllocationRef.value.validForm((valid) => { | |||||
if (valid) resolve() | |||||
}) | |||||
})) | |||||
form.push(new Promise((resolve, reject) => { | |||||
fundsAllocationRef.value.validForm(valid => { | |||||
if (valid) { | |||||
const total = floatAdd([fundsAllocationRef.value.formData.softwareDevelopmentAmount, fundsAllocationRef.value.formData.cloudHardwarePurchaseAmount, fundsAllocationRef.value.formData.thirdPartyAmount]) | |||||
if (fundsInfoRef.value.formData.declareAmount > 0 && fundsInfoRef.value.formData.declareAmount === total) { | |||||
resolve() | |||||
} else { | |||||
reject('资金分配情况:3类资金总和必须等于申报金额') | |||||
} | |||||
} | } | ||||
} | |||||
}) | |||||
})) | |||||
}) | |||||
})) | |||||
form.push(new Promise((resolve, reject) => { | |||||
annualPaymentPlanRef.value.validForm((valid) => { | |||||
if (valid) resolve() | |||||
}) | |||||
})) | |||||
} | |||||
applicationsRef.value?.formData.includeApplication === 1 && form.push(new Promise((resolve, reject) => { | applicationsRef.value?.formData.includeApplication === 1 && form.push(new Promise((resolve, reject) => { | ||||
hiddenAppFormRef.value.validAllAppForm((valid) => { | hiddenAppFormRef.value.validAllAppForm((valid) => { | ||||
if (valid) { | if (valid) { | ||||
@@ -271,7 +277,6 @@ const { proxy } = getCurrentInstance(), | |||||
id: route.query.id * 1 || undefined, | id: route.query.id * 1 || undefined, | ||||
...basicInfoRef.value.formData, | ...basicInfoRef.value.formData, | ||||
...fundsInfoRef.value.formData, | ...fundsInfoRef.value.formData, | ||||
...fundsAllocationRef.value.formData, | |||||
...planndedUseResourcesRef.value?.formData, | ...planndedUseResourcesRef.value?.formData, | ||||
// bizDomain: basicInfoRef.value.formData?.isDigitalReform === 1 ? basicInfoRef.value.formData.bizDomain.join(',') : undefined, | // bizDomain: basicInfoRef.value.formData?.isDigitalReform === 1 ? basicInfoRef.value.formData.bizDomain.join(',') : undefined, | ||||
baseConstructionType: basicInfoRef.value.formData?.baseConstructionType?.join(';') || '', | baseConstructionType: basicInfoRef.value.formData?.baseConstructionType?.join(';') || '', | ||||
@@ -294,21 +299,32 @@ const { proxy } = getCurrentInstance(), | |||||
consultancy: fundsInfoRef.value?.formData.declareAmount > 400 && fundsInfoRef.value.formData?.consultancy || '', | consultancy: fundsInfoRef.value?.formData.declareAmount > 400 && fundsInfoRef.value.formData?.consultancy || '', | ||||
operationManageUnit: fundsInfoRef.value?.formData.declareAmount >= 1000 && provincialExamineRef.value.formData.operationManageUnit || undefined, | operationManageUnit: fundsInfoRef.value?.formData.declareAmount >= 1000 && provincialExamineRef.value.formData.operationManageUnit || undefined, | ||||
...applicationsRef.value?.formData, | ...applicationsRef.value?.formData, | ||||
...annualPaymentPlanRef.value.formData, | |||||
...accessoryRef.value.formData, | ...accessoryRef.value.formData, | ||||
constructionPlanFile: accessoryRef.value.formData?.constructionPlanFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.constructionPlanFile)), | constructionPlanFile: accessoryRef.value.formData?.constructionPlanFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.constructionPlanFile)), | ||||
preliminaryPlanFile: accessoryRef.value.formData?.preliminaryPlanFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.preliminaryPlanFile)), | preliminaryPlanFile: accessoryRef.value.formData?.preliminaryPlanFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.preliminaryPlanFile)), | ||||
mainResponsibilitiesApplicantFile: accessoryRef.value.formData?.mainResponsibilitiesApplicantFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.mainResponsibilitiesApplicantFile)), | mainResponsibilitiesApplicantFile: accessoryRef.value.formData?.mainResponsibilitiesApplicantFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.mainResponsibilitiesApplicantFile)), | ||||
supportingMaterialsFile: accessoryRef.value.formData?.supportingMaterialsFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.supportingMaterialsFile)), | supportingMaterialsFile: accessoryRef.value.formData?.supportingMaterialsFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.supportingMaterialsFile)), | ||||
calculationTotalInvestmentFile: accessoryRef.value.formData?.calculationTotalInvestmentFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.calculationTotalInvestmentFile)), | calculationTotalInvestmentFile: accessoryRef.value.formData?.calculationTotalInvestmentFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.calculationTotalInvestmentFile)), | ||||
projectApplicationForm: basicInfoRef.value.formData?.projectType !== '03' && accessoryRef.value.formData?.projectApplicationForm && JSON.stringify(changFilesParam(accessoryRef.value.formData.projectApplicationForm)) || '', | |||||
baseResearchReportFile: basicInfoRef.value.formData?.projectType !== '03' && accessoryRef.value.formData?.baseResearchReportFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.baseResearchReportFile)) || '', | |||||
projectApplicationForm: accessoryRef.value.formData?.projectApplicationForm && JSON.stringify(changFilesParam(accessoryRef.value.formData.projectApplicationForm)) || '', | |||||
baseResearchReportFile: accessoryRef.value.formData?.baseResearchReportFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.baseResearchReportFile)) || '', | |||||
operationPlan: (basicInfoRef.value.formData.projectType === '04' || basicInfoRef.value.formData.projectType === '05') && accessoryRef.value.formData?.operationPlan && JSON.stringify(changFilesParam(accessoryRef.value.formData.operationPlan)) || '', | |||||
baseProjOtherFile: accessoryRef.value.formData?.baseProjOtherFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.baseProjOtherFile)), | baseProjOtherFile: accessoryRef.value.formData?.baseProjOtherFile && JSON.stringify(changFilesParam(accessoryRef.value.formData.baseProjOtherFile)), | ||||
mainAccusationDoc: fundsInfoRef.value?.formData.declareAmount >= 1000 && accessoryRef.value.formData?.mainAccusationDoc && JSON.stringify(changFilesParam(accessoryRef.value.formData.mainAccusationDoc)) || '', | mainAccusationDoc: fundsInfoRef.value?.formData.declareAmount >= 1000 && accessoryRef.value.formData?.mainAccusationDoc && JSON.stringify(changFilesParam(accessoryRef.value.formData.mainAccusationDoc)) || '', | ||||
reviewChecklist: reviewCheckRef.value?.formData?.reviewChecklist || undefined | reviewChecklist: reviewCheckRef.value?.formData?.reviewChecklist || undefined | ||||
} | } | ||||
if (basicInfoRef.value.formData.projectType !== '04' && basicInfoRef.value.formData.projectType !== '05') { | |||||
postData = Object.assign(postData, { | |||||
...fundsAllocationRef?.value.formData, | |||||
...annualPaymentPlanRef?.value.formData | |||||
}) | |||||
} | |||||
if (formConfig.value.isCoreBusiness) { | if (formConfig.value.isCoreBusiness) { | ||||
postData = Object.assign(postData, { ...coreBusinessRef.value.formData, coreBusiness: coreBusinessRef.value.formData.coreBusiness && JSON.stringify(coreBusinessRef.value.formData.coreBusiness) }) | |||||
postData = Object.assign(postData, { | |||||
...coreBusinessRef.value.formData, | |||||
coreBusiness: coreBusinessRef.value.formData.coreBusiness && JSON.stringify(coreBusinessRef.value.formData.coreBusiness) | |||||
}) | |||||
} | } | ||||
if (formConfig.value.isSafetyInput) { | if (formConfig.value.isSafetyInput) { | ||||
// ...safetyInputRef.value.formData | // ...safetyInputRef.value.formData | ||||
@@ -368,7 +384,11 @@ const { proxy } = getCurrentInstance(), | |||||
submitLoading.value = true | submitLoading.value = true | ||||
try { | try { | ||||
const data = { | const data = { | ||||
projectInfo: { ...postData, id: !route.query.isDraft ? postData.id : undefined, draftId: route.query.isDraft ? route.query.id * 1 : undefined } | |||||
projectInfo: { | |||||
...postData, | |||||
id: !route.query.isDraft ? postData.id : undefined, | |||||
draftId: route.query.isDraft ? route.query.id * 1 : undefined | |||||
} | |||||
} | } | ||||
if (route.name === 'declarePage') { | if (route.name === 'declarePage') { | ||||
@@ -417,8 +437,8 @@ const { proxy } = getCurrentInstance(), | |||||
basicInfoRef.value.setFormData(detailData.value) | basicInfoRef.value.setFormData(detailData.value) | ||||
if (detailData.value?.baseProjIsConfidentiality !== '02') { | if (detailData.value?.baseProjIsConfidentiality !== '02') { | ||||
fundsInfoRef.value.setFormData(detailData.value) | fundsInfoRef.value.setFormData(detailData.value) | ||||
fundsAllocationRef.value.setFormData(detailData.value) | |||||
annualPaymentPlanRef.value.setFormData(detailData.value) | |||||
fundsAllocationRef?.value.setFormData(detailData.value) | |||||
annualPaymentPlanRef?.value.setFormData(detailData.value) | |||||
formConfig.value.isCoreBusiness && coreBusinessRef.value.setFormData(detailData.value) | formConfig.value.isCoreBusiness && coreBusinessRef.value.setFormData(detailData.value) | ||||
formConfig.value.isSafetyInput && safetyInputRef.value.setFormData(detailData.value) | formConfig.value.isSafetyInput && safetyInputRef.value.setFormData(detailData.value) | ||||
formConfig.value.isProjectImageProgress && projectImageProgressRef.value.setFormData(detailData.value) | formConfig.value.isProjectImageProgress && projectImageProgressRef.value.setFormData(detailData.value) | ||||
@@ -435,13 +455,16 @@ const { proxy } = getCurrentInstance(), | |||||
// 获取审核详情 | // 获取审核详情 | ||||
flowData = ref({ | flowData = ref({ | ||||
processProgressVo: { | processProgressVo: { | ||||
progressInfo: [ | |||||
] | |||||
progressInfo: [] | |||||
} | } | ||||
}), | }), | ||||
lastData = ref(), | lastData = ref(), | ||||
getFlowData = async () => { | getFlowData = async () => { | ||||
const res = await progressDetail({ instanceId: route.query.instanceId, projectId: route.query.id, nodeId: route.query.nodeId }) | |||||
const res = await progressDetail({ | |||||
instanceId: route.query.instanceId, | |||||
projectId: route.query.id, | |||||
nodeId: route.query.nodeId | |||||
}) | |||||
flowData.value = { | flowData.value = { | ||||
...res.data, | ...res.data, | ||||
processProgressVo: { | processProgressVo: { | ||||
@@ -580,16 +603,23 @@ async function reuseItem (data) { | |||||
const projectYear = basicInfoRef.value.formData.projectYear | const projectYear = basicInfoRef.value.formData.projectYear | ||||
const annualPaymentFormData = { | const annualPaymentFormData = { | ||||
annualPlanAmount: annualPaymentPlanRef.value.formData.annualPlanAmount, | |||||
annualPlanHaveAmount: annualPaymentPlanRef.value.formData.annualPlanHaveAmount, | |||||
annualPlanGovOwnFinanceAmount: annualPaymentPlanRef.value.formData.annualPlanGovOwnFinanceAmount, | |||||
annualPlanGovSuperiorFinanceAmount: annualPaymentPlanRef.value.formData.annualPlanGovSuperiorFinanceAmount, | |||||
annualPlanBankLendingAmount: annualPaymentPlanRef.value.formData.annualPlanBankLendingAmount, | |||||
annualPlanOtherAmount: annualPaymentPlanRef.value.formData.annualPlanOtherAmount | |||||
annualPlanAmount: annualPaymentPlanRef?.value.formData.annualPlanAmount, | |||||
annualPlanHaveAmount: annualPaymentPlanRef?.value.formData.annualPlanHaveAmount, | |||||
annualPlanGovOwnFinanceAmount: annualPaymentPlanRef?.value.formData.annualPlanGovOwnFinanceAmount, | |||||
annualPlanGovSuperiorFinanceAmount: annualPaymentPlanRef?.value.formData.annualPlanGovSuperiorFinanceAmount, | |||||
annualPlanBankLendingAmount: annualPaymentPlanRef?.value.formData.annualPlanBankLendingAmount, | |||||
annualPlanOtherAmount: annualPaymentPlanRef?.value.formData.annualPlanOtherAmount | |||||
} | } | ||||
detailData.value = { | detailData.value = { | ||||
...res.data, | ...res.data, | ||||
projectType, baseHistorProjId, baseHistorProjName, baseHistorProjYear, projectYear, projectName, buildOrgName, orgCreditCode, | |||||
projectType, | |||||
baseHistorProjId, | |||||
baseHistorProjName, | |||||
baseHistorProjYear, | |||||
projectYear, | |||||
projectName, | |||||
buildOrgName, | |||||
orgCreditCode, | |||||
...annualPaymentFormData, | ...annualPaymentFormData, | ||||
// 新项目不应该有状态 | // 新项目不应该有状态 | ||||
status: undefined | status: undefined | ||||
@@ -623,18 +653,22 @@ async function reuseItem (data) { | |||||
<div class="declarePage footerPage"> | <div class="declarePage footerPage"> | ||||
<!-- 退回编辑--> | <!-- 退回编辑--> | ||||
<div v-if="route.name==='handleAfterGiveBack'" class="errorTip mb-16"> | <div v-if="route.name==='handleAfterGiveBack'" class="errorTip mb-16"> | ||||
<el-icon class="icon"><Warning /></el-icon> | |||||
<el-icon class="icon"> | |||||
<Warning /> | |||||
</el-icon> | |||||
<div> | <div> | ||||
<p class="title">流程被退回</p> | <p class="title">流程被退回</p> | ||||
<p> | <p> | ||||
<span>{{ detailData?.projectName }}的{{ flowData?.processProgressVo?.processDefName }}被退回,请根据审核记录调整项目信息</span> | |||||
<span>{{ detailData?.projectName }}的{{ flowData?.processProgressVo?.processDefName | |||||
}}被退回,请根据审核记录调整项目信息</span> | |||||
<el-button | <el-button | ||||
type="primary" | type="primary" | ||||
plain | plain | ||||
size="small" | size="small" | ||||
class="ml-16" | class="ml-16" | ||||
@click="showFlowRecordDialog" | @click="showFlowRecordDialog" | ||||
>查看审核记录</el-button> | |||||
>查看审核记录 | |||||
</el-button> | |||||
</p> | </p> | ||||
</div> | </div> | ||||
@@ -650,13 +684,13 @@ async function reuseItem (data) { | |||||
<el-form label-suffix=":"> | <el-form label-suffix=":"> | ||||
<el-row :gutter="24"> | <el-row :gutter="24"> | ||||
<el-col :span="6"> | <el-col :span="6"> | ||||
<el-form-item label="申报单位">{{ detailData.buildOrgName||'-' }}</el-form-item> | |||||
<el-form-item label="申报单位">{{ detailData.buildOrgName || '-' }}</el-form-item> | |||||
</el-col> | </el-col> | ||||
<el-col :span="6"> | <el-col :span="6"> | ||||
<el-form-item label="主管单位">{{ detailData.superOrg||'-' }}</el-form-item> | |||||
<el-form-item label="主管单位">{{ detailData.superOrg || '-' }}</el-form-item> | |||||
</el-col> | </el-col> | ||||
<el-col :span="6"> | <el-col :span="6"> | ||||
<el-form-item label="创建时间">{{ detailData.createOn||'-' }}</el-form-item> | |||||
<el-form-item label="创建时间">{{ detailData.createOn || '-' }}</el-form-item> | |||||
</el-col> | </el-col> | ||||
</el-row> | </el-row> | ||||
</el-form> | </el-form> | ||||
@@ -697,7 +731,7 @@ async function reuseItem (data) { | |||||
<funds-info ref="fundsInfoRef" :detail-data="detailData" /> | <funds-info ref="fundsInfoRef" :detail-data="detailData" /> | ||||
</div> | </div> | ||||
</el-collapse-item> | </el-collapse-item> | ||||
<el-collapse-item v-if="basicInfoRef?.formData?.baseProjIsConfidentiality==='01'" name="3" class="mb-16"> | |||||
<el-collapse-item v-if="basicInfoRef?.formData?.baseProjIsConfidentiality==='01'&&basicInfoRef?.formData?.projectType!=='04'&&basicInfoRef?.formData?.projectType!=='05'" name="3" class="mb-16"> | |||||
<template #title> | <template #title> | ||||
<div class="collapse-title"> | <div class="collapse-title"> | ||||
资金分配情况(单位:万元) | 资金分配情况(单位:万元) | ||||
@@ -719,7 +753,7 @@ async function reuseItem (data) { | |||||
<!-- </div>--> | <!-- </div>--> | ||||
<!-- </el-collapse-item>--> | <!-- </el-collapse-item>--> | ||||
<el-collapse-item | <el-collapse-item | ||||
v-if="basicInfoRef?.formData?.baseProjIsConfidentiality==='01'" | |||||
v-if="basicInfoRef?.formData?.baseProjIsConfidentiality==='01'&&basicInfoRef?.formData?.projectType!=='04'&&basicInfoRef?.formData?.projectType!=='05'" | |||||
name="4" | name="4" | ||||
class="mb-16" | class="mb-16" | ||||
> | > | ||||
@@ -757,12 +791,20 @@ async function reuseItem (data) { | |||||
<projectImageProgress ref="projectImageProgressRef" /> | <projectImageProgress ref="projectImageProgressRef" /> | ||||
</div> | </div> | ||||
</el-collapse-item> | </el-collapse-item> | ||||
<el-collapse-item v-if="getIsShowReviewCheck()&&formConfig.isReviewChecklist&&($route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status))" name="8" class="mb-16"> | |||||
<el-collapse-item | |||||
v-if="getIsShowReviewCheck()&&formConfig.isReviewChecklist&&($route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status))" | |||||
name="8" | |||||
class="mb-16" | |||||
> | |||||
<template #title> | <template #title> | ||||
<div class="collapse-title">审查清单</div> | <div class="collapse-title">审查清单</div> | ||||
</template> | </template> | ||||
<div class="p-24"> | <div class="p-24"> | ||||
<review-check ref="reviewCheckRef" :detail-data="detailData" :data="detailData.reviewChecklist||formConfig.reviewChecklist" /> | |||||
<review-check | |||||
ref="reviewCheckRef" | |||||
:detail-data="detailData" | |||||
:data="detailData.reviewChecklist||formConfig.reviewChecklist" | |||||
/> | |||||
</div> | </div> | ||||
</el-collapse-item> | </el-collapse-item> | ||||
<el-collapse-item name="8" class="mb-16"> | <el-collapse-item name="8" class="mb-16"> | ||||
@@ -810,11 +852,19 @@ async function reuseItem (data) { | |||||
<div class="collapse-title">应用信息</div> | <div class="collapse-title">应用信息</div> | ||||
</template> | </template> | ||||
<div class="p-24"> | <div class="p-24"> | ||||
<applications ref="applicationsRef" :is-first="basicInfoRef?.formData?.isFirst" :core-business="coreBusinessRef?.formData?.coreBusiness" /> | |||||
<applications | |||||
ref="applicationsRef" | |||||
:is-first="basicInfoRef?.formData?.isFirst" | |||||
:core-business="coreBusinessRef?.formData?.coreBusiness" | |||||
/> | |||||
</div> | </div> | ||||
</el-collapse-item> | </el-collapse-item> | ||||
<el-collapse-item v-if="($route.name==='declarePlan')||([10012,10016,10013].includes(detailData.status))" name="1" class="mb-16"> | |||||
<el-collapse-item | |||||
v-if="($route.name==='declarePlan')||([10012,10016,10013].includes(detailData.status))" | |||||
name="1" | |||||
class="mb-16" | |||||
> | |||||
<template #title> | <template #title> | ||||
<div class="collapse-title">计划使用资源</div> | <div class="collapse-title">计划使用资源</div> | ||||
</template> | </template> | ||||
@@ -833,68 +883,82 @@ async function reuseItem (data) { | |||||
:is-first="basicInfoRef?.formData?.isFirst" | :is-first="basicInfoRef?.formData?.isFirst" | ||||
/> | /> | ||||
<div class="footer"> | <div class="footer"> | ||||
<el-button @click="router.go(-1)"> 返回 </el-button> | |||||
<el-button @click="router.go(-1)"> 返回</el-button> | |||||
<el-button | <el-button | ||||
v-if="route.name==='declarePage'&&(!route.query.id||(route.query.id&&route.query.isDraft))" | v-if="route.name==='declarePage'&&(!route.query.id||(route.query.id&&route.query.isDraft))" | ||||
plain | plain | ||||
type="primary" | type="primary" | ||||
:loading="saveLoading" | :loading="saveLoading" | ||||
@click="toSaveDraft" | @click="toSaveDraft" | ||||
> 暂 存 </el-button> | |||||
<el-button type="primary" :loading="submitLoading" @click="submitAllForm"> 提交审核 </el-button> | |||||
> 暂 存 | |||||
</el-button> | |||||
<el-button type="primary" :loading="submitLoading" @click="submitAllForm"> 提交审核</el-button> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<flow-record-dialog :visible="flowRecordDialogData.visible" :flow-data="flowRecordDialogData.flowData" @close="closeFlowRecordDialog" /> | |||||
<flow-record-dialog | |||||
:visible="flowRecordDialogData.visible" | |||||
:flow-data="flowRecordDialogData.flowData" | |||||
@close="closeFlowRecordDialog" | |||||
/> | |||||
</template> | </template> | ||||
<style lang="less" scoped> | <style lang="less" scoped> | ||||
.declarePage { | .declarePage { | ||||
//position: relative; | //position: relative; | ||||
.errorTip{ | |||||
.errorTip { | |||||
background: #FFF0EF; | background: #FFF0EF; | ||||
border-radius: 4px; | border-radius: 4px; | ||||
border: 1px solid #FF9E99; | border: 1px solid #FF9E99; | ||||
padding: 18px 24px; | padding: 18px 24px; | ||||
display: flex; | display: flex; | ||||
font-size: 14px; | font-size: 14px; | ||||
color: rgba(0,0,0,0.85); | |||||
.icon{ | |||||
color:#FF3B30; | |||||
color: rgba(0, 0, 0, 0.85); | |||||
.icon { | |||||
color: #FF3B30; | |||||
font-size: 24px; | font-size: 24px; | ||||
margin-right: 8px; | margin-right: 8px; | ||||
} | } | ||||
.title{ | |||||
.title { | |||||
font-size: 20px; | font-size: 20px; | ||||
font-weight: 500; | font-weight: 500; | ||||
color: rgba(0,0,0,0.85); | |||||
color: rgba(0, 0, 0, 0.85); | |||||
line-height: 28px; | line-height: 28px; | ||||
margin-bottom: 17px; | margin-bottom: 17px; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
:deep(.el-collapse) { | :deep(.el-collapse) { | ||||
.el-collapse-item__header { | .el-collapse-item__header { | ||||
padding: 0px 16px; | padding: 0px 16px; | ||||
font-size: 14px; | font-size: 14px; | ||||
} | } | ||||
.el-collapse-item__content { | .el-collapse-item__content { | ||||
padding: 16px 16px 16px 0px; | padding: 16px 16px 16px 0px; | ||||
} | } | ||||
.el-collapse-item__header.is-active { | .el-collapse-item__header.is-active { | ||||
border-bottom: 1px solid rgba(0, 0, 0, 0.1); | border-bottom: 1px solid rgba(0, 0, 0, 0.1); | ||||
} | } | ||||
.collapse-title { | .collapse-title { | ||||
flex: 1 0 90%; | flex: 1 0 90%; | ||||
order: 1; | order: 1; | ||||
.el-collapse-item__header { | .el-collapse-item__header { | ||||
flex: 1 0 auto; | flex: 1 0 auto; | ||||
order: -1; | order: -1; | ||||
} | } | ||||
.el-input-number { | .el-input-number { | ||||
width: 150px !important; | width: 150px !important; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
.btnClass { | .btnClass { | ||||
:deep(.el-form-item__content) { | :deep(.el-form-item__content) { | ||||
line-height: 24px; | line-height: 24px; | ||||
@@ -904,9 +968,11 @@ async function reuseItem (data) { | |||||
.marginTop { | .marginTop { | ||||
margin-top: 16px; | margin-top: 16px; | ||||
} | } | ||||
.delClass { | .delClass { | ||||
color: #e65151; | color: #e65151; | ||||
} | } | ||||
.btn { | .btn { | ||||
display: flex; | display: flex; | ||||
align-items: center; | align-items: center; | ||||
@@ -918,6 +984,7 @@ async function reuseItem (data) { | |||||
border: 1px solid rgba(0, 100, 235, 1); | border: 1px solid rgba(0, 100, 235, 1); | ||||
cursor: pointer; | cursor: pointer; | ||||
} | } | ||||
.bottomBtn { | .bottomBtn { | ||||
width: calc(100% - 201px); | width: calc(100% - 201px); | ||||
position: fixed; | position: fixed; | ||||
@@ -928,6 +995,7 @@ async function reuseItem (data) { | |||||
padding: 10px 0px; | padding: 10px 0px; | ||||
border-top: 1px solid rgba(0, 0, 0, 0.1); | border-top: 1px solid rgba(0, 0, 0, 0.1); | ||||
} | } | ||||
.applyBottomBtn { | .applyBottomBtn { | ||||
width: 1000px; | width: 1000px; | ||||
position: fixed; | position: fixed; | ||||
@@ -938,7 +1006,8 @@ async function reuseItem (data) { | |||||
padding: 10px 0px; | padding: 10px 0px; | ||||
border-top: 1px solid rgba(0, 0, 0, 0.1); | border-top: 1px solid rgba(0, 0, 0, 0.1); | ||||
} | } | ||||
.ocupation{ | |||||
.ocupation { | |||||
height: 80px; | height: 80px; | ||||
} | } | ||||
</style> | </style> |
@@ -122,12 +122,12 @@ onMounted(async () => { | |||||
<el-card class="w-full mb-16"> | <el-card class="w-full mb-16"> | ||||
<el-row> | <el-row> | ||||
<el-col :span="12"> | <el-col :span="12"> | ||||
<el-form-item label="发改编码" :rules="[{ required: true, message: '请输入' }]" prop="developCode"> | |||||
<el-form-item label="发改编码" :rules="[{ required: true, message: '请输入' },{ min: 20, max: 20, message: '长度必须为20位', trigger: 'blur' }]" prop="developCode"> | |||||
<el-input v-model="formData.developCode" placeholder="请输入" /> | <el-input v-model="formData.developCode" placeholder="请输入" /> | ||||
</el-form-item> | </el-form-item> | ||||
</el-col> | </el-col> | ||||
<el-col :span="12"> | <el-col :span="12"> | ||||
<el-form-item label="财政编码" prop="financialCode" :rules="[{ required: true, message: '请输入' }]"> | |||||
<el-form-item label="财政编码" prop="financialCode" :rules="[{ required: true, message: '请输入' },{ min: 21, max: 21, message: '长度必须为21位', trigger: 'blur' }]"> | |||||
<el-input v-model="formData.financialCode" placeholder="请填写" /> | <el-input v-model="formData.financialCode" placeholder="请填写" /> | ||||
</el-form-item> | </el-form-item> | ||||
</el-col> | </el-col> | ||||
@@ -7,7 +7,7 @@ | |||||
@close="closeDialog" | @close="closeDialog" | ||||
> | > | ||||
<el-form v-loading="loading"> | <el-form v-loading="loading"> | ||||
<el-table :data="tableData" style="width: 100%"> | |||||
<el-table ref="tableRef" :data="tableData" style="width: 100%;height: 60vh"> | |||||
<el-table-column prop="index" width="50"> | <el-table-column prop="index" width="50"> | ||||
<template #default="scope"> | <template #default="scope"> | ||||
<el-radio | <el-radio | ||||
@@ -24,22 +24,22 @@ | |||||
{{ scope.$index + 1 }} | {{ scope.$index + 1 }} | ||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column prop="date" label="运维包名称" width="180"> | |||||
<el-table-column prop="operationPackageName" label="运维包名称" width="180"> | |||||
<template #default="scope"> | <template #default="scope"> | ||||
<div v-if="!scope.row.edit">{{ scope.row.name }}</div> | |||||
<div v-if="!scope.row.edit">{{ scope.row.operationPackageName }}</div> | |||||
<el-form-item v-else> | <el-form-item v-else> | ||||
<el-input v-model="scope.row.name" /> | |||||
<el-input v-model="scope.row.operationPackageName" placeholder="请输入运维包名称" /> | |||||
</el-form-item> | </el-form-item> | ||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column prop="name" label="预算年度" width="250"> | |||||
<el-table-column prop="operationPackageYear" label="预算年度" width="250"> | |||||
<template #default="scope"> | <template #default="scope"> | ||||
<div v-if="!scope.row.edit">{{ scope.row.year }}</div> | |||||
<el-form-item v-if="scope.row.edit" prop="year"> | |||||
<div v-if="!scope.row.edit">{{ scope.row.operationPackageYear }}</div> | |||||
<el-form-item v-if="scope.row.edit" prop="operationPackageYear"> | |||||
<el-date-picker | <el-date-picker | ||||
v-model="scope.row.year" | |||||
v-model="scope.row.operationPackageYear" | |||||
type="year" | type="year" | ||||
placeholder="请选择" | |||||
placeholder="请选择预算年度" | |||||
format="YYYY" | format="YYYY" | ||||
value-format="YYYY" | value-format="YYYY" | ||||
/> | /> | ||||
@@ -48,7 +48,11 @@ | |||||
</el-table-column> | </el-table-column> | ||||
<el-table-column prop="address" label="操作" width="120"> | <el-table-column prop="address" label="操作" width="120"> | ||||
<template #default="scope"> | <template #default="scope"> | ||||
<a v-if="!scope.row.edit" @click="scope.row.edit=true">编辑{{ scope.row.data }}</a> | |||||
<a | |||||
v-if="!scope.row.edit" | |||||
@click="scope.row.edit=true, | |||||
scope.row.operationPackageYear=scope.row.operationPackageYear+''" | |||||
>编辑{{ scope.row.data }}</a> | |||||
<a v-else @click="savePackage(scope.row)">保存</a> | <a v-else @click="savePackage(scope.row)">保存</a> | ||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
@@ -95,6 +99,11 @@ import { ElMessage } from 'element-plus' | |||||
const title = '关联运维包' | const title = '关联运维包' | ||||
import { defineModel, ref, watch, defineEmits } from 'vue' | import { defineModel, ref, watch, defineEmits } from 'vue' | ||||
import { | |||||
operationPackageList, | |||||
operationPackageSave, | |||||
relevancyPackage | |||||
} from '@/http/apis/projectStoreManage/annualPlanStore' | |||||
const visible = defineModel() | const visible = defineModel() | ||||
@@ -103,6 +112,7 @@ const selectProjectList = defineModel('selectProjectList', { | |||||
defult: [] | defult: [] | ||||
}) | }) | ||||
const tableRef = ref() | |||||
const radio = ref() | const radio = ref() | ||||
const loading = ref(false) | const loading = ref(false) | ||||
const sureLoading = ref(false) | const sureLoading = ref(false) | ||||
@@ -114,16 +124,15 @@ function radioChange (e) { | |||||
const tableData = ref([]) | const tableData = ref([]) | ||||
const emits = defineEmits(['relevanceSuccess']) | const emits = defineEmits(['relevanceSuccess']) | ||||
function savePackage (row) { | |||||
if (!row.name) { | |||||
async function savePackage (row) { | |||||
if (!row.operationPackageName) { | |||||
ElMessage({ | ElMessage({ | ||||
message: '运维包名称', | message: '运维包名称', | ||||
type: 'warning' | type: 'warning' | ||||
}) | }) | ||||
return | return | ||||
} | } | ||||
if (!row.year) { | |||||
if (!row.operationPackageYear) { | |||||
ElMessage({ | ElMessage({ | ||||
message: '请选择预算年度', | message: '请选择预算年度', | ||||
type: 'warning' | type: 'warning' | ||||
@@ -132,46 +141,63 @@ function savePackage (row) { | |||||
} | } | ||||
loading.value = true | loading.value = true | ||||
setTimeout(function () { | |||||
loading.value = false | |||||
}, 1000) | |||||
await operationPackageSave(row) | |||||
loading.value = false | |||||
row.edit = false | row.edit = false | ||||
getList() | |||||
} | } | ||||
function addPackage () { | function addPackage () { | ||||
tableData.value.push({ | tableData.value.push({ | ||||
year: '', | |||||
name: '', | |||||
operationPackageYear: '', | |||||
operationPackageName: '', | |||||
edit: true | edit: true | ||||
}) | }) | ||||
} | } | ||||
function relevance () { | |||||
console.log(selectData) | |||||
console.log(selectProjectList.value) | |||||
async function relevance () { | |||||
if (!selectData) { | |||||
ElMessage({ | |||||
message: '请先选择关联包', | |||||
type: 'warning' | |||||
}) | |||||
return | |||||
} | |||||
const postData = { | |||||
operationPackageId: selectData.id, | |||||
projectIds: selectProjectList.value.map(item => item.projectId) | |||||
} | |||||
sureLoading.value = true | sureLoading.value = true | ||||
setTimeout(function () { | |||||
try { | |||||
await relevancyPackage(postData) | |||||
sureLoading.value = false | sureLoading.value = false | ||||
}, 1000) | |||||
visible.value = false | |||||
emits('relevanceSuccess') | |||||
closeDialog() | |||||
emits('relevanceSuccess') | |||||
} catch { | |||||
sureLoading.value = false | |||||
} | |||||
} | } | ||||
function cancelRelevance () { | |||||
async function cancelRelevance () { | |||||
cancelLoading.value = true | cancelLoading.value = true | ||||
setTimeout(function () { | |||||
const postData = { | |||||
projectIds: selectProjectList.value.map(item => item.projectId) | |||||
} | |||||
try { | |||||
await relevancyPackage(postData) | |||||
cancelLoading.value = false | cancelLoading.value = false | ||||
}, 1000) | |||||
visible.value = false | |||||
emits('relevanceSuccess') | |||||
closeDialog() | |||||
emits('relevanceSuccess') | |||||
} catch { | |||||
cancelLoading.value = false | |||||
} | |||||
} | } | ||||
function closeDialog () { | function closeDialog () { | ||||
visible.value = false | visible.value = false | ||||
selectData = undefined | selectData = undefined | ||||
console.log(selectData) | |||||
radio.value = undefined | |||||
} | } | ||||
watch(() => visible.value, | watch(() => visible.value, | ||||
@@ -184,29 +210,11 @@ watch(() => visible.value, | |||||
async function getList () { | async function getList () { | ||||
loading.value = true | loading.value = true | ||||
const res = await testData() | |||||
const res = await operationPackageList() | |||||
tableData.value = res.data | tableData.value = res.data | ||||
loading.value = false | loading.value = false | ||||
} | } | ||||
function testData () { | |||||
return new Promise(resolve => { | |||||
setTimeout(() => { | |||||
resolve({ | |||||
data: [ | |||||
{ | |||||
year: '2016', | |||||
name: 'Tom' | |||||
}, | |||||
{ | |||||
year: '2016', | |||||
name: 'Tom' | |||||
} | |||||
] | |||||
}) | |||||
}, 1000) | |||||
}) | |||||
} | |||||
</script> | </script> | ||||
<style scoped lang="less"> | <style scoped lang="less"> | ||||
@@ -6,7 +6,7 @@ import { fileFormatVerification, handleFileSuccess, handleFileError } from '@/ut | |||||
import { | import { | ||||
list, | list, | ||||
startDeclare, | startDeclare, | ||||
exportAnnualPlanEditTable, projectExcel | |||||
exportAnnualPlanEditTable, projectExcel, operationPackageList | |||||
} from '@/http/apis/projectStoreManage/annualPlanStore' | } from '@/http/apis/projectStoreManage/annualPlanStore' | ||||
import store from '@/store' | import store from '@/store' | ||||
import ApprovalDialog from './approvalDialog.vue' | import ApprovalDialog from './approvalDialog.vue' | ||||
@@ -29,6 +29,7 @@ const { proxy } = getCurrentInstance(), | |||||
projectName: undefined, | projectName: undefined, | ||||
buildOrg: undefined, | buildOrg: undefined, | ||||
projectType: undefined, | projectType: undefined, | ||||
operationPackageId: undefined, | |||||
status: undefined, | status: undefined, | ||||
declareAmountMin: undefined, | declareAmountMin: undefined, | ||||
declareAmountMax: undefined, | declareAmountMax: undefined, | ||||
@@ -52,6 +53,9 @@ const { proxy } = getCurrentInstance(), | |||||
}, | }, | ||||
getTableData = async (pageParams = tableListRef.value.pageParams) => { | getTableData = async (pageParams = tableListRef.value.pageParams) => { | ||||
if (queryProjectType.value !== '02') { | |||||
searchForm.operationPackageId = undefined | |||||
} | |||||
const res = await list({ | const res = await list({ | ||||
...pageParams, | ...pageParams, | ||||
...searchForm, | ...searchForm, | ||||
@@ -88,6 +92,7 @@ const { proxy } = getCurrentInstance(), | |||||
reset = () => { | reset = () => { | ||||
searchForm.projectName = undefined | searchForm.projectName = undefined | ||||
searchForm.buildOrg = undefined | searchForm.buildOrg = undefined | ||||
searchForm.operationPackageId = undefined | |||||
searchForm.projectType = undefined | searchForm.projectType = undefined | ||||
searchForm.status = undefined | searchForm.status = undefined | ||||
searchForm.declareAmountMin = undefined | searchForm.declareAmountMin = undefined | ||||
@@ -174,9 +179,9 @@ const { proxy } = getCurrentInstance(), | |||||
closeExportFieldDialog() | closeExportFieldDialog() | ||||
}, | }, | ||||
// 编辑 | // 编辑 | ||||
toEdit = (data) => { | |||||
router.push({ name: 'planEdit', query: { id: data.projectId }}) | |||||
}, | |||||
// toEdit = (data) => { | |||||
// router.push({ name: 'planEdit', query: { id: data.projectId }}) | |||||
// }, | |||||
// 暂缓 | // 暂缓 | ||||
// projectDefer = (data) => { | // projectDefer = (data) => { | ||||
// proxy.$messageBox | // proxy.$messageBox | ||||
@@ -210,8 +215,11 @@ watch( | |||||
search() | search() | ||||
} | } | ||||
) | ) | ||||
const operationList = ref([]) | |||||
onMounted(async () => { | onMounted(async () => { | ||||
if (!getIsShowRegionTree(['SUPER_ADMIN', 'REGION_MANAGER'])) getTableData() | if (!getIsShowRegionTree(['SUPER_ADMIN', 'REGION_MANAGER'])) getTableData() | ||||
const res = await operationPackageList() | |||||
operationList.value = res.data | |||||
}) | }) | ||||
function tabChange () { | function tabChange () { | ||||
@@ -375,6 +383,24 @@ function relevanceSuccess () { | |||||
</el-form-item> | </el-form-item> | ||||
</el-col> | </el-col> | ||||
</el-row> | </el-row> | ||||
<el-col v-if="queryProjectType==='02'" :span="8"> | |||||
<el-form-item label="运维包"> | |||||
<el-select | |||||
v-model="searchForm.operationPackageId" | |||||
reserve-keyword | |||||
filterable | |||||
placeholder="全部" | |||||
class="w-full" | |||||
> | |||||
<el-option | |||||
v-for="(v,k) in operationList" | |||||
:key="k" | |||||
:label="v.operationPackageName" | |||||
:value="v.id" | |||||
/> | |||||
</el-select> | |||||
</el-form-item> | |||||
</el-col> | |||||
<el-row> | <el-row> | ||||
<el-col :span="24"> | <el-col :span="24"> | ||||
<el-form-item class="btn"> | <el-form-item class="btn"> | ||||
@@ -425,7 +451,7 @@ function relevanceSuccess () { | |||||
>关联运维包 | >关联运维包 | ||||
</el-button> | </el-button> | ||||
</div> | </div> | ||||
<div class="flex items-center relative"> | |||||
<div v-if="false" class="flex items-center relative"> | |||||
<!-- <el-button | <!-- <el-button | ||||
type="primary" | type="primary" | ||||
plain | plain | ||||
@@ -493,19 +519,19 @@ function relevanceSuccess () { | |||||
<a @click="router.push({name:'projectDetail',query:{id:scope.row.projectId}})">详情</a> | <a @click="router.push({name:'projectDetail',query:{id:scope.row.projectId}})">详情</a> | ||||
</template> | </template> | ||||
<template v-if="queryProjectType==='01'"> | <template v-if="queryProjectType==='01'"> | ||||
<a v-if="scope.row.status===10010" v-hasRole="['超级管理员']" @click="toEdit(scope.row)">编辑</a> | |||||
<!-- <a v-if="scope.row.status===10010" v-hasRole="['超级管理员']" @click="toEdit(scope.row)">编辑</a>--> | |||||
<!-- <a v-if="scope.row.status===10010" @click="projectDefer(scope.row)">暂缓</a>--> | <!-- <a v-if="scope.row.status===10010" @click="projectDefer(scope.row)">暂缓</a>--> | ||||
<a v-if="scope.row.status===10014" @click="showApprovalDialog(scope.row)">立项批复</a> | <a v-if="scope.row.status===10014" @click="showApprovalDialog(scope.row)">立项批复</a> | ||||
<a @click="router.push({name:'projectDetail',query:{id:scope.row.projectId}})">详情</a> | <a @click="router.push({name:'projectDetail',query:{id:scope.row.projectId}})">详情</a> | ||||
</template> | </template> | ||||
<template v-if="queryProjectType==='02'"> | <template v-if="queryProjectType==='02'"> | ||||
<a v-if="scope.row.status===10010" v-hasRole="['超级管理员']" @click="toEdit(scope.row)">编辑</a> | |||||
<!-- <a v-if="scope.row.status===10010" v-hasRole="['超级管理员']" @click="toEdit(scope.row)">编辑</a>--> | |||||
<a @click="router.push({name:'projectDetail',query:{id:scope.row.projectId}})">详情</a> | <a @click="router.push({name:'projectDetail',query:{id:scope.row.projectId}})">详情</a> | ||||
</template> | </template> | ||||
<template v-if="queryProjectType==='03'"> | <template v-if="queryProjectType==='03'"> | ||||
<a v-if="scope.row.status===10010" v-hasRole="['超级管理员']" @click="toEdit(scope.row)">编辑</a> | |||||
<!-- <a v-if="scope.row.status===10010" v-hasRole="['超级管理员']" @click="toEdit(scope.row)">编辑</a>--> | |||||
<a @click="router.push({name:'projectDetail',query:{id:scope.row.projectId}})">详情</a> | <a @click="router.push({name:'projectDetail',query:{id:scope.row.projectId}})">详情</a> | ||||
</template> | </template> | ||||
</template> | </template> | ||||
@@ -201,8 +201,8 @@ export const maintenanceColumn = [ | |||||
}, | }, | ||||
{ | { | ||||
label: '运维包', | label: '运维包', | ||||
key: 'declaredAmount', | |||||
prop: 'declaredAmount', | |||||
key: 'operationPackageName', | |||||
prop: 'operationPackageName', | |||||
width: '150' | width: '150' | ||||
}, | }, | ||||
{ | { | ||||
@@ -263,12 +263,12 @@ onMounted(() => { | |||||
style="width: 98%;" | style="width: 98%;" | ||||
/> | /> | ||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="发改编码"> | |||||
{{ detailData.developCode || '-' }} | |||||
</el-descriptions-item> | |||||
<el-descriptions-item label="财政编码"> | |||||
{{ detailData.financialCode || '-' }} | |||||
</el-descriptions-item> | |||||
<!-- <el-descriptions-item label="发改编码">--> | |||||
<!-- {{ detailData.developCode || '-' }}--> | |||||
<!-- </el-descriptions-item>--> | |||||
<!-- <el-descriptions-item label="财政编码">--> | |||||
<!-- {{ detailData.financialCode || '-' }}--> | |||||
<!-- </el-descriptions-item>--> | |||||
<el-descriptions-item label="绩效评价类型"> | <el-descriptions-item label="绩效评价类型"> | ||||
{{ templateTypeListData?.find(i => i.id === detailData.templateType)?.name || "-" }} | {{ templateTypeListData?.find(i => i.id === detailData.templateType)?.name || "-" }} | ||||
</el-descriptions-item> | </el-descriptions-item> | ||||
@@ -278,7 +278,7 @@ onMounted(() => { | |||||
>{{ detailData.isTemporaryAugment ? '是' : '否' }} | >{{ detailData.isTemporaryAugment ? '是' : '否' }} | ||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<template v-if="detailData.status>10011"> | |||||
<template v-if="detailData.status>10011&&detailData.projectType!=='04'&&detailData.projectType!=='05'"> | |||||
<el-descriptions-item label="项目内容与预期成效" :span="2"> | <el-descriptions-item label="项目内容与预期成效" :span="2"> | ||||
<table-list | <table-list | ||||
ref="tableList2" | ref="tableList2" | ||||
@@ -29,37 +29,44 @@ onMounted(async () => { | |||||
class="mb-16" | class="mb-16" | ||||
> | > | ||||
<el-descriptions-item label="标段名称"> | <el-descriptions-item label="标段名称"> | ||||
{{ item.bidName||'-' }} | |||||
{{ item.bidName || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="供应商"> | <el-descriptions-item label="供应商"> | ||||
{{ item.supplier||'-' }} | |||||
{{ item.supplier || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="供应商统一社会信用代码"> | <el-descriptions-item label="供应商统一社会信用代码"> | ||||
{{ item.supplierSocialCreditCode||'-' }} | |||||
{{ item.supplierSocialCreditCode || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="供应商联系人"> | <el-descriptions-item label="供应商联系人"> | ||||
{{ item.supplierContact||'-' }} | |||||
{{ item.supplierContact || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="供应商联系方式"> | <el-descriptions-item label="供应商联系方式"> | ||||
{{ item.supplierContactInfo||'-' }} | |||||
{{ item.supplierContactInfo || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="采购方式"> | <el-descriptions-item label="采购方式"> | ||||
{{ dictionaryList?.filter(i => i.type === 'PURCHASE_METHOD').find(i=>i.value===item.purchaseMethod)?.label ||'-' }} | |||||
{{ dictionaryList?.filter(i => i.type === 'PURCHASE_METHOD').find(i => i.value === item.purchaseMethod)?.label || '-' | |||||
}} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="成交金额(万元)"> | <el-descriptions-item label="成交金额(万元)"> | ||||
{{ item.transactionAmount||'-' }} | |||||
{{ item.transactionAmount || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="成交时间"> | <el-descriptions-item label="成交时间"> | ||||
{{ item.transactionTime||'-' }} | |||||
{{ item.transactionTime || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="采购代理机构"> | <el-descriptions-item label="采购代理机构"> | ||||
{{ item.agency||'-' }} | |||||
{{ item.agency || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="采购代理机构统一社会信用代码"> | <el-descriptions-item label="采购代理机构统一社会信用代码"> | ||||
{{ item.purchaseSocialCreditCode||'-' }} | |||||
{{ item.purchaseSocialCreditCode || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="预算执行确认书编号"> | |||||
{{ item.budgetExecConfirmNo||'-' }} | |||||
<el-descriptions-item label="监理单位"> | |||||
{{ item.supervisingUnit || '-' }} | |||||
</el-descriptions-item> | |||||
<el-descriptions-item label="监理单位统一社会信用代码"> | |||||
{{ item.supervisingUnitCode || '-' }} | |||||
</el-descriptions-item> | |||||
<el-descriptions-item label="预算执行确认书编号" :span="2"> | |||||
{{ item.budgetExecConfirmNo || '-' }} | |||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item label="投标文件" :span="2"> | <el-descriptions-item label="投标文件" :span="2"> | ||||
<p v-for="(file,key) in item.biddingDoc&&JSON.parse(item.biddingDoc)" :key="key" class="mb-4"> | <p v-for="(file,key) in item.biddingDoc&&JSON.parse(item.biddingDoc)" :key="key" class="mb-4"> | ||||
@@ -11,7 +11,7 @@ defineProps({ | |||||
<template> | <template> | ||||
<el-descriptions :column="2" border> | <el-descriptions :column="2" border> | ||||
<el-descriptions-item label="初步方案"> | |||||
<el-descriptions-item label="项目申报书"> | |||||
<p v-for="(item,index) in detailData.preliminaryPlanFile&&JSON.parse(detailData.preliminaryPlanFile)" :key="index" class="mb-4"> | <p v-for="(item,index) in detailData.preliminaryPlanFile&&JSON.parse(detailData.preliminaryPlanFile)" :key="index" class="mb-4"> | ||||
<accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | <accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | ||||
</p> | </p> | ||||
@@ -31,16 +31,23 @@ defineProps({ | |||||
<accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | <accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | ||||
</p> | </p> | ||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item v-if="detailData?.projectType!=='03'&&false" label="项目申报书"> | |||||
<p v-for="(item,index) in detailData.projectApplicationForm&&JSON.parse(detailData.projectApplicationForm)" :key="index" class="mb-4"> | |||||
<!-- <el-descriptions-item v-if="detailData?.projectType!=='03'&&false" label="项目申报书">--> | |||||
<!-- <p v-for="(item,index) in detailData.projectApplicationForm&&JSON.parse(detailData.projectApplicationForm)" :key="index" class="mb-4">--> | |||||
<!-- <accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" />--> | |||||
<!-- </p>--> | |||||
<!-- </el-descriptions-item>--> | |||||
<el-descriptions-item v-if="detailData?.projectType!=='04'&&detailData?.projectType!=='05'" label="可行性研究报告"> | |||||
<p v-for="(item,index) in detailData.baseResearchReportFile&&JSON.parse(detailData.baseResearchReportFile)" :key="index" class="mb-4"> | |||||
<accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | <accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | ||||
</p> | </p> | ||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item v-if="detailData?.projectType!=='03'" label="可行性研究报告"> | |||||
<p v-for="(item,index) in detailData.baseResearchReportFile&&JSON.parse(detailData.baseResearchReportFile)" :key="index" class="mb-4"> | |||||
<el-descriptions-item v-if="detailData?.projectType==='04'||detailData?.projectType==='05'" label="运维方案"> | |||||
<p v-for="(item,index) in detailData.operationPlan&&JSON.parse(detailData.operationPlan)" :key="index" class="mb-4"> | |||||
<accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | <accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | ||||
</p> | </p> | ||||
</el-descriptions-item> | </el-descriptions-item> | ||||
<el-descriptions-item v-if="detailData.constructionPlanFile&&JSON.parse(detailData.constructionPlanFile)?.length" label="建设方案"> | <el-descriptions-item v-if="detailData.constructionPlanFile&&JSON.parse(detailData.constructionPlanFile)?.length" label="建设方案"> | ||||
<p v-for="(item,index) in detailData.constructionPlanFile&&JSON.parse(detailData.constructionPlanFile)" :key="index" class="mb-4"> | <p v-for="(item,index) in detailData.constructionPlanFile&&JSON.parse(detailData.constructionPlanFile)" :key="index" class="mb-4"> | ||||
<accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | <accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | ||||
@@ -64,8 +64,22 @@ const props = defineProps({ | |||||
} | } | ||||
} | } | ||||
tabList.value = [...new Set(tabList.value)] | tabList.value = [...new Set(tabList.value)] | ||||
if (props.detailData.projectType === '04' || props.detailData.projectType === '05') { | |||||
removeTab('年度支付计划') | |||||
removeTab('投资分配情况') | |||||
removeTab('应用信息') | |||||
} | |||||
if (props.detailData.projectType === '03') { | |||||
removeTab('应用信息') | |||||
} | |||||
} | } | ||||
} | } | ||||
function removeTab (name) { | |||||
const index = tabList.value.indexOf(name) | |||||
if (index > -1) { | |||||
tabList.value.splice(index, 1) | |||||
} | |||||
} | |||||
watch( | watch( | ||||
() => props.detailData, | () => props.detailData, | ||||
async val => { | async val => { | ||||
@@ -1,5 +1,5 @@ | |||||
<script name="summarizeInfo" setup> | <script name="summarizeInfo" setup> | ||||
import { ref, onMounted } from 'vue' | |||||
import { ref, onMounted, watch } from 'vue' | |||||
import ApprovalInfo from './approvalInfo.vue' | import ApprovalInfo from './approvalInfo.vue' | ||||
import ExpertReviewInfo from './expertReviewInfo.vue' | import ExpertReviewInfo from './expertReviewInfo.vue' | ||||
import BiddingRegistration from './biddingRegistration.vue' | import BiddingRegistration from './biddingRegistration.vue' | ||||
@@ -12,7 +12,7 @@ import ImplementationPlan from '@/pages/projectStoreManage/projectStore/projectD | |||||
import ReviewCheckList from '@/pages/projectStoreManage/projectStore/projectDetail/components/reviewCheckList.vue' | import ReviewCheckList from '@/pages/projectStoreManage/projectStore/projectDetail/components/reviewCheckList.vue' | ||||
import { getIsShowReviewCheck } from '@/utils/getIsShowReviewCheck' | import { getIsShowReviewCheck } from '@/utils/getIsShowReviewCheck' | ||||
defineProps({ | |||||
const props = defineProps({ | |||||
detailData: Object | detailData: Object | ||||
}) | }) | ||||
const activeName = ref('专家评审'), | const activeName = ref('专家评审'), | ||||
@@ -21,30 +21,39 @@ const activeName = ref('专家评审'), | |||||
'批复信息', | '批复信息', | ||||
'招标登记', | '招标登记', | ||||
'实施计划', | '实施计划', | ||||
'建设方案审查意见', | |||||
// '建设方案审查意见', | |||||
'合同登记', | '合同登记', | ||||
'初验登记', | |||||
// '初验登记', | |||||
'试运行报告', | '试运行报告', | ||||
'终验信息', | |||||
'项目变更' | |||||
'终验信息' | |||||
// '项目变更' | |||||
]), | ]), | ||||
setActiveName = (val) => { | setActiveName = (val) => { | ||||
activeName.value = val | activeName.value = val | ||||
} | } | ||||
defineExpose({ setActiveName }) | defineExpose({ setActiveName }) | ||||
onMounted(() => { | onMounted(() => { | ||||
getTabs() | |||||
}) | |||||
function removeTab (name) { | |||||
const index = tabList.value.indexOf(name) | |||||
if (index > -1) { | |||||
tabList.value.splice(index, 1) | |||||
} | |||||
} | |||||
function getTabs () { | |||||
if (getIsShowReviewCheck()) { | if (getIsShowReviewCheck()) { | ||||
tabList.value = [ | tabList.value = [ | ||||
'专家评审', | '专家评审', | ||||
'批复信息', | '批复信息', | ||||
'招标登记', | '招标登记', | ||||
'实施计划', | '实施计划', | ||||
'建设方案审查意见', | |||||
// '建设方案审查意见', | |||||
'合同登记', | '合同登记', | ||||
'初验登记', | |||||
// '初验登记', | |||||
'试运行报告', | '试运行报告', | ||||
'终验信息', | |||||
'项目变更' | |||||
'终验信息' | |||||
// '项目变更' | |||||
] | ] | ||||
} else { | } else { | ||||
tabList.value = [ | tabList.value = [ | ||||
@@ -53,13 +62,28 @@ onMounted(() => { | |||||
'招标登记', | '招标登记', | ||||
'实施计划', | '实施计划', | ||||
'合同登记', | '合同登记', | ||||
'初验登记', | |||||
// '初验登记', | |||||
'试运行报告', | '试运行报告', | ||||
'终验信息', | |||||
'项目变更' | |||||
'终验信息' | |||||
// '项目变更' | |||||
] | ] | ||||
} | } | ||||
}) | |||||
if (props.detailData.projectType === '04' || props.detailData.projectType === '05') { | |||||
removeTab('批复信息') | |||||
removeTab('合同登记') | |||||
removeTab('试运行报告') | |||||
removeTab('终验信息') | |||||
} | |||||
} | |||||
watch( | |||||
() => props.detailData, | |||||
async val => { | |||||
if (val?.id) { | |||||
getTabs() | |||||
} | |||||
}, | |||||
{ deep: true } | |||||
) | |||||
</script> | </script> | ||||
<template> | <template> | ||||
@@ -207,7 +207,7 @@ onMounted(async () => { | |||||
:dictionary-list="dictionaryList" | :dictionary-list="dictionaryList" | ||||
/> | /> | ||||
</el-tab-pane> | </el-tab-pane> | ||||
<el-tab-pane label="归集信息" name="3"> | |||||
<el-tab-pane v-if="detailData.projectType!=='03'" label="归集信息" name="3"> | |||||
<summarize-info v-if="detailData" ref="summarizeInfoRef" :detail-data="constructDetailData||detailData" /> | <summarize-info v-if="detailData" ref="summarizeInfoRef" :detail-data="constructDetailData||detailData" /> | ||||
</el-tab-pane> | </el-tab-pane> | ||||
</el-tabs> | </el-tabs> | ||||
@@ -5,10 +5,12 @@ import VueSetupExtend from 'vite-plugin-vue-setup-extend' | |||||
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' | import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' | ||||
import vueJsx from '@vitejs/plugin-vue-jsx' | import vueJsx from '@vitejs/plugin-vue-jsx' | ||||
import path from 'path' | import path from 'path' | ||||
// import vueDevTools from 'vite-plugin-vue-devtools' | |||||
// https://vitejs.dev/config/ | // https://vitejs.dev/config/ | ||||
export default defineConfig(() => { | export default defineConfig(() => { | ||||
return { | return { | ||||
plugins: [ | plugins: [ | ||||
// vueDevTools(), | |||||
vue(), | vue(), | ||||
VueSetupExtend(), | VueSetupExtend(), | ||||
vueJsx({ | vueJsx({ | ||||