Files
tool-tech-front/src/components/DealDrawer/index.vue
hanjian e9c7b39f1b update
2024-09-04 22:22:40 +08:00

108 lines
2.5 KiB
Vue

<template>
<div>
<el-drawer
:wrapperClosable="false"
:visible.sync="visible"
:append-to-body="true"
direction="rtl"
size="80%"
:with-header="false"
:show-close="false"
modal-append-to-body
:destroy-on-close="true"
>
<div style="width:100%; height:100%;overflow: hidden">
<iframe :src="src" width="100%" name="dmsDrawer" height="100%" title="myFrame" style="border: 0"></iframe>
</div>
</el-drawer>
<el-drawer
:visible.sync="drawerShow"
direction="rtl"
size="80%"
:append-to-body="true"
:with-header="false"
:wrapperClosable="false"
:show-close="false"
modal-append-to-body
:destroy-on-close="true"
>
<main-component ref="mainComponent" :code="path" :data="data" @close="handleCodeCloseChange"></main-component>
</el-drawer>
</div>
</template>
<script>
/*
流程处理抽屉组件
*/
import MainComponent from '@/components/mainComponent/index.vue'
export default {
name: 'DealDrawer',
components: { MainComponent },
data() {
return {
workflowMessageCbAdded: false,
visible: false,
drawerShow: false,
data: undefined,
path: '',
src: ''
}
},
activated() {
this.setupMessageListener()
},
created() {
this.setupMessageListener()
},
deactivated() {
this.removeMessageListener()
},
beforeDestroy() {
this.removeMessageListener()
},
methods: {
//建立addEventListener事件
setupMessageListener() {
if (!this.workflowMessageCbAdded) {
window.addEventListener('message', this.handleMsg)
this.workflowMessageCbAdded = true
}
},
//销毁addEventListener事件
removeMessageListener() {
window.removeEventListener('message', this.handleMsg)
this.workflowMessageCbAdded = false
},
handleMsg(event) {
let _this = this
let data = event.data
if (data.type === 'close') {
_this.visible = false
if (data.msgType) {
_this.$modal[data.msgType](data.msg)
}
_this.$emit('closeDrawer')
}else if(data.type === 'pdfPreview'){
this.pdfPreview(data.pdfId)
}
},
pdfPreview(pdfId){
this.path = 'views/components/pdfPreview/index'
this.data = pdfId
this.drawerShow = true
},
init(url) {
let _this = this
_this.visible = true
// iframe加载URL地址
_this.src = url
},
handleCodeCloseChange() {
this.drawerShow = false
},
}
}
</script>