<template>
  <div>
    <a-form-model ref="form" :model="formData" :rules="rules" style="border-top: 0px" class="from-table font-line-space">
      <div v-if="stepsArray[0].showStatus">
        <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">项目摘要(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>
        <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,.pdf。</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','pdf']" 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>
        <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="项目实施目标(限5000字)" v-model="formData.researchContent" :maxLength="5000" 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="主要技术指标(限5000字)" v-model="formData.technologyTarget" :maxLength="5000" 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="主要经济指标(限5000字)" v-model="formData.economyTarget" :maxLength="5000" 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="项目实施中形成的示范基地、中试线、生产线及其规模等(限5000字)" v-model="formData.achievementTarget" :maxLength="5000" 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="科技报告考核指标(限5000字)" v-model="formData.technologyReportsTarget" :maxLength="5000" 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="其他应考核的指标(限5000字)" v-model="formData.otherTarget" :maxLength="5000" 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>
      </div>
      <div v-if="stepsArray[1].showStatus">
        <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>
        <!-- 项目主要参与单位及分工 -->
        <participate-units-edit :participateUnits.sync="formData.participateUnits" />
      </div>
      <div v-if="stepsArray[2].showStatus">
        <!-- 经费预算 -->
        <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" />
        <a-row type="flex">
          <a-col :span="24" style="text-align: center;">
            <div class="special-middle">
              &nbsp;
            </div>
          </a-col>
        </a-row>
        <!-- 设备费-购置设备预算明细表 -->
        <device-edit :deviceList.sync="formData.deviceList" />
        <a-row type="flex">
          <a-col :span="24" style="text-align: center;">
            <div class="special-middle">
              &nbsp;
            </div>
          </a-col>
        </a-row>
        <!-- 设备费-试制设备预算明细表 -->
        <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>
        <!-- 项目承担单位研究资金支出预算明细表 -->
        <unit-payment-edit :unitPayment.sync="formData.unitPayment" />
      </div>
      <div v-if="stepsArray[3].showStatus">
        <!-- 项目安排及阶段目标 -->
        <proj-stage-goals-edit :stageGoals.sync="formData.stageGoals" />
        <!-- 项目课题设置 -->
        <project-sub-edit :projectSubList.sync="formData.projectSubList" />
      </div>
      <div v-if="stepsArray[4].showStatus">
        <!-- 项目绩效指标 -->
        <project-kpi-edit :projectKPI.sync="formData.projectKPI" />
      </div>
      <div v-if="stepsArray[5].showStatus">
        <!-- 附件 -->
        <file-edit :fileList.sync="formData.fileList" />
      </div>
    </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
      }
    },
    stepsArray: {
      type: Array,
      default () {
        return []
      }
    },
    completeStatus: {
      type: String,
      default () {
        return "0,0,0,0,0,0"
      }
    },
  },
  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,
    save (step) {
      if (this.checkInfo(step)) {
        var obj = this.getObj(step)
        obj.step = step
        this.$emit('load', true)
        let pars = isEmptyParams(obj)
        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 (step, next) {
      if (this.checkInfo(step)) {
        this.$refs.form.validate(valid => {
          if (valid) {
            this.$emit('load', true)
            var arr = this.completeStatus.split(',');
            arr[step] = "1";
            this.formData.completeStatus = arr.toString()
            var obj = this.getObj(step)
            obj.step = step
            let state = obj.projState
            if (state != 30 && step == 5)
              obj.projState = 10
            let pars = isEmptyParams(obj)
            let par = { ...pars }
            this.$api.project.save(par).then(({ data = {} }) => {
              if (data) {
                this.formData.id = data
                if (next) {
                  this.$emit('close', 'save')
                  this.$emit('onStepChange', { step: step + 1, state: arr.toString() })
                } else {
                  this.$message.success('成功!')
                  this.$emit('close', 'submit')
                }
              }
              this.$emit('load', false)
            }).catch(() => {
              this.$emit('load', false)
            })
          } else {
            this.$message.error('信息未填写完全!')
            return false
          }
        })
      }
    },
    getProject () {
      this.$emit('load', true)
      if (!!this.value) {
        this.$api.project.getProjectInfoById({ id: this.value }).then(({ data = {} }) => {
          if (data) {
            this.formData = data
            this.$emit('onStepChange', { step: 0, state: data.completeStatus })
            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.$emit('onStepChange', { step: 0, state: data.completeStatus })
            this.loadList()
          } else
            this.$emit('close', 'error')
          this.$emit('load', false)
        }).catch(() => {
          this.$emit('close', 'error')
          this.$emit('load', false)
        })
      }
    },
    getCompleteStatus (step, completeStatus) {
      var arr = completeStatus.split(',')
      if (!!arr && arr.length > 0) {
        for (var i = 0; i < arr.length; i++) {
          if (arr[i] == "1") {
            this.stepsArray[i].status = "finish"
          }
        }
        this.stepsArray[step].status = "process"
      }
    },
    loadList () {

      if (!!!this.formData.cooperativeUnits || this.formData.cooperativeUnits.length == 0)
        this.formData.cooperativeUnits = []

      if (!!!this.formData.participateUnits || this.formData.participateUnits.length == 0)
        this.formData.participateUnits = [] //{ ...Cooperative }, { ...Cooperative }

      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 = []

      if (!!!this.formData.fileList || !this.formData.fileList.length || this.formData.fileList.length == 0) {
        this.formData.fileList = []
      }
    },
    processKpiFunds () {
      if (!!this.formData.budget && this.formData.budget.length > 0) {
        this.formData.projectKPI.yearTotal = this.formData.budget[0].totalBudget
        this.formData.projectKPI.yearApply = this.formData.budget[0].applyFunds
        this.formData.projectKPI.yearSelf = this.formData.budget[0].selfFunds
      }
    },
    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
    },
    getObj (step) {
      var obj = null
      switch (step) {
        case 0: {
          obj = {
            id: null, reportYear: null, batch: null, projState: null, appPersonId: null, appUnitId: null, projType: null,
            jobTime: null, address: null, mainResearchAreas: null,
            unitLinkName: null, unitLinkMobile: null, unitLinkEmail: null, unitLinkFax: null,
            projName: null, knowledgeId: null, startDate: null, endDate: null,
            remark: null, projClass: null, subjectScope: null, projAbstract: null, projKeywords: null,
            totalFunding: null, govFunding: null, unitFunding: null, selfFunding: null,
            researchContent: null, technologyTarget: null, economyTarget: null, achievementTarget: null, technologyReportsTarget: null, otherTarget: null,
            fileId: null, downloadId: null, completeStatus: null, step: null
          }
          this.formData.projectKPI.appUnitName = this.formData.appUnitName
          break;
        }
        case 1:
          obj = { id: null, members: [], participateUnits: [], completeStatus: null, step: null }
          break;
        case 2:
          this.processKpiFunds()
          obj = { id: null, totalFunding: null, govFunding: null, unitFunding: null, selfFunding: null, budget: [], fundPlan: [], deviceList: [], manufactureList: [], unitPayment: [], completeStatus: null, step: null }
          break;
        case 3:
          obj = { id: null, stageGoals: [], projectSubList: [], completeStatus: null, step: null }
          break;
        case 4:
          this.processProjectYearTarget()
          obj = { id: null, projectKPI: null, yearTarget: null, year1Goal: null, year2Goal: null, year3Goal: null, managerDept: null, projAttribute: null, completeStatus: null, step: null }
          break;
        case 5:
          obj = { id: null, fileList: [], projState: null, completeStatus: null, step: null }
          break;
      }
      Object.keys(obj).forEach(key => {
        obj[key] = this.formData[key];
      })
      return obj
    },
    checkInfo (step) {
      if (step == 0) {
        if (this.formData.projName == "" || this.formData.projName == null) {
          alert('项目名称不能为空')
          return false
        } else return true
      } else if (step == 1) {
        if (!!!this.formData.members || this.formData.members.length == 0) {
          this.$message.error('至少添加一位项目组成员!')
          return false
        } else return true
      } else if (step == 2) {
        return true
      } else if (step == 3) {
        return true
      } else if (step == 4) {
        const flag = this.determineProjKPIDetail()
        if (flag) {
          return true
        } else {
          this.$message.error('项目绩效目标表需要至少填写其中的一项指标明细!')
          return false
        }
      } else if (step == 5) {
        return true
      }
    },
    determineProjKPIDetail () {
      let flag = false
      for (let e of this.formData.projectKPI.threeLevel) {
        if (e.performanceStandard && e.performanceStandard > 0) {
          flag = true
          break
        }
        if (e.targetValue && e.targetValue > 0) {
          flag = true
          break
        }
        if (e.yearValue1 && e.yearValue1 > 0) {
          flag = true
          break
        }
        if (e.yearValue2 && e.yearValue2 > 0) {
          flag = true
          break
        }
        if (e.yearValue3 && e.yearValue3 > 0) {
          flag = true
          break
        }
      }
      return flag
    },
    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>