<template>
  <!-- 受理信息 -->
  <div class="slxx">
    <el-form
      :model="ruleForm"
      :rules="rules"
      v-Loading="loading"
      ref="ruleForm"
      :label-position="flag ? 'top' : ''"
      :inline="flag"
      label-width="170px"
    >
      <div class="slxx_con" :class="flag ? 'formMarginBot0' : ''">
        <div class="slxx_title title-block">
          申请业务信息
          <div class="triangle"></div>
        </div>
        <el-row :gutter="10">
          <el-col :span="8">
            <el-form-item label="业务号:">
              <el-input disabled v-model="ruleForm.flow.ywh"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="受理人员:">
              <el-input disabled v-model="ruleForm.slsq.slry"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="受理时间:">
              <el-input disabled v-model="ruleForm.slsq.slsj"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="10">
          <el-col :span="8">
            <el-form-item label="权利类型:" prop="qllx">
              <el-input disabled v-model="ruleForm.sldy.qllxmc"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="登记类型:" prop="djlx">
              <el-input disabled v-model="ruleForm.sldy.djlxmc"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="登记情形:" prop="djqx">
              <el-input disabled v-model="ruleForm.slsq.djqxmc"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <div class="slxx_title title-block">
          <el-row>
            <el-col :span="16"> 抵押户信息情况 </el-col>
            <el-col
              :span="4"
              v-if="ruleForm.sldy.djlx == '300' || ruleForm.sldy.djlx == '500'"
            >
              <el-button @click="compare">变化情况对比+</el-button>
            </el-col>
          </el-row>
          <div class="triangle"></div>
        </div>
        <el-row :gutter="10">
          <el-col :span="8">
            <el-form-item label="房屋用途:">
              <el-input disabled v-model="ruleForm.qjh.showfwyt"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="房屋性质:">
              <el-input disabled v-model="ruleForm.qjh.fwxzmc"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="房屋结构:">
              <el-input disabled v-model="ruleForm.qjh.showfwjg"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="10">
          <el-col :span="8">
            <el-form-item label="建筑面积:">
              <div class="flex">
                <el-input
                  maxlength="12"
                  v-model="ruleForm.qjh.jzmj"
                  disabled
                  oninput="value = (value.match(/^\d*(\.?\d{0,2})/g)[0]) || null"
                ></el-input>
                <el-select disabled v-model="mjdw" style="width: 68px">
                  <el-option
                    v-for="item in dictData['A7']"
                    :key="item.dcode"
                    :label="item.dname"
                    :value="item.dcode"
                  >
                  </el-option>
                </el-select>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="套内建筑面积:">
              <div class="flex">
                <el-input
                  maxlength="12"
                  v-model="ruleForm.qjh.tnjzmj"
                  disabled
                  oninput="value = (value.match(/^\d*(\.?\d{0,2})/g)[0]) || null"
                ></el-input>
                <el-select disabled v-model="mjdw" style="width: 68px">
                  <el-option
                    v-for="item in dictData['A7']"
                    :key="item.dcode"
                    :label="item.dname"
                    :value="item.dcode"
                  >
                  </el-option>
                </el-select>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="分摊建筑面积:">
              <div class="flex">
                <el-input
                  maxlength="12"
                  v-model="ruleForm.qjh.ftjzmj"
                  disabled
                  oninput="value = (value.match(/^\d*(\.?\d{0,2})/g)[0]) || null"
                ></el-input>
                <el-select disabled v-model="mjdw" style="width: 68px">
                  <el-option
                    v-for="item in dictData['A7']"
                    :key="item.dcode"
                    :label="item.dname"
                    :value="item.dcode"
                  >
                  </el-option>
                </el-select>
              </div>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="10">
          <el-col :span="8">
            <el-form-item label="不动产单元号:">
              <el-input disabled v-model="ruleForm.qlxx.bdcdyh"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="室号部位:">
              <el-input disabled v-model="ruleForm.qjh.shbw"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="坐落:">
              <el-input disabled v-model="ruleForm.sldy.zl"></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <div class="slxx_title title-block">
          抵押信息
          <div class="triangle"></div>
        </div>

        <el-row :gutter="10">
          <el-col :span="8">
            <el-form-item
              label="原不动产证号:"
              prop="sldy.ybdcqzsh"
              :rules="rules.ybdcqzshrules"
            >
              <el-input disabled v-model="ruleForm.sldy.ybdcqzsh"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="抵押方式:">
              <!-- <el-input disabled v-model="ruleForm.slywxx.djqxmc"></el-input> -->
              <el-radio-group disabled v-model="ruleForm.diyaq.dyfs">
                <el-radio label="1">一般抵押</el-radio>
                <el-radio label="2">最高额抵押</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item
              label="是否禁止或者限制转让约定:"
              label-width="200px"
              prop="diyaq.sfczjzhxz"
            >
              <el-radio-group
                v-model="ruleForm.diyaq.sfczjzhxz"
                :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
              >
                <el-radio label="1">是</el-radio>
                <el-radio label="0">否</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row :gutter="10">
          <el-col :span="8" v-show="ruleForm.diyaq.dyfs == 1">
            <el-form-item label="被担保主债权数额:" prop="diyaq.bdbzzqse">
              <div style="display: flex">
                <el-input
                  v-model="ruleForm.diyaq.bdbzzqse"
                  :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
                ></el-input>
                <el-select
                  style="width: 68px"
                  v-model="ruleForm.diyaq.jedw"
                  :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
                >
                  <el-option
                    v-for="item in dictData['A57']"
                    :key="item.dcode"
                    :label="item.dname"
                    :value="item.dcode"
                  >
                  </el-option>
                </el-select>
              </div>
            </el-form-item>
          </el-col>

          <el-col :span="8" v-show="ruleForm.diyaq.dyfs == 2">
            <el-form-item label="最高债权额:" prop="diyaq.zgzqse">
              <div style="display: flex">
                <el-input
                  v-model="ruleForm.diyaq.zgzqse"
                  :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
                ></el-input>
                <el-select
                  v-model="ruleForm.diyaq.jedw"
                  style="width: 68px"
                  :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
                >
                  <el-option
                    v-for="item in dictData['A57']"
                    :key="item.dcode"
                    :label="item.dname"
                    :value="item.dcode"
                  >
                  </el-option>
                </el-select>
              </div>
            </el-form-item>
          </el-col>

          <el-col :span="8">
            <el-form-item label="债务履行起始时间:" prop="diyaq.zwlxqssj">
              <el-date-picker
                v-model="ruleForm.diyaq.zwlxqssj"
                :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
                type="date"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="债务履行结束时间:" prop="diyaq.zwlxjssj">
              <el-date-picker
                v-model="ruleForm.diyaq.zwlxjssj"
                :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
                type="date"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row>
          <el-col :span="24">
            <el-form-item label="担保范围:">
              <el-input
                v-model="ruleForm.diyaq.dbfw"
                :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24">
            <el-form-item label="最高债权确定事实和数额:">
              <el-input
                v-model="ruleForm.diyaq.zgzqqdss"
                :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col>
            <el-form-item label="附记:" prop="fj">
              <el-input
                type="textarea"
                maxlength="500"
                show-word-limit
                v-model="ruleForm.diyaq.fj"
                :disabled="!viewEdit || ruleForm.sldy.djlx == '400'"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <div class="slxx_title title-block">
          抵押权人信息
          <div class="triangle"></div>
        </div>
        <el-row :gutter="10">
          <el-col :span="12">
            <el-form-item label="共有方式:">
              <el-radio-group
                :disabled="!viewEdit"
                v-model="ruleForm.sldy.gyfs"
              >
                <el-radio label="0">单独所有</el-radio>
                <el-radio label="1">共同共有</el-radio>
                <el-radio label="2">按份所有</el-radio>
                <el-radio label="3">其它共有</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="6" v-show="ruleForm.sldy.gyfs != '0'">
            <el-form-item label="是否分别持证:">
              <el-radio-group
                v-model="ruleForm.sldy.sqfbcz"
                :disabled="!viewEdit"
                @input="updaterow()"
              >
                <el-radio :label="1">是</el-radio>
                <el-radio :label="0">否</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col
            :span="6"
            v-show="ruleForm.sldy.sqfbcz == '0' && ruleForm.sldy.gyfs != '0'"
          >
            <el-form-item label="持证人:">
              <el-select
                v-model="czr"
                placeholder="持证人"
                :disabled="!viewEdit"
              >
                <el-option
                  v-for="(item, index) in czrOptions"
                  :key="index"
                  :label="item.sqrmc"
                  :value="item.id"
                >
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <qlrCommonTable
          style="margin-bottom: 3px"
          :tableData="ruleForm.qlrList"
          @upDateQlrxxList="upDateQlrxxList"
          :disabled="viewEdit"
          :gyfs="ruleForm.sldy.gyfs"
        />
        <div class="slxx_title title-block">
          抵押人信息
          <div class="triangle"></div>
        </div>
        <qlrCommonTable
          :tableData="ruleForm.ywrList"
          @upDateQlrxxList="upDateYwrxxList"
          :disabled="viewEdit"
        />

        <div class="slxx_title title-block">
          登记原因
          <div class="triangle"></div>
        </div>
        <el-row :gutter="10">
          <el-col>
            <el-form-item
              v-if="ruleForm.sldy.djlx == '400'"
              label="注销抵押原因:"
              prop="diyaq.zxdyyy"
            >
              <el-input
                class="textArea"
                type="textarea"
                :disabled="!viewEdit"
                v-model="ruleForm.diyaq.zxdyyy"
              >
              </el-input>
            </el-form-item>
            <el-form-item v-else label="登记原因:" prop="diyaq.djyy">
              <el-input
                class="textArea"
                type="textarea"
                maxlength="500"
                show-word-limit
                :disabled="!viewEdit"
                v-model="ruleForm.diyaq.djyy"
              >
              </el-input>
            </el-form-item>
          </el-col>
        </el-row>
      </div>
      <el-row class="btn" v-if="isSave">
        <el-form-item>
          <el-button type="primary" @click="onSubmitClick()">保存</el-button>
        </el-form-item>
      </el-row>
    </el-form>
  </div>
