Blame view

src/views/workflow/workFrame.vue 13.6 KB
1 2 3 4 5 6
<template>
  <div class="container">
    <!-- 顶部内容框 -->
    <div class="topButton">
      <!-- 左侧业务功能按钮 -->
      <ul>
任超 committed
7
        <li @click="operation(index, item)" v-for="(item, index) in leftButtonList" :key="index">
任超 committed
8
          <svg-icon class="icon" :icon-class="item.icon" />
9 10 11 12 13
          <span class="iconName">{{ item.name }}</span>
        </li>
      </ul>
      <!-- 右侧流程按钮 -->
      <ul>
14
        <li @click="operation(index, item)" v-for="(item, index) in rightButtonList" :key="index">
15 16 17 18 19 20
          <svg-icon class="icon" :icon-class="item.icon" />
          <span class="iconName">{{ item.name }}</span>
        </li>
      </ul>
    </div>
    <!-- 内容框架 -->
任超 committed
21
    <div class="containerFrame">
22
      <!-- 左侧菜单栏 -->
任超 committed
23 24
      <div class="leftmenu" :class="{ 'animation-map-drawer': isShowdrawer }">
        <div v-if="this.isShowdrawer">
25 26
          <div class="title">
            申请单元列表({{ unitData.length }})
27
            <el-button type="text" class="batchDel" @click="handleBatchDel" v-if="unitData.length > 1">批量删除</el-button>
任超 committed
28
          </div>
任超 committed
29
          <el-menu :default-active="activeIndex" @select="unitClick">
30
            <el-menu-item v-for="(item, index) in unitData" :index="index.toString()" :key="index">
任超 committed
31 32 33 34
              <div>
                <p>{{ item.bdcdyh }}</p>
                <p class="title-detail">{{ item.zl }}</p>
              </div>
35
              <i class="el-icon-delete" v-if="unitData.length > 1" @click.stop="handleDel(item)"></i>
任超 committed
36 37 38
            </el-menu-item>
          </el-menu>
        </div>
39 40 41 42 43 44 45 46 47 48
        <div class="map-drawer-click map-drawer" v-if="!isShowdrawer" @click="
          () => {
            this.isShowdrawer = !this.isShowdrawer;
          }
        "></div>
        <div class="map-drawer-expand map-drawer" v-else @click="
          () => {
            this.isShowdrawer = !this.isShowdrawer;
          }
        "></div>
49
      </div>
任超 committed
50 51 52 53 54 55 56
      <div class="leftCon">
        <!-- 分屏左侧预览 -->
        <div v-if="splitScreen" class="splitScreen-con">
          <component :is="clxxForm" v-bind="currentSelectProps" :key="fresh" />
        </div>
        <!-- 表单内容区域 -->
        <div class="rightContainer">
57
          <el-tabs v-model="tabName" @tab-click="tabClick">
58
            <el-tab-pane :label="item.name" :name="item.value" v-for="item in tabList" :key="item.value">
59 60
            </el-tab-pane>
          </el-tabs>
61
          <component :key="fresh" :is="componentTag" v-bind="currentSelectProps" />
62 63
        </div>
      </div>
64
    </div>
65
    <fqsqDialog v-model="isDialog" :djywbm="$route.query.sqywbm" :isJump="true" @updateDialog="updateDialog" />
66 67 68 69 70
  </div>
</template>

