<template>
  <div class="app-container" v-loading="loading">
    <el-form ref="form" :model="form" :rules="rules" label-width="180px">
      <h3 class="toolbar">
        <span class="title">项目基本信息</span>
      </h3>
      <el-row :gutter="40">
        <el-col :span="12">
          <el-form-item label="项目名称" prop="projectName">
            <el-input v-model="form.projectName" type="text" placeholder="请输入项目名称" :disabled="disabledVisible"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="企业名称" prop="entName">
            <el-input v-model="form.entName" type="text" placeholder="请输入企业名称" disabled></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="通讯地址" prop="address">
            <el-input v-model="form.address" placeholder="请输入通讯地址" :disabled="disabledVisible"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="企业联系人" prop="linkName">
            <el-input v-model="form.linkName" placeholder="请输入企业联系人" :disabled="disabledVisible"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="联系电话(座机)" prop="linkPhone">
            <el-input v-model="form.linkPhone" type="text" auto-complete="off" placeholder="请输入联系电话(座机)" :disabled="disabledVisible">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="联系电话(手机)" prop="linkMobile">
            <el-input v-model="form.linkMobile" type="text" auto-complete="off" placeholder="请输入联系电话(手机)" :disabled="disabledVisible">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="职工总人数(人)" prop="totoalPersons">
            <el-input v-model="form.totoalPersons" type="text" auto-complete="off" placeholder="请输入职工总人数" :disabled="disabledVisible">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="年度企业销售收入(万元)" prop="sales">
            <el-input v-model="form.sales" type="text" auto-complete="off" placeholder="请输入年度企业销售收入(万元)" :disabled="disabledVisible">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="研发人数" prop="techPersons">
            <el-input v-model="form.techPersons" type="text" auto-complete="off" placeholder="请输入研发人数" :disabled="disabledVisible">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="年度研发投入(万元)" prop="techInvest">
            <el-input v-model="form.techInvest" type="text" auto-complete="off" placeholder="请输入年度研发投入(万元)" :disabled="disabledVisible">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="占销售收入比例(%)" prop="techRate">
            <el-input v-model="form.techRate" type="text" auto-complete="off" placeholder="请输入占销售收入比例(%)" disabled>
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="企业所属行业" prop="industryArray">
            <el-cascader
                v-model="form.industryArray"
                :options="options"
                :disabled="disabledVisible" style="width: 310px;"></el-cascader>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="国家自主创新示范区企业" prop="innovateFlag">
            <el-radio-group v-model="form.innovateFlag" :disabled="disabledVisible">
              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
            </el-radio-group>
          </el-form-item>
        </el-col>
      </el-row>
      <h3 class="toolbar">
        <span class="title">项目是否跨年</span>
      </h3>
      <el-row :gutter="40">
        <el-col :span="12">
          <el-form-item label="是否跨年" prop="overYearFlag">
            <el-radio-group v-model="form.overYearFlag" :disabled="disabledVisible">
              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
            </el-radio-group>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="项目时间段" prop="projectTime">
            <el-date-picker v-model="form.projectTime" placeholder="选择日期" type="daterange" value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :disabled="disabledVisible"></el-date-picker>
          </el-form-item>
        </el-col>
      </el-row>
      <h3 class="toolbar">
        <span class="title">科技型中小企业信息</span>
      </h3>
      <el-row :gutter="40">
        <el-col :span="12">
          <el-form-item label="是否科技型中小企业" prop="smallFlag">
            <el-radio-group v-model="form.smallFlag" :disabled="disabledVisible">
              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
            </el-radio-group>
          </el-form-item>
        </el-col>
      </el-row>
      <h3 class="toolbar">
        <span class="title">高新技术企业信息</span>
      </h3>
      <el-row :gutter="40">
        <el-col :span="12">
          <el-form-item label="是否高新技术企业" prop="techFlag">
            <el-radio-group v-model="form.techFlag" :disabled="disabledVisible">
              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
            </el-radio-group>
          </el-form-item>
        </el-col>
        <template v-if="form.techFlag == 1">
          <el-col :span="24">
            <el-form-item label="高新技术企业所属技术领域" prop="techScopeArray">
              <el-checkbox-group v-model="form.techScopeArray" :disabled="disabledVisible">
                <el-checkbox v-for="(item, index) in techScopeOptions" :label="item.dictLabel" :key="index">{{item.dictLabel}}</el-checkbox>
              </el-checkbox-group>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="证书有效期限" prop="lisenceTime">
              <el-date-picker v-model="form.lisenceTime" placeholder="选择日期" type="daterange" value-format="yyyy-MM" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :disabled="disabledVisible"></el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="高新证书" prop="techLicense" ref="techLicenseUpload">
              <FileUpload :file="{url: form.techLicense, name: form.fileName}" @input="handleSuccess" :disabledVisible="disabledVisible">上传证书</FileUpload>
            </el-form-item>
          </el-col>
        </template>
      </el-row>
      <template v-if="userType == 'ENT_FIN' || userType == 'ENT_ADMIN_FIN'">
        <el-row :gutter="40">
          <el-col :span="24">
            <el-form-item style="width:100%;text-align: center;" label-width="0px">
              <el-button @click="synTechSubmit" size="medium" type="primary">同步技术填报</el-button>
              <el-button @click="synEntSubmit" size="medium" type="primary">同步企业填报</el-button>
              <el-button :loading="loading" size="medium" type="primary" @click.native.prevent="submitForm" style="width: 100px;">财务保存</el-button>
              <el-button size="medium" type="primary" style="width: 100px;" @click="cancel">取消</el-button>
              <el-button size="medium" type="primary" @click="submitDraft">保存草稿</el-button>
            </el-form-item>
          </el-col>
        </el-row>
      </template>
    </el-form>
  </div>
