Merge remote-tracking branch 'origin/master'

pull/480/head
admin 2024-06-12 09:19:34 +08:00
commit 3e917bb783
6 changed files with 417 additions and 379 deletions

View File

@ -70,7 +70,14 @@ export const MainApi = {
exportMain: async (params) => { exportMain: async (params) => {
return await request.download({ url: `/contract/main/export-excel`, params }) return await request.download({ url: `/contract/main/export-excel`, params })
}, },
// 导入立项
getListPage: async (params) => {
return await request.get({ url: `/apply/main/page`, params })
},
generateContract: async (data: MainVO) => {
return await request.post({ url: `/contract/main/generateContract`, data })
},
// ==================== 子表(任务书详细信息) ==================== // ==================== 子表(任务书详细信息) ====================
// 获得任务书详细信息 // 获得任务书详细信息

View File

@ -124,6 +124,7 @@ export enum DICT_TYPE {
SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type', SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type',
SYSTEM_SOCIAL_TYPE = 'system_social_type', SYSTEM_SOCIAL_TYPE = 'system_social_type',
SYSTEM_EDUCATION = "education", // 学历 SYSTEM_EDUCATION = "education", // 学历
PLAN_ID="plan_id",//计划类型
SYSTEM_MAJOR = "major", //专业 SYSTEM_MAJOR = "major", //专业
// ========== 所属技术领域 ========== // ========== 所属技术领域 ==========

View File

@ -1,141 +1,174 @@
<template> <template>
<Dialog :title="dialogTitle" v-model="dialogVisible"> <Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef" <!-- 子表的表单 -->
:model="formData" <el-tabs v-model="subTabsName">
:rules="formRules" <el-tab-pane label="基础信息" name="basic">
label-width="100px" <el-form ref="formRef" :model="formData" :rules="formRules" label-width="250px" v-loading="formLoading">
v-loading="formLoading" <el-row>
> <el-col :span="12">
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
<el-input v-model="formData.projectName" placeholder="请输入项目名称" /> <el-input v-model="formData.projectName" placeholder="请输入项目名称" />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目负责人" prop="projectLeader"> <el-form-item label="项目负责人" prop="projectLeader">
<el-input v-model="formData.projectLeader" placeholder="请输入项目负责人" /> <el-input v-model="formData.projectLeader" placeholder="请输入项目负责人" />
</el-form-item> </el-form-item></el-col>
<!-- <el-form-item label="项目负责人Id" prop="projectLeaderId"> <!-- <el-col :span="12">
<el-form-item label="项目负责人Id" prop="projectLeaderId">
<el-input v-model="formData.projectLeaderId" placeholder="请输入项目负责人Id" /> <el-input v-model="formData.projectLeaderId" placeholder="请输入项目负责人Id" />
</el-form-item> --> </el-form-item></el-col>-->
<el-col :span="12">
<el-form-item label="项目编号" prop="projectCode"> <el-form-item label="项目编号" prop="projectCode">
<el-input v-model="formData.projectCode" placeholder="请输入项目编号" /> <el-input v-model="formData.projectCode" placeholder="请输入项目编号" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="所属技术领域" prop="technicalField"> <el-form-item label="所属技术领域" prop="technicalField">
<el-select v-model="formData.technicalField" placeholder="请选择所属技术领域"> <el-select v-model="formData.technicalField" placeholder="请选择所属技术领域">
<el-option <el-option v-for="dict in getStrDictOptions(DICT_TYPE.TECHNICAL_FIELD)" :key="dict.value"
v-for="dict in getStrDictOptions(DICT_TYPE.TECHNICAL_FIELD)" :label="dict.label" :value="dict.value" />
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="年度" prop="year"> <el-form-item label="年度" prop="year">
<el-input v-model="formData.year" placeholder="请输入年度" /> <el-input v-model="formData.year" placeholder="请输入年度" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="开始时间" prop="beginDate"> <el-form-item label="开始时间" prop="beginDate">
<el-date-picker <el-date-picker v-model="formData.beginDate" type="date" value-format="x" placeholder="选择开始时间" />
v-model="formData.beginDate" </el-form-item></el-col>
type="date" <el-col :span="12">
value-format="x"
placeholder="选择开始时间"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endDate"> <el-form-item label="结束时间" prop="endDate">
<el-date-picker <el-date-picker v-model="formData.endDate" type="date" value-format="x" placeholder="选择结束时间" />
v-model="formData.endDate" </el-form-item></el-col>
type="date" <el-col :span="12">
value-format="x"
placeholder="选择结束时间"
/>
</el-form-item>
<el-form-item label="计划类型" prop="planName"> <el-form-item label="计划类型" prop="planName">
<el-select v-model="formData.planName" placeholder="请选择计划类型"> <el-select v-model="formData.planName" placeholder="请选择计划类型">
<el-option <el-option v-for="dict in getStrDictOptions(DICT_TYPE.PLAN_ID)" :key="dict.value" :label="dict.label"
v-for="dict in getStrDictOptions(DICT_TYPE.PLAN_ID)" :value="dict.value" />
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item></el-col>
<!-- <el-form-item label="计划Id" prop="planId"> <!-- <el-col :span="12">
<el-form-item label="计划Id" prop="planId">
<el-input v-model="formData.planId" placeholder="请输入计划Id" /> <el-input v-model="formData.planId" placeholder="请输入计划Id" />
</el-form-item> --> </el-form-item></el-col>-->
<el-col :span="12">
<el-form-item label="课题实施所需的其他配套条件" prop="supportingCondition"> <el-form-item label="课题实施所需的其他配套条件" prop="supportingCondition">
<el-input v-model="formData.supportingCondition" placeholder="请输入课题实施所需的其他配套条件" /> <el-input v-model="formData.supportingCondition" placeholder="请输入课题实施所需的其他配套条件" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="性别" prop="gender"> <el-form-item label="性别" prop="gender">
<el-input v-model="formData.gender" placeholder="请输入性别" /> <el-select v-model="formData.gender" placeholder="请选择性别">
</el-form-item> <el-option v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_USER_SEX)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item></el-col>
<el-col :span="12">
<el-form-item label="年龄" prop="age"> <el-form-item label="年龄" prop="age">
<el-input v-model="formData.age" placeholder="请输入年龄" /> <el-input v-model="formData.age" placeholder="请输入年龄" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="学历" prop="education"> <el-form-item label="学历" prop="education">
<el-input v-model="formData.education" placeholder="请输入学历" /> <el-select v-model="formData.education" placeholder="请选择学历">
</el-form-item> <el-option v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_EDUCATION)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item></el-col>
<el-col :span="12">
<el-form-item label="所学专业" prop="major"> <el-form-item label="所学专业" prop="major">
<el-input v-model="formData.major" placeholder="请输入所学专业" /> <el-select v-model="formData.major" placeholder="请选择所学专业">
</el-form-item> <el-option v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_MAJOR)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item></el-col>
<el-col :span="12">
<el-form-item label="从事专业" prop="engagMajor"> <el-form-item label="从事专业" prop="engagMajor">
<el-input v-model="formData.engagMajor" placeholder="请输入从事专业" /> <el-select v-model="formData.engagMajor" placeholder="请选择从事专业">
</el-form-item> <el-option v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_MAJOR)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item></el-col>
<el-col :span="12">
<el-form-item label="职务(职称)" prop="position"> <el-form-item label="职务(职称)" prop="position">
<el-input v-model="formData.position" placeholder="请输入职务(职称)" /> <el-input v-model="formData.position" placeholder="请输入职务(职称)" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="电话" prop="phoneNo"> <el-form-item label="电话" prop="phoneNo">
<el-input v-model="formData.phoneNo" placeholder="请输入电话" /> <el-input v-model="formData.phoneNo" placeholder="请输入电话" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="邮箱" prop="email"> <el-form-item label="邮箱" prop="email">
<el-input v-model="formData.email" placeholder="请输入邮箱" /> <el-input v-model="formData.email" placeholder="请输入邮箱" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="传真" prop="fax"> <el-form-item label="传真" prop="fax">
<el-input v-model="formData.fax" placeholder="请输入传真" /> <el-input v-model="formData.fax" placeholder="请输入传真" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="邮编" prop="postalCode"> <el-form-item label="邮编" prop="postalCode">
<el-input v-model="formData.postalCode" placeholder="请输入邮编" /> <el-input v-model="formData.postalCode" placeholder="请输入邮编" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="通讯地址" prop="address"> <el-form-item label="通讯地址" prop="address">
<el-input v-model="formData.address" placeholder="请输入通讯地址" /> <el-input v-model="formData.address" placeholder="请输入通讯地址" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="主要业绩" prop="achievement"> <el-form-item label="主要业绩" prop="achievement">
<el-input v-model="formData.achievement" placeholder="请输入主要业绩" /> <el-input v-model="formData.achievement" placeholder="请输入主要业绩" />
</el-form-item> </el-form-item></el-col>
<!-- <el-form-item label="主管部门ID" prop="competentDeptId"> <!-- <el-col :span="12">
<el-form-item label="主管部门ID" prop="competentDeptId">
<el-input v-model="formData.competentDeptId" placeholder="请输入主管部门ID" /> <el-input v-model="formData.competentDeptId" placeholder="请输入主管部门ID" />
</el-form-item> --> </el-form-item></el-col>-->
<el-col :span="12">
<el-form-item label="主管部门" prop="competentDeptName"> <el-form-item label="主管部门" prop="competentDeptName">
<el-input v-model="formData.competentDeptName" placeholder="请输入主管部门" /> <el-input v-model="formData.competentDeptName" placeholder="请输入主管部门" />
</el-form-item> </el-form-item></el-col>
<!-- <el-form-item label="主管工程师ID" prop="managerId"> <!-- <el-col :span="12">
<el-form-item label="主管工程师ID" prop="managerId">
<el-input v-model="formData.managerId" placeholder="请输入主管工程师ID" /> <el-input v-model="formData.managerId" placeholder="请输入主管工程师ID" />
</el-form-item> --> </el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="主管工程师" prop="managerName"> <el-form-item label="主管工程师" prop="managerName">
<el-input v-model="formData.managerName" placeholder="请输入主管工程师" /> <el-input v-model="formData.managerName" placeholder="请输入主管工程师" />
</el-form-item> </el-form-item></el-col>
<el-col :span="12">
<el-form-item label="维护单位名称" prop="maintenanceUnitName"> <el-form-item label="维护单位名称" prop="maintenanceUnitName">
<el-input v-model="formData.maintenanceUnitName" placeholder="请输入维护单位名称" /> <el-input v-model="formData.maintenanceUnitName" placeholder="请输入维护单位名称" />
</el-form-item> </el-form-item></el-col>
<!-- <el-form-item label="维护单位ID" prop="maintenanceUnitId"> <!-- <el-col :span="12">
<el-form-item label="维护单位ID" prop="maintenanceUnitId">
<el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" /> <el-input v-model="formData.maintenanceUnitId" placeholder="请输入维护单位ID" />
</el-form-item> --> </el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="承担单位名称" prop="undertakingUnitName"> <el-form-item label="承担单位名称" prop="undertakingUnitName">
<el-input v-model="formData.undertakingUnitName" placeholder="请输入承担单位名称" /> <el-input v-model="formData.undertakingUnitName" placeholder="请输入承担单位名称" />
</el-form-item> </el-form-item></el-col>
<!-- <el-form-item label="承担单位ID" prop="undertakingUnitId"> <!-- <el-col :span="12">
<el-form-item label="承担单位ID" prop="undertakingUnitId">
<el-input v-model="formData.undertakingUnitId" placeholder="请输入承担单位ID" /> <el-input v-model="formData.undertakingUnitId" placeholder="请输入承担单位ID" />
</el-form-item> --> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核单位名称" prop="reviewUnitName"> <el-form-item label="审核单位名称" prop="reviewUnitName">
<el-input v-model="formData.reviewUnitName" placeholder="请输入审核单位名称" /> <el-input v-model="formData.reviewUnitName" placeholder="请输入审核单位名称" />
</el-form-item> </el-form-item></el-col>
<!-- <el-form-item label="审核单位ID" prop="reviewUnitId"> <el-col :span="12">
<el-form-item label="审核单位ID" prop="reviewUnitId">
<el-input v-model="formData.reviewUnitId" placeholder="请输入审核单位ID" /> <el-input v-model="formData.reviewUnitId" placeholder="请输入审核单位ID" />
</el-form-item> --> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="state"> <el-form-item label="状态" prop="state">
<el-input v-model="formData.state" placeholder="请输入状态" /> <el-input v-model="formData.state" placeholder="请输入状态" />
</el-form-item> </el-form-item></el-col>-->
</el-row>
</el-form> </el-form>
<!-- 子表的表单 --> </el-tab-pane>
<el-tabs v-model="subTabsName">
<el-tab-pane label="任务书详细信息" name="info"> <el-tab-pane label="任务书详细信息" name="info">
<InfoForm ref="infoFormRef" :contract-id="formData.id" /> <InfoForm ref="infoFormRef" :contract-id="formData.id" />
</el-tab-pane> </el-tab-pane>
@ -229,14 +262,14 @@ const formData = ref({
const formRules = reactive({ const formRules = reactive({
projectName: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }], projectName: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }],
projectLeader: [{ required: true, message: '项目负责人不能为空', trigger: 'blur' }], projectLeader: [{ required: true, message: '项目负责人不能为空', trigger: 'blur' }],
projectLeaderId: [{ required: true, message: '项目负责人Id不能为空', trigger: 'blur' }], //projectLeaderId: [{ required: true, message: 'Id', trigger: 'blur' }],
projectCode: [{ required: true, message: '项目编号不能为空', trigger: 'blur' }], projectCode: [{ required: true, message: '项目编号不能为空', trigger: 'blur' }],
technicalField: [{ required: true, message: '所属技术领域不能为空', trigger: 'change' }], technicalField: [{ required: true, message: '所属技术领域不能为空', trigger: 'change' }],
year: [{ required: true, message: '年度不能为空', trigger: 'blur' }], year: [{ required: true, message: '年度不能为空', trigger: 'blur' }],
beginDate: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }], beginDate: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }],
endDate: [{ required: true, message: '结束时间不能为空', trigger: 'blur' }], endDate: [{ required: true, message: '结束时间不能为空', trigger: 'blur' }],
planName: [{ required: true, message: '计划类型不能为空', trigger: 'change' }], planName: [{ required: true, message: '计划类型不能为空', trigger: 'change' }],
planId: [{ required: true, message: '计划Id不能为空', trigger: 'blur' }], //planId: [{ required: true, message: 'Id', trigger: 'blur' }],
supportingCondition: [{ required: true, message: '课题实施所需的其他配套条件不能为空', trigger: 'blur' }], supportingCondition: [{ required: true, message: '课题实施所需的其他配套条件不能为空', trigger: 'blur' }],
gender: [{ required: true, message: '性别不能为空', trigger: 'blur' }], gender: [{ required: true, message: '性别不能为空', trigger: 'blur' }],
age: [{ required: true, message: '年龄不能为空', trigger: 'blur' }], age: [{ required: true, message: '年龄不能为空', trigger: 'blur' }],
@ -246,11 +279,11 @@ const formRules = reactive({
position: [{ required: true, message: '职务(职称)不能为空', trigger: 'blur' }], position: [{ required: true, message: '职务(职称)不能为空', trigger: 'blur' }],
phoneNo: [{ required: true, message: '电话不能为空', trigger: 'blur' }], phoneNo: [{ required: true, message: '电话不能为空', trigger: 'blur' }],
email: [{ required: true, message: '邮箱不能为空', trigger: 'blur' }], email: [{ required: true, message: '邮箱不能为空', trigger: 'blur' }],
fax: [{ required: true, message: '传真不能为空', trigger: 'blur' }], //fax: [{ required: true, message: '', trigger: 'blur' }],
postalCode: [{ required: true, message: '邮编不能为空', trigger: 'blur' }], postalCode: [{ required: true, message: '邮编不能为空', trigger: 'blur' }],
address: [{ required: true, message: '通讯地址不能为空', trigger: 'blur' }], address: [{ required: true, message: '通讯地址不能为空', trigger: 'blur' }],
achievement: [{ required: true, message: '主要业绩不能为空', trigger: 'blur' }], achievement: [{ required: true, message: '主要业绩不能为空', trigger: 'blur' }],
competentDeptId: [{ required: true, message: '主管部门ID不能为空', trigger: 'blur' }], /* competentDeptId: [{ required: true, message: 'ID', trigger: 'blur' }],
competentDeptName: [{ required: true, message: '主管部门不能为空', trigger: 'blur' }], competentDeptName: [{ required: true, message: '主管部门不能为空', trigger: 'blur' }],
managerId: [{ required: true, message: '主管工程师ID不能为空', trigger: 'blur' }], managerId: [{ required: true, message: '主管工程师ID不能为空', trigger: 'blur' }],
managerName: [{ required: true, message: '主管工程师不能为空', trigger: 'blur' }], managerName: [{ required: true, message: '主管工程师不能为空', trigger: 'blur' }],
@ -259,12 +292,12 @@ const formRules = reactive({
undertakingUnitName: [{ required: true, message: '承担单位名称不能为空', trigger: 'blur' }], undertakingUnitName: [{ required: true, message: '承担单位名称不能为空', trigger: 'blur' }],
undertakingUnitId: [{ required: true, message: '承担单位ID不能为空', trigger: 'blur' }], undertakingUnitId: [{ required: true, message: '承担单位ID不能为空', trigger: 'blur' }],
reviewUnitName: [{ required: true, message: '审核单位名称不能为空', trigger: 'blur' }], reviewUnitName: [{ required: true, message: '审核单位名称不能为空', trigger: 'blur' }],
reviewUnitId: [{ required: true, message: '审核单位ID不能为空', trigger: 'blur' }], reviewUnitId: [{ required: true, message: '审核单位ID不能为空', trigger: 'blur' }],*/
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
/** 子表的表单 */ /** 子表的表单 */
const subTabsName = ref('info') const subTabsName = ref('basic')
const infoFormRef = ref() const infoFormRef = ref()
const targetFormRef = ref() const targetFormRef = ref()
const checkFormRef = ref() const checkFormRef = ref()

View File

@ -16,7 +16,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="来源或支出;0来源1支出" min-width="150"> <el-table-column label="来源或支出;0来源1支出" min-width="250">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.sourceExpend`" :rules="formRules.sourceExpend" class="mb-0px!"> <el-form-item :prop="`${$index}.sourceExpend`" :rules="formRules.sourceExpend" class="mb-0px!">
<el-input v-model="row.sourceExpend" placeholder="请输入来源或支出;0来源1支出" /> <el-input v-model="row.sourceExpend" placeholder="请输入来源或支出;0来源1支出" />
@ -37,7 +37,7 @@
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目承担单位自筹经费" min-width="150"> <el-table-column label="项目承担单位自筹经费" min-width="200">
<template #default="{ row, $index }"> <template #default="{ row, $index }">
<el-form-item :prop="`${$index}.sSelfFinancing`" :rules="formRules.sSelfFinancing" class="mb-0px!"> <el-form-item :prop="`${$index}.sSelfFinancing`" :rules="formRules.sSelfFinancing" class="mb-0px!">
<el-input v-model="row.sSelfFinancing" placeholder="请输入项目承担单位自筹经费" /> <el-input v-model="row.sSelfFinancing" placeholder="请输入项目承担单位自筹经费" />

View File

@ -3,7 +3,7 @@
ref="formRef" ref="formRef"
:model="formData" :model="formData"
:rules="formRules" :rules="formRules"
label-width="100px" label-width="350px"
v-loading="formLoading" v-loading="formLoading"
> >
<el-form-item label="项目目的与意义" prop="purposeSignificance"> <el-form-item label="项目目的与意义" prop="purposeSignificance">
@ -45,7 +45,7 @@ const formLoading = ref(false) // 表单的加载中
const formData = ref([]) const formData = ref([])
const formRules = reactive({ const formRules = reactive({
contractId: [{ required: true, message: '任务书ID不能为空', trigger: 'blur' }], contractId: [{ required: true, message: '任务书ID不能为空', trigger: 'blur' }],
purposeSignificance: [{ required: true, message: '项目目的与意义不能为空', trigger: 'blur' }], /* purposeSignificance: [{ required: true, message: '', trigger: 'blur' }],
currentSituation: [{ required: true, message: '项目所属领域国内外产业、技术的现状和发展趋势不能为空', trigger: 'blur' }], currentSituation: [{ required: true, message: '项目所属领域国内外产业、技术的现状和发展趋势不能为空', trigger: 'blur' }],
workFoundation: [{ required: true, message: '项目现有工作基础不能为空', trigger: 'blur' }], workFoundation: [{ required: true, message: '项目现有工作基础不能为空', trigger: 'blur' }],
projectAccording: [{ required: true, message: '项目实施目标及考核指标-考核指标依据不能为空', trigger: 'blur' }], projectAccording: [{ required: true, message: '项目实施目标及考核指标-考核指标依据不能为空', trigger: 'blur' }],
@ -53,7 +53,7 @@ const formRules = reactive({
researchRoadmap: [{ required: true, message: '主要研究开发内容-技术路线不能为空', trigger: 'blur' }], researchRoadmap: [{ required: true, message: '主要研究开发内容-技术路线不能为空', trigger: 'blur' }],
researchInnovation: [{ required: true, message: '主要研究开发内容-创新性不能为空', trigger: 'blur' }], researchInnovation: [{ required: true, message: '主要研究开发内容-创新性不能为空', trigger: 'blur' }],
riskAnalysis: [{ required: true, message: '课题实施的风险分析不能为空', trigger: 'blur' }], riskAnalysis: [{ required: true, message: '课题实施的风险分析不能为空', trigger: 'blur' }],
projectAchie: [{ required: true, message: '预期主要成果形式、知识产权归属不能为空', trigger: 'blur' }], projectAchie: [{ required: true, message: '预期主要成果形式、知识产权归属不能为空', trigger: 'blur' }],*/
}) })
const formRef = ref() // Ref const formRef = ref() // Ref

View File

@ -1,82 +1,43 @@
<template> <template>
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="项目名称" prop="projectName"> <el-form-item label="项目名称" prop="projectName">
<el-input <el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery"
v-model="queryParams.projectName" class="!w-240px" />
placeholder="请输入项目名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item label="项目负责人" prop="projectLeader"> <el-form-item label="项目负责人" prop="projectLeader">
<el-input <el-input v-model="queryParams.projectLeader" placeholder="请输入项目负责人" clearable @keyup.enter="handleQuery"
v-model="queryParams.projectLeader" class="!w-240px" />
placeholder="请输入项目负责人"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="projectCode"> <el-form-item label="项目编号" prop="projectCode">
<el-input <el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery"
v-model="queryParams.projectCode" class="!w-240px" />
placeholder="请输入项目编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item label="所属技术领域" prop="technicalField"> <el-form-item label="所属技术领域" prop="technicalField">
<el-select <el-select v-model="queryParams.technicalField" placeholder="请选择所属技术领域" clearable class="!w-240px">
v-model="queryParams.technicalField" <el-option v-for="dict in getStrDictOptions(DICT_TYPE.TECHNICAL_FIELD)" :key="dict.value" :label="dict.label"
placeholder="请选择所属技术领域" :value="dict.value" />
clearable
class="!w-240px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.TECHNICAL_FIELD)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="年度" prop="year"> <el-form-item label="年度" prop="year">
<el-input <el-input v-model="queryParams.year" placeholder="请输入年度" clearable @keyup.enter="handleQuery" class="!w-240px" />
v-model="queryParams.year"
placeholder="请输入年度"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="handleQuery">
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> <Icon icon="ep:search" class="mr-5px" /> 搜索
<el-button </el-button>
type="primary" <el-button @click="resetQuery">
plain <Icon icon="ep:refresh" class="mr-5px" /> 重置
@click="openForm('create')" </el-button>
v-hasPermi="['contract:main:create']" <el-button type="primary" plain @click="handleInsert">
> <Icon icon="ep:upload" class="mr-5px" /> 导入立项
</el-button>
<el-button type="primary" plain @click="openForm('create')" v-hasPermi="['contract:main:create']">
<Icon icon="ep:plus" class="mr-5px" /> 新增 <Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button> </el-button>
<el-button <el-button type="success" plain @click="handleExport" :loading="exportLoading"
type="success" v-hasPermi="['contract:main:export']">
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['contract:main:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出 <Icon icon="ep:download" class="mr-5px" /> 导出
</el-button> </el-button>
</el-form-item> </el-form-item>
@ -97,20 +58,8 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="年度" align="center" prop="year" /> <el-table-column label="年度" align="center" prop="year" />
<el-table-column <el-table-column label="开始时间" align="center" prop="beginDate" :formatter="dateFormatter" width="180px" />
label="开始时间" <el-table-column label="结束时间" align="center" prop="endDate" :formatter="dateFormatter" width="180px" />
align="center"
prop="beginDate"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column
label="结束时间"
align="center"
prop="endDate"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="计划类型" align="center" prop="planName"> <el-table-column label="计划类型" align="center" prop="planName">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.PLAN_ID" :value="scope.row.planName" /> <dict-tag :type="DICT_TYPE.PLAN_ID" :value="scope.row.planName" />
@ -122,43 +71,47 @@
<el-table-column label="承担单位名称" align="center" prop="undertakingUnitName" /> <el-table-column label="承担单位名称" align="center" prop="undertakingUnitName" />
<el-table-column label="审核单位名称" align="center" prop="reviewUnitName" /> <el-table-column label="审核单位名称" align="center" prop="reviewUnitName" />
<el-table-column label="状态" align="center" prop="state" /> <el-table-column label="状态" align="center" prop="state" />
<el-table-column <el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" />
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button <el-button link type="primary" @click="openForm('update', scope.row.id)" v-hasPermi="['contract:main:update']">
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['contract:main:update']"
>
编辑 编辑
</el-button> </el-button>
<el-button <el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['contract:main:delete']">
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['contract:main:delete']"
>
删除 删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页 --> <!-- 分页 -->
<Pagination <Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
:total="total" @pagination="getList" />
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap> </ContentWrap>
<!-- 导入立项 -->
<Dialog title="导入立项" v-model="dialogVisible">
<ContentWrap>
<el-table v-loading="loading1" :data="list1" :stripe="true" :show-overflow-tooltip="true" highlight-current-row>
<el-table-column align="center" width="65">
<template #default="scope">
<el-radio :label="scope.row.id" v-model="currentRowValue" @change="handleCurrentChange(scope.row)">
&nbsp;
</el-radio>
</template>
</el-table-column>
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="立项年度" align="center" prop="year" />
<!-- <el-table-column label="项目负责人Id" align="center" prop="projectLeaderId" /> -->
<el-table-column label="审核状态" align="center" prop="state" />
</el-table>
<Pagination :total="total1" v-model:page="queryParams1.pageNo" v-model:limit="queryParams1.pageSize"
@pagination="getList1" />
</ContentWrap>
<template #footer>
<el-button :disabled="!currentRow" type="primary" @click="submitForm"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<MainForm ref="formRef" @success="getList" /> <MainForm ref="formRef" @success="getList" />
</template> </template>
@ -176,9 +129,13 @@ defineOptions({ name: 'ContractMain' })
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
const dialogVisible = ref(false) //
const loading = ref(true) // const loading = ref(true) //
const loading1 = ref(true) //
const list = ref<MainVO[]>([]) // const list = ref<MainVO[]>([]) //
const list1 = ref<MainVO[]>([]) //
const total = ref(0) // const total = ref(0) //
const total1 = ref(0) //
const queryParams = reactive({ const queryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
@ -188,6 +145,15 @@ const queryParams = reactive({
technicalField: undefined, technicalField: undefined,
year: undefined, year: undefined,
}) })
const queryParams1 = reactive({
pageNo: 1,
pageSize: 10,
projectName: undefined,
projectLeader: undefined,
projectCode: undefined,
technicalField: undefined,
year: undefined,
})
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
@ -202,7 +168,32 @@ const getList = async () => {
loading.value = false loading.value = false
} }
} }
const getList1 = async () => {
loading1.value = true
try {
const data = await MainApi.getListPage(queryParams1)
list1.value = data.list
total1.value = data.total
} finally {
loading1.value = false
}
}
/** 选中行 */
const currentRowValue = ref(undefined) // value
const currentRow = ref(undefined) //
const handleCurrentChange = (row) => {
currentRow.value = row.id
}
const submitForm = async () => {
try {
const data = await MainApi.generateContract({id:currentRow.value})
console.log(data)
} finally {
//
currentRow.value =undefined
dialogVisible.value = false
}
}
/** 搜索按钮操作 */ /** 搜索按钮操作 */
const handleQuery = () => { const handleQuery = () => {
queryParams.pageNo = 1 queryParams.pageNo = 1
@ -220,6 +211,12 @@ const formRef = ref()
const openForm = (type: string, id?: number) => { const openForm = (type: string, id?: number) => {
formRef.value.open(type, id) formRef.value.open(type, id)
} }
//
const handleInsert = async () => {
dialogVisible.value = true
getList1()
}
/** 删除按钮操作 */ /** 删除按钮操作 */
const handleDelete = async (id: number) => { const handleDelete = async (id: number) => {
@ -231,7 +228,7 @@ const handleDelete = async (id: number) => {
message.success(t('common.delSuccess')) message.success(t('common.delSuccess'))
// //
await getList() await getList()
} catch {} } catch { }
} }
/** 导出按钮操作 */ /** 导出按钮操作 */