<!--
 * @Description:
 * @Autor: renchao
 * @LastEditTime: 2023-09-26 16:49:33
-->
<template>
  <dialogBox
    title="权利人信息"
    width="75%"
    isMain
    v-model="myValue"
    :isFullscreen="false"
    @submitForm="submitForm"
    @closeDialog="closeDialog"
    :isButton="isShow">
    <el-tabs v-model="activeName" @tab-click="handleClick" class="from-clues-header">
      <el-tab-pane label="基本信息" name="1"></el-tab-pane>
      <el-tab-pane label="企业信息" v-if="showButton" name="2"></el-tab-pane>
      <el-tab-pane label="银行机构" v-if="showButton" name="3"></el-tab-pane>
    </el-tabs>

    <el-form
      :model="ruleForm"
      v-if="activeName==1"
      :rules="rules"
      ref="ruleForm"
      label-width="120px">
      <el-form-item label="身份证读卡器">
        <el-button type="text" icon="el-icon-tickets" :disabled="!showButton" @click="readClick">读取</el-button>
        <el-button type="primary" v-if="isBz" @click="handleFilings">信息备案</el-button>
      </el-form-item>
      <el-row>
        <el-col :span="8">
          <el-form-item label="权利人类型" prop="qlrlx">
            <el-select
              clearable
              v-model="ruleForm.qlrlx"
              class="width100"
              :disabled="!showButton"
              placeholder="请选择">
              <el-option
                v-for="item in dictData['A36']"
                :key="item.dcode"
                :label="item.dname"
                :value="item.dcode">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="姓名/名称" prop="qlrmc">
            <el-input
              v-model="ruleForm.qlrmc"
              maxlegth="15"
              :disabled="!showButton"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="证件种类" prop="zjzl">
            <el-select
              clearable
              v-model="ruleForm.zjzl"
              :disabled="!showButton"
              class="width100"
              @change="handleZjzl"
              placeholder="请选择">
              <el-option
                v-for="item in dictData['A30']"
                :key="item.dcode"
                :label="item.dname"
                :value="item.dcode">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="8">
          <el-form-item label="证件号" prop="zjh">
            <el-input
              v-model="ruleForm.zjh"
              :disabled="!showButton"
              maxlength="18"
              oninput="this.value=this.value.replace(/[^\X0-9]/g,'')"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="联系电话" prop="dh">
            <el-input
              v-model="ruleForm.dh"
              :disabled="!showButton"
              maxlength="11"
              oninput="value=value.replace(/[^\d]/g,'')"></el-input>
          </el-form-item>
        </el-col>

        <el-col :span="8">
          <el-form-item label="权利比例">
            <el-input
              v-model="ruleForm.qlbl"
              maxlength="32"
              :disabled="!showButton || this.ruleForm.gyfs == 1"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="8">
          <el-form-item label="法人名称" prop="frmc">
            <el-input
              v-model="ruleForm.frmc"
              maxlength="32"
              :disabled="!showButton"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="国家/地区" prop="gj">
            <el-input
              v-model="ruleForm.gj"
              maxlength="3"
              :disabled="!showButton"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="户籍所在省市">
            <el-input
              v-model="ruleForm.hjszss"
              maxlength="3"
              :disabled="!showButton"></el-input>
          </el-form-item>
        </el-col>
      </el-row>

      <el-row>
        <el-col :span="24">
          <el-form-item label="地址">
            <el-input
              v-model="ruleForm.dz"
              maxlength="100"
              :disabled="!showButton"></el-input>
          </el-form-item>
        </el-col>
      </el-row>

      <el-row>
        <el-col :span="8">
          <el-form-item label="发证机关">
            <el-input
              v-model="ruleForm.fzjg"
              maxlength="10"
              :disabled="!showButton"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="电子邮件">
            <el-input
              v-model="ruleForm.dzyj"
              :disabled="!showButton"
              maxlength="25"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="邮编" prop="yb">
            <el-input
              v-model.number="ruleForm.yb"
              :disabled="!showButton"
              maxlength="6"
              oninput="value=value.replace(/[^\d]/g,'')"></el-input>
          </el-form-item>
        </el-col>
      </el-row>

      <el-row>
        <el-col :span="8">
          <el-form-item label="工作单位">
            <el-input
              v-model="ruleForm.gzdw"
              maxlength="32"
              :disabled="!showButton"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="16">
          <el-form-item label="代理机构">
            <el-input
              v-model="ruleForm.dlrjgmc"
              maxlength="32"
              :disabled="!showButton"></el-input>
          </el-form-item>
        </el-col>
      </el-row>

      <el-row>
        <el-col :span="8">
          <el-form-item label="代理人电话">
            <el-input
              v-model="ruleForm.dlrdhhm"
              :disabled="!showButton"
              maxlength="11"
              oninput="value=value.replace(/[^\d]/g,'')"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="代理人姓名">
            <el-input
              v-model="ruleForm.dlrxm"
              maxlength="15"
              :disabled="!showButton"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="代理人证件类型">
            <el-select
              clearable
              v-model="ruleForm.dlrzjlx"
              :disabled="!showButton"
              class="width100"
              placeholder="请选择">
              <el-option
                v-for="item in dictData['A30']"
                :key="item.dcode"
                :label="item.dname"
                :value="item.dcode">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="8">
          <el-form-item label="性别">
            <el-select
              clearable
              v-model="ruleForm.xb"
              :disabled="!showButton"
              class="width100"
              placeholder="请选择">
              <el-option
                v-for="item in dictData['A43']"
                :key="item.dcode"
                :label="item.dname"
                :value="item.dcode">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-form-item label="代理人证件号">
            <el-input
              v-model="ruleForm.dlrzjh"
              :disabled="!showButton"
              maxlength="18"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>

    <div v-if="activeName==2" class="padding10">
      <el-form :model="queryFormQY" label-width="80px">
        <el-row>
          <el-col :span="8">
            <el-form-item label="姓名/名称">
              <el-input placeholder="姓名/名称" v-model="queryFormQY.qymc" clearable class="width100">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="证件号">
              <el-input placeholder="证件号" v-model="queryFormQY.zjh" clearable class="width100">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8" class="btnColRight">
            <el-form-item>
              <el-button type="primary" @click="handleSearchQY">查询</el-button>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-table :data="tableDataQy.data" border v-Loading="loading" :height="426.8">
        <el-table-column label="序号" type="index" width="50" align="center">
          <template slot-scope="scope">
            {{(pageData.currentPage - 1) * pageData.pageSize + scope.$index + 1}}
          </template>
        </el-table-column>
        <el-table-column v-for="item in tableDataQy.columns" :key="item.index" :width="item.width" :prop="item.prop" :label="item.label" align="center">
        </el-table-column>
        <el-table-column label="操作" width="50">
          <template slot-scope="scope">
            <el-button type="text" @click="handleSelect(scope.row)">使用</el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination background layout="prev, pager, next,total" :total="tableDataQy.total"
        @current-change="handleQYCurrentChange"></el-pagination>
    </div>
    <div v-if="activeName==3" class="padding10">
      <el-form :model="queryFormYH" label-width="80px">
        <el-row>
          <el-col :span="8">
            <el-form-item label="姓名/名称">
              <el-input placeholder="姓名/名称" v-model="queryFormYH.qymc" clearable class="width100">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="证件号">
              <el-input placeholder="证件号" v-model="queryFormYH.zjh" clearable class="width100">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8" class="btnColRight">
            <el-form-item>
              <el-button type="primary" @click="handleSearchYH">查询</el-button>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-table :data="tableDataYh.data" border v-Loading="loading" :height="426.8">
        <el-table-column label="序号" type="index" width="50" align="center">
          <template slot-scope="scope">
            {{(pageData.currentPage - 1) * pageData.pageSize + scope.$index + 1}}
          </template>
        </el-table-column>
        <el-table-column v-for="item in tableDataYh.columns" :key="item.index" :prop="item.prop" :label="item.label" align="center">
        </el-table-column>
        <el-table-column label="操作" width="50">
          <template slot-scope="scope">
            <el-button type="text" @click="handleSelect(scope.row)">使用</el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination background layout="prev, pager, next,total" :total="tableDataYh.total"
        @current-change="handleYHCurrentChange"></el-pagination>
    </div>
  </dialogBox>
