workFrame.vue 8.61 KB
<!--
 * @Description:
 * @Autor: renchao
 * @LastEditTime: 2023-05-24 15:31:00
-->
<template>
  <div class="container">
    <!-- 顶部内容框 -->
    <div class="topButton">
      <!-- 左侧业务功能按钮 -->
      <ul>
        <li
          @click="operation(item)"
          v-for="(item, index) in leftButtonList"
          :key="index"
        >
          <svg-icon class="icon" :icon-class="item.icon" />
          <span class="iconName">{{ item.name }}</span>
        </li>
      </ul>
      <ul>
        <li
          @click="operation(item)"
          v-for="(item, index) in rightButtonList"
          :key="index"
        >
          <svg-icon class="icon" :icon-class="item.icon" />
          <span class="iconName">{{ item.name }}</span>
        </li>
      </ul>
      <!-- <NoticeBar
        class="NoticeBar"
        :noticeList="noticeList"
        v-if="noticeList.length > 0"
      /> -->
    </div>
    <!-- 内容框架 -->
    <div class="containerFrame">
      <!-- 左侧菜单栏 区分业务-->
      <ordinaryMenu ref="Menu" @getCurrentSelectProps="getCurrentSelectProps" />
      <div class="leftCon">
        <!-- 分屏左侧预览 -->
        <div v-if="splitScreen" class="splitScreen-con">
          <component :is="clxxForm" v-bind="currentSelectProps" :key="fresh" />
        </div>
        <!-- 表单内容区域 -->
        <div class="rightContainer">
          <el-tabs v-model="tabName" :before-leave="beforeLeave">
            <el-tab-pane
              :label="item.name"
              :name="item.value"
              v-for="item in tabList"
              :key="item.value"
            >
            </el-tab-pane>
          </el-tabs>
          <component
            :key="fresh"
            :is="componentTag"
            v-bind="currentSelectProps"
          />
        </div>
      </div>
    </div>
    <!-- 新增补录信息勾选权利类型 -->
    <qllxDailog ref="qllxlist" />
  </div>
</template>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "./workFrame.scss";
</style>
<script>
import WorkFlow from "./mixin/index";
import { getForm } from "./flowform";
import { getStepFormInfo } from "@/api/fqsq.js"
import NoticeBar from "@/components/NoticeBar/index";
import ProcessViewer from "./components/processViewer.vue";
// 引入左侧菜单
import ordinaryMenu from "./components/leftmenu/ordinaryMenu.vue";
import qllxDailog from "./djbBook/components/qllxDailog";
import selectBdc from "@/views/ywbl/ywsq/selectBdc.vue";
import { loadTreeData, getNode } from "./components/leftmenu/djbFrameData.js";
// 登记簿数据信息
import { addRepairRecord } from "@/api/djbbl.js";
// 获取权利类型数组
import { getQllxByBdcdyid } from "@/api/djbbl.js";