</template>
<script>
import qlrCommonTable from "@/views/workflow/components/qlrCommonTable";
import { Init, saveData } from "@/api/workflow/zjgcdyFlow.js";
import { mapGetters } from "vuex";
import { formValidate } from "./slxxValidate";
export default {
  mounted() {
    let that = this;
    this.viewEdit = this.$parent.currentSelectTab.ableOperation;
    this.propsParam = this.$attrs;
    var formdata = new FormData();
    this.loading = true;
    formdata.append("bsmSldy", this.propsParam.bsmSldy);
    formdata.append("djlx", this.propsParam.djlx);
    formdata.append("isEdit", this.viewEdit);
    Init(formdata)
      .then((res) => {
        this.loading = false;
        if (res.code === 200 && res.result) {
          this.ruleForm = res.result;
          window.djlx = res.result.sldy.djlx;
          this.czrOptions = this.ruleForm.qlrList;
          this.ruleForm.qlrList.forEach((item) => {
            item.id = item.bsmSqr;
            if (item.sfczr == "1") {
              that.czr = item.bsmSqr;
            }
          });
          that.czrOptions = that.ruleForm.qlrList;
          that.isSave = that.viewEdit;
          that.rules = formValidate(
            that.ruleForm.sldy.djlx,
            that.ruleForm.diyaq.dyfs
          );
        } else {
          that.isSave = false;
          that.$confirm(res.message, "提示", {
            cancelButtonText: "取消",
            showConfirmButton: false,
            type: "warning",
          });
        }
      })
      .catch(() => {
        this.loading = false;
      });
  },
  components: { qlrCommonTable },
  computed: {
    ...mapGetters(["dictData", "flag"]),
  },
  data() {
    return {
      mjdw: "1",
      isSave: true,
      loading: false,
      //表单是否可操作
      viewEdit: true,
      disabled: true,
      czrOptions: [],
      czr: "",
      ruleForm: {},
      //传递参数
      propsParam: {},
      rules: {},
      // 键名转换,方法默认是label和children进行树状渲染
      normalizer(node) {
        //方法
        if (node.children == null || node.children == "null") {
          delete node.children;
        }
        return {
          id: node.dcode,
          label: node.dname,
        };
      },
    };
  },
  methods: {
    /**
     * @description: onSubmitClick
     * @author: renchao
     */
    onSubmitClick() {
      let that = this;
      if (this.ruleForm.qlrList.length == 0) {
        this.$message({
          showClose: true,
          message: "请确认权利人信息",
          type: "error",
        });
        return false;
      }

      if (this.ruleForm.sldy.gyfs == "0") {
        if (this.ruleForm.qlrList.length > 1) {
          this.$message({
            showClose: true,
            message: "共有方式:单独所有,权利人只能是一个人",
            type: "error",
          });
          return false;
        }
        this.ruleForm.qlrList[0].sfczr = "1";
      } else {
        if (this.ruleForm.qlrList.length <= 1) {
          this.$message({
            showClose: true,
            message:
              "共有方式:共同所有,按份所有,其他所有,权利人必须是两个以上",
            type: "error",
          });
          return false;
        }
        //是否分别持证
        if (this.ruleForm.sldy.sqfbcz == "1") {
          //是
          this.ruleForm.qlrList.forEach((item, index) => {
            item.sfczr = "1";
          });
        } else {
          if (that.czr === "") {
            that.$message({
              showClose: true,
              message: "请选择持证人",
              type: "error",
            });
            return false;
          }
          this.ruleForm.qlrList.forEach((item, index) => {
            if (item.id == that.czr) {
              item.sfczr = "1";
            } else {
              item.sfczr = "0";
            }
          });
        }
      }
      this.$refs["ruleForm"].validate((valid) => {
        if (valid) {
          that.$store.dispatch("user/refreshPage", false);
          saveData(that.ruleForm, that.propsParam.djlx).then((res) => {
            if (res.code === 200) {
              that.$message({
                showClose: true,
                message: "保存成功!",
                type: "success",
              });
              that.$store.dispatch("user/refreshPage", true);
            } else {
              that.$message({
                showClose: true,
                message: res.message,
                type: "error",
              });
            }
          });
        } else {
          that.$message({
            showClose: true,
            message: "请输入红框内的相关信息!",
            type: "error",
          });
          return false;
        }
      });
    },
    /**
     * @description: 更新权利人信息
     * @param {*} val
     * @author: renchao
     */
    upDateQlrxxList(val) {
      if (!_.isEqual(val, this.ruleForm.qlrList)) {
        this.ruleForm.qlrList = _.cloneDeep(val);
        this.czrOptions = this.ruleForm.qlrList;
      }
      this.num = 0;
      this.ruleForm.qlrList.forEach((item) => {
        if (item.id == this.czr) {
          this.num++;
        }
      });
      if (this.num == 0) {
        this.czr = "";
      }
    },
    // 是否持证人变化
    /**
     * @description: 是否持证人变化
     * @param {*} val
     * @author: renchao
     */
    updaterow() {
      this.czr = "";
    },
    /**
     * @description: 更新义务人信息
     * @param {*} val
     * @author: renchao
     */
    upDateYwrxxList(val) {
      if (!_.isEqual(val, this.ruleForm.ywrList)) {
        this.ruleForm.ywrList = _.cloneDeep(val);
      }
    },
    /**
     * @description: compare
     * @author: renchao
     */
    compare() {
      this.$popupDialog(
        this.ruleForm.qlxx.qllxmc,
        "registerBook/comparison",
        {
          bsmQlxx: this.ruleForm.qlxx.bsmQlxx,
          dqqllx: "FDCQ2",
        },
        "80%",
        true
      );
    },
  },
};
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
@import "~@/styles/slxx/slxx.scss";
</style>