Blame view

src/views/workflow/workFrame.vue 6.1 KB
1
<!--
2
 * @Description:
3
 * @Autor: renchao
4
 * @LastEditTime: 2023-05-24 15:31:00
5
-->
任超 committed
6 7 8 9 10 11
<template>
  <div class="container">
    <!-- 顶部内容框 -->
    <div class="topButton">
      <!-- 左侧业务功能按钮 -->
      <ul>
12
        <li @click="operation(item)" v-for="(item, index) in leftButtonList" :key="index">
任超 committed
13 14 15 16 17 18
          <svg-icon class="icon" :icon-class="item.icon" />
          <span class="iconName">{{ item.name }}</span>
        </li>
      </ul>
      <!-- 右侧流程按钮 -->
      <ul>
19
        <li @click="operation(item)" v-for="(item, index) in rightButtonList" :key="index">
任超 committed
20 21 22 23
          <svg-icon class="icon" :icon-class="item.icon" />
          <span class="iconName">{{ item.name }}</span>
        </li>
      </ul>
24
      <NoticeBar class="NoticeBar" :noticeList="noticeList" v-if="noticeList.length > 0" />
任超 committed
25 26 27
    </div>
    <!-- 内容框架 -->
    <div class="containerFrame">
28
      <!-- 左侧菜单栏 区分业务-->
29
      <segmentMenu v-if="['A0320099','A0330099' ].includes(slsq.djqxbm)" @getCurrentSelectProps="getCurrentSelectProps" />
30
      <ordinaryMenu v-else @getCurrentSelectProps="getCurrentSelectProps" />
任超 committed
31 32 33 34 35 36 37 38
      <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">
39
            <el-tab-pane :label="item.name" :name="item.value" v-for="item in tabList" :key="item.value">
任超 committed
40 41
            </el-tab-pane>
          </el-tabs>
42
          <component :key="fresh" :is="componentTag" v-bind="currentSelectProps" />
任超 committed
43 44 45
        </div>
      </div>
    </div>
蔡俊立 committed
46
    <!-- 打印模板需要此模块 -->
47 48
    <object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" v-show="false">
      <embed id="LODOP_EM" type="application/x-print-lodop" width="820" height="450" pluginspage="install_lodop32.exe" />
49
    </object>
50 51 52
    <el-upload class="fileUpdate" action="" :show-file-list="false" multiple :auto-upload="false"
      :on-change="handleChange" :before-upload="beforeUpload">
      <el-button id="cldr" icon="el-icon-upload" type="primary" v-show="false">上传</el-button>
53
    </el-upload>
任超 committed
54 55
  </div>
</template>
56
<style scoped lang="scss">
57 58
  @import "~@/styles/mixin.scss";
  @import "./workFrame.scss";
任超 committed
59 60
</style>
<script>
61 62 63 64 65 66 67 68 69 70 71 72
  import WorkFlow from "./mixin/index"
  import publicFlow from "./mixin/public.js"
  import { getStepFormInfo } from "@/api/fqsq.js"
  import { getForm } from "./flowform"
  import NoticeBar from "@/components/NoticeBar/index"
  import { unClaimTask } from "@/api/ywbl.js"
  import ProcessViewer from "./components/processViewer.vue"
  // 引入左侧菜单
  import ordinaryMenu from "./components/leftmenu/ordinaryMenu.vue"
  // 引入左侧菜单
  import segmentMenu from "./components/leftmenu/segmentMenu.vue"
  import selectBdc from "@/views/ywbl/ywsq/selectBdc.vue"
73 74 75 76 77
  export default {
    components: {
      selectBdc,
      NoticeBar,
      ProcessViewer,
78 79
      ordinaryMenu,
      segmentMenu
任超 committed
80
    },
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
    mixins: [WorkFlow, publicFlow],
    data () {
      return {
        isDialog: false,
        //受理申请标识码
        bsmSlsq: this.$route.query.bsmSlsq,
        //当前流程所在环节
        bestepid: this.$route.query.bestepid,
        //设置那个表单选中
        tabName: "",
        //设置那个表单选择
        currentSelectTab: {},
        //表单集合
        tabList: [],
        //选择加载哪一个组件
        componentTag: "",
        //设置表单传递数据
        currentSelectProps: {},
        //材料分屏表单
        clxxForm: "",
        //材料信息选择卡索引
        clxxIndex: "",
        //材料信息选项卡对象
        clxxTab: {},
        //页面监听时间
106 107
        _beforeUnload_time: ""
      }
任超 committed
108
    },
109
    mounted () {
110
      this.$store.dispatch('user/refreshPage', false);
111 112 113
      //添加页面监听事件
      window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
      window.addEventListener("unload", (e) => this.unloadHandler(e));
任超 committed
114
    },
115 116 117 118 119
    destroyed () {
      window.removeEventListener("beforeunload", (e) =>
        this.beforeunloadHandler(e)
      );
      window.removeEventListener("unload", (e) => this.unloadHandler(e));
任超 committed
120
    },
121
    methods: {
122 123 124
      getCurrentSelectProps (val) {
        this.currentSelectProps = val
      },
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
      beforeunloadHandler () {
        this._beforeUnload_time = new Date().getTime();
      },
      unloadHandler (e) {
        this._gap_time = new Date().getTime() - this._beforeUnload_time;
        //判断是窗口关闭还是刷新
        if (this._gap_time <= 10) {
          //取消认领
          unClaimTask(this.bsmSlsq, this.bestepid);
        }
      },
      //申请单元点击事件
      stepForm (index) {
        getStepFormInfo(this.currentSelectProps).then((res) => {
          if (res.code === 200) {
            this.fresh++;
            //获取单元对应的所有表单信息
            this.tabList = res.result;
            //默认加载第一个表单信息
            this.tabName = res.result[0].value;
            //批量操作无分屏按钮
            if (index != null) {
              //处理分屏材料信息
              let that = this;
              this.tabList.forEach(function (item, index) {
                if (item.value == "clxx") {
                  that.clxxIndex = index;
                  that.clxxForm = getForm(item.value, that.$route.query.sqywbm);
                  that.clxxTab = item;
                }
155
              })
156
            }
蔡俊立 committed
157
          }
158
        })
159 160 161 162 163 164 165 166 167
      },
      openDialog () {
        this.$store.dispatch('user/refreshPage', false)
        let data = JSON.parse(localStorage.getItem('ywbl'))
        let title
        if (data?.sqywmc) {
          title = "申请业务:" + data?.sqywmc
        } else {
          title = "申请业务:" + data?.djywmc
任超 committed
168
        }
169

170 171
        this.$popupDialog(title, "ywbl/ywsq/selectBdc", { 'djywbm': this.$route.query.sqywbm, 'isJump': true, 'sqywInfo': data }, "80%", true)
      }
172 173
    }
  }
任超 committed
174
</script>
175