import { getBdcqljqtsx } from "@/api/registerBook.js";
export default {
  components: {
    selectBdc,
    NoticeBar,
    ProcessViewer,
    ordinaryMenu,
    qllxDailog,
  },
  mixins: [WorkFlow],
  data() {
    return {
      bsmSlsq: this.$route.query.bsmSlsq,
      //当前流程所在环节
      bestepid: this.$route.query.bestepid,
      //受理申请标识码
      bdcdyid: this.$route.query.bdcdyid,
      //当前流程所在环节
      bdcdyh: this.$route.query.bdcdyh,
      qllx: this.$route.query.qllx,
      //设置那个表单选中
      tabName: "",
      // 弹框显示
      dialogVisible: true,
      //表单集合
      tabList: [],
      //选择加载哪一个组件
      componentTag: "",
      //设置表单传递数据
      currentSelectProps: {},
      // 首次拿到的业务信息
      oneSelectProps:{},
      //材料信息选择卡索引
      clxxIndex: "",
      //材料信息选项卡对象
      clxxTab: {},
      oneget:true,
      //页面监听时间
      _beforeUnload_time: "",
      treedata: {},
      tabdata: [],
      defaultNode: {},
    };
  },
  mounted() {

  },

  methods: {

    stepForm (qllx) {
      this.oneSelectProps.qllx=qllx
        getStepFormInfo(this.oneSelectProps).then((res) => {
           this.tabList=res.result
           this.$nextTick(function () {
         this.tabName =this.tabList[0].value;
         console.log("this.tabName",this.tabName);
      });
        })
      },

    getQllxByBdcdyid() {
      if(this.currentSelectProps.bdcdyid){
           getQllxByBdcdyid({ bdcdyid: this.currentSelectProps.bdcdyid }).then(
        (res) => {
          if (res.code === 200) {
            this.$refs.qllxlist.qllxlistdata = res.result;
            this.$refs.qllxlist.dialogVisible = true;
          }
        }
      );
      }

    },
    // 获取右侧选项卡
    getCurrentSelectProps(val) {
       console.log("vallllllllllllllllll",val);
      if(val.bdcdyid){
        this.oneSelectProps = val;
      }
       console.log("this.oneSelectProps",this.oneSelectProps);

      this.currentSelectProps = val;
      if (this.currentSelectProps.bsmRepair) {
        console.log("进入补录");
        this.tabset(val);
      } else if(!this.oneget){
         console.log("进入登记簿");
        this.getdjblist();

      }
      if(this.oneget){
        console.log("进入补录");
        this.oneget=false
           this.tabset(val);

      }

    },
    // 获取渲染登记簿列表
    getdjblist() {
      getBdcqljqtsx({
        bdcdyid: this.currentSelectProps.bdcdyid,
        bdcdyh: this.currentSelectProps.bdcdyh,
      }).then((res) => {
        if (res.code === 200) {
          this.treedata = loadTreeData(res.result, this.bdcdyh);
          this.$nextTick(function () {
            this.defaultNode = getNode(
              this.currentSelectProps.qllx,
              { linShi: 0, xianShi: 0, liShi: 0 },
              ""
            );
            this.tabName = this.defaultNode.id; //data[0].id为默认选中的节点
          });
        }
      });

      setTimeout(() => {
        let settree = JSON.parse(JSON.stringify(this.treedata));
        this.tabdata = [
          ...settree,
          ...settree[1].children[0].children[0].children,
        ];
        this.tabdata.forEach((item, index, arr) => {
          arr[index].name = item.label;
          arr[index].value = item.id;
        });
        this.tabList = this.tabdata;
      }, 200);
    },
     tabset(val) {
       console.log("valsweqweqrfwqerqweq",val);
      //  console.log("this.currentSelectProps2222222222222",this.currentSelectProps);
        this.stepForm (this.currentSelectProps.qllx)

      // this.tabList = [
      //   {
      //     name: val.qllxmc + "补录信息",
      //     value: "slxx",
      //     sort: 1,
      //   },
      //   {
      //     name: "审批意见",
      //     value: "spyj",
      //     sort: 2,
      //   },
      //   {
      //     name: "材料信息",
      //     value: "clxx",
      //     sort: 2,
      //   },
      // ];


    },
    // tabset(val) {
    //   this.tabName = "";
    //   this.tabList = [
    //     {
    //       name: val.qllxmc + "补录信息",
    //       value: "slxx",
    //       sort: 1,
    //     },
    //     {
    //       name: "审批意见",
    //       value: "spyj",
    //       sort: 2,
    //     },
    //     {
    //       name: "材料信息",
    //       value: "clxx",
    //       sort: 2,
    //     },
    //   ];

    //   this.$nextTick(function () {
    //     this.tabName = "slxx";
    //   });
    // },

    //右侧表单选项卡事件
    beforeLeave(activeName, oldActiveName) {
      console.log("右侧表单选项卡事件",activeName);
      if (activeName && activeName != 0) this.getFromRouter(activeName);
    },
    //切换选项卡内容组件
    getFromRouter(tabname) {
      console.log("tabnameaaaaaaaaaaaaaaaaaaaa",tabname);
      this.componentTag = getForm(tabname);
    },

    // 增加补录记录
    addRepairRecord(row,del) {
      let from = {
        bsmQlxx: "",
        bsmSlsq: this.bsmSlsq,
        bsmSldy: this.currentSelectProps.bsmSldy,
        operate: "C",
        qllx: "",
      };
      if (row) {
        from.bsmQlxx = row.bsmQlxx;
        if(del){
          from.operate = del;
        }else{
        from.operate = row.bsmQlxx ? "U" : "C";
        }
        from.qllx = row.qllx;
      }
      addRepairRecord(from).then((res) => {
        if(res.code=='200'){
           this.$refs.qllxlist.dialogVisible = false;
        this.$nextTick(() => {
          this.$refs.Menu.getleftMenubl(res.result);
           this.$message({
            type: "success",
            message: "补录成功!",
          });
        });
        }else{
           this.$alert(res.message, '提示', {
          confirmButtonText: '确定',
          type: 'warning'
        });
        }
      }).catch((res) => {

     console.log("错i了哦",res);
        });;
    },
  },
};
</script>
<style scoped lang="scss"></style>