From 575f055f591ac54d2f76cfee337e6b17a459ebaf Mon Sep 17 00:00:00 2001
From: wangxl <123456>
Date: Tue, 17 Dec 2024 16:02:00 +0800
Subject: [PATCH] 44

---
 src/views/report/project/Index.vue            |   4 +-
 .../project/components/edit/projectCreate.vue |  81 ++
 .../project/components/edit/projectEdit.vue   | 926 ++++++++++++++++++
 .../project/components/projectCreate.vue      |   4 +
 4 files changed, 1012 insertions(+), 3 deletions(-)
 create mode 100644 src/views/report/project/components/edit/projectCreate.vue
 create mode 100644 src/views/report/project/components/edit/projectEdit.vue

diff --git a/src/views/report/project/Index.vue b/src/views/report/project/Index.vue
index ca5641b..6d6c616 100644
--- a/src/views/report/project/Index.vue
+++ b/src/views/report/project/Index.vue
@@ -70,8 +70,6 @@ import { getType, getComplete, setComplete } from '@/views/utils/auth'
 import moment from 'moment'
 import { isEmptyParams, filterExportExcelData, tableColumnsName, checkEmail, personGender, personBirthday, checkImageFileType, checkDocumentFileType } from "@/views/utils/common"
 import projectCreate from '@/views/report/project/components/projectCreate'
-import projectEdit from '@/views/report/project/components/projectEdit'
-import projectEditKey from "@/views/report/project/components/keyProject/projectEdit"
 import projectView from '@/views/report/project/components/projectView'
 import previewFile from '@/views/components/common/previewFile'
 import knowledgeSelect from '@/views/components/common/knowledgeSelect'
@@ -82,7 +80,7 @@ import axios from 'axios'
 export default {
   name: 'reportProject',
   components: {
-    projectView, projectCreate, projectEdit,previewFile, projectEditKey, knowledgeSelect, personInfoEdit
+    projectView, projectCreate,previewFile, knowledgeSelect, personInfoEdit
   },
   data () {
     return {
diff --git a/src/views/report/project/components/edit/projectCreate.vue b/src/views/report/project/components/edit/projectCreate.vue
new file mode 100644
index 0000000..df75ff3
--- /dev/null
+++ b/src/views/report/project/components/edit/projectCreate.vue
@@ -0,0 +1,81 @@
+
+<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/edit/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">
+::v-deep .ant-spin-container {
+  width: 100%;
+  height: 100%;
+}
+::-webkit-scrollbar {
+  width: 8px;
+  height: 6px;
+}
+.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>
+
+
diff --git a/src/views/report/project/components/edit/projectEdit.vue b/src/views/report/project/components/edit/projectEdit.vue
new file mode 100644
index 0000000..78748b2
--- /dev/null
+++ b/src/views/report/project/components/edit/projectEdit.vue
@@ -0,0 +1,926 @@
+<template>
+  <div>
+    <div>
+      <a-steps :current="current" size="small" @change="stepsChange">
+        <a-step :status="item" v-for="(item,index) in completeStatus" :key="index+'completeStatus'" />
+      </a-steps>
+    </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>项目基本情况1111</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 {
+      current: 0,
+      completeStatus: ["wait", "finish", "process", "", "", "", "", "", "", ""],
+      stepStyle: {
+        marginBottom: '60px',
+        boxShadow: '0px -1px 0 0 #e8e8e8 inset',
+      },
+      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,
+    stepsChange (e) {
+      this.completeStatus[e] = "finish"
+      console.log(this.completeStatus)
+      console.log(e)
+    },
+    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)
+            let state = this.formData.projState
+            if (state != 30)
+              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 == 2) {
+        this.formData.totalFunding = e[0]
+        this.formData.govFunding = e[1]
+        this.formData.projectKPI.totalBudget = this.formData.totalFunding
+        this.formData.projectKPI.applyFunds = this.formData.govFunding
+      }
+    },
+  }
+}
+</script>
+<style scoped lang="less">
+</style>
+
diff --git a/src/views/report/project/components/projectCreate.vue b/src/views/report/project/components/projectCreate.vue
index d47b97d..ee3f7d7 100644
--- a/src/views/report/project/components/projectCreate.vue
+++ b/src/views/report/project/components/projectCreate.vue
@@ -56,6 +56,10 @@ export default {
 }
 </script>
 <style scoped lang="less">
+::-webkit-scrollbar {
+  width: 8px;
+  height: 6px;
+}
 ::v-deep .ant-spin-container {
   width: 100%;
   height: 100%;
-- 
2.18.0