</template>

<script>
import { editProjectApi,getProjectInfoApi,synFinApi,draftApi } from "@/api/enterprise/project/project"
import { techScopeOptions,yesOrNoOptions,businessIndustryOptions } from "@/utils/dataFormat"
import FileUpload from '@/components/FileUpload'
import { listEntUserApi } from "@/api/ent/ent"
import { validAmount,validNumber,validPercentage,validPhone} from '@/utils/validate'

export default {
  name: "First",
  components: {
    FileUpload
  },
  computed: {
    userType() {
      return this.$store.state.user.userType
    },
    tempVariable() {
      let invest = this.form.techInvest
      let sales = this.form.sales
      return {invest, sales}
    }
  },
  props: {
  },
  data() {
    return {
      options: businessIndustryOptions,
      techId: undefined,
      adminId: undefined,
      disabledVisible: false,
      serviceDate: [],
      provinceName: '',
      cityName: '',
      districtName: '',
      codeUrl: "",
      techScopeOptions: techScopeOptions,
      yesOrNoOptions: yesOrNoOptions,
      provinceDataList: [],
      cityDataList: [],
      districtDataList: [],
      form: {
        id: undefined,
        entId: undefined,
        entName: '',
        projectOwner: 3,
        lisenceTime: [],
        techStartDate: '',
        techEndDate: '',
        projectTime: [],
        projectStartDate: '',
        projectEndDate: '',
        techScopeArray: ['电子信息'],
        industry: '',
        industryArray: []
      },
      rules: {
        userName: [
          { required: true, trigger: "blur", message: "请输入您的账号" },
          { min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' }
        ],
        password: [
          { required: true, trigger: "blur", message: "请输入您的密码" },
          { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
        ],
        address: [
          { required: true, trigger: "blur", message: "请输入通讯地址" },
          { max: 100, message: '不超过100字符', trigger: 'blur' }
        ],
        linkName: [
          { required: true, trigger: "blur", message: "请输入企业联系人" },
          { max: 100, message: '不超过100字符', trigger: 'blur' }
        ],
        linkPhone: [
          { required: true, trigger: "blur", message: "请输入联系电话（座机）" },
          // { max: 11, message: '请输入正确的电话格式', trigger: 'blur' }
          { validator: validPhone, trigger: 'blur'}
        ],
        linkMobile: [
          { required: true, trigger: "blur", message: "请输入手机号" },
          {
            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
            message: "请输入正确的手机号码",
            trigger: "blur"
          }
        ],
        totoalPersons: [
          { required: true, trigger: "blur", message: "请输入职工总人数" },
          { validator: validNumber, trigger: 'blur'}
        ],
        sales: [
          { required: true, trigger: "blur", message: "请输入年度企业销售收入(万元)" },
          { validator: validAmount, trigger: 'blur'}
        ],
        techPersons: [
          { required: true, trigger: "blur", message: "请输入研发人数" },
          { validator: validNumber, trigger: 'blur'}
        ],
        techInvest: [
          { required: true, trigger: "blur", message: "请输入年度研发投入(万元)" },
          { validator: validAmount, trigger: 'blur'}
        ],
        techRate: [
          { required: true, trigger: "blur", message: "请输入占销售收入比例(%)" },
          { validator: validPercentage, trigger: 'blur'}
        ],
        industryArray: [
          { required: true, trigger: "blur", message: "请选择企业所属行业" }
        ],
        innovateFlag: [
          { required: true, trigger: "[blur,change]", message: "请选择国家自主创新示范区企业" }
        ],
        overYearFlag: [
          { required: true, trigger: "change", message: "请选择是否跨年" }
        ],
        smallFlag: [
          { required: true, trigger: "[blur,change]", message: "请选择是否科技型中小企业" }
        ],
        techFlag: [
          { required: true, trigger: "[blur,change]", message: "请选择是否高新技术企业" }
        ],
        techLicense: [
          { required: true, trigger: "change", message: "请上传高新企业证书" }
        ],
        lisenceTime: [
          { required: true, trigger: "change", message: "请选择证书有效期限" }
        ]
      },
      loading: false,
      captchaOnOff: true
    };
  },
  mounted() {
    this.$nextTick(() => {
    	this.$refs.form.clearValidate()
    })
    this.getEntData()
  },
  created() {
    //财务员 财务负责人 没有禁
    if(this.userType == 'ENT_FIN' || this.userType == 'ENT_ADMIN_FIN') {
      this.disabledVisible = false
    }else {
      this.disabledVisible = true
    }
    this.form.id = this.$route.query.id || undefined;
    this.form.entId = this.$route.query.entId || undefined;
    if(this.form.id) {
      this.getData().then(res => {
        this.getEntData()
      })
    }
  },
  methods: {
    async getEntData() {
      listEntUserApi().then(res => {
        if(!this.form.entName) {
          this.form.entName = res.data.entName
        }
        if(!this.form.linkName) {
          this.form.linkName = res.data.linkName
        }
        if(!this.form.linkPhone) {
          this.form.linkPhone = res.data.linkPhone
        }
        if(!this.form.linkMobile) {
          this.form.linkMobile = res.data.linkMobile
        }
        if(!this.form.techFlag) {
          this.form.techFlag = res.data.techFlag
        }
      })
    },
    //同步技术资料
    synTechSubmit() {
      this.loading = true
      synFinApi(this.techId).then(res => {
        this.loading = false
        if(res.code == 200) {
          this.$message.success('已同步完成');
          this.getData()
        }

      })
    },
    //同步企业自填资料
    synEntSubmit() {
      this.loading = true
      synFinApi(this.adminId).then(res => {
        this.loading = false
        if(res.code == 200) {
          this.$message.success('已同步完成');
          this.getData()
        }
      })
    },
    async getData() {
      getProjectInfoApi(this.form.id).then(res => {
        let obj = res.data.finProject || {}
        this.techId = res.data.techProject.id
        this.adminId = res.data.entProject.id
        this.form = obj || {}
        this.form.fileName = '高新证书'
        let arr = ['电子信息']
        this.$set(this.form, 'techScopeArray', arr)
        if(this.form.industry) {
          let industryArray = this.form.industry.split(',') || [];
          this.$set(this.form, 'industryArray', industryArray);
        }
        if(obj.techScope) {
          this.form.techScopeArray = obj.techScope.split(',') || ['电子信息']
        }

        if(obj.projectStartDate) {
          this.form.projectTime = []
          this.form.projectTime[0] = obj.projectStartDate
          this.form.projectTime[1] = obj.projectEndDate
        }

        if(obj.techStartDate) {
          this.form.lisenceTime = []
          this.form.lisenceTime[0] = obj.techStartDate
          this.form.lisenceTime[1] = obj.techEndDate
        }
        if(obj.techFlag == 1) {
          this.techVisible = true
        }
      })
    },
    handleSuccess(file) {
      this.form.techLicense = file.url;
      this.form.fileName = file.name;
      this.$refs.techLicenseUpload.clearValidate()
    },
    handleSaleSuccess(files) {
      files.forEach(item => {
        this.form.attachIds.push(item.response.data.id)
      });
    },
    cancel() {
      this.$store.dispatch("tagsView/delView", this.$route); // 关闭当前tab
      this.$router.go(-1);
    },
    submitForm() {
      this.$refs.form.validate(valid => {
        if(valid) {
          this.loading = true
          this.form.techScope = this.form.techScopeArray.join(',')
          this.form.industry = this.form.industryArray.join(',')
          editProjectApi(this.form).then(res => {
            this.loading = false
            this.$store.dispatch("tagsView/delView", this.$route);
            this.$router.go(-1);
          })
        }
      })
    },
    submitDraft() {
      this.loading = true
      if(this.form.techScopeArray.length > 0) {
        this.form.techScope = this.form.techScopeArray.join(',')
      }
      if(this.form.industryArray.length > 0) {
        this.form.industry = this.form.industryArray.join(',')
      }
      draftApi(this.form).then(res => {
        this.loading = false
        this.$store.dispatch("tagsView/delView", this.$route);
        this.$router.go(-1);
      })
    }
  },
  watch: {
    'entProjectList': {
      immediate: true,
      handler (val) {
        this.form.entProjectList = this.entProjectList || {}
      }
    },
    'form.projectTime'(val) {
      if(this.form.projectTime) {
        this.form.projectStartDate = this.form.projectTime[0]
        this.form.projectEndDate = this.form.projectTime[1]
      }else {
        this.form.projectStartDate = ''
        this.form.projectEndDate = ''
      }
    },
    'form.lisenceTime'(val) {
      if(this.form.lisenceTime) {
        this.form.techEndDate = this.form.lisenceTime[1]
        this.form.techStartDate = this.form.lisenceTime[0]
      }else {
        this.form.techStartDate = ''
        this.form.techEndDate = ''
      }
    },
    'tempVariable'(val) {
      if(val.invest && val.sales) {
        this.form.techRate = ((val.invest / val.sales)*100).toFixed(2)
      }
    }
  }
};
</script>