@@ -30,7 +30,7 @@ const uploadUrl = store.dictStore.uploadUrl, | |||
formRef = ref(), | |||
rules = { | |||
preliminaryPlanFile: [ | |||
{ required: true, message: '请上传初步方案', trigger: 'blur' } | |||
{ required: true, message: '项目申报书', trigger: 'blur' } | |||
], | |||
supportingMaterialsFile: [ | |||
{ required: true, message: '请上传佐证材料', trigger: 'blur' } | |||
@@ -199,7 +199,7 @@ defineExpose({ validForm, formData, setFormData }) | |||
</el-upload> | |||
</el-form-item> | |||
</el-col> | |||
<el-col v-if="projectType!=='03'" :span="12"> | |||
<el-col :span="12"> | |||
<el-form-item label="可行性研究报告" prop="baseResearchReportFile"> | |||
<el-upload | |||
v-model:file-list="formData.baseResearchReportFile" | |||
@@ -704,6 +704,7 @@ watch(() => formData.value, val => { | |||
<el-col :span="12"> | |||
<el-form-item label="建设单位" prop="buildOrgName"> | |||
<!-- :disabled="formData.projectType!=='03'"--> | |||
<el-input v-model="formData.buildOrgName" placeholder="请输入" :disabled="true" /> | |||
</el-form-item> | |||
</el-col> | |||
@@ -254,6 +254,7 @@ | |||
</template> | |||
<script setup> | |||
import { onMounted, ref, watch } from 'vue' | |||
import { componentResource } from '@/utils/dictionary' | |||
const props = defineProps({ | |||
detailData: { | |||
@@ -276,30 +277,7 @@ function getDisdataItem (name) { | |||
function cloudTypeChange (index) { | |||
formData.value.cloudResource[index].baseSpecification = '' | |||
} | |||
const disData = ref([ | |||
{ | |||
name: 'ECS', | |||
children: [ | |||
{ | |||
name: '1核1G' | |||
}, | |||
{ | |||
name: '2核4G' | |||
} | |||
] | |||
}, | |||
{ | |||
name: 'OSS', | |||
children: [ | |||
{ | |||
name: '100G' | |||
}, | |||
{ | |||
name: '200G' | |||
} | |||
] | |||
} | |||
]) | |||
const disData = ref(componentResource) | |||
const ruleFormRef = ref() | |||
const formData = ref({ | |||
mobileTerminalEntry: [], | |||
@@ -571,6 +571,9 @@ async function reuseItem (data) { | |||
// 取出不复用的字段 | |||
const projectType = basicInfoRef.value.formData.projectType | |||
const projectName = basicInfoRef.value.formData.projectName | |||
const buildOrgName = basicInfoRef.value.formData.buildOrgName | |||
const orgCreditCode = basicInfoRef.value.formData.orgCreditCode | |||
const baseHistorProjId = basicInfoRef.value.formData?.baseHistorProjs?.map(i => i.baseProjId)?.join(';') || '' | |||
const baseHistorProjName = basicInfoRef.value.formData?.baseHistorProjs?.map(i => i.baseProjName)?.join(';') || '' | |||
const baseHistorProjYear = basicInfoRef.value.formData?.baseHistorProjs?.map(i => i.baseProjSetYear)?.join(';') || '' | |||
@@ -586,7 +589,7 @@ async function reuseItem (data) { | |||
} | |||
detailData.value = { | |||
...res.data, | |||
projectType, baseHistorProjId, baseHistorProjName, baseHistorProjYear, projectYear, projectName, | |||
projectType, baseHistorProjId, baseHistorProjName, baseHistorProjYear, projectYear, projectName, buildOrgName, orgCreditCode, | |||
...annualPaymentFormData, | |||
// 新项目不应该有状态 | |||
status: undefined | |||
@@ -6,6 +6,7 @@ import { useRouter, useRoute } from 'vue-router' | |||
import { submitResult } from '@/http/apis/declareMange/purchaseResults' | |||
import { dictionary } from '@/http/apis/projectCollection/projectCollectionEnter' | |||
import { getProjectDetail } from '@/http/apis/declareMange' | |||
import { unitCodeRules } from '@/utils/validate' | |||
const uploadUrl = store.dictStore.uploadUrl, | |||
{ proxy } = getCurrentInstance(), | |||
@@ -41,6 +42,7 @@ const formRef = ref(), | |||
bidDoc: [{ required: true, message: '请上传招标文件' }], | |||
acceptanceLetter: [{ required: true, message: '请上传中标通知书' }] | |||
}, | |||
formData = ref({ | |||
sections: [{ | |||
biddingDoc: [], | |||
@@ -229,7 +231,7 @@ onMounted(async () => { | |||
v-else | |||
label="采购代理机构统一社会信用代码" | |||
:prop="`sections[${index}].purchaseSocialCreditCode`" | |||
:rules="[{ required: true, message: '请输入' }]" | |||
:rules="unitCodeRules(true)" | |||
> | |||
<el-input v-model="formData.sections[index].purchaseSocialCreditCode" placeholder="请输入" /> | |||
</el-form-item> | |||
@@ -357,6 +359,22 @@ onMounted(async () => { | |||
</el-upload> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="24"> | |||
<el-row :gutter="40"> | |||
<el-col :span="12"> | |||
<el-form-item label="监理单位"> | |||
<el-input v-model="formData.sections[index].supervisingUnit" maxlength="50" placeholder="请输入" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="监理单位统一社会信用代码" :rules="unitCodeRules(false)"> | |||
<el-input v-model="formData.sections[index].supervisingUnitCode" placeholder="请输入" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
</el-col> | |||
</el-row> | |||
</el-card> | |||
<p> | |||
@@ -0,0 +1,270 @@ | |||
export const componentResource = | |||
[ | |||
{ | |||
'name': 'ECS (CPU)', | |||
'children': [ | |||
{ | |||
'name': '1C1G' | |||
}, | |||
{ | |||
'name': '1C2G' | |||
}, | |||
{ | |||
'name': '1C4G' | |||
}, | |||
{ | |||
'name': '1C8G' | |||
}, | |||
{ | |||
'name': '2C4G' | |||
}, | |||
{ | |||
'name': '2C8G' | |||
}, | |||
{ | |||
'name': '2C16G' | |||
}, | |||
{ | |||
'name': '4C8G' | |||
}, | |||
{ | |||
'name': '4C16G' | |||
}, | |||
{ | |||
'name': '4C32G' | |||
}, | |||
{ | |||
'name': '8C16G' | |||
}, | |||
{ | |||
'name': '8C32G' | |||
}, | |||
{ | |||
'name': '8C64G' | |||
}, | |||
{ | |||
'name': '16C32G' | |||
}, | |||
{ | |||
'name': '16C64G' | |||
}, | |||
{ | |||
'name': '16C128G' | |||
}, | |||
{ | |||
'name': '32C64G' | |||
}, | |||
{ | |||
'name': '32C128G' | |||
} | |||
] | |||
}, | |||
{ | |||
'name': 'ECS (GPU)', | |||
'children': [ | |||
{ | |||
'name': '20C80G + 1GPU' | |||
}, | |||
{ | |||
'name': '28C112G + 2GPU' | |||
}, | |||
{ | |||
'name': '56C224G + 4GPU' | |||
} | |||
] | |||
}, | |||
{ | |||
'name': 'RDS (MySQL)', | |||
'children': [ | |||
{ | |||
'name': '1C1G (最大连接数300)' | |||
}, | |||
{ | |||
'name': '1C2G (最大连接数600)' | |||
}, | |||
{ | |||
'name': '2C4G (最大连接数1200)' | |||
}, | |||
{ | |||
'name': '2C8G (最大连接数2000)' | |||
}, | |||
{ | |||
'name': '2C16G (最大连接数2500) (独享)' | |||
}, | |||
{ | |||
'name': '4C8G (最大连接数2000)' | |||
}, | |||
{ | |||
'name': '4C16G (最大连接数2500) (独享)' | |||
}, | |||
{ | |||
'name': '4C32G (最大连接数4000)' | |||
}, | |||
{ | |||
'name': '8C16G (最大连接数4000)' | |||
}, | |||
{ | |||
'name': '8C32G (最大连接数5000) (独享)' | |||
}, | |||
{ | |||
'name': '8C32G (最大连接数8000) (独享)' | |||
}, | |||
{ | |||
'name': '16C64G (最大连接数10000) (独享)' | |||
}, | |||
{ | |||
'name': '16C96G (最大连接数16000)' | |||
}, | |||
{ | |||
'name': '16C128G (最大连接数20000) (独享)' | |||
}, | |||
{ | |||
'name': '32C128G (最大连接数20000) (独享)' | |||
} | |||
] | |||
}, | |||
{ | |||
'name': 'PostgreSQL', | |||
'children': [ | |||
{ | |||
'name': '8C32G (独享型)' | |||
}, | |||
{ | |||
'name': '16C64G (独享型)' | |||
}, | |||
{ | |||
'name': '2C4G (独享型)' | |||
}, | |||
{ | |||
'name': '2C16G (独享型)' | |||
}, | |||
{ | |||
'name': '4C32G (独享型)' | |||
}, | |||
{ | |||
'name': '8C16G (独享型)' | |||
}, | |||
{ | |||
'name': '8C32G (独享型)' | |||
}, | |||
{ | |||
'name': '16C64G (独享型)' | |||
}, | |||
{ | |||
'name': '32C128G (独享型)' | |||
} | |||
] | |||
}, | |||
{ | |||
'name': 'redis', | |||
'children': [ | |||
{ | |||
'name': '主从(高配)版1G' | |||
}, | |||
{ | |||
'name': '主从(高配)版2G' | |||
}, | |||
{ | |||
'name': '主从(高配)版4G' | |||
}, | |||
{ | |||
'name': '主从(高配)版8G' | |||
}, | |||
{ | |||
'name': '主从(高配)版16G' | |||
}, | |||
{ | |||
'name': '主从(高配)版32G' | |||
}, | |||
{ | |||
'name': '主从(高配)版64G' | |||
}, | |||
{ | |||
'name': '集群版16G' | |||
}, | |||
{ | |||
'name': '集群版32G' | |||
}, | |||
{ | |||
'name': '集群版64G' | |||
}, | |||
{ | |||
'name': '集群版128G' | |||
}, | |||
{ | |||
'name': '集群版256G' | |||
} | |||
] | |||
}, | |||
{ | |||
'name': 'MongoDB', | |||
'children': [ | |||
{ | |||
'name': '2C4G (三节点副本版本)' | |||
}, | |||
{ | |||
'name': '4C8G (三节点副本版本)' | |||
}, | |||
{ | |||
'name': '8C16G (三节点副本版本)' | |||
}, | |||
{ | |||
'name': '8C32G (三节点副本版本)' | |||
}, | |||
{ | |||
'name': '16C64G (三节点副本版本)' | |||
}, | |||
{ | |||
'name': '2C16G (独享)' | |||
}, | |||
{ | |||
'name': '4C32G (独享)' | |||
}, | |||
{ | |||
'name': '8C64G (独享)' | |||
}, | |||
{ | |||
'name': '16C128G (独享)' | |||
} | |||
] | |||
}, | |||
{ | |||
'name': 'PolarDB O引擎', | |||
'children': [ | |||
{ | |||
'name': '1C4G (独享型)' | |||
}, | |||
{ | |||
'name': '2C8G (独享型)' | |||
}, | |||
{ | |||
'name': '2C16G (独享型)' | |||
}, | |||
{ | |||
'name': '4C16G (独享型)' | |||
}, | |||
{ | |||
'name': '4C32G (独享型)' | |||
}, | |||
{ | |||
'name': '8C32G (独享型)' | |||
}, | |||
{ | |||
'name': '8C64G (独享型)' | |||
}, | |||
{ | |||
'name': '16C64G (独享型)' | |||
}, | |||
{ | |||
'name': '16C128G (独享型)' | |||
}, | |||
{ | |||
'name': '32C128G (独享型)' | |||
}, | |||
{ | |||
'name': 'PolarDB O专用存储(GB)' | |||
} | |||
] | |||
} | |||
] |
@@ -0,0 +1,11 @@ | |||
export function unitCodeRules (required = true) { | |||
return [ | |||
{ required: required, message: '请输入统一信用代码' }, | |||
{ | |||
pattern: /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g, | |||
message: '格式错误,统一信用代码由十八位的数字或大写英文字母组成' | |||
} | |||
] | |||
} | |||