index.js 11.3 KB
import { getWorkFlowImage } from "@/api/workflow/jsydsyqFlow.js";
import { popupDialog } from "@/utils/popup.js";
import { getPrintTemplateByCode } from "@/api/system";
import { getPrintApplicationInfo } from "@/api/fqsq";
import { getLodop } from "@/utils/LodopFuncs"
import {
  leftMenu,
  stepExpandInfo,
  record,
  completeTask,
  getNextLinkInfo,
} from "@/api/fqsq.js";
export default {
  data () {
    return {
      //是否开启材料分屏
      splitScreen: false,
      //设置表单组件是否刷选值
      fresh: 10,
      //左侧菜单数据集合
      unitData: [],
      //顶部左侧按钮集合
      leftButtonList: [],
      //顶部右侧按钮集合
      rightButtonList: [],
      //批量按钮名称
      batchButtonName: '',
    }
  },
  mounted () {
    this.flowInitParam();
    this.loadBdcdylist();
  },
  methods: {
    //读取申请单元信息
    loadBdcdylist () {
      var formdata = new FormData();
      formdata.append("bsmSlsq", this.bsmSlsq);
      formdata.append("bestepid", this.bestepid);
      leftMenu(formdata).then((res) => {
        if (res.code === 200) {
          if (res.result) {
            this.unitData = res.result;
            this.currentSelectProps = res.result[0];
            this.judgeBatchShow();
            if (this.showBatch) {
              //满足批量查封/批量抵押按钮出现 即先展示批量表单
              this.batchUnitClick();
            } else {
              //默认选择单元列表第一个
              this.unitClick(0);
            }
          }
        }
      });
    },
    //批量按钮判断
    judgeBatchShow () {
      this.showBatch = false;
      if (this.unitData.length > 1) {
        let qllx = this.$route.query.sqywbm.substring(0, 3);
        switch (qllx) {
          case 'B39':
            this.showBatch = true;
            this.batchButtonName = '批量查封';
            break;
          case 'A37':
            this.showBatch = true;
            this.batchButtonName = '批量抵押';
            break;
          default:
            this.batchButtonName = '批量操作';
        }
      }
    },
    //加载流程初始参数
    flowInitParam () {
      var formdata = new FormData();
      formdata.append("bsmSlsq", this.bsmSlsq);
      formdata.append("bestepid", this.bestepid);
      stepExpandInfo(formdata).then((res) => {
        if (res.code === 200) {
          this.leftButtonList = res.result.button;
          this.rightButtonList = res.result.operation;
        }
      });
    },
    //流程环节操作按钮
    operation (item) {
      //按钮 B0:选择不动产单元 B1:流程图 B2:材料分屏 B3:材料导入 B4:登记簿 B5:证书预览 B6:打印申请书 B7:证书领取 B8:楼盘表 B9:登簿
      //操作按钮 登簿:record  转件:transfer  退回:back  退出:signout
      let that = this;
      switch (item.value) {
        case "B0":
          this.isDialog = true;
          break;
        case "B1":
          getWorkFlowImage(this.bsmSlsq, this.$route.query.bestepid).then(res => {
            let { result } = res
            popupDialog("流程图", "workflow/components/processViewer", {
              xml: result.xml,
              finishedInfo: {
                finishedTaskSet: result.finishedTaskSet,
                unfinishedTaskSet: result.unfinishedTaskSet,
                rejectedTaskSet: result.rejectedTaskSet,
                finishedSequenceFlowSet: result.finishedSequenceFlowSet
              },
              allCommentList: result.historyTaskList
            })
          })
          break;
        case "B2": //材料分屏按钮
          this.splitScreen = this.splitScreen ? false : true;
          this.$store.dispatch("app/settScreen", this.splitScreen);
          if (this.splitScreen) {
            //如果当前选项卡为材料信息内容,递减到上一个选项卡内容
            if (this.tabName == this.clxxTab.value) {
              this.tabName = this.tabList[this.clxxIndex - 1].value;
              this.getFromRouter(this.tabList[this.clxxIndex - 1].value);
            }
            //删除材料信息选项卡数据
            this.tabList.splice(this.clxxIndex, 1);
          } else {
            //新增材料信息选项卡数据
            this.tabList.splice(this.clxxIndex, 0, this.clxxTab);
          }
          break;
        case "B4":
          popupDialog("登记簿详情", "registerBook/djbFrame", this.currentSelectProps, '80%')
          break;
        case "B5":
          popupDialog("证书预览", "workflow/components/zsyl", {
            bsmSlsq: this.bsmSlsq,
            entryType: '1'
          }, '1070px')
          break;
        case "B6":
          //根据编号获取对应信息
          getPrintTemplateByCode({tmpno: 'dysqs'}).then(res => {
            if(res.code == 200){
              getPrintApplicationInfo(this.currentSelectProps).then(infoRes => {
                if(infoRes.code == 200){
                  //打开模板设计
                  let LODOP=getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM')); 
                  LODOP.ADD_PRINT_DATA("ProgramData",res.result.tmpcontent); //装载模板
                  //todo 调取后端接口获取数据 循环set
                  for(let key in infoRes.result){
                    LODOP.SET_PRINT_STYLEA(key,"CONTENT",infoRes.result[key]);
                  }
                  LODOP.PREVIEW();  
                }else{
                  this.$message.error(infoRes.message)
                }
              })  
            }else{
              this.$message.error(res.message)
            }
          })
          break;  
        case "B7":
          this.$popup("证书领取", "workflow/components/zslq", {
            formData: { bsmSlsq: this.$route.query.bsmSlsq }
          })
          break;
        case "back": //退回按钮
          popupDialog("退回", "workflow/components/th", {
              bsmSlsq: this.bsmSlsq,
              bestepid: this.bestepid
            }, '800px')
          break;
        case "transfer": //转件按钮
          getNextLinkInfo({
            bsmSlsq: this.bsmSlsq,
            bestepid: this.bestepid,
          }).then((res) => {
            if (res.code === 200) {
              if (res.result) {
                this.sendToNext(res.result);
              } else {
                this.sendToEnd();
              }
            }
          });
          break;
        case "stop": //终止按钮
          popupDialog("终止", "workflow/components/stop", {
            bsmSlsq: this.bsmSlsq,
            bestepid: this.bestepid,
          }, '600px')
          break;
        case "signout":
          window.close();
          //取消认领
          unClaimTask(this.bsmSlsq, this.bestepid)
          break;
        case "B9":
          var formdata = new FormData();
          formdata.append("bsmSlsq", this.bsmSlsq);
          formdata.append("bestepid", this.bestepid);
          this.$confirm("请确认是否登簿", "提示", {
            iconClass: "el-icon-question", //自定义图标样式
            confirmButtonText: "确认", //确认按钮文字更换
            cancelButtonText: "取消", //取消按钮文字更换
            showClose: true, //是否显示右上角关闭按钮
            type: "warning", //提示类型  success/info/warning/error
          }).then(function () {
            record(formdata).then((res) => {
              if (res.code === 200) {
                if (res.result.length === 1) {
                  res.result[0].state ? that.$alert("登簿成功!") : that.$alert(res.result[0].msg);;
                }
                else {
                  that.$alert('<div>' + res.result[0].ywh + ',' + res.result[0].msg + '</div>', '登簿明细', {
                    dangerouslyUseHTMLString: true
                  });
                }
              } else {
                that.$alert(res.message);
              }
            });
          });
          break;
      }
    },
    //发送下一个环节
    sendToNext (obj) {
      const h = this.$createElement;
      this.$msgbox({
        title: "您确定转出吗?1",
        message: h("div", { style: "margin: auto" }, [
          h("span", null, "下个环节名称:"),
          h("i", { style: "color: teal" }, obj.taskName),
          h("div", null, ""),
          h("span", null, "下个环节经办人: "),
          h("i", { style: "color: teal" }, obj.usernames.join(",")),
        ]),
        showCancelButton: true,
        beforeClose: (action, instance, done) => {
          if (action === "confirm") {
            instance.confirmButtonLoading = true;
            instance.confirmButtonText = "执行中...";
            completeTask({
              bsmSlsq: this.bsmSlsq,
              shyj: "this.bestepid",
              stepform: JSON.stringify(this.tabList),
            }).then((res) => {
              if (res.code === 200) {
                instance.confirmButtonLoading = false;
                this.$message.success("转件成功");
                window.opener.location.reload(); //刷新父窗口
                window.close();
                this.$emit("input", false);
              } else {
                instance.confirmButtonLoading = false;
                instance.confirmButtonText = "确定";
                this.$message.error(res.message);
              }
            });
          } else {
            done();
          }
        },
      }).then((action) => {
        this.$message({
          type: "info",
          message: "action: " + action,
        });
      });
    },
    sendToEnd () {
      let that = this
      const h = this.$createElement;
      this.$msgbox({
        title: "您确定转出吗?2",
        message: "此环节为流程结束环节,转出后流程将结束",
        showCancelButton: true,
        beforeClose: (action, instance, done) => {
          console.log(action, 'actionaction');
          if (action === "confirm") {
            instance.confirmButtonLoading = true;
            instance.confirmButtonText = "执行中...";
            completeTask({
              bsmSlsq: this.bsmSlsq,
              shyj: "this.bestepid",
              stepform: JSON.stringify(this.tabList),
            }).then((res) => {
              if (res.code === 200) {
                instance.confirmButtonLoading = false;
                that.$message.success("转件成功");
                localStorage.setItem('transfer', true)
                window.opener.location.reload(); //刷新父窗口
                window.close();
                that.$emit("input", false);
              } else {
                instance.confirmButtonLoading = false;
                instance.confirmButtonText = "确定";
                this.$message.error(res.message);
              }
            })
          } else {
            done();
          }
        },
      }).then((action) => {
        this.$message({
          type: "info",
          message: "action: " + action
        })
      })
    },
    //批量操作
    handleBatchDel () {
      let that = this;
      this.$popup("批量删除", "workflow/components/batchDel", {
        width: "50%",
        btnShow: true,
        height: "600px",
        formData: {
          bsmSlsq: this.bsmSlsq,
          dataList: this.unitData,
        },
        confirm: function () {
          that.loadBdcdylist();
        }
      })
    },   
  }
}