<!-- 新增单位 -->
<template>
  <div class="L-assets-info">
    <div class="assets-info-top">
      <el-row style="margin: 10px 0;">
        <span class="top-title-box">基本信息</span>
      </el-row>
      <div class="assets-info-box">
        <el-form v-loading="loading" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="170px" class="demo-ruleForm" label-position="right" :disabled="disabled">
          <el-row>
            <el-col :span="12">
              <el-form-item label="新增单位名称" required prop="nickName">
                <el-input v-model="ruleForm.nickName" placeholder="请输入单位名称"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="单位简称">
                <el-input v-model="ruleForm.dwjc" placeholder="请输入单位简称"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="所属区域" required>
                <el-cascader
                  size="large"
                  :props="props"
                  :options="options"
                  v-model="ruleForm.ssqy"
                >
                </el-cascader>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="单位详细地址" required>
                <el-input v-model="ruleForm.dwxxdz" placeholder="请输入单位详细地址"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="所属行业" required>
                <el-select v-model="ruleForm.sshy" placeholder="请选择所属行业">
                  <el-option
                    v-for="dict in dict.type.sshy"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="单位类型" required>
                <el-select v-model="ruleForm.dwlx" placeholder="请选择单位类型">
                  <el-option
                    v-for="dict in dict.type.dwlx"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="单位标签">
                <el-select v-model="ruleForm.dwbq" placeholder="请选择单位标签">
                  <el-option
                    v-for="dict in dict.type.zc_xtzyx"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="所属监管单位">
                <el-input v-model="ruleForm.ssjgdw" placeholder="请输入监管单位"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="单位角色">
                <el-select v-model="ruleForm.dwjs" placeholder="请选择单位角色">
                  <el-option
                    v-for="dict in dict.type.dwjs"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="单位直属性质">
                <el-select v-model="ruleForm.dwzsxz" placeholder="请选择单位直属性质">
                  <el-option
                    v-for="dict in dict.type.dwzsxz"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="统一社会信用代码" prop="userName">
                <el-input v-model="ruleForm.userName" placeholder="请输入统一社会信用代码"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="是否关基单位">
                <el-select v-model="ruleForm.gjdw" placeholder="请选择是否关基单位">
                  <el-option
                    v-for="dict in dict.type.is_no"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="日常运营负责部门" required>
                <el-input v-model="ruleForm.rcyyfzbm" placeholder="请输入日常运营负责部门"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="组织机构" required prop="zzjg">
                <!-- @change="handleChange" -->
                <el-cascader
                  v-model="ruleForm.zzjg"
                  :options="optionsTwo"
                >
                </el-cascader>
              </el-form-item>
            </el-col>
          </el-row>
          <!-- 联系人 -->
          <el-row style="margin: 10px 0;">
            <span class="top-title-box">联系人</span>
            <el-row>
              <el-col :span="24">
                <el-form-item label="单位负责人" required class="daoqitixingren">
                  <el-row>
                    <el-col :span="6">
                      <el-form-item>
                        <el-input v-model="ruleForm.dwfzrxm" style="width: 100%;" placeholder="请输入联系人"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item prop="dwfzrlxfs"
                        :rules="[
                          {
                            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
                            message: '请输入正确的手机号码',
                            trigger: 'blur'
                          }
                        ]"
                      >
                        <el-input v-model="ruleForm.dwfzrlxfs" style="width: 100%;" placeholder="请输入联系方式"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item prop="dwfzryx"
                        :rules="[
                          {
                            type: 'email',
                            message: '请输入正确的邮箱地址',
                            trigger: ['blur', 'change']
                          }
                        ]"
                      >
                        <el-input v-model="ruleForm.dwfzryx" style="width: 100%;" placeholder="请输入邮箱"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item>
                        <el-input v-model="ruleForm.dwfzrzwzc" style="width: 100%;" placeholder="请输入职务职称"></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="分管负责人" class="daoqitixingren">
                  <el-row>
                    <el-col :span="6">
                      <el-form-item>
                        <el-input v-model="ruleForm.fgfzrxm" style="width: 100%;" placeholder="请输入联系人"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item prop="fgfzrlxfs"
                        :rules="[
                          {
                            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
                            message: '请输入正确的手机号码',
                            trigger: 'blur'
                          }
                        ]"
                      >
                        <el-input v-model="ruleForm.fgfzrlxfs" style="width: 100%;" placeholder="请输入联系方式"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item prop="fgfzryx"
                        :rules="[
                          {
                            type: 'email',
                            message: '请输入正确的邮箱地址',
                            trigger: ['blur', 'change']
                          }
                        ]"
                      >
                        <el-input v-model="ruleForm.fgfzryx" style="width: 100%;" placeholder="请输入邮箱"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item>
                        <el-input v-model="ruleForm.fgfzrzwzc" style="width: 100%;" placeholder="请输入职务职称"></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="部门负责人" class="daoqitixingren">
                  <el-row>
                    <el-col :span="6">
                      <el-form-item>
                        <el-input v-model="ruleForm.bmfzrxm" style="width: 100%;" placeholder="请输入联系人"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item prop="bmfzrlxfs"
                        :rules="[
                          {
                            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
                            message: '请输入正确的手机号码',
                            trigger: 'blur'
                          }
                        ]"
                      >
                        <el-input v-model="ruleForm.bmfzrlxfs" style="width: 100%;" placeholder="请输入联系方式"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item prop="bmfzryx"
                        :rules="[
                          {
                            type: 'email',
                            message: '请输入正确的邮箱地址',
                            trigger: ['blur', 'change']
                          }
                        ]"
                      >
                        <el-input v-model="ruleForm.bmfzryx" style="width: 100%;" placeholder="请输入邮箱"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item>
                        <el-input v-model="ruleForm.bmfzrzwzc" style="width: 100%;" placeholder="请输入职务职称"></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="第一联系人" class="daoqitixingren">
                  <el-row>
                    <el-col :span="6">
                      <el-form-item>
                        <el-input v-model="ruleForm.dylxrxm" style="width: 100%;" placeholder="请输入联系人"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item prop="dylxrlxfs"
                        :rules="[
                          {
                            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
                            message: '请输入正确的手机号码',
                            trigger: 'blur'
                          }
                        ]"
                      >
                        <el-input v-model="ruleForm.dylxrlxfs" style="width: 100%;" placeholder="请输入联系方式"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item prop="dylxryx"
                        :rules="[
                          {
                            type: 'email',
                            message: '请输入正确的邮箱地址',
                            trigger: ['blur', 'change']
                          }
                        ]"
                      >
                        <el-input v-model="ruleForm.dylxryx" style="width: 100%;" placeholder="请输入邮箱"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item>
                        <el-input v-model="ruleForm.dylxrzwzc" style="width: 100%;" placeholder="请输入职务职称"></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="其他联系人" class="daoqitixingren" v-for="(domain, index) in ruleForm.otherConcat" :key="domain.key" :prop="'otherConcat.' + index + '.qtlxrlxfs'">
                  <el-row>
                    <el-col :span="6">
                      <el-form-item>
                        <el-input v-model="domain.qtlxrxm" style="width: 100%;" placeholder="请输入联系人"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item :prop="'otherConcat.' + index + '.qtlxrlxfs'"
                        :rules="[
                          {
                            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
                            message: '请输入正确的手机号码',
                            trigger: 'blur'
                          }
                        ]"
                      >
                        <el-input v-model="domain.qtlxrlxfs" style="width: 100%;" placeholder="请输入联系方式"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item prop="qtlxryx"
                        :rules="[
                          {
                            type: 'email',
                            message: '请输入正确的邮箱地址',
                            trigger: ['blur', 'change']
                          }
                        ]"
                      >
                        <el-input v-model="domain.qtlxryx" style="width: 100%;" placeholder="请输入邮箱"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="6" style="margin-left: 10px;">
                      <el-form-item>
                        <el-input v-model="domain.qtlxrzwzc" style="width: 100%;" placeholder="请输入职务职称"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="1" style="text-align: center;" v-if="$route.query.pageType !== 'look'">
                      <i @click="removeDomain(domain,'otherConcat')" class="el-icon-remove-outline" style="margin-left: 5px;font-size: 16px;cursor: pointer;"></i>
                    </el-col>
                  </el-row>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row v-if="$route.query.pageType !== 'look'">
              <el-col :span="24">
                <el-form-item>
                  <el-button @click="addForm('otherConcat')">添加其他联系人</el-button>
                </el-form-item>
              </el-col>
            </el-row>
          </el-row>
          <!-- 检查信息 -->
          <el-row style="margin: 10px 0;">
            <span class="top-title-box">检查信息</span>
          </el-row>
          <div v-for="(domain, index) in ruleForm.jcxxList" :key="domain.key" :prop="'jcxxList.' + index + '.value'">
            <el-row style="display: flex;">
              <el-col :span="8">
                <el-form-item class="daoqitixingren" required :label="'时间' + (index == 0 ? '' : index)">
                  <el-date-picker
                    v-model="domain.sj"
                    type="date"
                    format="yyyy-MM-dd"
                    value-format="yyyy-MM-dd"
                    placeholder="选择日期">
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item class="daoqitixingren" :label="'系统域名' + (index == 0 ? '' : index)">
                  <el-input v-model="domain.tyshxydm" placeholder="请输入系统域名"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item class="daoqitixingren" :label="'系统名称' + (index == 0 ? '' : index)">
                  <el-input v-model="domain.lxdh" placeholder="请输入系统名称"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="1" style="text-align: center;" v-if="$route.query.pageType !== 'look'">
                <i @click="addGongyinglian('jcxxList')" v-if="index == 0" class="el-icon-circle-plus-outline" style="margin-top: 10px;font-size: 16px;cursor: pointer;"></i>
                <i @click="removeDomain(domain,'jcxxList')" v-else class="el-icon-remove-outline" style="margin-top: 10px;font-size: 16px;cursor: pointer;"></i>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="8">
                <el-form-item :label="'等保级别' + (index == 0 ? '' : index)">
                  <el-select v-model="domain.dbjb" placeholder="请选择等保级别">
                    <el-option
                      v-for="dict in dict.type.dbxx_dbdj"
                      :key="dict.value"
                      :label="dict.label"
                      :value="dict.value"
                    />
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item :label="'单位名称' + (index == 0 ? '' : index)">
                  <el-input v-model="domain.dwmc" placeholder="请输入单位名称"></el-input>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item :label="'检查结果' + (index == 0 ? '' : index)">
                  <el-input type="textarea" resize="none" placeholder="请输入检查结果" :rows="5" v-model="domain.xgyw_ywms"></el-input>
                </el-form-item>
              </el-col>
            </el-row>
          </div>
          <!-- 更多信息 -->
          <el-row style="margin: 10px 0;">
            <span class="top-title-box">更多信息</span>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="官网">
                <el-input v-model="ruleForm.gw" placeholder="请输入官网"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="地图经度">
                <el-input v-model="ruleForm.dtjd" placeholder="请输入地图经度"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="地图纬度">
                <el-input v-model="ruleForm.dtwd" placeholder="请输入地图纬度"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="上级单位" required>
                <el-input v-model="ruleForm.sjdw" placeholder="请输入上级单位"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="备注">
                <el-input type="textarea" resize="none" placeholder="请输入备注" :rows="5" v-model="ruleForm.remark"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row style="margin: 10px 0 ;padding-bottom: 50px; text-align: center;" v-if="$route.query.pageType !== 'look'">
            <el-button type="danger" @click="cancel" :disabled="false">取消</el-button>
            <el-button type="primary" @click="newUnit" :disabled="false">确定</el-button>
          </el-row>
        </el-form>
      </div>
    </div>
  </div>
