hi-ucs/back/src/mixins/process-module.js

187 lines
6.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { addDynamicRoute } from '@/router'
export default {
data () {
return {
processVisible: false
}
},
methods: {
// 初始化流程配置(集成发起流程和任务处理功能)
initProcessMultiple (callbacks) {
// showType 用于区分流程启动start、任务处理(taskHandle)以及查看详情(null)
// 流程启动显示的是“流程启动”按钮,任务处理显示的是“通过、委托、回退、驳回、终止”按钮,查看详情都不显示
var showType = this.$route.params.processShowType
this.processVisible = true
this.$nextTick(() => {
if (this.$route.params.processDefinitionKey && this.$refs.renProcessMultiple) {
this.$refs.renProcessMultiple.dataForm.processDefinitionKey = this.$route.params.processDefinitionKey
}
if (this.$route.params.taskId && this.$refs.renProcessMultiple) {
this.$refs.renProcessMultiple.dataForm.taskId = this.$route.params.taskId
}
if (this.$route.params.processInstanceId && this.$refs.renProcessMultiple) {
this.$refs.renProcessMultiple.dataForm.processInstanceId = this.$route.params.processInstanceId
}
if (this.$refs.renProcessMultiple) {
this.$refs.renProcessMultiple.dataForm.businessKey = this.$route.params.businessKey
this.$refs.renProcessMultiple.showType = showType
this.$refs.renProcessMultiple.parentObj = this
this.$refs.renProcessMultiple.callbacks = callbacks
}
})
},
// 关闭当前窗口
closeCurrentTab (data) {
var tabName = this.$store.state.contentTabsActiveName
// 在窗口里去掉当前窗口
this.$store.state.contentTabs = this.$store.state.contentTabs.filter(item => item.name !== tabName)
// 如果是唯一一个回首页
if (this.$store.state.contentTabs.length <= 0) {
this.$store.state.sidebarMenuActiveName = this.$store.state.contentTabsActiveName = 'home'
return false
}
// 不是唯一一个,回到之前的最后一个
if (tabName === this.$store.state.contentTabsActiveName) {
this.$router.push({ name: this.$store.state.contentTabs[this.$store.state.contentTabs.length - 1].name })
}
},
// 获取流程定义的表单路由配置信息
getProcDefRouteSet (data, callback, str) {
if (data.resourceName && !data.processDefinitionId) {
switch (str) {
case '待办':
this.$router.push({ name: 'activiti-RoomExamineAdmin' })
break
case '已办':
this.$router.push({ name: 'activiti-RoomExamineAdminDone' })
break
}
} else {
this.$http.get(`/act/process/getProcDefBizRoute/${data.processDefinitionId}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
if (!res.data || !res.data.bizRoute) {
return this.$message.error(this.$t('process.routeError'))
}
var param = {
...data,
...res.data
}
callback(param)
}).catch(() => { })
}
},
getProcDefBizRouteAndProcessInstance (params, callback) {
this.$http.get('/act/process/getProcDefBizRouteAndProcessInstance', {
params: params
}).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
if (!res.data || !res.data.bizRoute) {
return this.$message.error(this.$t('process.routeError'))
}
var param = {
...params,
...res.data
}
callback(param)
}).catch(() => { })
},
// 根据流程定义KEY获取最新的表单路由配置信息
getLatestProcDefRouteSet (procDefKey, callback) {
this.$http.get('/act/process/getLatestProcDefBizRoute', {
params: {
procDefKey: procDefKey
}
}).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
if (!res.data || !res.data.bizRoute) {
return this.$message.error(this.$t('process.routeError'))
}
var param = {
procDefKey: procDefKey,
...res.data
}
callback(param)
}).catch(() => { })
},
// 查看流程图
forwardDetail (data) {
var routeParams = {
routeName: `${this.$route.name}__detail_${data.processInstanceId}`,
menuId: `${this.$route.meta.menuId}`,
title: `${this.$route.meta.title} - ${data.processDefinitionName}`,
path: data.bizRoute,
params: {
params: data,
processInstanceId: data.processInstanceId,
businessKey: data.businessKey
}
}
addDynamicRoute(routeParams, this.$router)
},
// 子级 查看流程图
forwardTaskDetail (data) {
var routeParams = {
routeName: `${this.$route.name}__detail_${data.taskId}`,
menuId: `${this.$route.meta.menuId}`,
title: `${this.$route.meta.title} - ${data.taskName}`,
path: data.bizRoute,
params: {
taskId: data.taskId,
processInstanceId: data.processInstanceId,
businessKey: data.businessKey
}
}
addDynamicRoute(routeParams, this.$router)
},
forwardHandleUrl (data) {
var routeParams = {
routeName: `${this.$route.name}__handle_${data.taskId}`,
menuId: `${this.$route.meta.menuId}`,
title: `${this.$route.meta.title} - ${data.taskName}`,
path: data.bizRoute,
params: {
params: data,
taskId: data.taskId,
processInstanceId: data.processInstanceId,
processShowType: 'taskHandle',
businessKey: data.businessKey
}
}
addDynamicRoute(routeParams, this.$router)
},
downloadFile (path, name) {
const xhr = new XMLHttpRequest()
xhr.open('get', path)
xhr.responseType = 'blob'
xhr.send()
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
// 如果是IE10及以上不支持download属性采用msSaveOrOpenBlob方法但是IE10以下也不支持msSaveOrOpenBlob
if ('msSaveOrOpenBlob' in navigator) {
navigator.msSaveOrOpenBlob(this.response, name)
return
}
// const blob = new Blob([this.response], { type: xhr.getResponseHeader('Content-Type') });
// const url = URL.createObjectURL(blob);
const url = URL.createObjectURL(this.response)
const a = document.createElement('a')
a.style.display = 'none'
a.href = url
a.download = name
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
URL.revokeObjectURL(url)
}
}
}
}
}