4b050f97 by 蔡俊立

添加workFrame只读vue文件

1 parent b8b2eaea
...@@ -33,6 +33,14 @@ export const constantRoutes = [ ...@@ -33,6 +33,14 @@ export const constantRoutes = [
33 name: 'workFrame', 33 name: 'workFrame',
34 hidden: true, 34 hidden: true,
35 meta: { title: '发起申请' } 35 meta: { title: '发起申请' }
36 },
37 // 业务流程只读框架
38 {
39 path: '/workFrameView',
40 component: () => import('@/views/workflow/workFrameView.vue'),
41 name: 'workFrameView',
42 hidden: true,
43 meta: { title: '发起申请' }
36 } 44 }
37 ] 45 ]
38 46
......
1 <template>
2 <div class="container">
3 <!-- 顶部内容框 -->
4 <div class="topButton">
5 <!-- 左侧业务功能按钮 -->
6 <ul>
7 <li @click="operation(index, item)" v-for="(item, index) in leftButtonList" :key="index">
8 <svg-icon :icon-class="item.icon" />
9 <span class="iconName">{{ item.name }}</span>
10 </li>
11 </ul>
12 <!-- 右侧流程按钮 -->
13 <ul>
14 <li @click="operation(index, item)" v-for="(item, index) in rightButtonList" :key="index">
15 <svg-icon class="icon" :icon-class="item.icon" />
16 <span class="iconName">{{ item.name }}</span>
17 </li>
18 </ul>
19 </div>
20 <!-- 内容框架 -->
21 <div class="containerFrame">
22 <!-- 左侧菜单栏 -->
23 <div class="leftmenu" :class="{ 'animation-map-drawer': isShowdrawer }">
24 <div v-if="this.isShowdrawer">
25 <div class="title">申请单元列表({{ unitData.length }})</div>
26 <el-menu :default-active="activeIndex" @select="unitClick">
27 <el-menu-item v-for="(item, index) in unitData" :index="index.toString()" :key="index">
28 <p>{{ item.bdcdyh }}</p>
29 <p class="title-detail">{{ item.zl }}</p>
30 </el-menu-item>
31 </el-menu>
32 </div>
33 <div class="map-drawer-click map-drawer" v-if="!isShowdrawer" @click="
34 () => {
35 this.isShowdrawer = !this.isShowdrawer;
36 }
37 "></div>
38 <div class="map-drawer-expand map-drawer" v-else @click="
39 () => {
40 this.isShowdrawer = !this.isShowdrawer;
41 }
42 "></div>
43 </div>
44 <div class="leftCon">
45 <!-- 分屏左侧预览 -->
46 <div v-if="splitScreen" class="splitScreen-con">
47 <component :is="clxxForm" v-bind="currentSelectProps" :key="fresh" />
48 </div>
49 <!-- 表单内容区域 -->
50 <div class="rightContainer">
51 <el-tabs v-model="tabName" @tab-click="tabClick">
52 <el-tab-pane :label="item.name" :name="item.value" v-for="(item, index) in tabList" :key="index">
53 </el-tab-pane>
54 </el-tabs>
55 <component :key="fresh" :is="componentTag" v-bind="currentSelectProps" />
56 </div>
57 </div>
58 </div>
59 </div>
60 </template>
61
62 <style scoped lang='scss'>
63 @import "~@/styles/mixin.scss";
64 @import "./workFrame.scss";
65 </style>
66
67 <script>
68 import {
69 leftMenu,
70 stepExpandInfo,
71 record,
72 getNextLinkInfo,
73 completeTask,
74 } from "@/api/fqsq.js"
75 import { getWorkFlowImage } from "@/api/jsydsyqFlow.js"
76 import { getForm } from "./flowform.js"
77 export default {
78 data () {
79 return {
80 // 流程图
81 imgSrc: '',
82 // 折叠
83 isShowdrawer: true,
84 // 默认选中
85 activeIndex: '0',
86 //受理申请标识码
87 bsmSlsq: this.$route.query.bsmSlsq,
88 //当前流程所在环节
89 bestepid: this.$route.query.bestepid,
90 //顶部左侧按钮集合
91 leftButtonList: [],
92 //顶部右侧按钮集合
93 rightButtonList: [],
94 //左侧菜单数据集合
95 unitData: [],
96 //设置那个表单选中
97 tabName: "",
98 //表单集合
99 tabList: [],
100 //选择加载哪一个组件
101 componentTag: "",
102 //设置表单组件是否刷选值
103 fresh: 10,
104 //设置表单传递数据
105 currentSelectProps: {},
106 //是否开启材料分屏
107 splitScreen: false,
108 //材料分屏表单
109 clxxForm: "",
110 //材料信息选择卡索引
111 clxxIndex: "",
112 //材料信息选项卡对象
113 clxxTab: {},
114 }
115 },
116 mounted () {
117 this.loadBdcdylist();
118 this.flowInitParam();
119 },
120 methods: {
121 //加载流程初始参数
122 flowInitParam () {
123 var formdata = new FormData();
124 formdata.append("bsmSlsq", this.bsmSlsq);
125 formdata.append("bestepid", this.bestepid);
126 formdata.append("type", "READ_ONLY");
127 stepExpandInfo(formdata).then((res) => {
128 if (res.code === 200) {
129 this.leftButtonList = res.result.button;
130 this.rightButtonList = res.result.operation;
131 this.tabList = res.result.form;
132 //默认选择第一个选项卡内容
133 this.tabName = res.result.form[0].value;
134 let that = this;
135 this.tabList.forEach(function (item, index) {
136 if (item.value == "clxx") {
137 that.clxxIndex = index;
138 that.clxxForm = getForm(item.value);
139 that.clxxTab = item;
140 }
141 });
142 //默认加载第一个选项卡的组件内容
143 this.getFromRouter(res.result.form[0].value);
144 }
145 })
146 },
147 //流程环节操作按钮
148 operation (index, item) {
149 //按钮 B1:流程图 B2:材料分屏 B3:材料导入 B4:登记簿 B5:证书预览 B6:打印申请书
150 //操作按钮 登簿:record 转件:transfer 退回:back 退出:signout
151 let that = this;
152 switch (item.value) {
153 case "B1":
154 getWorkFlowImage(this.bsmSlsq).then(res => {
155 this.imgSrc = URL.createObjectURL(res)
156 this.$popup({
157 title: '流程图',
158 editItem: 'workflow/components/flowChart',
159 formData: this.imgSrc
160 })
161 })
162 break;
163 case "B5":
164 this.zsylFlag = true;
165 break;
166 case "B2": //材料分屏按钮
167 this.splitScreen = this.splitScreen ? false : true;
168 this.$store.dispatch('app/settScreen', this.splitScreen)
169 if (this.splitScreen) {
170 //如果当前选项卡为材料信息内容,递减到上一个选项卡内容
171 if (this.tabName == this.clxxTab.value) {
172 this.tabName = this.tabList[this.clxxIndex - 1].value;
173 this.getFromRouter(this.tabList[this.clxxIndex - 1].value);
174 }
175 this.tabList.splice(this.clxxIndex, 1);
176 } else {
177 this.tabList.splice(this.clxxIndex, 1, this.clxxTab);
178 }
179 break;
180 case "signout":
181 window.close();
182 break;
183 }
184 },
185 //读取申请单元信息
186 loadBdcdylist () {
187 var formdata = new FormData();
188 formdata.append("bsmSlsq", this.bsmSlsq);
189 formdata.append("bestepid", this.bestepid);
190 leftMenu(formdata).then((res) => {
191 if (res.code === 200) {
192 this.unitData = res.result;
193 this.currentSelectProps = res.result[0];
194 }
195 })
196 },
197 //申请单元点击事件
198 unitClick (index) {
199 if (this.currentSelectProps.bsmSldy != this.unitData[index].bsmSldy) {
200 this.currentSelectProps = this.unitData[index];
201 this.fresh += 1;
202 }
203 },
204 //表单选项卡事件
205 tabClick (tab, event) {
206 this.getFromRouter(tab.name);
207 },
208 //切换选项卡内容组件
209 getFromRouter (tabname) {
210 this.componentTag = getForm(tabname);
211 },
212 }
213 }
214 </script>
...\ No newline at end of file ...\ No newline at end of file
...@@ -131,7 +131,7 @@ export default { ...@@ -131,7 +131,7 @@ export default {
131 this.fetchData() 131 this.fetchData()
132 }, 132 },
133 ywhClick (item) { 133 ywhClick (item) {
134 const { href } = this.$router.resolve('/workFrame?bsmSlsq=' + item.bsmSlsq + '&bestepid=' + item.bestepid + '&bsmBusiness=' + '&viewtype=1'); 134 const { href } = this.$router.resolve('/workFrameView?bsmSlsq=' + item.bsmSlsq + '&bestepid=' + item.bestepid + '&bsmBusiness=' + '&viewtype=1');
135 window.open(href, '_blank'); 135 window.open(href, '_blank');
136 } 136 }
137 } 137 }
......
...@@ -116,7 +116,7 @@ export default { ...@@ -116,7 +116,7 @@ export default {
116 console.log(name, sort); 116 console.log(name, sort);
117 }, 117 },
118 openDialog (item) { 118 openDialog (item) {
119 const { href } = this.$router.resolve('/fqsq?bsmSlsq=' + item.bsmSlsq + '&bestepid=' + item.bestepid + '&bsmBusiness=' + item.bsmBusiness + '&viewtype=3') 119 const { href } = this.$router.resolve('/workFrameView?bsmSlsq=' + item.bsmSlsq + '&bestepid=' + item.bestepid + '&bsmBusiness=' + item.bsmBusiness + '&viewtype=3')
120 window.open(href, '_blank'); 120 window.open(href, '_blank');
121 } 121 }
122 } 122 }
......