guidePage.vue 12.1 KB
<template>
  <div class="ywsq" id="ywsq">
    <div class="ywsq-left">
      <p v-for="(item, index) in sqywlxList" @click="sqywlxClick(item)" :key="index"
        :class="{ 'active': selectType == item.type }">{{ item.name }}</p>
      <el-collapse disabled v-model="activeNames">
        <el-collapse-item title="业务申请" name="1">
          <ul class="item-list">
            <li v-for="(item, index) in sqywQllxList" :key="index" @click="qllxClick(index)"
              :class="item.check ? 'active' : ''">
              {{ item.nodename }}</li>
          </ul>
        </el-collapse-item>
      </el-collapse>
    </div>
    <div class="ywsq-right">
      <!-- 常办业务 -->
      <div v-show="selectType == 'collect'" class="right-situation el-card">
        <div class="right-title">常办业务列表</div>
        <ul>
          <li :class="item.selected ? 'cactive' : ''" v-for="(item, index) in collectList" :key="index"
            @dblclick="dblclick(collectList, index, item)" @click="selectSqywClick(collectList, index)">
            <p v-if="item.nodetype == 'djqx'">{{ item.djywmc }}<br>{{ item.nodename }}</p>
            <dt v-else>{{ item.djywmc }}</dt>
            <p class="active" @click.stop="handleCollection(item)">
              <i class="el-icon-star-off"></i>
            </p>
          </li>
        </ul>
      </div>
      <!-- 一并申请 -->
      <div v-if="selectType == 'together'" class="right-situation el-card">
        <div class="right-title">一并申请</div>
        <ul>
          <li :class="item.selected ? 'cactive' : ''" v-for="(item, index) in djqxList" :tag="item.selected" :key="index"
            @dblclick="dblclick(djqxList, index, item)" @click="selectSqywClick(djqxList, index)">
            <dt>{{ item.nodename }}</dt>
            <p :class="item.userCollect == 1 ? 'active' : ''" @click.stop="handleCollection(item)">
              <i class="el-icon-star-off"></i>
            </p>
          </li>
        </ul>
      </div>
      <!-- 登记簿补录 -->
      <div v-if="selectType == 'amend'" class="right-situation el-card">
        <div class="right-title">登记簿补录</div>
        <ul>
          <li :class="item.selected ? 'cactive' : ''" v-for="(item, index) in djqxList" :key="index"
            @dblclick="dblclick(djqxList, index, item)" @click="selectSqywClick(djqxList, index)">
            <dt>{{ item.nodename }}</dt>
            <p :class="item.userCollect == 1 ? 'active' : ''" @click.stop="handleCollection(item)">
              <i class="el-icon-star-off"></i>
            </p>
          </li>
        </ul>
      </div>
      <!-- 业务申请 -->
      <template v-if="selectType == 'apply'">
        <div class="right-type el-card box-card is-always-shadow">
          <div class="right-title">登记类型</div>
          <ul class="type-content">
            <li :class="item.selected ? 'cactive' : ''" @dblclick="item.sffqlc == 1 && dblclick(djlxList, index, item)"
              @click="selectSqywClick(djlxList, index)" v-for="(item, index) in djlxList" :key="index">
              <p>
                {{ item.nodename }}
              </p>
              <p v-if="item.sffqlc == 1" :class="item.userCollect == 1 ? 'active' : ''"
                @click.stop="handleCollection(item)">
                <i class="el-icon-star-off"></i>
              </p>
            </li>
          </ul>
        </div>
        <div class="right-situation el-card box-card is-always-shadow">
          <div class="right-title">登记情形</div>
          <ul>
            <li :class="item.selected ? 'cactive' : ''" v-for="(item, index) in djqxList" :key="index"
              @dblclick="dblclick(djqxList, index, item)" @click="selectSqywClick(djqxList, index)">
              <dt>{{ item.nodename }}</dt>
              <p :class="item.userCollect == 1 ? 'active' : ''" @click.stop="handleCollection(item)">
                <i class="el-icon-star-off"></i>
              </p>
            </li>
          </ul>
        </div>
      </template>
      <div class="submit-button">
        <el-button type="primary" :disabled="btnDisabled" @click="dialogClick">选择不动产</el-button>
      </div>
    </div>
  </div>
