@@ -37,6 +37,8 @@ const exportList = { | |||
export const declareExport = (state, params) => | |||
http.get(exportList[state], { params, responseType: 'blob' }) // 导出列表 | |||
export const firstCreatProjectEdit = (userId) => http.post(`/api/v1/user-info/first-creat-project-edit/${userId}`) | |||
const projectStartList = { | |||
1: '/api/v1/declared/start', // 项目申报-新增 | |||
2: '/api/v1/declared/restart' // 重新申报 | |||
@@ -1,7 +1,14 @@ | |||
<script name="basicInfo" setup> | |||
import { nextTick, reactive, ref, onMounted, watch } from 'vue' | |||
import store from '@/store' | |||
import { fileFormatVerification, handleFileSuccess, handleFilePreview, handleFileError, reviewFileParam, fileTypes } from '@/utils/uploadAction.js' | |||
import { | |||
fileFormatVerification, | |||
handleFileSuccess, | |||
handleFilePreview, | |||
handleFileError, | |||
reviewFileParam, | |||
fileTypes | |||
} from '@/utils/uploadAction.js' | |||
import { storeToRefs } from 'pinia' | |||
import { useRoute } from 'vue-router' | |||
import { govStripList } from '@/http/apis/declareMange' | |||
@@ -11,6 +18,7 @@ import RelatedProjectDialog from '@/pages/projectCollection/projectCollectionEnt | |||
import ProjectContentDialog from '@/pages/projectCollection/projectCollectionEnter/components/projectContentDialog.vue' | |||
import { getOrganizationByCode } from '@/http/apis/commonApi' | |||
import { templateTypePage } from '@/http/apis/performanceEvaluation/indicatorTemplate' | |||
const props = defineProps({ | |||
detailData: { | |||
type: Object, | |||
@@ -26,11 +34,7 @@ const props = defineProps({ | |||
type: Number | |||
} | |||
}) | |||
const { | |||
fourSystem, | |||
businessTerritory | |||
// projectConTypeOptions | |||
} = store.dictStore.globalDicts || {}, | |||
const | |||
route = useRoute(), | |||
uploadUrl = store.dictStore.uploadUrl, | |||
userInfo = storeToRefs(store.userStore).userInfo || {}, | |||
@@ -81,9 +85,9 @@ const { | |||
{ required: true, message: '请选择是否首次新建', trigger: 'change' } | |||
], | |||
isInnovateWholeProvinceShare: [ | |||
{ required: true, message: '请选择是否为一地创新全省共享项目', trigger: 'change' } | |||
], | |||
// isInnovateWholeProvinceShare: [ | |||
// { required: true, message: '请选择是否为一地创新全省共享项目', trigger: 'change' } | |||
// ], | |||
isTemporaryAugment: [ | |||
{ required: true, message: '请选择是否为临时增补', trigger: 'change' } | |||
], | |||
@@ -120,18 +124,7 @@ const { | |||
{ required: true, message: '请选择上级主管单位', trigger: 'change' } | |||
], | |||
buildDuration: [{ required: true, message: '请选择建设起止年限', trigger: 'change' }], | |||
fourSystems: [{ required: true, message: '请选择四大体系', trigger: 'change' }], | |||
templateType: [{ required: true, message: '请选择绩效评价类型', trigger: 'change' }], | |||
isDigitalReform: [ | |||
{ | |||
required: true, | |||
message: '请选择是否数字化改革项目', | |||
trigger: 'change' | |||
} | |||
], | |||
bizDomain: [ | |||
{ required: true, message: '请选择综合业务领域', trigger: 'change' } | |||
], | |||
buildLevel: [{ required: true, message: '请选择建设层级', trigger: 'change' }], | |||
lowestLevel: [{ required: true, message: '请选择贯通层级', trigger: 'change' }], | |||
baseProjBasis: [{ required: true, message: '请选择立项依据', trigger: 'change' }], | |||
@@ -140,12 +133,14 @@ const { | |||
financialCode: [{ required: true, message: '请填写财政编码', trigger: 'blur' }], | |||
isCloud: [{ required: true, message: '请选择是否上云', trigger: 'change' }], | |||
cloudType: [{ required: true, message: '请选择云类型', trigger: 'change' }], | |||
systemPosition: [{ required: true, message: '请输入系统定位', trigger: 'blur' }], | |||
projectIntroduction: [{ required: true, message: '请输入项目简介', trigger: 'blur' }], | |||
projectOverview: [{ required: true, message: '请输入项目概述', trigger: 'blur' }], | |||
baseHistorProjs: [{ required: true, message: '请至少关联一个历年项目' }], | |||
beseExpectedResults: [{ required: true, message: '请至少添加一个项目内容与预期成效' }], | |||
projectYear: [{ required: true, message: '请选择预算年度' }], | |||
declareAmount: [{ required: true, message: '请输入申报金额', trigger: 'blur' }, { validator: moneyValidator, trigger: 'blur' }], | |||
declareAmount: [{ required: true, message: '请输入申报金额', trigger: 'blur' }, { | |||
validator: moneyValidator, | |||
trigger: 'blur' | |||
}], | |||
annualPlanAmount: [ | |||
{ required: true, message: '请输入年度支付金额', trigger: 'blur' }, | |||
{ validator: moneyValidator, trigger: 'blur' } | |||
@@ -234,7 +229,7 @@ const { | |||
projectType: data.projectType, | |||
isFirst: data.isFirst, | |||
baseConstructionType: data?.baseConstructionType?.split(';') || undefined, | |||
isInnovateWholeProvinceShare: data.isInnovateWholeProvinceShare, | |||
// isInnovateWholeProvinceShare: data.isInnovateWholeProvinceShare, | |||
isTemporaryAugment: data.isTemporaryAugment, | |||
responsibleMan: data.responsibleMan, | |||
responsibleManMobile: data.responsibleManMobile, | |||
@@ -249,10 +244,7 @@ const { | |||
higherSuperOrgCode: data.higherSuperOrgCode, | |||
higherSuperOrg: data.higherSuperOrg, | |||
buildDuration: data.beginTime && data.endTime ? [data.beginTime, data.endTime] : [], | |||
fourSystems: data.fourSystems, | |||
templateType: data.templateType, | |||
isDigitalReform: data.isDigitalReform, | |||
bizDomain: data.bizDomain && data.isDigitalReform === 1 ? data.bizDomain.split(',') : undefined, | |||
buildLevel: data.buildLevel, | |||
lowestLevel: data.lowestLevel, | |||
buildBasis: undefined, | |||
@@ -268,9 +260,7 @@ const { | |||
baseBasisEstablish: data.baseBasisEstablish || '', | |||
developCode: data.developCode, | |||
financialCode: data.financialCode, | |||
isCloud: data.isCloud, | |||
cloudType: data.cloudType && data.cloudType.split(',') || [], | |||
systemPosition: data.systemPosition, | |||
projectOverview: data.projectOverview, | |||
projectIntroduction: data.projectIntroduction, | |||
baseHistorProjs: data?.baseHistorProjId?.split(';').map((i, k) => { | |||
return { | |||
@@ -526,9 +516,6 @@ onMounted(() => { | |||
getCode('orgCreditCode') | |||
}) | |||
watch(() => props.declareAmount, val => { | |||
if (val >= 1000) { | |||
formData.value.isDigitalReform = 1 | |||
} | |||
}) | |||
defineExpose({ validForm, formData, setFormData }) | |||
@@ -577,7 +564,10 @@ watch(() => formData.value, val => { | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="项目类型" prop="projectType"> | |||
<el-radio-group v-model="formData.projectType" :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)"> | |||
<el-radio-group | |||
v-model="formData.projectType" | |||
:disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||
> | |||
<el-radio label="01">首次建设</el-radio> | |||
<el-radio label="02">迭代升级</el-radio> | |||
</el-radio-group> | |||
@@ -586,30 +576,42 @@ watch(() => formData.value, val => { | |||
<el-col :span="12"> | |||
<el-form-item label="内容类别" prop="baseConstructionType"> | |||
<el-checkbox-group v-model="formData.baseConstructionType"> | |||
<el-checkbox v-for="(item,index) in dictionaryList?.filter(i => i.type === 'CONTENT_TYPE')" :key="index" :label="item.value">{{ item.label }}</el-checkbox> | |||
<el-checkbox | |||
v-for="(item,index) in dictionaryList?.filter(i => i.type === 'CONTENT_TYPE')" | |||
:key="index" | |||
:label="item.value" | |||
>{{ item.label }} | |||
</el-checkbox> | |||
</el-checkbox-group> | |||
</el-form-item> | |||
</el-col> | |||
<template v-if="formData.baseProjIsConfidentiality==='01'"> | |||
<el-col :span="12"> | |||
<el-form-item label="是否首次新建" prop="isFirst"> | |||
<el-radio-group v-model="formData.isFirst" :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" @change="changeIsFirst"> | |||
<el-radio-group | |||
v-model="formData.isFirst" | |||
:disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||
@change="changeIsFirst" | |||
> | |||
<el-radio :label="1">是</el-radio> | |||
<el-radio :label="0">否</el-radio> | |||
</el-radio-group> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="是否一地创新全省共享项目" label-width="auto" prop="isInnovateWholeProvinceShare"> | |||
<el-radio-group v-model="formData.isInnovateWholeProvinceShare" :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)"> | |||
<el-radio :label="true">是</el-radio> | |||
<el-radio :label="false">否</el-radio> | |||
</el-radio-group> | |||
</el-form-item> | |||
</el-col> | |||
<!-- <el-col :span="12">--> | |||
<!-- <el-form-item label="是否一地创新全省共享项目" label-width="auto" prop="isInnovateWholeProvinceShare">--> | |||
<!-- <el-radio-group v-model="formData.isInnovateWholeProvinceShare" :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)">--> | |||
<!-- <el-radio :label="true">是</el-radio>--> | |||
<!-- <el-radio :label="false">否</el-radio>--> | |||
<!-- </el-radio-group>--> | |||
<!-- </el-form-item>--> | |||
<!-- </el-col>--> | |||
<el-col v-if="route.name!='planEdit'" :span="12"> | |||
<el-form-item label="是否临时增补" prop="isTemporaryAugment"> | |||
<el-radio-group v-model="formData.isTemporaryAugment" :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)"> | |||
<el-radio-group | |||
v-model="formData.isTemporaryAugment" | |||
:disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||
> | |||
<el-radio :label="1">是</el-radio> | |||
<el-radio :label="0">否</el-radio> | |||
</el-radio-group> | |||
@@ -690,7 +692,11 @@ watch(() => formData.value, val => { | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="上级主管单位类型" prop="baseProvManDeprtType"> | |||
<el-radio-group v-model="formData.baseProvManDeprtType" :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" @change="changeBaseProvManDeprtType"> | |||
<el-radio-group | |||
v-model="formData.baseProvManDeprtType" | |||
:disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||
@change="changeBaseProvManDeprtType" | |||
> | |||
<el-radio label="1">省级</el-radio> | |||
<el-radio label="2">非省级</el-radio> | |||
</el-radio-group> | |||
@@ -698,7 +704,11 @@ watch(() => formData.value, val => { | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="上级主管单位" prop="higherSuperOrg"> | |||
<el-input v-if="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" v-model="formData.higherSuperOrg" disabled /> | |||
<el-input | |||
v-if="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||
v-model="formData.higherSuperOrg" | |||
disabled | |||
/> | |||
<el-input | |||
v-else-if="formData.baseProvManDeprtType==='1'" | |||
v-model="formData.higherSuperOrg" | |||
@@ -717,7 +727,11 @@ watch(() => formData.value, val => { | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="本级主管单位" prop="superOrg"> | |||
<el-input v-if="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" v-model="formData.superOrg" disabled /> | |||
<el-input | |||
v-if="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||
v-model="formData.superOrg" | |||
disabled | |||
/> | |||
<el-input | |||
v-else | |||
v-model="formData.superOrg" | |||
@@ -731,20 +745,20 @@ watch(() => formData.value, val => { | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="本级主管单位统一社会信用代码" prop="superOrgCreditCode"> | |||
<el-input v-model="formData.superOrgCreditCode" placeholder="请填写" :disabled="isDisabledCreditCode['superOrgCreditCode']||$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" /> | |||
<el-input | |||
v-model="formData.superOrgCreditCode" | |||
placeholder="请填写" | |||
:disabled="isDisabledCreditCode['superOrgCreditCode']||$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
<template v-if="formData.baseProjIsConfidentiality==='01'"> | |||
<el-col :span="24"> | |||
<el-form-item label="四大体系" prop="fourSystems"> | |||
<el-radio-group v-model="formData.fourSystems" :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)"> | |||
<el-radio v-for="(v,k) in fourSystem" :key="k" :label="k*1">{{ v }}</el-radio> | |||
</el-radio-group> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="24"> | |||
<el-form-item label="绩效评价类型" prop="templateType"> | |||
<el-radio-group v-model="formData.templateType" :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)"> | |||
<el-radio-group | |||
v-model="formData.templateType" | |||
:disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||
> | |||
<el-radio | |||
v-for="(v,k) in templateTypeListData" | |||
:key="k" | |||
@@ -755,32 +769,6 @@ watch(() => formData.value, val => { | |||
</el-radio-group> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="是否数字化改革项目" prop="isDigitalReform"> | |||
<el-radio-group v-model="formData.isDigitalReform" :disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)"> | |||
<el-radio :label="1">是</el-radio> | |||
<el-radio :label="0">否</el-radio> | |||
</el-radio-group> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item v-if="formData.isDigitalReform === 1" label="综合业务领域" prop="bizDomain"> | |||
<el-select | |||
v-model="formData.bizDomain" | |||
placeholder="请选择" | |||
class="w-full" | |||
multiple | |||
:disabled="$route.name==='declarePlan'||[10012,10013,10016].includes(detailData?.status)" | |||
> | |||
<el-option | |||
v-for="(v, k) in businessTerritory" | |||
:key="k" | |||
:label="v" | |||
:value="k" | |||
/> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="24"> | |||
<el-form-item label="建设层级" prop="buildLevel"> | |||
<el-radio-group v-model="formData.buildLevel"> | |||
@@ -793,7 +781,10 @@ watch(() => formData.value, val => { | |||
</el-radio-group> | |||
</el-form-item> | |||
</el-col> | |||
<el-col v-if="!(formData?.baseConstructionType?.includes('03')&&!formData?.baseConstructionType?.includes('01'))" :span="24"> | |||
<el-col | |||
v-if="!(formData?.baseConstructionType?.includes('03')&&!formData?.baseConstructionType?.includes('01'))" | |||
:span="24" | |||
> | |||
<el-form-item v-if="formData?.baseConstructionType?.includes('01')" label="贯通层级" prop="lowestLevel"> | |||
<el-radio-group v-model="formData.lowestLevel"> | |||
<el-radio | |||
@@ -826,7 +817,9 @@ watch(() => formData.value, val => { | |||
@selection-change="selectionChange" | |||
> | |||
<template #fileName="{scope}"> | |||
<el-form-item v-if="formData.baseProjBasis&&formData.baseProjBasis.map(i=>i.value).includes(scope.row.value)"> | |||
<el-form-item | |||
v-if="formData.baseProjBasis&&formData.baseProjBasis.map(i=>i.value).includes(scope.row.value)" | |||
> | |||
<el-input | |||
:value="formData.baseProjBasis[formData.baseProjBasis.findIndex(i=>i.value===scope.row.value)]?.fileList?.[0]?.name" | |||
placeholder="请输入" | |||
@@ -917,38 +910,9 @@ watch(() => formData.value, val => { | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="24"> | |||
<el-form-item label="是否上云" prop="isCloud"> | |||
<el-radio-group v-model="formData.isCloud"> | |||
<el-radio :label="1">是</el-radio> | |||
<el-radio :label="0">否</el-radio> | |||
</el-radio-group> | |||
</el-form-item> | |||
</el-col> | |||
<el-col v-if="formData.isCloud===1" :span="24"> | |||
<el-form-item label="云类型" prop="cloudType"> | |||
<el-checkbox-group v-model="formData.cloudType"> | |||
<el-checkbox label="1">政务云(非信创)</el-checkbox> | |||
<el-checkbox label="2">政务云(信创)</el-checkbox> | |||
<el-checkbox label="3">其他</el-checkbox> | |||
</el-checkbox-group> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="24"> | |||
<el-form-item label="系统定位" prop="systemPosition"> | |||
<el-form-item label="项目概述" prop="projectOverview"> | |||
<el-input | |||
v-model="formData.systemPosition" | |||
:rows="4" | |||
type="textarea" | |||
placeholder="请输入" | |||
show-word-limit | |||
maxlength="2000" | |||
/> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="24"> | |||
<el-form-item label="项目简介" prop="projectIntroduction"> | |||
<el-input | |||
v-model="formData.projectIntroduction" | |||
v-model="formData.projectOverview" | |||
:rows="4" | |||
type="textarea" | |||
placeholder="请输入" | |||
@@ -991,7 +955,7 @@ watch(() => formData.value, val => { | |||
</table-list> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="24"> | |||
<el-col v-if="($route.name==='declarePlan')||([10012,10016,10013].includes(detailData.status))" :span="24"> | |||
<el-form-item label="项目内容与预期成效" prop="beseExpectedResults"> | |||
<table-list | |||
:pagination="false" | |||
@@ -1012,7 +976,8 @@ watch(() => formData.value, val => { | |||
plain | |||
icon="Plus" | |||
@click="()=>showProjectContentDialog()" | |||
>添加</el-button> | |||
>添加 | |||
</el-button> | |||
</p> | |||
</el-form-item> | |||
</el-col> | |||
@@ -1095,10 +1060,12 @@ watch(() => formData.value, val => { | |||
<el-button | |||
type="primary" | |||
@click="getTableData" | |||
>查询</el-button> | |||
>查询 | |||
</el-button> | |||
<el-button | |||
@click="reset" | |||
>重置</el-button> | |||
>重置 | |||
</el-button> | |||
</div> | |||
</el-form-item> | |||
</el-col> | |||
@@ -1146,14 +1113,16 @@ watch(() => formData.value, val => { | |||
</template> | |||
<style lang="less"> | |||
.el-upload-list{ | |||
.el-upload-list { | |||
width: 100%; | |||
} | |||
.basicUploadItem{ | |||
.el-upload-list__item-file-name{ | |||
.basicUploadItem { | |||
.el-upload-list__item-file-name { | |||
white-space: pre-wrap; | |||
} | |||
.el-form-item__error{ | |||
.el-form-item__error { | |||
top: 60%; | |||
width: 100%; | |||
text-align: center; | |||
@@ -0,0 +1,284 @@ | |||
<template> | |||
<el-form | |||
ref="ruleFormRef" | |||
:model="formData" | |||
label-position="right" | |||
label-width="180px" | |||
label-suffix=":" | |||
scroll-to-error | |||
:rules="rules" | |||
:validate-on-rule-change="false" | |||
> | |||
<el-form-item label="移动端入口" prop="mobileTerminalEntry"> | |||
<el-checkbox-group v-model="formData.mobileTerminalEntry"> | |||
<el-checkbox | |||
v-for="item in mobileType" | |||
:key="item.value" | |||
:label="item.label" | |||
:value="item.value" | |||
/> | |||
</el-checkbox-group> | |||
</el-form-item> | |||
<el-form-item label="是否使用云资源"> | |||
<el-switch | |||
v-model="formData.isCloudResource" | |||
active-value="1" | |||
inactive-value="0" | |||
/> | |||
</el-form-item> | |||
<el-form-item v-if="formData.isCloudResource==='1'" prop="cloudResource"> | |||
<el-table :data="formData.cloudResource" style="width: 100%"> | |||
<el-table-column type="index" label="序号" width="60" /> | |||
<el-table-column prop="state" label="*云资源类型"> | |||
<template #default="scope"> | |||
<el-form-item | |||
:prop="`cloudResource[${scope.$index}].cloudResourceType`" | |||
:rules="[{required:true,message:''}]" | |||
> | |||
<el-input | |||
v-model="formData.cloudResource[scope.$index].cloudResourceType" | |||
placeholder="云资源类型" | |||
/> | |||
</el-form-item> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="city" label="*基础规格"> | |||
<template #default="scope"> | |||
<el-form-item | |||
:prop="`cloudResource[${scope.$index}].baseSpecification`" | |||
:rules="[{required:true,message:''}]" | |||
> | |||
<el-input | |||
v-model="formData.cloudResource[scope.$index].baseSpecification" | |||
placeholder="基础规格" | |||
/> | |||
</el-form-item> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="address" label="*台数"> | |||
<template #default="scope"> | |||
<el-form-item | |||
:prop="`cloudResource[${scope.$index}].serversCount`" | |||
:rules="[{required:true,message:''}]" | |||
> | |||
<el-input | |||
v-model="formData.cloudResource[scope.$index].serversCount" | |||
placeholder="台数" | |||
/> | |||
</el-form-item> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="zip" label="描述"> | |||
<template #default="scope"> | |||
<el-form-item> | |||
<el-input | |||
v-model="formData.cloudResource[scope.$index].description" | |||
placeholder="描述" | |||
/> | |||
</el-form-item> | |||
</template> | |||
</el-table-column> | |||
<el-table-column fixed="right" label="操作"> | |||
<template #default="scope"> | |||
<el-button link type="primary" @click="formData.cloudResource.splice(scope.$index,1)">删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="Plus" | |||
class="w-full mb-8" | |||
@click="formData.cloudResource.push({})" | |||
>添加云资源 | |||
</el-button> | |||
</el-form-item> | |||
<el-form-item label="是否产生数据"> | |||
<el-switch | |||
v-model="formData.isProduceData" | |||
active-value="1" | |||
inactive-value="0" | |||
/> | |||
</el-form-item> | |||
<el-form-item v-if="formData.isProduceData==='1'" prop="isProduceData"> | |||
<el-table :data="formData.produceData" style="width: 100%"> | |||
<el-table-column type="index" label="序号" width="60" /> | |||
<el-table-column prop="state" label="*数据目录名称"> | |||
<template #default="scope"> | |||
<el-form-item | |||
:prop="`produceData[${scope.$index}].dataDirectoryName`" | |||
:rules="[{required:true,message:''}]" | |||
> | |||
<el-input | |||
v-model="formData.produceData[scope.$index].dataDirectoryName" | |||
placeholder="数据目录名称" | |||
/> | |||
</el-form-item> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="city" label="*数据项"> | |||
<template #default="scope"> | |||
<el-form-item | |||
:prop="`produceData[${scope.$index}].dataItem`" | |||
:rules="[{required:true,message:''}]" | |||
> | |||
<el-input | |||
v-model="formData.produceData[scope.$index].dataItem" | |||
placeholder="数据项" | |||
/> | |||
</el-form-item> | |||
</template> | |||
</el-table-column> | |||
<el-table-column fixed="right" label="操作"> | |||
<template #default="scope"> | |||
<el-button link type="primary" @click="formData.produceData.splice(scope.$index,1)">删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="Plus" | |||
class="w-full mb-8" | |||
@click="formData.produceData.push({})" | |||
>添加数据项 | |||
</el-button> | |||
</el-form-item> | |||
<el-form-item label="是否使用公共组件"> | |||
<el-switch | |||
v-model="formData.isCommonComponent" | |||
active-value="1" | |||
inactive-value="0" | |||
/> | |||
</el-form-item> | |||
<el-form-item v-if="formData.isCommonComponent==='1'" prop="isProduceData"> | |||
<el-table :data="formData.commonComponent" style="width: 100%"> | |||
<el-table-column type="index" label="序号" width="60" /> | |||
<el-table-column prop="state" label="*公告组件名称"> | |||
<template #default="scope"> | |||
<el-form-item | |||
:prop="`commonComponent[${scope.$index}].componentName`" | |||
:rules="[{required:true,message:''}]" | |||
> | |||
<el-input | |||
v-model="formData.commonComponent[scope.$index].componentName" | |||
placeholder="数据目录名称" | |||
/> | |||
</el-form-item> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="city" label="*公共组件类型"> | |||
<template #default="scope"> | |||
<el-form-item | |||
:prop="`commonComponent[${scope.$index}].componentType`" | |||
:rules="[{required:true,message:''}]" | |||
> | |||
<el-input | |||
v-model="formData.commonComponent[scope.$index].componentType" | |||
placeholder="数据项" | |||
/> | |||
</el-form-item> | |||
</template> | |||
</el-table-column> | |||
<el-table-column fixed="right" label="操作"> | |||
<template #default="scope"> | |||
<el-button link type="primary" @click="formData.commonComponent.splice(scope.$index,1)">删除</el-button> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<el-button | |||
type="primary" | |||
plain | |||
icon="Plus" | |||
class="w-full mb-8" | |||
@click="formData.commonComponent.push({})" | |||
>添加组件 | |||
</el-button> | |||
</el-form-item> | |||
</el-form> | |||
</template> | |||
<script setup> | |||
import { ref } from 'vue' | |||
const ruleFormRef = ref() | |||
const formData = ref({ | |||
mobileTerminalEntry: [], | |||
cloudResource: [ | |||
{ | |||
cloudResourceType: '', // - 云资源类型 | |||
baseSpecification: '', // - 基础规格 | |||
serversCount: '', // - 台数 | |||
description: '' // - 描述 | |||
} | |||
], | |||
produceData: [ | |||
{ | |||
dataDirectoryName: '', // - 数据目录名称 | |||
dataItem: '' // - 数据项 | |||
} | |||
], | |||
commonComponent: [ | |||
{ | |||
componentName: '', // - 组件名称 | |||
componentType: '' // - 公共组件类型 | |||
} | |||
], | |||
isCloudResource: '0', | |||
isProduceData: '0', | |||
isCommonComponent: '0' | |||
}) | |||
const rules = { | |||
mobileTerminalEntry: [{ required: true, message: '请选择移动端入口' }], | |||
cloudResource: [{ required: true, message: '请至少添加一个云资源' }], | |||
produceData: [{ required: true, message: '请至少添加一个产生数据' }], | |||
commonComponent: [{ required: true, message: '请至少添加一个公共组件' }] | |||
} | |||
function validForm (callback) { | |||
ruleFormRef.value.validate(valid => { | |||
callback(valid) | |||
}) | |||
} | |||
defineExpose({ validForm, formData }) | |||
// const submit = async (formEl) => { | |||
// if (!formEl) return | |||
// await formEl.validate((valid, fields) => { | |||
// if (valid) { | |||
// console.log('submit!') | |||
// } else { | |||
// console.log('error submit!', fields) | |||
// } | |||
// }) | |||
// } | |||
const mobileType = ref([ | |||
{ | |||
label: '浙里办', | |||
value: '1' | |||
}, | |||
{ | |||
label: '浙政钉', | |||
value: '2' | |||
}, | |||
{ | |||
label: '其他', | |||
value: '3' | |||
}, | |||
{ | |||
label: '无移动端', | |||
value: '4' | |||
} | |||
]) | |||
</script> | |||
<style scoped lang="less"> | |||
</style> |
@@ -5,6 +5,7 @@ import { useRoute, useRouter } from 'vue-router' | |||
import { storeToRefs } from 'pinia' | |||
import store from '@/store' | |||
import BasicInfo from './components/basicInfo.vue' | |||
import plannedUseResources from './components/plannedUseResources.vue' | |||
import FundsInfo from './components/fundsInfo.vue' | |||
import FundsAllocation from './components/fundsAllocation.vue' | |||
import AnnualPaymentPlan from './components/annualPaymentPlan.vue' | |||
@@ -34,6 +35,7 @@ const { proxy } = getCurrentInstance(), | |||
formConfig = ref({}), | |||
collapseModal = ref(['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']), | |||
basicInfoRef = ref(), // 基本信息 | |||
planndedUseResourcesRef = ref(), // 计划使用资源 | |||
fundsInfoRef = ref(), // 资金申报情况 | |||
fundsAllocationRef = ref(), // 资金分配情况 | |||
provincialExamineRef = ref(), // 重大项目省级联审 | |||
@@ -154,6 +156,11 @@ const { proxy } = getCurrentInstance(), | |||
} | |||
}) | |||
})) | |||
planndedUseResourcesRef.value && form.push(new Promise((resolve, reject) => { | |||
planndedUseResourcesRef.value.validForm((valid) => { | |||
if (valid) resolve() | |||
}) | |||
})) | |||
} | |||
Promise.all([...form]).then(async () => { | |||
if (basicInfoRef.value.formData?.baseProjIsConfidentiality === '02') { | |||
@@ -266,7 +273,8 @@ const { proxy } = getCurrentInstance(), | |||
...basicInfoRef.value.formData, | |||
...fundsInfoRef.value.formData, | |||
...fundsAllocationRef.value.formData, | |||
bizDomain: basicInfoRef.value.formData?.isDigitalReform === 1 ? basicInfoRef.value.formData.bizDomain.join(',') : undefined, | |||
...planndedUseResourcesRef.value?.formData, | |||
// bizDomain: basicInfoRef.value.formData?.isDigitalReform === 1 ? basicInfoRef.value.formData.bizDomain.join(',') : undefined, | |||
baseConstructionType: basicInfoRef.value.formData?.baseConstructionType?.join(';') || '', | |||
baseProvManDeprtType: basicInfoRef.value.formData.baseProvManDeprtType * 1 || undefined, | |||
projectYear: fundsInfoRef.value.formData?.projectYear * 1, | |||
@@ -277,7 +285,7 @@ const { proxy } = getCurrentInstance(), | |||
// buildBasis: buildBasis && JSON.stringify(buildBasis), | |||
baseProjBasis: basicInfoRef.value.formData?.baseProjBasis?.map(i => i.value)?.join(';') || undefined, | |||
baseProjBasisFile: basicInfoRef.value.formData?.baseProjBasis?.map(i => i.fileList && JSON.stringify(changFilesParam(i.fileList)))?.join(';') || '', | |||
cloudType: basicInfoRef.value.formData?.isCloud && basicInfoRef.value.formData?.cloudType?.length && basicInfoRef.value.formData.cloudType.join(',') || undefined, | |||
// cloudType: basicInfoRef.value.formData?.isCloud && basicInfoRef.value.formData?.cloudType?.length && basicInfoRef.value.formData.cloudType.join(',') || undefined, | |||
baseHistorProjId: basicInfoRef.value.formData?.baseHistorProjs?.map(i => i.baseProjId)?.join(';') || '', | |||
baseHistorProjName: basicInfoRef.value.formData?.baseHistorProjs?.map(i => i.baseProjName)?.join(';') || '', | |||
baseHistorProjYear: basicInfoRef.value.formData?.baseHistorProjs?.map(i => i.baseProjSetYear)?.join(';') || '', | |||
@@ -606,6 +614,7 @@ onMounted(async () => { | |||
<el-row> | |||
<el-col class="leftCol" :span="24"> | |||
<el-collapse v-model="collapseModal"> | |||
<el-collapse-item name="1" class="mb-16"> | |||
<template #title> | |||
<div class="collapse-title">基本信息</div> | |||
@@ -748,8 +757,18 @@ onMounted(async () => { | |||
<div class="p-24"> | |||
<applications ref="applicationsRef" :is-first="basicInfoRef?.formData?.isFirst" :core-business="coreBusinessRef?.formData?.coreBusiness" /> | |||
</div> | |||
</el-collapse-item> | |||
<el-collapse-item v-if="($route.name==='declarePlan')||([10012,10016,10013].includes(detailData.status))" name="1" class="mb-16"> | |||
<template #title> | |||
<div class="collapse-title">计划使用资源</div> | |||
</template> | |||
<div class="p-24"> | |||
<planned-use-resources ref="planndedUseResourcesRef" /> | |||
</div> | |||
</el-collapse-item> | |||
</template> | |||
</el-collapse> | |||
</el-col> | |||
</el-row> | |||
@@ -1,14 +1,17 @@ | |||
<script setup name = 'projectDeclare'> | |||
<script setup name='projectDeclare'> | |||
import { ref, reactive, h, onMounted, getCurrentInstance } from 'vue' | |||
import { useRouter } from 'vue-router' | |||
import { getProjectList, draftList, declareExport, removeProject } from '@/http/apis/declareMange' | |||
import { getProjectList, draftList, declareExport, removeProject, firstCreatProjectEdit } from '@/http/apis/declareMange' | |||
import store from '@/store' | |||
import useExportExc from '@/utils/useExportExc' | |||
import { ElMessageBox } from 'element-plus' | |||
const { | |||
statusOptionsCascader, statusOptions, | |||
projectConTypeOptions | |||
} = store.dictStore.globalDicts || {}, | |||
{ proxy } = getCurrentInstance(), | |||
dialogVideVisible = ref(false), | |||
// 搜索栏表单数据 | |||
searchForm = reactive({ | |||
stage: undefined, | |||
@@ -195,7 +198,18 @@ const { | |||
$router = useRouter(), | |||
// 去项目申报页 | |||
toDeclarePage = () => { | |||
$router.push({ name: 'declarePage' }) | |||
if (store.userStore.userInfo.isFirstCreateProject === 0) { | |||
$router.push({ name: 'declarePage' }) | |||
return | |||
} | |||
ElMessageBox.alert('您是第一次使用项目申报,请先观看教学视频', { | |||
showCancelButton: false | |||
}).then(() => { | |||
dialogVideVisible.value = true | |||
// 请求接口 | |||
firstCreatProjectEdit(store.userStore.userInfo.userId) | |||
store.userStore.userInfo.isFirstCreateProject = 0 | |||
}) | |||
}, | |||
tableListRef = ref(), | |||
// 导出excel文件 | |||
@@ -394,13 +408,15 @@ onMounted(async () => { | |||
plain | |||
:loading="exportLoading" | |||
@click="handleExcel" | |||
>导出</el-button> | |||
>导出 | |||
</el-button> | |||
<el-button | |||
type="primary" | |||
size="small" | |||
icon="plus" | |||
@click="toDeclarePage" | |||
>项目申报</el-button> | |||
>项目申报 | |||
</el-button> | |||
</div> | |||
</div> | |||
</template> | |||
@@ -414,12 +430,19 @@ onMounted(async () => { | |||
<template #action="{ scope }"> | |||
<a @click="checkDetail(scope.row)">详情</a> | |||
<a v-if="!tabStatus" @click="editProject(scope.row)">编辑</a> | |||
<a v-if="tabStatus && [10002,10005,10007,10013,20005].includes(scope.row.status)" @click="reDeclare(scope.row)">重新申报</a> | |||
<a | |||
v-if="tabStatus && [10002,10005,10007,10013,20005].includes(scope.row.status)" | |||
@click="reDeclare(scope.row)" | |||
>重新申报</a> | |||
<a v-if="tabStatus && [10007].includes(scope.row.status)" @click="remove(scope.row)">删除</a> | |||
</template> | |||
</table-list> | |||
</el-card> | |||
</el-row> | |||
<el-dialog v-model="dialogVideVisible" title="项目申报教学视频" width="800"> | |||
<video src="http://www.heletech.com.cn/img/%E5%AE%98%E7%BD%91%E4%BB%8B%E7%BB%8D.mp4" controls></video> | |||
</el-dialog> | |||
</template> | |||
<style lang='less' scoped> | |||
@@ -11,7 +11,7 @@ const | |||
data: Object | |||
}), | |||
form = ref({ | |||
perIndicator: [] | |||
perIndicator: [{}, {}, {}] | |||
}), | |||
formRef = ref(), | |||
rules = { | |||
@@ -76,7 +76,7 @@ watch( | |||
} else { | |||
formRef.value?.resetFields() | |||
form.value = { | |||
perIndicator: [] | |||
perIndicator: [{}, {}, {}] | |||
} | |||
} | |||
} | |||
@@ -186,7 +186,7 @@ watch( | |||
</el-form-item> | |||
</template> | |||
<template #action="{scope}"> | |||
<a class="text-danger cursor-pointer" @click="del(scope.$index)">移除</a> | |||
<a v-if="scope.$index>2" class="text-danger cursor-pointer" @click="del(scope.$index)">移除</a> | |||
</template> | |||
</table-list> | |||
</el-form> | |||
@@ -15,7 +15,24 @@ const props = defineProps({ | |||
default: () => [] | |||
} | |||
}) | |||
const { statusOptions, cloudTypeOptions, fourSystem, businessTerritory, projectTypeOptions } = store.dictStore.globalDicts || {}, | |||
function getMobileText (list) { | |||
if (list && list instanceof Array) { | |||
const map = { | |||
1: '浙里办', | |||
2: '浙政钉', | |||
3: '其他', | |||
4: '无移动端' | |||
} | |||
const newlist = list.map(i => { | |||
return map[i] | |||
}) | |||
return newlist.join(',') | |||
} | |||
return '-' | |||
} | |||
const { statusOptions, projectTypeOptions } = store.dictStore.globalDicts || {}, | |||
column = reactive([ | |||
{ | |||
label: '序号', | |||
@@ -89,102 +106,106 @@ watch(() => props.detailData, val => { | |||
<template> | |||
<el-descriptions :column="2" border> | |||
<el-descriptions-item label="是否涉密"> | |||
{{ detailData.baseProjIsConfidentiality==='02'?'是':'否' }} | |||
{{ detailData.baseProjIsConfidentiality === '02' ? '是' : '否' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="项目ID"> | |||
{{ detailData.projectCode ||'-' }} | |||
{{ detailData.projectCode || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="项目名称"> | |||
{{ detailData.projectName ||'-' }} | |||
{{ detailData.projectName || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="项目类型"> | |||
{{ detailData?.projectType&&projectTypeOptions[detailData?.projectType] }} | |||
{{ detailData?.projectType && projectTypeOptions[detailData?.projectType] }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="内容类别"> | |||
{{ detailData?.baseConstructionType?.split(';').map(i=>dictionaryList?.filter(j => j.type === 'CONTENT_TYPE').find(k=>k.value===i)?.label).join('、') ||'-' }} | |||
{{ | |||
detailData?.baseConstructionType?.split(';').map(i => dictionaryList?.filter(j => j.type === 'CONTENT_TYPE').find(k => k.value === i)?.label).join('、') || '-' | |||
}} | |||
</el-descriptions-item> | |||
<template v-if="detailData?.baseProjIsConfidentiality !== '02'"> | |||
<el-descriptions-item label="是否首次新建"> | |||
{{ detailData.isFirst?'是':'否' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="是否一地创新全省共享项目"> | |||
{{ detailData.isInnovateWholeProvinceShare?'是':'否' }} | |||
{{ detailData.isFirst ? '是' : '否' }} | |||
</el-descriptions-item> | |||
</template> | |||
<el-descriptions-item label="行政区划编码"> | |||
{{ detailData.areaCode ||'-' }} | |||
{{ detailData.areaCode || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="行政区划名称"> | |||
{{ detailData.area ||'-' }} | |||
{{ detailData.area || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="项目负责人"> | |||
{{ detailData.responsibleMan||'-' }} | |||
{{ detailData.responsibleMan || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="项目负责人手机号码"> | |||
{{ detailData.responsibleManMobile||'-' }} | |||
{{ detailData.responsibleManMobile || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="项目联系人"> | |||
{{ detailData.contactName||'-' }} | |||
{{ detailData.contactName || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="项目联系人手机号码"> | |||
{{ detailData.contactPhone||'-' }} | |||
{{ detailData.contactPhone || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="上级业务主管单位"> | |||
{{ detailData.higherSuperOrg||'-' }} | |||
{{ detailData.higherSuperOrg || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="上级业务主管单位浙政钉ID"> | |||
{{ detailData.higherSuperOrgCode||'-' }} | |||
{{ detailData.higherSuperOrgCode || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="本级主管部门单位"> | |||
{{ detailData.superOrg||'-' }} | |||
{{ detailData.superOrg || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="本级主管单位浙政钉ID"> | |||
{{ detailData.superOrgCode||'-' }} | |||
{{ detailData.superOrgCode || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="本级主管单位统一社会信用代码"> | |||
{{ detailData.superOrgCreditCode||'-' }} | |||
{{ detailData.superOrgCreditCode || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="建设单位:"> | |||
{{ detailData.buildOrgName||'-' }} | |||
{{ detailData.buildOrgName || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="建设单位浙政钉ID"> | |||
{{ detailData.buildOrgCode||'-' }} | |||
{{ detailData.buildOrgCode || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="建设单位统一信用代码"> | |||
{{ detailData.orgCreditCode||'-' }} | |||
{{ detailData.orgCreditCode || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="主管单位"> | |||
{{ detailData.superOrg||'-' }} | |||
{{ detailData.superOrg || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="上级主管单位类型"> | |||
{{ detailData.baseProvManDeprtType===1?'省级': detailData.baseProvManDeprtType===2?'非省级':'-' }} | |||
{{ detailData.baseProvManDeprtType === 1 ? '省级' : detailData.baseProvManDeprtType === 2 ? '非省级' : '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="上级条线主管单位"> | |||
{{ detailData.higherSuperOrg||'-' }} | |||
{{ detailData.higherSuperOrg || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="项目状态"> | |||
{{ statusOptions[detailData.status]?.name||'-' }} | |||
{{ statusOptions[detailData.status]?.name || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="预算年度"> | |||
{{ detailData.projectYear ||'-' }} | |||
{{ detailData.projectYear || '-' }} | |||
</el-descriptions-item> | |||
<template v-if="detailData?.baseProjIsConfidentiality !== '02'"> | |||
<el-descriptions-item label="建设起止年限"> | |||
{{ detailData.beginTime }}~{{ detailData.endTime }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="建设层级"> | |||
{{ dictionaryList?.filter(i => i.type === 'BUILD_LEVEL').find(i=>i.value===detailData?.buildLevel)?.label ||'-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="贯通层级"> | |||
{{ dictionaryList?.filter(i => i.type === 'BUILD_LEVEL').find(i=>i.value===detailData?.lowestLevel)?.label ||'-' }} | |||
{{ | |||
dictionaryList?.filter(i => i.type === 'BUILD_LEVEL').find(i => i.value === detailData?.buildLevel)?.label || '-' | |||
}} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="系统定位" span="2"> | |||
<span style="word-break:break-all">{{ detailData.systemPosition||'-' }}</span> | |||
<el-descriptions-item label="贯通层级" span="2"> | |||
{{ | |||
dictionaryList?.filter(i => i.type === 'BUILD_LEVEL').find(i => i.value === detailData?.lowestLevel)?.label || '-' | |||
}} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="项目简介" span="2"> | |||
<span style="word-break:break-all">{{ detailData.projectIntroduction||'-' }}</span> | |||
<el-descriptions-item label="项目概述" span="2"> | |||
<span style="word-break:break-all">{{ detailData.projectOverview || '-' }}</span> | |||
</el-descriptions-item> | |||
<el-descriptions-item v-if="detailData.buildBasis&&JSON.parse(detailData.buildBasis)?.length" label="立项依据" span="2"> | |||
<el-descriptions-item | |||
v-if="detailData.buildBasis&&JSON.parse(detailData.buildBasis)?.length" | |||
label="立项依据" | |||
span="2" | |||
> | |||
<table-list | |||
:column="column" | |||
:data="detailData.buildBasis&&JSON.parse(detailData.buildBasis)" | |||
@@ -223,36 +244,23 @@ watch(() => props.detailData, val => { | |||
</table-list> | |||
</el-descriptions-item> | |||
<el-descriptions-item label="立项依据说明" span="2"> | |||
<span style="word-break:break-all">{{ detailData.baseBasisEstablish||'-' }}</span> | |||
<span style="word-break:break-all">{{ detailData.baseBasisEstablish || '-' }}</span> | |||
</el-descriptions-item> | |||
<el-descriptions-item label="发改编码"> | |||
{{ detailData.developCode ||'-' }} | |||
{{ detailData.developCode || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="财政编码"> | |||
{{ detailData.financialCode ||'-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="是否数字化改革项目"> | |||
{{ detailData.isDigitalReform?'是':'否' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="综合业务领域"> | |||
{{ detailData.bizDomain?.split(',').map(i=>businessTerritory[i]).join(',')||'-' }} | |||
{{ detailData.financialCode || '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="是否上云"> | |||
{{ detailData.isCloud?'是':'否' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item v-if="detailData.isCloud" label="云类型"> | |||
{{ detailData.cloudType&&detailData.cloudType.split(',').map(i=>cloudTypeOptions[i]).join('、')|| '-' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item | |||
label="四大体系" | |||
>{{ fourSystem[detailData.fourSystems] }}</el-descriptions-item> | |||
<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 | |||
label="是否临时增补项目" | |||
:span="2" | |||
>{{ detailData.isTemporaryAugment?'是':'否' }}</el-descriptions-item> | |||
>{{ detailData.isTemporaryAugment ? '是' : '否' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="历年项目名称" :span="2"> | |||
<table-list | |||
:column="column1" | |||
@@ -272,8 +280,16 @@ watch(() => props.detailData, val => { | |||
:empty-temp="false" | |||
/> | |||
</el-descriptions-item> | |||
<el-descriptions-item v-if="detailData?.projectApplicationForm&&JSON.parse(detailData.projectApplicationForm)?.length" label="项目申报书"> | |||
<p v-for="(item,index) in detailData.projectApplicationForm&&JSON.parse(detailData.projectApplicationForm)" :key="index" class="mb-4"> | |||
<el-descriptions-item | |||
v-if="detailData?.projectApplicationForm&&JSON.parse(detailData.projectApplicationForm)?.length" | |||
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> | |||
@@ -282,14 +298,22 @@ watch(() => props.detailData, val => { | |||
label="预审申请单" | |||
span="2" | |||
> | |||
<accessory :file-name="detailData.pretrialFileName" :file-id="detailData.pretrialFileId" :is-down-load="isDownLoadFile" /> | |||
<accessory | |||
:file-name="detailData.pretrialFileName" | |||
:file-id="detailData.pretrialFileId" | |||
:is-down-load="isDownLoadFile" | |||
/> | |||
</el-descriptions-item> | |||
<el-descriptions-item | |||
v-if="false" | |||
label="上级条线主管单位审核意见" | |||
span="2" | |||
> | |||
<p v-for="(item,index) in detailData.higherLineSuperOrgReviewComments&&JSON.parse(detailData.higherLineSuperOrgReviewComments)" :key="index" class="mb-4"> | |||
<p | |||
v-for="(item,index) in detailData.higherLineSuperOrgReviewComments&&JSON.parse(detailData.higherLineSuperOrgReviewComments)" | |||
:key="index" | |||
class="mb-4" | |||
> | |||
<accessory :file-name="item.originalFileName" :file-id="item.id" :is-down-load="isDownLoadFile" /> | |||
</p> | |||
</el-descriptions-item> | |||
@@ -298,7 +322,46 @@ watch(() => props.detailData, val => { | |||
label="建设方案审查意见文件" | |||
span="2" | |||
> | |||
<accessory :file-name="detailData.constructFileName" :file-id="detailData.constructFileId" :is-down-load="isDownLoadFile" /> | |||
<accessory | |||
:file-name="detailData.constructFileName" | |||
:file-id="detailData.constructFileId" | |||
:is-down-load="isDownLoadFile" | |||
/> | |||
</el-descriptions-item> | |||
<el-descriptions-item label="移动端入口" :span="2"> | |||
{{ getMobileText(detailData.mobileTerminalEntry) }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="是否使用云资源" :span="2"> | |||
{{ detailData.isCloudResource===1?'是':'否' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="云资源" :span="2"> | |||
<el-table :data="detailData.cloudResource" style="width: 100%"> | |||
<el-table-column prop="cloudResourceType" label="云资源类型" /> | |||
<el-table-column prop="baseSpecification" label="基础规格" /> | |||
<el-table-column prop="serversCount" label="台数" /> | |||
<el-table-column prop="description" label="描述" /> | |||
</el-table> | |||
</el-descriptions-item> | |||
<el-descriptions-item label="是否产生数据" :span="2"> | |||
{{ detailData.isProduceData===1?'是':'否' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="数据列表" :span="2"> | |||
<el-table :data="detailData.produceData" style="width: 100%"> | |||
<el-table-column prop="dataDirectoryName" label="数据目录名称" /> | |||
<el-table-column prop="dataItem" label="数据项" /> | |||
</el-table> | |||
</el-descriptions-item> | |||
<el-descriptions-item label="是否是用公共组件" :span="2"> | |||
{{ detailData.isCommonComponent===1?'是':'否' }} | |||
</el-descriptions-item> | |||
<el-descriptions-item label="公共组件列表" :span="2"> | |||
<el-table :data="detailData.commonComponent" style="width: 100%"> | |||
<el-table-column prop="componentName" label="数据目录名称" /> | |||
<el-table-column prop="componentType" label="数据项" /> | |||
</el-table> | |||
</el-descriptions-item> | |||
</template> | |||
</el-descriptions> | |||