<style scoped lang='scss'>
@import "~@/styles/mixin.scss";
71
@import "./workFrame.scss";
72 73
</style>
<script>
田浩浩 committed
74 75 76 77 78 79
import {
  leftMenu,
  stepExpandInfo,
  record,
  getNextLinkInfo,
  completeTask,
80 81 82 83 84 85
} from "@/api/fqsq.js";
import { deleteBdcdy } from "@/api/ywbl.js";
import { getWorkFlowImage } from "@/api/jsydsyqFlow.js";
import { getForm } from "./flowform.js";
import fqsqDialog from "@/views/ywbl/ywsq/slectBdc.vue";
import { queueDjywmc } from "@/views/ywbl/ywsq/slectBdcdata.js";
86
export default {
任超 committed
87
  components: {
88
    fqsqDialog,
任超 committed
89
  },
90
  data () {
91
    return {
任超 committed
92
      isDialog: false,
任超 committed
93
      // 流程图
94
      imgSrc: "",
任超 committed
95 96
      // 折叠
      isShowdrawer: true,
任超 committed
97
      // 默认选中
98
      activeIndex: "0",
99
      //受理申请标识码
田浩浩 committed
100
      bsmSlsq: this.$route.query.bsmSlsq,
101
      //当前流程所在环节
田浩浩 committed
102
      bestepid: this.$route.query.bestepid,
103
      //顶部左侧按钮集合
104
      leftButtonList: [],
105
      //顶部右侧按钮集合
106
      rightButtonList: [],
107
      //左侧菜单数据集合
108
      unitData: [],
109 110 111
      //设置那个表单选中
      tabName: "",
      //表单集合
112
      tabList: [],
113
      //选择加载哪一个组件
114
      componentTag: "",
115
      //设置表单组件是否刷选值
田浩浩 committed
116
      fresh: 10,
117
      //设置表单传递数据
118
      currentSelectProps: {},
田浩浩 committed
119 120 121 122 123 124 125 126
      //是否开启材料分屏
      splitScreen: false,
      //材料分屏表单
      clxxForm: "",
      //材料信息选择卡索引
      clxxIndex: "",
      //材料信息选项卡对象
      clxxTab: {},
127
    };
128
  },
129
  mounted () {
130 131
    this.loadBdcdylist();
    this.flowInitParam();
132 133
  },
  methods: {
任超 committed
134
    // 更新列表
135
    updateDialog () {
任超 committed
136 137 138
      this.loadBdcdylist();
    },
    // 删除左侧列表
139
    handleDel (item) {
140 141 142 143
      this.$confirm("确定要删除吗, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
任超 committed
144
      })
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
        .then(() => {
          deleteBdcdy({
            bsmSlsq: this.bsmSlsq,
            bsmSldyList: item.bsmSldy.split(","),
          }).then((res) => {
            if (res.code == 200) {
              this.$message.success("删除成功");
              this.loadBdcdylist();
            } else {
              this.$message.error(res.message);
            }
          });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消删除",
          });
        });
任超 committed
164
    },
165
    handleBatchDel () {
蔡俊立 committed
166
      let that = this;
任超 committed
167
      this.$popup({
168 169
        title: "批量删除",
        width: "50%",
任超 committed
170
        btnShow: true,
171 172
        editItem: "workflow/components/batchDel",
        height: "600px",
蔡俊立 committed
173 174
        formData: {
          bsmSlsq: this.bsmSlsq,
175
          dataList: this.unitData,
蔡俊立 committed
176
        },
177
        cancel: function () { }, //取消事件的回调
178
        confirm: function () {
蔡俊立 committed
179
          that.loadBdcdylist();
蔡俊立 committed
180
        }, //确认事件的回调
181
      });
任超 committed
182
    },
183
    //加载流程初始参数
184
    flowInitParam () {
185 186 187 188 189 190 191
      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;
192 193
          this.tabList = res.result.form;
          //默认选择第一个选项卡内容
194
          this.tabName = res.result.form[0].value;
田浩浩 committed
195 196 197 198 199 200 201 202
          let that = this;
          this.tabList.forEach(function (item, index) {
            if (item.value == "clxx") {
              that.clxxIndex = index;
              that.clxxForm = getForm(item.value);
              that.clxxTab = item;
            }
          });
203
          //默认加载第一个选项卡的组件内容
204
          this.getFromRouter(res.result.form[0].value);
205
        }
206
      });
207
    },
208
    //流程环节操作按钮
