修改立项、执行情况

pull/480/head
admin 2024-06-12 20:11:17 +08:00
parent 3e917bb783
commit 25e35900b4
5 changed files with 165 additions and 131 deletions

View File

@ -131,6 +131,7 @@ export enum DICT_TYPE {
TECHNICAL_FIELD = "technical_field",
APPLY_UNIT_TYPE = "apply_unit_type", //立项-单位类型
DEVIATION = 'deviation',//执行-完成情况
CHANGE_TYPE = 'change_type',
// ========== INFRA 模块 ==========
INFRA_BOOLEAN_STRING = 'infra_boolean_string',

View File

@ -15,7 +15,12 @@
</el-col>
<el-col :span="6">
<el-form-item label="立项年度" prop="year">
<el-date-picker v-model="formData.year" type="year" placeholder="请选择立项年度"/>
<el-date-picker v-model="formData.year" type="year" value-format="YYYY" placeholder="请选择立项年度"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="项目负责人" prop="projectLeader">
<el-input v-model="formData.projectLeader" placeholder="请输入项目负责人" />
</el-form-item>
</el-col>
<el-col :span="6">
@ -33,29 +38,29 @@
<el-input v-model="formData.mainUnits" placeholder="请输入主要完成单位" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="合作单位" prop="coopUnits">
<el-input v-model="formData.coopUnits" placeholder="请输入合作单位" />
<el-col :span="24">
<el-form-item label="合作单位" prop="coopUnits" >
<el-input v-model="formData.coopUnits" type="textarea" placeholder="请输入合作单位" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="研发周期" prop="developmentCycle">
<el-input v-model="formData.developmentCycle" placeholder="请输入研发周期" />
<el-input-number v-model="formData.developmentCycle" :min="1" placeholder="请输入研发周期" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总经费(万元)" prop="totalFee">
<el-input v-model="formData.totalFee" placeholder="请输入总经费" />
<el-input-number v-model="formData.totalFee" :min="1" placeholder="请输入总经费" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="拨款(万元)" prop="applyFee">
<el-input v-model="formData.applyFee" placeholder="请输入拨款" />
<el-input-number v-model="formData.applyFee" :min="1" placeholder="请输入拨款" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="自筹(万元)" prop="sefeFee">
<el-input v-model="formData.sefeFee" placeholder="请输入自筹" />
<el-input-number v-model="formData.sefeFee" :min="1" placeholder="请输入自筹" />
</el-form-item>
</el-col>
<!-- <el-col >
@ -128,6 +133,7 @@ const formData = ref({
id: undefined,
projectName: undefined,
year: undefined,
projectLeader: undefined,
undertakingUnitName: undefined,
undertakingUnitId: undefined,
mainUnits: undefined,
@ -152,6 +158,24 @@ const formData = ref({
state: undefined,
})
const formRules = reactive({
projectName: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }],
year: [{ required: true, message: '立项年度不能为空', trigger: 'blur' }],
projectLeader: [{ required: true, message: '项目负责人不能为空', trigger: 'blur' }],
undertakingUnitName: [{ required: true, message: '牵头单位不能为空', trigger: 'blur' }],
mainUnits: [{ required: true, message: '主要完成单位不能为空', trigger: 'blur' }],
coopUnits: [{ required: true, message: '合作单位不能为空', trigger: 'blur' }],
developmentCycle: [{ required: true, message: '研发周期不能为空', trigger: 'blur' }],
totalFee: [{ required: true, message: '总经费不能为空', trigger: 'blur' }],
applyFee: [{ required: true, message: '拨款不能为空', trigger: 'blur' }],
sefeFee: [{ required: true, message: '自筹不能为空', trigger: 'blur' }],
briefObjectives: [{ required: true, message: '项目目标不能为空', trigger: 'blur' }],
briefContents: [{ required: true, message: '研究内容不能为空', trigger: 'blur' }],
briefInnovate: [{ required: true, message: '创新点不能为空', trigger: 'blur' }],
briefAchievement: [{ required: true, message: '科技及产业化成果不能为空', trigger: 'blur' }],
briefBenefit: [{ required: true, message: '经济、社会效益不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref

View File

@ -18,13 +18,7 @@
/>
</el-form-item>
<el-form-item label="立项年度" prop="year">
<el-input
v-model="queryParams.year"
placeholder="请输入立项年度"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
<el-date-picker v-model="queryParams.year" type="year" value-format="YYYY" placeholder="请选择立项年度" clearable class="!w-240px"/>
</el-form-item>
<el-form-item label="牵头单位" prop="undertakingUnitName">
<el-input
@ -76,10 +70,11 @@
<el-table-column label="序号" align="center" width="80" type="index"/>
<el-table-column label="项目名称" align="center" width="200" prop="projectName" />
<el-table-column label="立项年度" align="center" prop="year" />
<el-table-column label="项目负责人" align="center" width="150" prop="projectLeader" />
<el-table-column label="牵头单位" align="center" width="200" prop="undertakingUnitName" />
<el-table-column label="主要完成单位" align="center" width="200" prop="mainUnits" />
<el-table-column label="合作单位" align="center" width="200" prop="coopUnits" />
<el-table-column label="研发周期" align="center" prop="developmentCycle" />
<el-table-column label="研发周期(年)" align="center" width="120" prop="developmentCycle" />
<el-table-column label="总经费(万元)" align="center" width="120" prop="totalFee" />
<el-table-column label="拨款(万元)" align="center" width="100" prop="applyFee" />
<el-table-column label="自筹(万元)" align="center" width="100" prop="sefeFee" />

View File

@ -7,50 +7,87 @@
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="任务书Id" prop="contractId">
<el-input v-model="formData.contractId" placeholder="请输入任务书Id" />
</el-form-item>
<el-form-item label="任务书编号" prop="projectCode">
<el-input v-model="formData.projectCode" placeholder="请输入任务书编号" />
</el-form-item>
<el-form-item label="任务书名称" prop="projectName">
<el-input v-model="formData.projectName" placeholder="请输入任务书名称" />
</el-form-item>
<el-form-item label="项目负责人" prop="projectLeader">
<el-input v-model="formData.projectLeader" placeholder="请输入项目负责人" />
</el-form-item>
<el-form-item label="项目负责人ID" prop="projectLeaderId">
<el-input v-model="formData.projectLeaderId" placeholder="请输入项目负责人ID" />
</el-form-item>
<el-form-item label="承担单位名称" prop="undertakingUnitName">
<el-input v-model="formData.undertakingUnitName" placeholder="请输入承担单位名称" />
</el-form-item>
<el-form-item label="承担单位ID" prop="undertakingUnitId">
<el-input v-model="formData.undertakingUnitId" placeholder="请输入承担单位ID" />
</el-form-item>
<el-form-item label="项目目标" prop="projectObjectives">
<el-input v-model="formData.projectObjectives" type="textarea" placeholder="请输入项目目标" />
</el-form-item>
<el-form-item label="考核指标" prop="projectEvaluation">
<el-input v-model="formData.projectEvaluation" type="textarea" placeholder="请输入考核指标" />
</el-form-item>
<el-form-item label="执行时间区段" prop="processDate">
<el-date-picker
v-model="formData.processDate"
type="date"
value-format="x"
placeholder="选择执行时间区段"
/>
</el-form-item>
<el-form-item label="是否偏差" prop="deviation">
<el-input v-model="formData.deviation" placeholder="请输入是否偏差" />
</el-form-item>
<el-form-item label="偏差原因" prop="reason">
<el-input v-model="formData.reason" placeholder="请输入偏差原因" />
</el-form-item>
<el-form-item label="实际进度" prop="schedule">
<el-input v-model="formData.schedule" type="textarea" placeholder="请输入实际进度" />
</el-form-item>
<el-row :gutter="20">
<el-form-item label="任务书Id" prop="contractId" v-if="false">
<el-input v-model="formData.contractId" placeholder="请输入任务书Id" />
</el-form-item>
<el-col :span="4">
<el-form-item label="任务书编号" prop="projectCode">
<el-input v-model="formData.projectCode" placeholder="请输入任务书编号" />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="任务书名称" prop="projectName">
<el-input v-model="formData.projectName" placeholder="请输入任务书名称" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="项目负责人" prop="projectLeader">
<el-input v-model="formData.projectLeader" placeholder="请输入项目负责人" />
</el-form-item>
</el-col>
<el-form-item label="项目负责人ID" prop="projectLeaderId" v-if="false">
<el-input v-model="formData.projectLeaderId" placeholder="请输入项目负责人ID" />
</el-form-item>
<el-col :span="5">
<el-form-item label="牵头单位" prop="undertakingUnitName">
<el-input v-model="formData.undertakingUnitName" placeholder="请输入牵头单位" />
</el-form-item>
</el-col>
<el-form-item label="牵头单位ID" prop="undertakingUnitId" v-if="false">
<el-input v-model="formData.undertakingUnitId" placeholder="请输入牵头单位ID" />
</el-form-item>
<el-col :span="24">
<el-form-item label="项目目标" prop="projectObjectives">
<el-input v-model="formData.projectObjectives" type="textarea" :autosize="{minRows:6,maxRows:10}" placeholder="请输入项目目标" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="考核指标" prop="projectEvaluation">
<el-input v-model="formData.projectEvaluation" type="textarea" :autosize="{minRows:6,maxRows:10}" placeholder="请输入考核指标" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="执行时间" prop="processDate">
<el-date-picker
v-model="formData.processDate"
type="month"
value-format="YYYY-MM"
placeholder="请选择执行时间"
class="!w-120px"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="是否偏差" prop="deviation">
<el-select
v-model="formData.deviation"
@change="handleSelectChange"
placeholder="请选择是否偏差"
clearable
class="!w-120px"
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.DEVIATION)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="偏差原因" prop="reason">
<el-input v-model="formData.reason" placeholder="请输入偏差原因" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="实际进度" prop="schedule">
<el-input v-model="formData.schedule" type="textarea" :autosize="{minRows:6,maxRows:10}" placeholder="请输入实际进度" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
@ -60,6 +97,7 @@
</template>
<script setup lang="ts">
import { MainApi, MainVO } from '@/api/process/process'
import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
/** 执行 表单 */
defineOptions({ name: 'MainForm' })
@ -88,22 +126,26 @@ const formData = ref({
schedule: undefined,
})
const formRules = reactive({
contractId: [{ required: true, message: '任务书Id不能为空', trigger: 'blur' }],
// contractId: [{ required: true, message: 'Id', trigger: 'blur' }],
projectCode: [{ required: true, message: '任务书编号不能为空', trigger: 'blur' }],
projectName: [{ 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' }],
undertakingUnitName: [{ required: true, message: '承担单位名称不能为空', trigger: 'blur' }],
undertakingUnitId: [{ required: true, message: '承担单位ID不能为空', trigger: 'blur' }],
// undertakingUnitId: [{ required: true, message: 'ID', trigger: 'blur' }],
projectObjectives: [{ required: true, message: '项目目标不能为空', trigger: 'blur' }],
projectEvaluation: [{ required: true, message: '考核指标不能为空', trigger: 'blur' }],
processDate: [{ required: true, message: '执行时间区段不能为空', trigger: 'blur' }],
processDate: [{ required: true, message: '执行时间不能为空', trigger: 'blur' }],
deviation: [{ required: true, message: '是否偏差不能为空', trigger: 'blur' }],
reason: [{ required: true, message: '偏差原因不能为空', trigger: 'blur' }],
schedule: [{ required: true, message: '实际进度不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref
const handleSelectChange = (newValue) => {
console.log("newValue="+ newValue);
}
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
@ -166,4 +208,4 @@ const resetForm = () => {
}
formRef.value?.resetFields()
}
</script>
</script>

View File

@ -6,17 +6,9 @@
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
label-width="100px"
>
<el-form-item label="任务书Id" prop="contractId">
<el-input
v-model="queryParams.contractId"
placeholder="请输入任务书Id"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="任务书编号" prop="projectCode">
<el-input
v-model="queryParams.projectCode"
@ -44,35 +36,9 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="项目负责人ID" prop="projectLeaderId">
<el-input
v-model="queryParams.projectLeaderId"
placeholder="请输入项目负责人ID"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="承担单位名称" prop="undertakingUnitName">
<el-input
v-model="queryParams.undertakingUnitName"
placeholder="请输入承担单位名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="承担单位ID" prop="undertakingUnitId">
<el-input
v-model="queryParams.undertakingUnitId"
placeholder="请输入承担单位ID"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="执行时间区段" prop="processDate">
<el-date-picker
<el-form-item label="执行时间" prop="processDate">
<!-- <el-date-picker
v-model="queryParams.processDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
@ -80,25 +46,29 @@
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>-->
<el-date-picker
v-model="queryParams.processDate"
type="month"
value-format="YYYY-MM"
placeholder="请选择执行时间"
class = "!w-240px"
/>
</el-form-item>
<el-form-item label="是否偏差" prop="deviation">
<el-input
<el-select
v-model="queryParams.deviation"
placeholder="请输入是否偏差"
placeholder="请选择是否偏差"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="偏差原因" prop="reason">
<el-input
v-model="queryParams.reason"
placeholder="请输入偏差原因"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
>
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.DEVIATION)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
@ -127,20 +97,21 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="主键id" align="center" prop="id" />
<el-table-column label="任务书Id" align="center" prop="contractId" />
<el-table-column label="任务书编号" align="center" prop="projectCode" />
<el-table-column label="任务书名称" align="center" prop="projectName" />
<el-table-column label="主键id" align="center" prop="id" v-if="false"/>
<el-table-column type="selection" width="30"/>
<el-table-column label="序号" align="center" width="80" type="index"/>
<el-table-column label="项目Id" align="center" prop="contractId" v-if="false" />
<el-table-column label="项目编号" align="center" prop="projectCode" />
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="项目负责人" align="center" prop="projectLeader" />
<el-table-column label="项目负责人ID" align="center" prop="projectLeaderId" />
<el-table-column label="承担单位名称" align="center" prop="undertakingUnitName" />
<el-table-column label="承担单位ID" align="center" prop="undertakingUnitId" />
<el-table-column label="项目目标" align="center" prop="projectObjectives" />
<el-table-column label="考核指标" align="center" prop="projectEvaluation" />
<el-table-column label="执行时间区段" align="center" prop="processDate" />
<el-table-column label="是否偏差" align="center" prop="deviation" />
<el-table-column label="偏差原因" align="center" prop="reason" />
<el-table-column label="实际进度" align="center" prop="schedule" />
<el-table-column label="牵头单位" align="center" prop="undertakingUnitName" />
<el-table-column label="承担单位ID" align="center" prop="undertakingUnitId" v-if="false"/>
<el-table-column label="执行时间" align="center" prop="processDate" />
<el-table-column label="是否偏差" align="center" prop="deviation" >
<template #default="scope">
<dict-tag :type="DICT_TYPE.DEVIATION" :value="scope.row.deviation" />
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
@ -179,6 +150,7 @@
import download from '@/utils/download'
import { MainApi, MainVO } from '@/api/process/process'
import MainForm from './MainForm.vue'
import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
/** 执行 列表 */
defineOptions({ name: 'ProcessMain' })
@ -271,4 +243,4 @@ const handleExport = async () => {
onMounted(() => {
getList()
})
</script>
</script>