</template>
<script>
  import { mapGetters } from "vuex";
  import store from '@/store/index.js'
  import { replace } from "@/api/company.js"
  import { getUuid } from "@/utils/operation.js"
  import { getIdCardInfo } from '@/utils/operation.js'
  import { queryQyByPage, queryYhByPage, addQy } from "@/api/xxba.js";
  import { dataYh, dataQy, sendThis } from "./addQlrData";
  export default {
    props: {
      value: { type: Boolean, default: false },
      details: { type: Object, default: {} },
      showButton: { type: Boolean, default: false },
    },
    computed: {
      ...mapGetters(["dictData"]),
    },
    mounted () {
      sendThis(this);
    },
    data () {
      return {
        isShow: false,
        isBz: false,
        activeName: '1',
        loading: false,
        myValue: this.value,
        ruleForm: {
          bsmBdcqz: "",
          bsmQlr: "",
          bsmQlxx: "",
          bz: "",
          cbfbm: "",
          dh: "",
          dlrdhhm: "",
          dlrjgmc: "",
          dlrxm: "",
          dlrzjh: "",
          dlrzjlx: "",
          dz: "",
          dzyj: "",
          fbfbm: "",
          frdh: "",
          frmc: "",
          fzjg: "",
          gj: "",
          gzdw: "",
          hjszss: "",
          qlrlx: "",
          qlrmc: "",
          qlrtz: "",
          sfczr: "",
          sshy: "",
          sxh: 0,
          xb: "",
          yb: "",
          zjh: "",
          zjzl: "",
        },
        rules: {
          qlrlx: [{ required: true, message: "权利人类型", trigger: "change" }],
          qlrmc: [{ required: true, message: "姓名/名称", trigger: "blur" }],
          zjzl: [{ required: true, message: "证件种类", trigger: "change" }],
          zjh: [{ required: true, message: "证件号", trigger: "blur" }],
        },
        pageData: {
          currentPage: 1,
          pageSize: 8
        },
        // 企业
        queryFormQY: {
          qymc: "",
          zjh: ""
        },
        tableDataQy: {
          total: 0,
          columns: dataQy.columns(),
          data: [],
        },
        // 银行
        queryFormYH: {
          qymc: "",
          zjh: ""
        },
        tableDataYh: {
          total: 0,
          columns: dataYh.columns(),
          data: [
          ]
        }
      }
    },
    watch: {
      value (val) {
        this.myValue = _.cloneDeep(val)
        if (val && Object.keys(this.details).length > 0) {
          this.activeName = '1'
        }
        this.isShow = this.showButton
      },
      details: {
        handler: function (val, oldVal) {
          this.ruleForm = val;
        },
        deep: true
      }
    },
    methods: {
      handleZjzl (val) {
        if (['6', '7', '8'].includes(val)) {
          this.isBz = true
        } else {
          this.isBz = false
        }
      },
      /**
       * @description: 信息备案
       * @author: renchao
       */
      handleFilings () {
        this.ruleForm.qymc = this.ruleForm.qlrmc
        this.ruleForm.dwdz = this.ruleForm.dz
        addQy(this.ruleForm).then(res => {
          if (res.code == 200) {
            this.$message.success('备案成功')
          } else {
            this.$message.error(res.message);
          }
        })
      },
      /**
       * @description: handleClick
       * @author: renchao
       */
      handleClick (event, tab) {
        if (this.activeName != 1) {
          this.isShow = false
        } else {
          this.isShow = true
        }
        this.pageData.currentPage = 1
        if (this.activeName == 2) {
          this.handleSearchQY()
        } else {
          this.handleSearchYH()
        }
      },
      /**
       * @description:企业查询
       * @param {*} val
       * @param {*} code
       * @author: renchao
       */
      dicStatus (val, code) {
        let data = store.getters.dictData[code],
          name = '暂无'
        if (data) {
          data.map((item) => {
            if (item.dcode == val) {
              name = item.dname
            }
          })
          return name
        }
      },
      /**
       * @description: 企业信息搜索
       * @author: renchao
       */
      handleSearchQY () {
        let data = { ...this.queryFormQY, ...this.pageData }
        this.tableDataQy.data = []
        queryQyByPage(data).then((res) => {
          if (res.code === 200) {
            let { total, records } = res.result;
            this.tableDataQy.total = total;
            this.tableDataQy.data = records;
            this.tableDataQy.data.forEach(item => {
              item.zjzlMc = this.dicStatus(item.zjzl, 'A30')
              item.qlrmc = item.qymc
              item.dz = item.dwdz
            })
          }
        })
      },
      /**
       * @description: handleQYCurrentChange
       * @param {*} val
       * @author: renchao
       */
      handleQYCurrentChange (val) {
        this.pageData.currentPage = val
        this.handleSearchQY()
      },
      /**
       * @description: handlesQYSelect
       * @param {*} val
       * @author: renchao
       */
      handleSelect (val) {
        let that = this
        let bsmSldy = window.currentSelect.bsmSldy ? window.currentSelect.bsmSldy : ''
        this.$confirm('是否同步材料信息?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          distinguishCancelAndClose: true,//区分取消与关闭
        }).then(() => {
          replace(val.bsmCompany, this.$route.query.bsmSlsq, bsmSldy).then(res => {
            that.$emit("updateDetail", _.cloneDeep({ ...val, qlrlx: '2', id: getUuid(16) }));
            that.$emit("input", false);
            if (res.code == 200) {
              that.$message({
                type: 'success',
                message: '同步成功!'
              })
            } else {
              this.$message.error(res.message);
            }
          })
        }).catch(action => {
          if (action == 'cancel') {
            that.$emit("updateDetail", _.cloneDeep({ ...val, sqrlx: '2' }));
            that.$emit("input", false);
          }
        })
      },
      /**
       * @description: 银行信息搜索
       * @author: renchao
       */
      handleSearchYH () {
        let data = { ...this.queryFormYH, ...this.pageData }
        this.tableDataYh.data = []
        queryYhByPage(data).then((res) => {
          if (res.code === 200) {
            let { total, records } = res.result;
            this.tableDataYh.total = total;
            this.tableDataYh.data = records;
            this.tableDataYh.data.forEach(item => {
              item.zjzlMc = this.dicStatus(item.zjzl, 'A30')
              item.qlrmc = item.qymc
              item.dz = item.dwdz
            })
          }
        })
      },
      /**
       * @description: handleYHCurrentChange
       * @param {*} val
       * @author: renchao
       */
      handleYHCurrentChange (val) {
        this.pageData.currentPage = val
        this.handleSearchQY()
      },
      /**
       * @description: 身份证打卡器
       * @author: renchao
       */
      readClick () {
        getIdCardInfo().then(res => {
          if (res.data.code == 0) {
            let data = res.data.IDCardInfo
            this.ruleForm.qlrmc = data.name
            this.ruleForm.zjzl = '1'
            this.ruleForm.zjh = data.cardID
            this.ruleForm.xb = data.sexCode
            this.ruleForm.dz = data.address
            this.ruleForm.fzjg = data.issueOrgan
            this.$message({
              message: '读取成功!',
              type: 'success'
            })
          } else {
            this.$message({
              message: res.data.message,
              type: 'warning'
            })
          }
        })
      },
      /**
       * @description: closeDialog
       * @author: renchao
       */
      closeDialog () {
        this.$emit("input", false);
        this.$refs["ruleForm"].resetFields();
      },
      /**
       * @description: submitForm
       * @author: renchao
       */
      submitForm () {
        this.$refs.ruleForm.validate((valid) => {
          if (valid) {
            this.$emit("input", false);
            this.$emit("updateDetail", _.cloneDeep(this.ruleForm));
          } else {
            return false;
          }
        });
      },
    },
  };
</script>
<style scoped lang="scss">
  @import "~@/styles/dialogBoxheader.scss";
  .submit-button {
    text-align: center;
    height: 52px;
    padding-top: 10px;
    background-color: #fff;
  }
  .padding10 {
    padding-bottom: 10px;
  }
</style>