dengjie : 系统内置监听器接口已对

This commit is contained in:
邓洁 2023-03-28 19:32:43 +08:00
parent 0582310934
commit 940b86ac24
6 changed files with 341 additions and 10 deletions

View File

@ -0,0 +1,45 @@
import request from '@/api/request.js'
/**
* 系统内置监听器
* @param param
* @returns {*}
*/
// 获取系统内置监听器列表
export function getListenerList(param) {
return request({
url: "/flowable/listener",
method: "get",
data: param
})
}
// 获取系统内置监听器详细信息
export function getListenerById(id) {
return request({
url: "/flowable/listener/"+id,
method: "get"
})
}
// 新增系统内置监听器
export function addListener(param) {
return request({
url: "/flowable/listener",
method: "post",
data: param
})
}
// 修改系统内置监听器
export function updateListener(param) {
return request({
url: '/flowable/listener',
method: "put",
data: param
})
}
//删除系统内置监听器
export function deleteListener(idList) {
return request({
url: "/flowable/listener/" + idList,
method: "delete",
})
}

View File

@ -38,6 +38,12 @@ const router = new Router({
name: "design",
component: () => import("@/views/admin/FormProcessDesign.vue"),
meta: {title: '表单流程设计', viewport: viewport}
},
{
path: "/admin/listener",
name: "listener",
component: () => import("@/views/admin/Listener.vue"),
meta: {title: '表单流程设计', viewport: viewport}
/* children: [
{
path: "baseSetting",

View File

@ -5,9 +5,9 @@
<div class="work-panel">
<div class="user">
<el-button type="primary" round size="small" @click="showRolePicker()" icon="el-icon-user">选择本次登录者</el-button>
<div v-if="token !== '' && token !== null">
<el-avatar size="large" :src="loginUser.avatar"></el-avatar>
<span>{{ loginUser.name }}</span>
<div v-if="token !== '' && token !== null" class="chooseUser">
<el-avatar size="large" :src="loginUser.avatar" ></el-avatar>
<span style="margin-left: 5px">{{ loginUser.name }}</span>
</div>
</div>
<div class="panel">
@ -116,10 +116,15 @@ h4 {
position: absolute;
left: 20%;
margin-top: 20px;
div {
display: flex;
align-items: center;
button{
height: 30px;
}
.chooseUser {
margin-left: 20px;
display: inline-block;
display: flex;
align-items: center;
}
}

View File

@ -5,6 +5,7 @@
@click="$router.push('/')"></el-button>
<span>流程面板</span>
<div>
<el-button type="primary" size="mini" @click="$router.push('/admin/listener')">跳转下一页</el-button>
<el-button type="primary" icon="el-icon-plus" size="mini" @click="newProcess">新建表单</el-button>
<el-button icon="el-icon-plus" @click="addGroup" size="mini">新建分组</el-button>
</div>
@ -83,7 +84,7 @@
</el-button>
</div>
<el-dialog title="历史版本" :visible.sync="openHhistory"
<el-dialog title="历史版本" :visible.sync="openHistory"
width="1000px"
:close-on-click-modal="true">
<el-table
@ -141,6 +142,7 @@
</el-table-column>
</el-table>
</el-dialog>
</div>
</draggable>
</div>
@ -162,7 +164,7 @@ export default {
data() {
return {
loading: true,
openHhistory: false,
openHistory: false,
moveSelect: "",
visible: false,
groupsSort: false,
@ -273,7 +275,7 @@ export default {
}).catch(err => {
this.$message.error(err.response.data);
});
this.openHhistory = true;
this.openHistory = true;
},
//,
// suspendOrActivateHistoryView(row) {

View File

@ -0,0 +1,273 @@
<template>
<div style="padding: 50px">
<el-button type="primary" size="small" @click="addListenShow=true">新增</el-button>
<!-- <el-dialog title="系统内置监听器列表" :visible.sync="openListener"-->
<!-- width="1000px"-->
<!-- :close-on-click-modal="true">-->
<el-table
:header-cell-style="{background:'#f5f6f6'}"
:data="listenerList"
border
v-loading="loading" style="display: table-cell;">
<el-table-column
prop="listenerName"
label="监听器名称"
width="200">
</el-table-column>
<el-table-column
prop="listenerType"
label="监听器类型"
width="200">
<template slot-scope="scope">
<span v-if="scope.row.listenerType ==='1'">任务监听</span>
<span v-else>执行监听</span>
</template>
</el-table-column>
<el-table-column
prop="listenerValue"
label="类路径"
width="200"/>
<el-table-column
prop="listenerValueType"
label="监听器数据类型"
width="200">
<template slot-scope="scope">
<span v-if="scope.row.listenerValueType ==='0'">Java类</span>
<span v-if="scope.row.listenerValueType ==='1'">表达式</span>
<span v-if="scope.row.listenerValueType ==='2'">代理表达式</span>
</template>
</el-table-column>
<el-table-column
prop="eventType"
label="事件类型"
width="200">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.eventType" :key="index">
{{item}}
</div>
</template>
</el-table-column>
<el-table-column
fixed="right"
label="操作"
width="140"
>
<template slot-scope="scope">
<el-button type="text" icon="el-icon-delete" size="mini" style="color: red" @click="deleteListener(scope.row)">
删除
</el-button>
<el-button type="text" icon="el-icon-edit-outline" size="mini" @click="openUpdateListener(scope.row)">
修改
</el-button>
</template>
</el-table-column>
</el-table>
<!-- </el-dialog>-->
<!-- 新增监听器-->
<el-dialog custom-class="custom-dialog" class="border" width="600px" title="新增监听器"
append-to-body :close-on-click-modal="true"
:destroy-on-close="true" :visible.sync="addListenShow">
<el-form ref="listenerForm" :model="queryForms" label-position="left" label-width="100px" :rules="listenerRules">
<el-form-item label="监听器名称" prop="listenerName" >
<el-input placeholder="请设置监听器名称" size="small" v-model="queryForms.listenerName"/>
</el-form-item>
<el-form-item label="监听器类型" prop="eventType" >
<el-select placeholder="请选择监听器类型" @change="queryForms.eventType = []"
v-model="queryForms.listenerType">
<el-option :value="'1'" label="任务监听"/>
<el-option :value="'2'" label="执行监听"/>
</el-select>
</el-form-item>
<el-form-item label="事件类型" prop="listenerType" >
<el-select multiple placeholder="请选择事件类型" v-model="queryForms.eventType">
<el-option value="create" label="create"/>
<el-option v-if="queryForms.listenerType === '2'" value="end" label="end"/>
<el-option v-if="queryForms.listenerType === '2'" value="take" label="take"/>
<el-option v-if="queryForms.listenerType === '1'" value="assignment" label="assignment"/>
<el-option v-if="queryForms.listenerType === '1'" value="complete" label="complete"/>
</el-select>
</el-form-item>
<el-form-item label="值类型" prop="listenerValueType" >
<el-radio-group size="small" style="margin: 0 5px;" @change="listenerValueTypeChange"
v-model="queryForms.listenerValueType">
<el-radio-button :label="'0'">Java类</el-radio-button>
<el-radio-button :label="'1'">表达式</el-radio-button>
<el-radio-button :label="'2'">代理表达式</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="值" prop="listenerValue" >
<el-input :placeholder="listenerValuePlaceholder" size="small" v-model="queryForms.listenerValue"/>
</el-form-item>
</el-form>
<div slot="footer">
<el-button size="mini" @click="addListenShow = false">取消</el-button>
<el-button size="mini" type="primary" @click="addListener()">确认</el-button>
</div>
</el-dialog>
<!-- 修改监听器 -->
<el-dialog custom-class="custom-dialog" class="border" width="600px" title="修改监听器"
append-to-body :close-on-click-modal="true"
:destroy-on-close="true" :visible.sync="editListenerShow">
<el-form ref="listenerForm" :model="selectListen" label-position="left" label-width="100px" :rules="listenerRules">
<el-form-item label="监听器名称" prop="listenerName">
<el-input placeholder="请设置监听器名称" size="small" v-model="selectListen.listenerName"/>
</el-form-item>
<el-form-item label="监听器类型" prop="eventType" >
<el-select placeholder="请选择监听器类型" @change="selectListen.eventType = []"
v-model="selectListen.listenerType">
<el-option :value="'1'" label="任务监听"/>
<el-option :value="'2'" label="执行监听"/>
</el-select>
</el-form-item>
<el-form-item label="事件类型" prop="listenerType" >
<el-select multiple placeholder="请选择事件类型" v-model="selectListen.eventType">
<el-option value="create" label="create"/>
<el-option v-if="selectListen.listenerType === '2'" value="end" label="end"/>
<el-option v-if="selectListen.listenerType === '2'" value="take" label="take"/>
<el-option v-if="selectListen.listenerType === '1'" value="assignment" label="assignment"/>
<el-option v-if="selectListen.listenerType === '1'" value="complete" label="complete"/>
</el-select>
</el-form-item>
<el-form-item label="值类型" prop="listenerValueType" >
<el-radio-group size="small" style="margin: 0 5px;" @change="listenerValueTypeChange"
v-model="selectListen.listenerValueType">
<el-radio-button :label="'0'">Java类</el-radio-button>
<el-radio-button :label="'1'">表达式</el-radio-button>
<el-radio-button :label="'2'">代理表达式</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="值" prop="listenerValue" >
<el-input :placeholder="listenerValuePlaceholder" size="small" v-model="selectListen.listenerValue"/>
</el-form-item>
</el-form>
<div slot="footer">
<el-button size="mini" @click="editListenerShow = false">取消</el-button>
<el-button size="mini" type="primary" @click="handleUpdateListener()">确认</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {getListenerList, addListener, deleteListener, updateListener, getListenerById} from "../../api/listener";
export default {
name: "Listener",
data() {
const checkLength = (rule, value, callback) => {
if (value.length === 0) {
callback(new Error("事件类型不能为空!"))
} else {
callback()
}
}
return {
loading: true,
// openListener: true,
listenerList: [],
queryForms:{
listenerName:'',
listenerType:'1',
eventType:'',
listenerValueType:'0',
listenerValue:''
},
selectListen: {
listenerName:'',
listenerType:'1',
eventType:'',
listenerValueType:'0',
listenerValue:''
},
addListenShow: false,
editListenerShow:false,
listenerValuePlaceholder: '请输入类路径',
listenerRules: {
listenerName: [
{required: true, message: '监听器名称不能为空', trigger: 'blur'}
],
eventType: [
{required: true, message: '监听器类型不能为空', trigger: 'blur'},
{validator: checkLength, trigger: 'blur'}
],
listenerType: [
{required: true, message: '监听器类型不能为空', trigger: 'blur'},
],
listenerValue: [
{required: true, message: '值不能为空', trigger: 'blur'}
],
}
}
},
mounted() {
this.getListenerList()
},
methods: {
//
getListenerList() {
getListenerList().then(res => {
this.loading = false;
this.listenerList = res.data.rows
})
},
//
addListener() {
addListener({
listenerName:this.queryForms.listenerName,
listenerType:this.queryForms.listenerType,
eventType:this.queryForms.eventType,
listenerValueType:this.queryForms.listenerValueType,
listenerValue:this.queryForms.listenerValue
}).then(res => {
this.addListenShow = false
this.getListenerList()
})
},
openUpdateListener(row){
this.editListenerShow=true
getListenerById(row.id).then(res => {
this.selectListen = res.data
})
},
//
handleUpdateListener(){
updateListener({
id:this.selectListen.id,
listenerName:this.selectListen.listenerName,
listenerType:this.selectListen.listenerType,
eventType:this.selectListen.eventType,
listenerValueType:this.selectListen.listenerValueType,
listenerValue:this.selectListen.listenerValue
}).then(res => {
this.editListenerShow = false
this.getListenerList()
})
},
//
deleteListener(row){
this.$confirm("您确定要删除监听器名称为: " + row.listenerName + " 吗,删除后无法恢复,是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
deleteListener(row.id).then(res => {
this.getListenerList()
})
});
},
listenerValueTypeChange(val) {
if (val === '0') {
this.listenerValuePlaceholder = '请输入类路径'
} else {
this.listenerValuePlaceholder = '请输入表达式'
}
console.log(val)
}
}
}
</script>
<style scoped>
</style>

View File

@ -64,7 +64,7 @@
</div>
<div class="top_right">
<div style="margin-bottom: 12px">
<span style="font-size: 15px;">{{ selectProcessInstance.deploymentName }}</span>
<span style="font-size: 15px;margin-right: 15px;">{{ selectProcessInstance.deploymentName }}</span>
<el-tag class="state_tag" v-if="selectProcessInstance.state === '1'" size="mini">进行中</el-tag>
<el-tag class="state_tag" v-if="selectProcessInstance.state === '4'" size="mini" type="success">审批通过
</el-tag>