Commit bbdb4eea authored by wangxl's avatar wangxl

333

parent c60a3d61
...@@ -116,7 +116,6 @@ export const routes = [ ...@@ -116,7 +116,6 @@ export const routes = [
{ path: '/report/task', name: '合同书上报', component: () => import('@/views/report/task/Index.vue'), meta: { title: '合同书上报', icon: '', noCache: true } }, { path: '/report/task', name: '合同书上报', component: () => import('@/views/report/task/Index.vue'), meta: { title: '合同书上报', icon: '', noCache: true } },
{ path: '/report/check', name: '中期考核上报', component: () => import('@/views/report/check/Index.vue'), meta: { title: '中期考核上报', icon: '', noCache: true } }, { path: '/report/check', name: '中期考核上报', component: () => import('@/views/report/check/Index.vue'), meta: { title: '中期考核上报', icon: '', noCache: true } },
{ path: '/report/conclusion', name: '项目结题', component: () => import('@/views/conclusion/index.vue'), meta: { title: '项目结题', icon: '', noCache: true } }, { path: '/report/conclusion', name: '项目结题', component: () => import('@/views/conclusion/index.vue'), meta: { title: '项目结题', icon: '', noCache: true } },
{ path: '/project/create', name: '项目创建', component: () => import('@/views/report/project/components/projectCreate'), meta: { title: '项目创建', icon: '', noCache: true } },
{ path: '/query/project', name: '项目申报查询1', component: () => import('@/views/query/project/Index.vue'), meta: { title: '项目申报查询', icon: '', noCache: true } }, { path: '/query/project', name: '项目申报查询1', component: () => import('@/views/query/project/Index.vue'), meta: { title: '项目申报查询', icon: '', noCache: true } },
{ path: '/query/task', name: '合同书查询1', component: () => import('@/views/query/task/Index.vue'), meta: { title: '合同书查询', icon: '', noCache: true } }, { path: '/query/task', name: '合同书查询1', component: () => import('@/views/query/task/Index.vue'), meta: { title: '合同书查询', icon: '', noCache: true } },
{ path: '/query/check', name: '中期考核上报查询1', component: () => import('@/views/query/check/Index.vue'), meta: { title: '中期考核上报查询', icon: '', noCache: true } }, { path: '/query/check', name: '中期考核上报查询1', component: () => import('@/views/query/check/Index.vue'), meta: { title: '中期考核上报查询', icon: '', noCache: true } },
......
<template>
<div class="app-content" style="height: 76vh;overflow: auto;">
<a-spin :spinning="loading" style="width: 100%;height: 100%;">
<div class="page-content">
<project-edit v-model="value" @close="closeWindow" @load="onLoad" ref="projCreate" v-if="projType"></project-edit>
<project-edit-key v-model="value" @close="closeWindow" @load="onLoad" ref="projCreate" v-else></project-edit-key>
</div>
<div class="page-footer">
<a-button @click="save">保存</a-button>
<a-button style="margin-left: 10px" type="primary" @click="submit">完成填写</a-button>
</div>
</a-spin>
</div>
</template>
<script>
import { getType } from '@/views/utils/auth'
import projectEdit from "@/views/report/project/components/projectEdit"
import projectEditKey from "@/views/report/project/components/keyProject/projectEdit"
export default {
name: "projectCreate",
components: {
projectEdit, projectEditKey,
},
data () {
return {
loading: false,
projType: getType() == "1"
}
},
props: {
value: {
type: String,
default: () => {
return null
}
}
},
created () {
},
methods: {
save () {
this.$refs.projCreate.save()
},
submit () {
this.$refs.projCreate.submit()
},
closeWindow (value) {
this.$emit('close', value)
},
onLoad (value) {
this.loading = value
},
},
}
</script>
<style scoped lang="less">
::-webkit-scrollbar {
width: 8px;
height: 6px;
}
::v-deep .ant-spin-container {
width: 100%;
height: 100%;
}
.page-content {
width: 100%;
height: calc(100% - 40px);
overflow: auto;
}
.page-footer {
width: 100%;
height: 40px;
line-height: 40px;
background: rgb(248, 248, 248);
text-align: center;
}
</style>
<template>
<div>
<a-form-model ref="form" :model="formData" :rules="rules" style="border-top: 0px" class="from-table font-line-space">
<a-row>
<a-col :span="24" style="border-top: 0px;text-align: center;">
<div class="main-title">
<span>项目基本情况</span>
</div>
</a-col>
</a-row>
<a-row>
<a-col :span="24" style="border-top: 0px">
<div class="tb-title">
<span>申请人信息</span>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>姓名</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item>
<div>{{ formData.appPersonName }}</div>
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>性别</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item>
<div>{{ formData.sex }}</div>
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>出生日期</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item>
{{ moment(formData.birthday).format('YYYY-MM-DD') }}
</a-form-model-item>
</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>民族</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item>
<div>{{ formData.nationName }}</div>
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>学位</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item>
<div>{{ formData.degreeName }}</div>
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>职称</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item>
{{ formData.titleName}}
</a-form-model-item>
</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>电话</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item>
<div>{{ formData.mobile }}</div>
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>电子邮箱</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item>
<div>{{ formData.email }}</div>
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">每年工作时间(月)</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>
<a-form-model-item prop="jobTime">
<a-input-number v-model="formData.jobTime" :min="0" :max="12" :step="1" style="width: 100px" />
</a-form-model-item>
</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">个人通讯地址</div>
</div>
</a-col>
<a-col :span="21">
<div class="special-middle">
<div>
<a-form-model-item prop="address">
<a-input v-model="formData.address" placeholder="个人通讯地址(限50字)" :maxLength="50" style="width: 80%;" />
</a-form-model-item>
</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>工作单位</div>
</div>
</a-col>
<a-col :span="21">
<div class="special-middle">
<div>
<a-form-model-item>
<div>{{ formData.appUnitName }}</div>
</a-form-model-item>
</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">主要研究领域</div>
</div>
</a-col>
<a-col :span="21">
<div class="special-middle">
<div>
<a-form-model-item prop="mainResearchAreas">
<a-textarea placeholder="主要研究领域(限500字)" v-model="formData.mainResearchAreas" :maxLength="500" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item>
</div>
</div>
</a-col>
</a-row>
<a-row>
<a-col :span="24" style="border-top: 0px">
<div class="tb-title">
<span>申请单位信息</span>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>单位名称</div>
</div>
</a-col>
<a-col :span="20">
<div class="special-middle">
<div>
<a-form-model-item>
<div>{{ formData.appUnitName }}</div>
</a-form-model-item>
</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">联系人</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>
<a-form-model-item prop="unitLinkName">
<a-input placeholder="联系人(限20字)" v-model="formData.unitLinkName" :maxLength="20" style="width:80%" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">电话</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>
<a-form-model-item prop="unitLinkMobile">
<a-input placeholder="电话(限20字)" v-model="formData.unitLinkMobile" :maxLength="20" style="width:80%" />
</a-form-model-item>
</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">电子信箱</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>
<a-form-model-item prop="unitLinkEmail">
<a-input placeholder="电子信箱(限50字)" v-model="formData.unitLinkEmail" :maxLength="50" style="width:80%" />
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">传真</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>
<a-form-model-item prop="unitLinkFax">
<a-input placeholder="传真(限20字)" v-model="formData.unitLinkFax" :maxLength="20" style="width:80%" />
</a-form-model-item>
</div>
</div>
</a-col>
</a-row>
<!-- 项目合作单位 -->
<!-- <cooperative-units-edit :cooperativeUnits.sync="formData.cooperativeUnits" /> -->
<a-row>
<a-col :span="24" style="border-top: 0px">
<div class="tb-title">
<span>项目基本情况</span>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">项目名称</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="projName">
<a-input placeholder="项目名称(限100字)" v-model="formData.projName" :maxLength="100" style="width: 80%" @change="projNameChange" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">学科代码</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="knowledgeId">
<cascader-select v-model="formData.knowledgeId" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">附注说明</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="remark">
<a-input placeholder="附注说明(限300字)" v-model="formData.remark" :maxLength="300" style="width: 80%" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">项日开始时间</div>
</div>
</a-col>
<a-col :span="8">
<a-form-model-item prop="startDate" style="width:200px;display: inline-block;">
<a-date-picker format="YYYY-MM-DD" valueFormat="YYYY-MM-DD HH:mm:ss" v-model="formData.startDate" @change="startDateChange" style="width: 180px" />
</a-form-model-item>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">项目结束时间</div>
</div>
</a-col>
<a-col :span="8">
<a-form-model-item prop="endDate" style="width:200px;display: inline-block;">
<a-date-picker format="YYYY-MM-DD" valueFormat="YYYY-MM-DD HH:mm:ss" v-model="formData.endDate" @change="endDateChange" style="width: 180px" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">申请经费(万元)</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="govFunding">
<!-- <a-input-number v-model="formData.govFunding" @change="govFundingChange" :min="0" :step="0.01" style="width: 100px" /> -->
{{ formData.govFunding }}
<span> 万元</span>
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">项目摘要(400字以内)</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="projAbstract">
<a-textarea placeholder="项目摘要(限400字)" v-model="formData.projAbstract" :maxLength="400" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">关键词</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="projKeywords">
<a-input placeholder="关键词(限100字)" v-model="formData.projKeywords" :maxLength="100" style="width: 80%" />
</a-form-model-item>
</a-col>
</a-row>
<!-- 项目主要参与单位及分工 -->
<participate-units-edit :participateUnits.sync="formData.participateUnits" />
<a-row>
<a-col :span="24" style="border-top: 0px">
<div class="main-title">
<span>项目人员情况</span>
</div>
</a-col>
</a-row>
<!-- 项目组成员 -->
<project-member-edit :dataList.sync="formData.members" />
<a-row type="flex">
<a-col :span="24" style="text-align: center;">
<div class="special-middle">
&nbsp;
</div>
</a-col>
</a-row>
<a-row>
<a-col :span="24" style="border-top: 0px">
<div class="main-title">
<span>项目主要实施内容和目标</span>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">项目实施目标</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="researchContent">
<a-textarea placeholder="项目实施目标(限10000字)" v-model="formData.researchContent" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="24" style="border-top: 0px">
<div class="tb-title">
<span>项目考核指标</span>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">主要技术指标</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="technologyTarget">
<a-textarea placeholder="主要技术指标(限10000字)" v-model="formData.technologyTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">主要经济指标</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="economyTarget">
<a-textarea placeholder="主要经济指标(限10000字)" v-model="formData.economyTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">项目实施中形成的示范基地、中试线、生产线及其规模等</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="achievementTarget">
<a-textarea placeholder="项目实施中形成的示范基地、中试线、生产线及其规模等(限10000字)" v-model="formData.achievementTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">科技报告考核指标</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="technologyReportsTarget">
<a-textarea placeholder="科技报告考核指标(限10000字)" v-model="formData.technologyReportsTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">其他应考核的指标</div>
</div>
</a-col>
<a-col :span="20">
<a-form-model-item prop="otherTarget">
<a-textarea placeholder="其他应考核的指标(限10000字)" v-model="formData.otherTarget" :maxLength="10000" style="width: 80%; height: 160px; margin-top: 12px" />
</a-form-model-item>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24" style="text-align: center;">
<div class="special-middle">
&nbsp;
</div>
</a-col>
</a-row>
<a-row>
<a-col :span="24" style="border-top: 0px">
<div class="main-title">
<span>申请书正文</span>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24" class="bg-gray">
<div class="special-middle" style="font-weight: bold;text-align: center;">
<a :href="'/downloadFile/textTemplate.docx'" download="申请书正文.docx">
<a-icon type="download"></a-icon>&nbsp;<span style="color:green;text-decoration:underline;font-size: 16px;">正文模板下载</span>
</a>
<span style="color: red;margin-left: 42px;">注:正文部分需要下载模版,填写完成后上传到系统中,格式 .doc,.docx。</span>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24">
<div style="min-height:34px;line-height: 40px;text-align: center;">
<up-load :isUpload="true" :file.sync="formData" :format="['doc', 'docx']" message="请上传申请书正文" />
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="24">
<!-- <document-view :fileUrl="formData.downloadUrl" :fileName="formData.fileName" :imageArray="[formData.downloadUrl]"></document-view>
<preview-file v-model="formData.downloadUrl" :fileName="formData.fileName"></preview-file> -->
</a-col>
</a-row>
<!-- 经费预算 -->
<budget-edit :budget.sync="formData.budget" @save="budgetSave" />
<a-row type="flex">
<a-col :span="24" style="text-align: center;">
<div class="special-middle">
&nbsp;
</div>
</a-col>
</a-row>
<!-- 分年度用款计划 -->
<fund-plan-edit :fundPlan.sync="formData.fundPlan" @save="planSave" />
<!-- 项目承担单位研究资金支出预算明细表 -->
<unit-payment-edit :unitPayment.sync="formData.unitPayment" />
<!-- <equipments-edit :equipments.sync="formData.equipments" /> -->
<!-- 设备费-购置设备预算明细表 -->
<device-edit :deviceList.sync="formData.deviceList" />
<!-- 设备费-试制设备预算明细表 -->
<manufacture-edit :manufactureList.sync:="formData.manufactureList" />
<a-row type="flex">
<a-col :span="24" style="text-align: center;">
<div class="special-middle">
&nbsp;
</div>
</a-col>
</a-row>
<!-- 项目绩效指标 -->
<project-kpi-edit :projectKPI.sync="formData.projectKPI" />
<!-- 项目安排及阶段目标 -->
<proj-stage-goals-edit :stageGoals.sync="formData.stageGoals" />
<!-- 项目课题设置 -->
<project-sub-edit :projectSubList.sync="formData.projectSubList" />
<!-- 附件 -->
<file-edit :fileList.sync="formData.fileList" />
</a-form-model>
</div>
</template>
<script>
import fundEdit from '@/views/report/project/components/fundEdit'
import documentView from '@/views/components/common/documentView'
import previewFile from '@/views/components/common/previewFile'
import { getType } from '@/views/utils/auth'
import projectMemberEdit from '@/views/report/project/components/projectMemberEdit'
import cooperativeUnitsEdit from '@/views/report/project/components/cooperativeUnitsEdit'
import participateUnitsEdit from '@/views/report/project/components/participateUnitsEdit'
import deviceEdit from '@/views/report/project/components/deviceEdit'
import projStageGoalsEdit from '@/views/report/project/components/projStageGoalsEdit'
import budgetEdit from '@/views/report/project/components/budgetEdit'
import fundPlanEdit from '@/views/report/project/components/fundPlanEdit'
import projectKpiEdit from '@/views/report/project/components/projectKpiEdit'
import manufactureEdit from '@/views/report/project/components/manufactureEdit'
import unitPaymentEdit from '@/views/report/project/components/unitPaymentEdit'
import projectSubEdit from '@/views/report/project/components/projectSubEdit'
import fileEdit from '@/views/report/project/components/fileEdit'
import { isEmptyParams } from "@/views/utils/common"
import moment from 'moment'
const ParticipateUnit = { id: null, unitName: null, unitCountry: null, unitAddress: null, organizationCode: null, projectWork: null }
const ProjResearch = { projNo: null, projName: null, approveUnit: null, leader: null, startDate: null, endDate: null, funds: null }
const ManagementRule = { policyName: null, releaseDate: null, documentNumber: null, validityPeriod: null, mainContent: null, fileId: null, downloadId: null, fileName: null, downloadUrl: null }
const StageGoals = { startTime: null, endTime: null, target: null }
const ProjectSub = { projName: null, undertakingUnit: null, address: null, director: null, totalBudget: null, govBudget: null, selfBudget: null, cooperativeUnits: null, fileId: null, downloadId: null, fileName: null, downloadUrl: null }
const Cooperative = { id: null, unitName: null }
const File = { fileName: '', downloadUrl: '', fileExplain: '', downloadId: '' }
const Equipment = { id: "", objectId: "", name: "", functionTarget: "", specificationType: "", quantity: 1, totalBudget: 0.0, useFrom: "", buyUnit: "", storageLocation: "", equipmentType: "", manufacturer: "", sharedScope: "", unitPrice: 0.0, };
const projectKPI = {
reportYear: "",
projName: "",
appUnitName: "",
managerDept: "",
projAttribute: "",
projDeadline: "",
startDate: "",
endData: "",
yearTarget: "",
year1Goal: "",
year2Goal: "",
year3Goal: "",
totalBudget: 0.00,
applyFunds: 0.00,
selfFunds: 0.00,
yearTotal: 0.00,
yearApply: 0.00,
yearSelf: 0.00,
totalRowSpan: 0, //总合并行数
outTarget: 0, //一级指标(产出指标)
benefitTarget: 0, //一级指标(效益指标)
satisfactionDegree: 0, //一级指标(满意度指标)
quantityTarget: 0, //二级指标(数量指标)
qualityTarget: 0, //二级指标(质量指标)
validityTarget: 0, //二级指标(时效指标)
costTarget: 0, //二级指标(成本指标)
economicTarget: 0, //二级指标(经济效益指标)
socialTarget: 0, //二级指标(社会效益指标)
ecologicalTarget: 0, //二级指标(生态效益指标)
sustainableTarget: 0, //二级指标(可持续影响指标)
serviceTarget: 0, //二级指标(服务对象满意度指标)
threeLevel: [],
kpiList: [],
};
import cascaderSelect from '@/views/components/common/cascaderSelect'
export default {
name: 'projectEdit',
components: {
fundEdit, projectMemberEdit, cooperativeUnitsEdit, budgetEdit, fundPlanEdit, projectKpiEdit, fileEdit, previewFile, documentView, cascaderSelect, deviceEdit, projStageGoalsEdit, manufactureEdit, unitPaymentEdit, projectSubEdit, participateUnitsEdit
},
props: {
value: {
type: String,
default: () => {
return null
}
},
},
created () {
this.getProject()
},
data () {
return {
overseasShow: false,
formData: {
id: null,
appPersonName: null,
sex: null,
birthday: null,
nationName: null,
degreeName: null,
titleName: null,
mobile: null,
email: null,
appUnitName: null,
unitLinkName: null,
unitLinkMobile: null,
unitLinkEmail: null,
unitLinkFax: null,
projName: null,
knowledgeId: null,
startDate: null,
endDate: null,
jobTime: null,
mainResearchAreas: null,
address: null,
subjectScope: null,
projClass: null,
projAbstract: null,
projKeywords: null,
totalFunding: null,
govFunding: null,
unitFunding: null,
selfFunding: null,
researchContent: null,
technologyTarget: null,
economyTarget: null,
achievementTarget: null,
otherTarget: null,
remark: null,
yearTarget: null,
year1Goal: null,
year2Goal: null,
year3Goal: null,
projectKPI: projectKPI,
cooperativeUnits: [],
participateUnits: [],
members: [],
budget: [],
fundPlan: [],
deviceList: [],
manufactureList: [],
unitPayment: [],
stageGoals: [],
projectSubList: [],
fileList: [],
auditList: [],
managerDept: "",
},
rules: {
jobTime: [{ required: true, message: '请填写每年工作时间(月)', trigger: 'blur' },],
address: [{ required: true, message: '请填写个人通讯地址', trigger: 'blur' },],
mainResearchAreas: [{ required: true, message: '请填写主要研究领域', trigger: 'blur' },],
unitLinkName: [{ required: true, message: '请填写单位联系人', trigger: 'blur' },],
unitLinkMobile: [{ required: true, message: '请填写联系人电话', trigger: 'blur' },],
unitLinkEmail: [{ required: true, message: '请填写电子邮箱', trigger: 'blur' },],
unitLinkFax: [{ required: true, message: '请填写传真', trigger: 'blur' },],
projName: [{ required: true, message: '请填写项目名称', trigger: 'blur' },],
knowledgeId: { required: true, message: '请选择学科代码', trigger: 'change' },
// subjectScope: [{ required: true, message: '请填写选题范围', trigger: 'blur' },],
// projClass: [{ required: true, message: '请填写项目类别', trigger: 'blur' },],
remark: [{ required: true, message: '请填写附注说明', trigger: 'blur' },],
startDate: { required: true, message: '请选择项日开始时间', trigger: 'change' },
endDate: { required: true, message: '请选择项目结束时间', trigger: 'change' },
totalFunding: [{ required: true, message: '请填写项目总经费', trigger: 'blur' },],
govFunding: [{ required: true, message: '请填写申请科技经费', trigger: 'blur' },],
projAbstract: [{ required: true, message: '请填写项目摘要', trigger: 'blur' },],
projKeywords: [{ required: true, message: '请填写关键词', trigger: 'blur' },],
researchContent: { required: true, message: '请填写项目实施目标', trigger: 'blur' },
technologyTarget: { required: true, message: '请填写主要技术指标', trigger: 'blur' },
economyTarget: { required: true, message: '请填写主要经济指标', trigger: 'blur' },
achievementTarget: [{ required: true, message: '请填写项目实施中形成的示范基地、中试线、生产线及其规模等', trigger: 'blur' },],
technologyReportsTarget: { required: true, message: '请填写科技报告考核指标', trigger: 'blur' },
otherTarget: { required: true, message: '请填写其他应考核的指标', trigger: 'blur' },
downloadUrl: [{ required: true, message: '请填写关键词', trigger: 'blur' },],
},
}
},
computed: {
},
mounted () {
},
methods: {
moment,
getProject () {
this.$emit('load', true)
if (!!this.value) {
this.$api.project.getProjectInfoById({ id: this.value }).then(({ data = {} }) => {
if (data) {
this.formData = data
this.loadList()
} else
this.$emit('close', 'error')
this.$emit('load', false)
}).catch(() => {
this.$emit('close', 'error')
this.$emit('load', false)
})
} else {
this.$api.project.getNewProject({ projType: getType() }).then(({ data = {} }) => {
if (data) {
this.formData = data
this.loadList()
} else
this.$emit('close', 'error')
this.$emit('load', false)
}).catch(() => {
this.$emit('close', 'error')
this.$emit('load', false)
})
}
},
loadList () {
if (!!!this.formData.cooperativeUnits || this.formData.cooperativeUnits.length == 0)
this.formData.cooperativeUnits = [{ ...Cooperative }, { ...Cooperative }]
if (!!!this.formData.participateUnits || this.formData.participateUnits.length == 0)
this.formData.participateUnits = [{ ...ParticipateUnit }, { ...ParticipateUnit }]
if (!!!this.formData.members || this.formData.members.length == 0)
this.formData.members = []
if (!!!this.formData.deviceList || this.formData.deviceList.length == 0)
this.formData.deviceList = []
if (!!!this.formData.manufactureList || this.formData.manufactureList.length == 0)
this.formData.manufactureList = []
if (!!!this.formData.unitPayment || this.formData.unitPayment.length == 0)
this.formData.unitPayment = []
if (!!!this.formData.stageGoals || this.formData.stageGoals.length == 0)
this.formData.stageGoals = [{ ...StageGoals }, { ...StageGoals }, { ...StageGoals }]
if (!!!this.formData.projectSubList || this.formData.projectSubList.length == 0)
this.formData.projectSubList = [{ ...ProjectSub }]
if (!!!this.formData.fileList || !this.formData.fileList.length || this.formData.fileList.length == 0) {
this.formData.fileList = []
}
},
processProjectYearTarget () {
this.formData.yearTarget = this.formData.projectKPI.yearTarget
this.formData.year1Goal = this.formData.projectKPI.year1Goal
this.formData.year2Goal = this.formData.projectKPI.year2Goal
this.formData.year3Goal = this.formData.projectKPI.year3Goal
this.formData.projectKPI.kpiList = this.formData.projectKPI.threeLevel
this.formData.managerDept = this.formData.projectKPI.managerDept
this.formData.projAttribute = this.formData.projectKPI.projAttribute
},
save () {
this.processProjectYearTarget()
if (this.checkProjName()) {
this.$emit('load', true)
let pars = isEmptyParams(this.formData)
let par = { ...pars }
this.$api.project.save(par).then(({ data = {} }) => {
if (data) {
this.formData.id = data
this.$message.success('保存成功!')
this.$emit('close', 'save')
}
this.$emit('load', false)
}).catch(() => {
this.$emit('load', false)
})
}
},
submit () {
this.processProjectYearTarget()
this.$refs.form.validate(valid => {
if (valid) {
if (this.formData.members.length == 0) {
this.$message.error('至少添加一位项目组成员!')
return false
} else {
this.$emit('load', true)
if (this.formData.projState < 10)
this.formData.projState = 10
let pars = isEmptyParams(this.formData)
let par = { ...pars }
this.$api.project.save(par).then(({ data = {} }) => {
if (data) {
this.formData.id = data
this.$message.success('成功!')
this.$emit('close', 'submit')
}
this.$emit('load', false)
}).catch(() => {
this.$emit('load', false)
})
}
} else {
this.$message.warn('项目信息未填写完全!')
return false
}
})
},
checkProjName () {
if (this.formData.projName == "" || this.formData.projName == null) {
alert('项目名称不能为空')
return false
} else {
return true
}
},
projNameChange (value) {
this.formData.projectKPI.projName = this.formData.projName
},
startDateChange (value, dateString) {
this.formData.projectKPI.startDate = this.formData.startDate
},
endDateChange (value, dateString) {
this.formData.projectKPI.endDate = this.formData.endDate
if (this.formData.projectKPI.startDate && this.formData.projectKPI.endDate) {
let projDeadline = moment(this.formData.startDate).format('YYYY-MM-DD') + "至" + moment(this.formData.endDate).format('YYYY-MM-DD')
this.formData.projectKPI.projDeadline = projDeadline
}
},
planSave (e) {
if (!!e && e.length == 3) {
this.formData.projectKPI.yearTotal = e[0]
this.formData.projectKPI.yearApply = e[1]
this.formData.projectKPI.yearSelf = e[2]
}
},
budgetSave (e) {
if (!!e && e.length == 3) {
this.formData.totalFunding = e[0]
this.formData.govFunding = e[1]
this.formData.projectKPI.totalBudget = this.formData.totalFunding
this.formData.projectKPI.applyFunds = this.formData.govFunding
this.formData.projectKPI.selfFunds = e[2]
}
},
}
}
</script>
<style scoped lang="less">
</style>
...@@ -36,10 +36,10 @@ ...@@ -36,10 +36,10 @@
</template> </template>
</a-table> </a-table>
<a-pagination v-if="pagination.total > 0" :total="pagination.total" show-size-changer show-quick-jumper v-model="pagination.pageIndex" :page-size="pagination.pageSize" :page-size-options="pagination.pageSizeOptions" @showSizeChange="showSizeChange" @change="change" :showTotal="() => `共 ${pagination.total} 条`" /> <a-pagination v-if="pagination.total > 0" :total="pagination.total" show-size-changer show-quick-jumper v-model="pagination.pageIndex" :page-size="pagination.pageSize" :page-size-options="pagination.pageSizeOptions" @showSizeChange="showSizeChange" @change="change" :showTotal="() => `共 ${pagination.total} 条`" />
<a-modal v-model="visibleEdit" :title="'创建/修改'" :width="'80%'" :dialog-style="{ top: '5%' }" :maskClosable="false" :footer="null" destroyOnClose :centered="true"> <a-modal v-model="visibleEdit" :title="'创建/修改'" :width="'94%'" :dialog-style="{ top: '8%' }" :footer="null" destroyOnClose :maskClosable="false">
<task-edit v-model="projId" @close="closeWindow" /> <task-create v-model="projId" @close="closeWindow" />
</a-modal> </a-modal>
<a-modal v-model="visibleView" title="查看合同书" :width="'80%'" :dialog-style="{ top: '5%' }" :maskClosable="false" :footer="null" destroyOnClose> <a-modal v-model="visibleView" title="查看合同书" :width="'94%'" :dialog-style="{ top: '8%' }" :footer="null" destroyOnClose :maskClosable="false">
<task-view v-model="projId" @close="closeWindow" /> <task-view v-model="projId" @close="closeWindow" />
</a-modal> </a-modal>
</div> </div>
...@@ -48,13 +48,13 @@ ...@@ -48,13 +48,13 @@
<script> <script>
import { getType } from '@/views/utils/auth' import { getType } from '@/views/utils/auth'
import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/utils/common"; import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/utils/common";
import taskEdit from "@/views/report/task/components/taskEdit.vue" import taskCreate from "@/views/report/task/components/taskCreate.vue"
import taskView from "@/views/report/task/components/taskView.vue" import taskView from "@/views/report/task/components/taskView.vue"
export default { export default {
name: 'reportTask', name: 'reportTask',
components: { components: {
taskEdit, taskView taskCreate, taskView
}, },
data () { data () {
return { return {
......
...@@ -62,13 +62,13 @@ import { getType } from '@/views/utils/auth' ...@@ -62,13 +62,13 @@ import { getType } from '@/views/utils/auth'
import moment from 'moment' import moment from 'moment'
import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/utils/common"; import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/utils/common";
import projectView from '@/views/report/project/components/projectView' import projectView from '@/views/report/project/components/projectView'
import projectEdit from '@/views/report/project/components/projectEdit'
import unitEdit from '@/views/statistic/project/components/unitEdit' import unitEdit from '@/views/statistic/project/components/unitEdit'
import unitTreeSelect from '@/views/components/common/unitTreeSelect' import unitTreeSelect from '@/views/components/common/unitTreeSelect'
export default { export default {
name: 'serchProject', name: 'serchProject',
components: { components: {
projectEdit, projectView, unitTreeSelect, unitEdit projectView, unitTreeSelect, unitEdit
}, },
data () { data () {
return { return {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment