98e4a74d by xiaomiao

页面整体刷新的问题处理

1 parent 846036a5
......@@ -5,43 +5,55 @@
<div class="invalid-body">您是否确定终止该业务办理?</div>
</div>
<div class="invalid-reson">终止原因:</div>
<el-input v-model="stopMessage" placeholder="请输入终止原因" type="textarea" :rows="4"></el-input>
<el-button style="float:right">取消</el-button>
<el-button type="primary" @click="onSubmit" style="float:right">退件</el-button>
<el-input
v-model="stopMessage"
placeholder="请输入终止原因"
type="textarea"
:rows="4"
></el-input>
<el-button style="float: right">取消</el-button>
<el-button type="primary" @click="onSubmit" style="float: right"
>退件</el-button
>
</div>
</template>
<script>
import { stopTask } from "@/api/fqsq.js"
import { stopTask } from "@/api/fqsq.js";
export default {
props: {
formData: {
type: Object,
default: {}
}
default: {},
},
},
data () {
data() {
return {
stopMessage: ''
}
stopMessage: "",
};
},
methods: {
onSubmit () {
onSubmit() {
stopTask({
bsmSlsq: this.formData.bsmSlsq,
bestepid: this.formData.bestepid,
stopMessage: this.stopMessage
}).then(res => {
this.$message.success('终止成功')
stopMessage: this.stopMessage,
}).then((res) => {
this.$message.success("终止成功");
setTimeout(() => {
window.opener.location.reload(); //刷新父窗口
// window.opener.location.reload(); //刷新父窗口
if (window.opener && window.opener.getBpageList) {
window.opener.getBpageList();
} else {
window.opener.frames[0].getBpageList();
}
window.close();
this.$emit('input', false)
this.$emit("input", false);
}, 1000);
})
});
},
}
}
},
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
......@@ -70,5 +82,4 @@ export default {
display: flex;
justify-content: flex-end;
}
</style>
......
......@@ -4,22 +4,40 @@
<div class="from-clues-header">
<div class="title">请选择要退回到的环节:</div>
<el-form ref="queryForm" label-width="90px">
<ul style="margin-bottom:15px">
<li v-for="(item,index) in dataList" class="listDetail" :key="index" @click="changeSelectItem(item)">
<ul style="margin-bottom: 15px">
<li
v-for="(item, index) in dataList"
class="listDetail"
:key="index"
@click="changeSelectItem(item)"
>
<p class="icon">
<el-radio v-model="selectActivity" :label="item.activityId" @change="changeSelectItem(item)"></el-radio>
<el-radio
v-model="selectActivity"
:label="item.activityId"
@change="changeSelectItem(item)"
></el-radio>
</p>
<p>{{ item.activityName }}</p>
<p v-for="(child, childIndex) in item.userInfos" :key="childIndex">
{{ child.name }}
</p>
<p>{{item.activityName}}</p>
<p v-for="(child,childIndex) in item.userInfos" :key="childIndex">{{child.name}}</p>
</li>
</ul>
<div class="title">退回意见:</div>
<el-form-item>
<el-input class="textArea" type="textarea" v-model="outstepopinion" placeholder="请输入退回意见"></el-input>
<el-input
class="textArea"
type="textarea"
v-model="outstepopinion"
placeholder="请输入退回意见"
></el-input>
</el-form-item>
<el-form-item>
<!-- <el-button style="float:right">取消</el-button> -->
<el-button type="primary" @click="onSubmit" style="float:right">退回</el-button>
<el-button type="primary" @click="onSubmit" style="float: right"
>退回</el-button
>
</el-form-item>
</el-form>
</div>
......@@ -27,58 +45,63 @@
</template>
<script>
import { getTaskBackNode, sendBackTask } from "@/api/fqsq.js"
import { getTaskBackNode, sendBackTask } from "@/api/fqsq.js";
export default {
props: {
formData: {
type: Object,
default: {}
}
default: {},
},
data () {
},
data() {
return {
selectActivity: '',
selectActivity: "",
dataList: [],
outstepopinion: '',
selectItem: {}
}
outstepopinion: "",
selectItem: {},
};
},
created () {
created() {
this.getBackNode();
},
methods: {
onSubmit () {
onSubmit() {
this.selectItem.outstepopinion = this.outstepopinion;
sendBackTask({
bsmSlsq: this.formData.bsmSlsq,
backNodeList: [this.selectItem]
}).then(res => {
this.$message.success('退回成功')
backNodeList: [this.selectItem],
}).then((res) => {
this.$message.success("退回成功");
setTimeout(() => {
window.opener.location.reload(); //刷新父窗口
// window.opener.location.reload(); //刷新父窗口
if (window.opener && window.opener.getBpageList) {
window.opener.getBpageList();
} else {
window.opener.frames[0].getBpageList();
}
window.close();
this.$emit('input', false)
this.$emit("input", false);
}, 1000);
})
});
},
changeSelectItem(item){
this.selectItem = item
this.selectActivity = item.activityId
changeSelectItem(item) {
this.selectItem = item;
this.selectActivity = item.activityId;
},
//获取可回退环节信息
getBackNode () {
getTaskBackNode(this.formData).then(res => {
getBackNode() {
getTaskBackNode(this.formData).then((res) => {
if (res.code == 200) {
this.dataList = res.result
if(res.result){
this.selectActivity = res.result[0].activityId
this.selectItem = res.result[0]
this.dataList = res.result;
if (res.result) {
this.selectActivity = res.result[0].activityId;
this.selectItem = res.result[0];
}
}
})
});
},
}
}
},
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
......@@ -104,7 +127,7 @@ export default {
}
}
.title{
.title {
margin-bottom: 10px;
}
......@@ -113,7 +136,7 @@ export default {
min-height: 90px !important;
}
}
/deep/.el-radio .el-radio__label {
/deep/.el-radio .el-radio__label {
display: none;
}
</style>
......
......@@ -12,7 +12,7 @@ import {
getNextLinkInfo,
} from "@/api/fqsq.js";
export default {
data () {
data() {
return {
//是否开启材料分屏
splitScreen: false,
......@@ -28,13 +28,13 @@ export default {
batchButtonName: '',
}
},
mounted () {
mounted() {
this.flowInitParam();
this.loadBdcdylist();
},
methods: {
//读取申请单元信息
loadBdcdylist () {
loadBdcdylist() {
var formdata = new FormData();
formdata.append("bsmSlsq", this.bsmSlsq);
formdata.append("bestepid", this.bestepid);
......@@ -56,7 +56,7 @@ export default {
});
},
//批量按钮判断
judgeBatchShow () {
judgeBatchShow() {
this.showBatch = false;
if (this.unitData.length > 1) {
let qllx = this.$route.query.sqywbm.substring(0, 3);
......@@ -75,7 +75,7 @@ export default {
}
},
//加载流程初始参数
flowInitParam () {
flowInitParam() {
var formdata = new FormData();
formdata.append("bsmSlsq", this.bsmSlsq);
formdata.append("bestepid", this.bestepid);
......@@ -87,7 +87,7 @@ export default {
});
},
//流程环节操作按钮
operation (item) {
operation(item) {
//按钮 B0:选择不动产单元 B1:流程图 B2:材料分屏 B3:材料导入 B4:登记簿 B5:证书预览 B6:打印申请书 B7:证书领取 B8:楼盘表 B9:登簿
//操作按钮 登簿:record 转件:transfer 退回:back 退出:signout
let that = this;
......@@ -227,7 +227,7 @@ export default {
}
},
//发送下一个环节
sendToNext (obj) {
sendToNext(obj) {
const h = this.$createElement;
this.$msgbox({
title: "您确定转出吗?1",
......@@ -251,7 +251,12 @@ export default {
if (res.code === 200) {
instance.confirmButtonLoading = false;
this.$message.success("转件成功");
window.opener.location.reload(); //刷新父窗口
// window.opener.location.reload(); //刷新父窗口
if (window.opener && window.opener.getBpageList) {
window.opener.getBpageList();
} else {
window.opener.frames[0].getBpageList();
}
window.close();
this.$emit("input", false);
} else {
......@@ -271,7 +276,7 @@ export default {
});
});
},
sendToEnd () {
sendToEnd() {
let that = this
const h = this.$createElement;
this.$msgbox({
......@@ -291,7 +296,12 @@ export default {
instance.confirmButtonLoading = false;
that.$message.success("转件成功");
localStorage.setItem('transfer', true)
window.opener.location.reload(); //刷新父窗口
// window.opener.location.reload(); //刷新父窗口
if (window.opener && window.opener.getBpageList) {
window.opener.getBpageList();
} else {
window.opener.frames[0].getBpageList();
}
window.close();
that.$emit("input", false);
} else {
......@@ -312,7 +322,7 @@ export default {
})
},
//批量操作
handleBatchDel () {
handleBatchDel() {
let that = this;
this.$popup("批量删除", "workflow/components/batchDel", {
width: "50%",
......@@ -327,7 +337,7 @@ export default {
}
})
},
handleChange (file) {
handleChange(file) {
var formdata = new FormData();
formdata.append("file", file.raw);
formdata.append("bsmSldy", this.currentSelectProps.bsmSldy);
......@@ -341,7 +351,7 @@ export default {
})
},
// 上传
beforeUpload (file) {
beforeUpload(file) {
return true;
},
}
......
......@@ -4,14 +4,22 @@
<div class="topButton">
<!-- 左侧业务功能按钮 -->
<ul>
<li @click="operation(item)" v-for="(item, index) in leftButtonList" :key="index">
<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">
<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>
......@@ -22,7 +30,12 @@
<div class="containerFrame">
<!-- 左侧菜单栏 -->
<div class="leftmenu" :class="{ 'animation-map-drawer': isShowdrawer }">
<el-menu :default-active="activeIndex" @select="batchUnitClick" class="title-batch" v-if="showBatch">
<el-menu
:default-active="activeIndex"
@select="batchUnitClick"
class="title-batch"
v-if="showBatch"
>
<el-menu-item index="-1" key="-1" class="menus">
<div>{{ batchButtonName }}</div>
</el-menu-item>
......@@ -30,28 +43,50 @@
<div v-if="this.isShowdrawer">
<div class="title">
申请单元列表({{ unitData.length }})
<el-button type="text" class="batchDel" @click="handleBatchDel" v-if="unitData.length > 1">批量删除</el-button>
<el-button
type="text"
class="batchDel"
@click="handleBatchDel"
v-if="unitData.length > 1"
>批量删除</el-button
>
</div>
<el-menu :default-active="activeIndex" @select="unitClick">
<el-menu-item v-for="(item, index) in unitData" :index="index.toString()" :key="index">
<el-menu-item
v-for="(item, index) in unitData"
:index="index.toString()"
:key="index"
>
<div>
<p>{{ item.bdcdyh }}</p>
<p class="title-detail">{{ item.zl }}</p>
</div>
<i class="el-icon-delete" v-if="unitData.length > 1" @click.stop="handleDel(item)"></i>
<i
class="el-icon-delete"
v-if="unitData.length > 1"
@click.stop="handleDel(item)"
></i>
</el-menu-item>
</el-menu>
</div>
<div class="map-drawer-click map-drawer" v-if="!isShowdrawer" @click="
<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="
"
></div>
<div
class="map-drawer-expand map-drawer"
v-else
@click="
() => {
this.isShowdrawer = !this.isShowdrawer;
}
"></div>
"
></div>
</div>
<div class="leftCon">
<!-- 分屏左侧预览 -->
......@@ -61,45 +96,78 @@
<!-- 表单内容区域 -->
<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
: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" />
<component
:key="fresh"
:is="componentTag"
v-bind="currentSelectProps"
/>
</div>
</div>
</div>
<!-- 打印模板需要此模块 -->
<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" />
<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"
/>
</object>
<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>
<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
>
</el-upload>
<selectBdc v-model="isDialog" :djywbm="$route.query.sqywbm" :isJump="true" @updateDialog="updateDialog" />
<selectBdc
v-model="isDialog"
:djywbm="$route.query.sqywbm"
:isJump="true"
@updateDialog="updateDialog"
/>
</div>
</template>
<style scoped lang='scss'>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "./workFrame.scss";
</style>
<script>
import WorkFlow from "./mixin/index"
import publicFlow from "./mixin/public.js"
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 { getForm } from "./flowform";
import NoticeBar from "@/components/NoticeBar/index";
import { deleteFlow, unClaimTask } from "@/api/ywbl.js";
import ProcessViewer from './components/processViewer.vue'
import ProcessViewer from "./components/processViewer.vue";
import selectBdc from "@/views/ywbl/ywsq/selectBdc.vue";
export default {
components: {
selectBdc,
NoticeBar,
ProcessViewer
ProcessViewer,
},
mixins: [WorkFlow, publicFlow],
data () {
data() {
return {
isDialog: false,
// 折叠
......@@ -131,42 +199,45 @@ export default {
//批量操作
showBatch: false,
//批量操作按钮名称
batchButtonName: '',
}
batchButtonName: "",
};
},
mounted () {
mounted() {
//添加页面监听事件
window.addEventListener('beforeunload', e => this.beforeunloadHandler(e))
window.addEventListener('unload', e => this.unloadHandler(e))
window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
window.addEventListener("unload", (e) => this.unloadHandler(e));
},
destroyed () {
window.removeEventListener('beforeunload', e => this.beforeunloadHandler(e))
window.removeEventListener('unload', e => this.unloadHandler(e))
destroyed() {
window.removeEventListener("beforeunload", (e) =>
this.beforeunloadHandler(e)
);
window.removeEventListener("unload", (e) => this.unloadHandler(e));
},
methods: {
beforeunloadHandler () {
this._beforeUnload_time = new Date().getTime()
beforeunloadHandler() {
this._beforeUnload_time = new Date().getTime();
},
unloadHandler (e) {
this._gap_time = new Date().getTime() - this._beforeUnload_time
unloadHandler(e) {
this._gap_time = new Date().getTime() - this._beforeUnload_time;
//判断是窗口关闭还是刷新
if (this._gap_time <= 10) {
//取消认领
unClaimTask(this.bsmSlsq, this.bestepid)
unClaimTask(this.bsmSlsq, this.bestepid);
}
},
changeLoadIndex () {
this.loadIndex++
changeLoadIndex() {
this.loadIndex++;
},
closeDialog () {
this.myValue = false
closeDialog() {
this.myValue = false;
},
// 更新列表
updateDialog () {
updateDialog() {
this.loadBdcdylist();
},
// 删除左侧列表
handleDel (item) {
handleDel(item) {
this.$confirm("确定要删除吗, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
......@@ -193,7 +264,7 @@ export default {
});
},
//申请单元点击事件
stepForm (index) {
stepForm(index) {
getStepFormInfo(this.currentSelectProps).then((res) => {
if (res.code === 200) {
this.fresh++;
......@@ -211,24 +282,24 @@ export default {
that.clxxForm = getForm(item.value, that.$route.query.sqywbm);
that.clxxTab = item;
}
})
});
}
}
})
});
},
//申请单元点击事件
unitClick (index) {
unitClick(index) {
this.currentSelectProps = this.unitData[index];
this.currentSelectProps.batchOperation = false;
this.activeIndex = index.toString();
this.stepForm(index);
},
//批量按钮点击事件
batchUnitClick () {
batchUnitClick() {
this.currentSelectProps.batchOperation = true;
this.activeIndex = "-1";
this.stepForm();
}
}
}
},
},
};
</script>
......
......@@ -4,14 +4,22 @@
<div class="topButton">
<!-- 左侧业务功能按钮 -->
<ul>
<li @click="operation(item)" v-for="(item, index) in leftButtonList" :key="index">
<li
@click="operation(item)"
v-for="(item, index) in leftButtonList"
:key="index"
>
<svg-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">
<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>
......@@ -25,7 +33,11 @@
<div v-if="this.isShowdrawer">
<div class="title">申请单元列表({{ unitData.length }})</div>
<el-menu :default-active="activeIndex" @select="unitClick">
<el-menu-item v-for="(item, index) in unitData" :index="index.toString()" :key="index">
<el-menu-item
v-for="(item, index) in unitData"
:index="index.toString()"
:key="index"
>
<div>
<p>{{ item.bdcdyh }}</p>
<p class="title-detail">{{ item.zl }}</p>
......@@ -33,16 +45,24 @@
</el-menu-item>
</el-menu>
</div>
<div class="map-drawer-click map-drawer" v-if="!isShowdrawer" @click="
<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="
"
></div>
<div
class="map-drawer-expand map-drawer"
v-else
@click="
() => {
this.isShowdrawer = !this.isShowdrawer;
}
"></div>
"
></div>
</div>
<div class="leftCon">
<!-- 分屏左侧预览 -->
......@@ -52,42 +72,47 @@
<!-- 表单内容区域 -->
<div class="rightContainer">
<el-tabs v-model="tabName" :before-leave="beforeLeave">
<el-tab-pane :label="item.name" :name="item.value" v-for="(item, index) in tabList" :key="index">
<el-tab-pane
:label="item.name"
:name="item.value"
v-for="(item, index) in tabList"
:key="index"
>
</el-tab-pane>
</el-tabs>
<component :key="fresh" :is="componentTag" v-bind="currentSelectProps" />
<component
:key="fresh"
:is="componentTag"
v-bind="currentSelectProps"
/>
</div>
</div>
</div>
</div>
</template>
<style scoped lang='scss'>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "./workFrame.scss";
</style>
<script>
import {
leftMenu,
stepExpandInfo,
getStepFormInfo
} from "@/api/fqsq.js"
import publicFlow from "./mixin/public.js"
import { leftMenu, stepExpandInfo, getStepFormInfo } from "@/api/fqsq.js";
import publicFlow from "./mixin/public.js";
import { popupDialog } from "@/utils/popup.js";
import NoticeBar from '@/components/NoticeBar/index'
import { getWorkFlowImage } from "@/api/workflow/jsydsyqFlow.js"
import NoticeBar from "@/components/NoticeBar/index";
import { getWorkFlowImage } from "@/api/workflow/jsydsyqFlow.js";
export default {
mixins: [publicFlow],
components: {
NoticeBar
NoticeBar,
},
data () {
data() {
return {
// 流程图
imgSrc: '',
imgSrc: "",
// 折叠
isShowdrawer: true,
// 默认选中
activeIndex: '0',
activeIndex: "0",
//受理申请标识码
bsmSlsq: this.$route.query.bsmSlsq,
//当前流程所在环节
......@@ -116,15 +141,16 @@ export default {
clxxIndex: "",
//材料信息选项卡对象
clxxTab: {},
}
};
},
mounted () {
mounted() {
this.loadBdcdylist();
this.flowInitParam();
},
methods: {
//加载流程初始参数
flowInitParam () {
flowInitParam() {
var formdata = new FormData();
formdata.append("bsmSlsq", this.bsmSlsq);
formdata.append("bestepid", this.bestepid);
......@@ -134,34 +160,36 @@ export default {
this.leftButtonList = res.result.button;
this.rightButtonList = res.result.operation;
}
})
});
},
//流程环节操作按钮
operation (item) {
operation(item) {
//按钮 B1:流程图 B2:材料分屏 B3:材料导入 B4:登记簿 B5:证书预览 B6:打印申请书
//操作按钮 登簿:record 转件:transfer 退回:back 退出:signout
switch (item.value) {
case "B1":
getWorkFlowImage(this.bsmSlsq, this.$route.query.bestepid).then(res => {
let { result } = res
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
finishedSequenceFlowSet: result.finishedSequenceFlowSet,
},
allCommentList: result.historyTaskList
})
})
allCommentList: result.historyTaskList,
});
}
);
break;
case "B5":
this.zsylFlag = true;
break;
case "B2": //材料分屏按钮
this.splitScreen = this.splitScreen ? false : true;
this.$store.dispatch('app/settScreen', this.splitScreen)
this.$store.dispatch("app/settScreen", this.splitScreen);
if (this.splitScreen) {
//如果当前选项卡为材料信息内容,递减到上一个选项卡内容
if (this.tabName == this.clxxTab.value) {
......@@ -179,7 +207,7 @@ export default {
}
},
//读取申请单元信息
loadBdcdylist () {
loadBdcdylist() {
var formdata = new FormData();
formdata.append("bsmSlsq", this.bsmSlsq);
formdata.append("bestepid", this.bestepid);
......@@ -189,12 +217,12 @@ export default {
this.currentSelectProps = res.result[0];
this.unitClick(0);
}
})
});
},
//申请单元点击事件
unitClick (index) {
unitClick(index) {
this.currentSelectProps = this.unitData[index];
this.currentSelectProps.type = 'ONLY_READ';
this.currentSelectProps.type = "ONLY_READ";
getStepFormInfo(this.currentSelectProps).then((res) => {
if (res.code === 200) {
this.fresh++;
......@@ -203,8 +231,8 @@ export default {
//默认加载第一个表单信息
this.tabName = res.result[0].value;
}
})
}
}
}
});
},
},
};
</script>
......