</template>
<script>
  import { getCollectBiz, getleftMenu, getNextNode, getRepairBiz, getTogetherBiz, addCollectBiz, deleteCollectBiz } from "@/api/businessApply.js"
  export default {
    name: 'ywsq',
    data () {
      return {
        //申请业务类型集合
        sqywlxList: [
          { name: "常办业务", type: "collect" },
          { name: "一并申请", type: "together" },
          { name: "登记簿补录", type: "amend" }
        ],
        //类型默认选择常办业务
        selectType: "collect",
        //堆叠框选中第一个
        activeNames: ['1'],
        //收藏业务集合
        collectList: [],
        //申请权利类型集合
        sqywQllxList: [],
        //登记类型集合
        djlxList: [],
        //申请权利类型集合
        djqxList: [],
        //选中业务的参数
        selectParam: {},
        //选择按钮显示或隐藏
        btnDisabled: true,
      }
    },
    created () {
      this.getDataList();
    },
    methods: {
      /**
       * @description: getDataList
       * @author: renchao
       */
      getDataList () {
        //获取收藏信息集合
        getCollectBiz().then(res => {
          this.collectList = res.result;
          this.collectList.forEach(item => {
            this.$set(item, 'selected', false);
          });
        });
        //获取申请权利信息集合
        getleftMenu().then(res => {
          this.sqywQllxList = res.result;
        })
      },
      /**
       * @description: 申请业务类型菜单事件
       * @param {*} item
       * @author: renchao
       */
      sqywlxClick (item) {
        this.btnDisabled = true;
        this.selectType = item.type;
        this.sqywQllxList.forEach(item => {
          if (item.check) item.check = false;
        });
        if (this.selectType == 'amend') {
          this.getRepairBiz();
        }
        if (this.selectType == 'together') {
          getTogetherBiz().then(res => {
            if (res) {
              this.djqxList = res.result;
            }
          })
        }
      },
      //权利类型菜单事件
      /**
       * @description: 权利类型菜单事件
       * @param {*} index
       * @author: renchao
       */
      qllxClick (index) {
        this.btnDisabled = true;
        this.sqywQllxList.forEach(item => {
          if (item.check) item.check = false;
        })
        this.sqywQllxList[index].check = true;
        this.selectType = "apply";
        this.djlxList = [];
        this.djqxList = [];
        this.getNextNode(this.sqywQllxList[index].bsmSqyw);
      },
      /**
       * @description: 选择申请业务事件
       * @param {*} data
       * @param {*} index
       * @author: renchao
       */
      selectSqywClick (data, index) {
        data.forEach(item => {
          this.$set(item, "selected", false)
        });
        data[index].selected = true;
        if (data[index].sffqlc == "1") {
          this.selectParam = data[index];
          this.btnDisabled = false;
          // this.djqxList = []
        } else {
          this.getNextNode(data[index].bsmSqyw);
          this.btnDisabled = true;
        }
      },
      /**
       * @description: 获取下个节点类型数据
       * @param {*} bsmSqyw
       * @author: renchao
       */
      getNextNode (bsmSqyw) {
        getNextNode(bsmSqyw).then(res => {
          if (res.result) {
            if (res.result.djqx) {
              this.djqxList = res.result.djqx;
              this.djqxList.forEach(item => {
                this.$set(item, 'selected', false);
              });
            }
            if (res.result.djlx) {
              this.djlxList = res.result.djlx;
              this.djlxList.forEach(item => {
                this.$set(item, 'selected', false);
              });
            }
          }
        })
      },

      /**
       * @description: 获取下个节点类型数据
       * @author: renchao
       */
      getRepairBiz () {
        getRepairBiz().then(res => {
          if (res) {
            this.djqxList = res.result;
          }
        })
      },
      /**
       * @description: 双击事件
       * @param {*} data
       * @param {*} index
       * @param {*} item
       * @author: renchao
       */
      dblclick (data, index, item) {
        this.selectSqywClick(data, index);
        this.dialogClick();
      },
      /**
       * @description: 打开弹框内容
       * @author: renchao
       */
      dialogClick () {
        this.openDialog();
      },
      /**
       * @description: 收藏操作
       * @param {*} item
       * @author: renchao
       */
      handleCollection (item) {
        let that = this
        if (item.userCollect == '2') {
          addCollectBiz(item.bsmSqyw).then(res => {
            if (res.code == 200) {
              item.userCollect = '1'
              that.$message({
                message: '收藏成功!',
                type: 'success'
              })
              that.getDataList()
            }
          })
        } else {
          this.$confirm('此操作将取消收藏, 是否继续?', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
          }).then(() => {
            deleteCollectBiz(item.bsmSqyw).then(res => {
              if (res.code == 200) {
                item.userCollect = '2'
                that.$message({
                  message: '取消收藏成功!',
                  type: 'success'
                })
                that.getDataList()
              }
            })
          })
        }
      },
      /**
       * @description: handleSelect
       * @param {*} item
       * @author: renchao
       */
      handleSelect (item) {
        this.busList.forEach(item => {
          item.cselect = false
        })
        item.cselect = !item.cselect
      },
      /**
       * @description: 登记类型
       * @param {*} item
       * @author: renchao
       */
      handleDjlxSelect (item) {
        this.djlxList.forEach(item => {
          item.cselect = false
        })
        this.btnDisabled = true
        item.cselect = true;
        this.djqxObj = item;
        if (item.sffqlc == '1') {
          this.btnDisabled = false
          this.bsmSqyw = item.bsmSqyw
          this.djywbm = item.djywbm;
        } else {
          this.getNextNode(item.bsmSqyw, false)
        }
        this.djqxList = []
      },
      /**
       * @description: handleDjqxItem
       * @param {*} item
       * @author: renchao
       */
      handleDjqxItem (item) {
        this.djlxList.forEach(item => {
          item.cselect = false
        })
        if (item.sffqlc == 1) {
          this.djywbm = item.djywbm
          this.bsmSqyw = item.bsmSqyw
          item.cselect = true
          this.openDialog()
          this.btnDisabled = true
        }
      },
      /**
       * @description: handleSelectItem
       * @param {*} item
       * @param {*} list
       * @author: renchao
       */
      handleSelectItem (item, list) {
        this.handleSelectYw(item, list)
        this.openDialog()
      },
      /**
       * @description: 选择不动产信息
       * @author: renchao
       */
      bthSelectClick () {
        this.openDialog()
      },
      /**
       * @description: openDialog
       * @author: renchao
       */
      openDialog () {
        let title = this.selectParam.djywmc;
        if (this.selectParam.nodetype == "djqx") {
          title += "(" + this.selectParam.nodename + ")";
        }
        this.$popupDialog(title, "ywbl/ywsq/selectBdc", { 'sqywInfo': this.selectParam }, "90%", true)
      },
      /**
       * @description: loadView
       * @param {*} view
       * @author: renchao
       */
      loadView (view) {
        return r => require.ensure([], () => r(require(`./components/${view}/${view}.vue`)))
      }
    }
  }
</script>
<style scoped lang='scss'>
  @import "~@/styles/mixin.scss";
  @import "./ywsq.scss";
  /deep/.el-collapse-item__content {
    padding-bottom: 0;
  }

  /deep/.el-collapse-item__wrap {
    border-bottom: none;
  }
</style>