</template>
<script>
import pcas from "@/utils/pca-code.json"
import { lookUnit, postUnit } from "@/api/auditPagesApi/index";
import { MessageBox } from 'element-ui'
export default {
  dicts:['zc_xtzyx', 'is_no', 'sshy', 'dwlx', 'dwjs', 'dwzsxz', 'dbxx_dbdj'],
  data() {
    const validateTyshxydm = (rule, value, callback) => {
      const pattern = /^[a-zA-Z0-9]{18}$/;
      if (!pattern.test(value)) {
        callback(new Error('请输入正确格式的18位统一社会信用代码'));
        return;
      } 
      callback();
      // if (value.length!== 18) {
      //   callback(new Error('请输入18位统一社会信用代码'));
      //   return;
      // } else {
      //   callback();
      // }
    }
    return {
      options: pcas ,
      optionsTwo:[
        {
          value:"100",
          label:"政务",
          children:[
            {
              value:"101",
              label:"党委机关",
            },{
              value:"102",
              label:"政府机关",
            },{
              value:"200",
              label:"事业单位",
            },{
              value:"202",
              label:"大型国企",
            },
          ],
        },
        {
          value:"10",
          label:"民营企业",
          children:[
            {
              value:"203",
              label:"重点民企",
            },{
              value:"204",
              label:"一般民企"
            }
          ],
        },
        {
          value:"20",
          label:"个人",
        },
        {
          value:"30",
          label:"社会团体"
        }
      ],
      props:{
        value:'value',
        label:"value",
        checkStrictly:true,
      },
      ruleForm:{
        // 其他联系人
        otherConcat:[
          {
            qtlxrxm: '',
            qtlxrlxfs: '',
            qtlxryx: '',
            qtlxrzwzc: '',
          }
        ],
        // 所属区域
        ssqy:[],
        // 检查信息
        jcxxList:[
          {
            name:"",
            tyshxydm:"",
            lxdh:"",
          }
        ],
      },
      rules:{
        userName: [
          { required: true, message: '请输入统一社会信用代码', trigger: 'blur' },
          { required: true, trigger: "blur" ,validator: validateTyshxydm},
        ],
        nickName: [
          { required: true, message: '请输入单位名称', trigger: 'blur' },
        ],
        zzjg: [
          { required: true, message: '请选择组织机构', trigger: 'change' },
        ],
      },
      disabled:false,
      loading:false,
    }
  },
  mounted(){
    if(this.$route.query.pageType == 'look') {
      this.getInfo(this.$route.query.id)
      this.disabled = true;
      this.$nextTick(()=>{
        const inputElements = document.querySelectorAll('.el-input__inner');
        const textareaInputElements = document.querySelectorAll('.el-textarea__inner');
        inputElements.forEach((input) => {
          input.placeholder = '';
        });
        textareaInputElements.forEach((input) => {
          input.placeholder = '';
        });
      })
    } else if(this.$route.query.pageType == 'change') {
      this.getInfo(this.$route.query.id)
      this.disabled = false;
    }
  },
  methods:{
    // handleChange(value){
    //   console.log(value);
    // },
    // 获取详情
    getInfo(id){
      this.loading = true;
      lookUnit(id).then(res=>{
        this.ruleForm = res.data;
        if(res.data.ssqyprovince && res.data.ssqycity && res.data.ssqycounty) {
          this.$set(this.ruleForm, 'ssqy', [res.data.ssqyprovince,res.data.ssqycity,res.data.ssqycounty])
        } else if(res.data.ssqyprovince && res.data.ssqycity) {
          this.$set(this.ruleForm, 'ssqy', [res.data.ssqyprovince,res.data.ssqycity])
        } else if(res.data.ssqyprovince) {
          this.$set(this.ruleForm, 'ssqy', [res.data.ssqyprovince])
        }
        if(this.ruleForm.ancestors) {
          let deptId = this.ruleForm.ancestors.split(',');
          this.$set(this.ruleForm, 'zzjg', deptId)
        }
        this.loading = false;
      })
    },
    // 新增form
    addForm(type){
      this.ruleForm[type].push({
        qtlxrxm: '',
        qtlxrlxfs: '',
        qtlxryx: '',
        qtlxrzwzc: '',
        key: Date.now()
      });
    },
    // 供应链Form新增
    addGongyinglian(type){
      this.ruleForm[type].push({
        sj:"",
        xtym:"",
        xthc:"",
        dbjb:"",
        dwmc:"",
        jcjg:"",
        key: Date.now()
      });
    },
    // 删除增加的form
    removeDomain(item,type) {
      var index = this.ruleForm[type].indexOf(item)
      if (index !== -1) {
        this.ruleForm[type].splice(index, 1)
      }
    },
    newUnit(){
      this.$refs['ruleForm'].validate((valid) => {
        if(valid) {
          if(this.ruleForm.ssqy?.length > 0) {
            this.ruleForm.ssqyprovince = this.ruleForm.ssqy[0]
            this.ruleForm.ssqycity = this.ruleForm.ssqy[1]
            this.ruleForm.ssqycounty = this.ruleForm.ssqy[2]
          }
          if(this.ruleForm.zzjg.length == 2) {
            this.ruleForm.deptId = Number(this.ruleForm.zzjg[1])
          } else {
            this.ruleForm.deptId = Number(this.ruleForm.zzjg[0])
          }
          this.loading = true;
          if(this.$route.query.pageType == 'change') {
            postUnit('put',this.ruleForm).then(res=>{
              this.loading = false;
              this.$modal.msgSuccess("修改成功");
              this.$router.go(-1);
            }).catch(err=>{
              this.loading = false;
            })
          } else if(this.$route.query.pageType == 'add') {
            postUnit('post',this.ruleForm).then(res=>{
              this.loading = false;
              // this.$modal.msgSuccess("新增成功");
              if(res.code == 200 && res.msg) {
                let msg = res.msg
                MessageBox.confirm(`${msg}`, '生成密码', {
                  confirmButtonText: '确定',
                  showClose:false,
                  type:"success ",
                  callback: action => {
                    if (window.clipboardData) {
                      window.clipboardData.setData('text', msg);
                    } else {
                      (function () {
                        document.oncopy = function (e) {
                          e.clipboardData.setData('text', msg);
                          e.preventDefault();
                          document.oncopy = null;
                        }
                      })(msg);
                      document.execCommand('Copy');
                    }
                    this.$message({
                      type: 'success',
                      message: `密码复制成功: ${ msg }`
                    });
                    this.$router.go(-1);
                  }
                });
              }
            }).catch(err=>{
              this.loading = false;
            })
          }
        }
      })
    },
    cancel(){
      this.$router.go(-1);
    },
  },
  beforeRouteEnter(to,from,next){
    if(to.query.pageType == 'add') {
      to.meta.title = '新增单位'
    } else if(to.query.pageType == 'change') {
      to.meta.title = '修改单位'
    } else if(to.query.pageType == 'look') {
      to.meta.title = '单位详情'
    }
    next();
  },
}
</script>