任超 committed
209
    operation (index, item) {
210
      //按钮 B0:选择不动产单元 B1:流程图 B2:材料分屏 B3:材料导入 B4:登记簿 B5:证书预览 B6:打印申请书 B7:证书领取 B8:楼盘表 B9:登簿
蔡俊立 committed
211
      //操作按钮 登簿:record  转件:transfer  退回:back  退出:signout
212 213
      let that = this;
      switch (item.value) {
任超 committed
214
        case "B0":
任超 committed
215
          // let type = queueDjywmc(this.$route.query.sqywbm)
216
          this.isDialog = true;
任超 committed
217
          break;
任超 committed
218
        case "B1":
219 220
          getWorkFlowImage(this.bsmSlsq).then((res) => {
            this.imgSrc = URL.createObjectURL(res);
任超 committed
221
            this.$popup({
222
              title: "流程图",
任超 committed
223
              btnShow: true,
224
              height: '250px',
225 226 227 228
              editItem: "workflow/components/flowChart",
              formData: this.imgSrc,
            });
          });
229
          break;
蔡俊立 committed
230
        case "B2": //材料分屏按钮
田浩浩 committed
231
          this.splitScreen = this.splitScreen ? false : true;
232 233
          this.$store.dispatch("app/settScreen", this.splitScreen);
          if (this.splitScreen) {
田浩浩 committed
234 235 236 237 238
            //如果当前选项卡为材料信息内容,递减到上一个选项卡内容
            if (this.tabName == this.clxxTab.value) {
              this.tabName = this.tabList[this.clxxIndex - 1].value;
              this.getFromRouter(this.tabList[this.clxxIndex - 1].value);
            }
239
            //删除材料信息选项卡数据
田浩浩 committed
240
            this.tabList.splice(this.clxxIndex, 1);
241
          } else {
242
            //新增材料信息选项卡数据
243
            this.tabList.splice(this.clxxIndex, 0, this.clxxTab);
244 245
          }
          break;
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
        case "B4":
          this.$popup({
            titleStyle: "left",
            title: "登记簿详情", // 弹窗标题
            editItem: "registerBook/djbFrame", // 弹窗内容
            formData: this.currentSelectProps,
            width: "1220px",
            height: "790px",
            // cancelText: '取消摆烂', // 右边按钮文本
            // confirmText: '确定点击', //左边按钮文本
            cancel: () => {
              console.log("取消回调");
            },
            confirm: () => {
              console.log("确认回调");
            },
          });
          break;
        case "B5":
蔡俊立 committed
265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281
          this.$popup({
            title: "证书预览",
            editItem: "workflow/components/zsyl",
            height: "600px",
            width: "800px",
            formData: {
              bsmSlsq: this.bsmSlsq,
              entryType: '1'
            },
            btnShow: false,
            cancel: () => {
              console.log("取消回调");
            },
            confirm: () => {
              console.log("确认回调");
            },
          })
282
          break;
283 284 285 286 287 288
        case "B7":
          this.$popup({
            title: "证书领取",
            editItem: "workflow/components/zslq",
            height: "500px",
            formData: {},
任超 committed
289
            btnShow: true,
290 291 292 293 294 295 296 297
            cancel: () => {
              console.log("取消回调");
            },
            confirm: () => {
              console.log("确认回调");
            },
          })
          break;
蔡俊立 committed
298
        case "back": //退回按钮
任超 committed
299 300 301 302 303
          this.$popup({
            title: "退回",
            editItem: "workflow/components/th",
            height: "330px",
            width: '30%',
蔡俊立 committed
304 305 306 307
            formData: {
              bsmSlsq: this.bsmSlsq,
              bestepid: this.bestepid
            },
任超 committed
308 309 310 311 312 313 314 315
            btnShow: true,
            cancel: () => {
              console.log("取消回调");
            },
            confirm: () => {
              console.log("确认回调");
            },
          })
316
          break;
317
        case "transfer": //转件按钮
田浩浩 committed
318 319 320 321 322 323 324 325
          getNextLinkInfo({
            bsmSlsq: this.bsmSlsq,
            bestepid: this.bestepid,
          }).then((res) => {
            if (res.code === 200) {
              this.send(res.result);
            }
          });
326
          break;
蔡俊立 committed
327
        case "signout":
328 329
          window.close();
          break;
蔡俊立 committed
330
        case "record":
331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349
          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 || res.code === 2002) {
                that.$alert(res.message);
              }
            });
          });
          break;
      }
    },
350
    //读取申请单元信息
351
    loadBdcdylist () {
352 353 354 355 356 357 358 359
      var formdata = new FormData();
      formdata.append("bsmSlsq", this.bsmSlsq);
      formdata.append("bestepid", this.bestepid);
      leftMenu(formdata).then((res) => {
        if (res.code === 200) {
          this.unitData = res.result;
          this.currentSelectProps = res.result[0];
        }
360
      });
361
    },
362
    //申请单元点击事件
363
    unitClick (index) {
364 365 366 367
      if (this.currentSelectProps.bsmSldy != this.unitData[index].bsmSldy) {
        this.currentSelectProps = this.unitData[index];
        this.fresh += 1;
      }
368
    },
369
    //表单选项卡事件
370
    tabClick (tab, event) {
371 372 373
      this.getFromRouter(tab.name);
    },
    //切换选项卡内容组件
374
    getFromRouter (tabname) {
375
      this.componentTag = getForm(tabname);
376
    },
田浩浩 committed
377
    //发送下一个环节
378
    send (obj) {
田浩浩 committed
379 380 381
      const h = this.$createElement;
      this.$msgbox({
        title: "您确定转出吗?",
任超 committed
382
        message: h("div", { style: "margin: auto" }, [
田浩浩 committed
383 384 385 386 387 388 389 390 391 392 393 394
          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({
任超 committed
395 396
              bsmSlsq: this.bsmSlsq,
              shyj: "this.bestepid",
397
              stepform: JSON.stringify(this.tabList),
任超 committed
398
            }).then((res) => {
田浩浩 committed
399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416
              if (res.code === 200) {
                instance.confirmButtonLoading = false;
                this.$message.success("转件成功");
                setTimeout(() => {
                  window.opener = null;
                  window.open("about:blank", "_self");
                  window.close();
                  this.$emit("input", false);
                }, 1000);
              }
            });
          } else {
            done();
          }
        },
      }).then((action) => {
        this.$message({
          type: "info",
417 418 419 420 421 422
          message: "action: " + action,
        });
      });
    },
  },
};
423
</script>