流程执行接口 + 前端执行按钮 + SQL权限修正(flowlog/flowinstance) + execute权限 | 编译通过

This commit is contained in:
root
2026-03-18 00:12:58 +08:00
parent e1db57d541
commit 564c83b265
4 changed files with 282 additions and 241 deletions

View File

@@ -42,3 +42,11 @@ export function delFlowInstance(id) {
method: 'delete'
})
}
// 执行流程
export function executeFlowInstance(flowDefId) {
return request({
url: '/wcs/flow/instance/execute/' + flowDefId,
method: 'post'
})
}

View File

@@ -1,16 +1,16 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="<22><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" prop="processDefName">
<el-form-item label="<22><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" prop="processDefName">
<el-input
v-model="queryParams.processDefName"
placeholder="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
placeholder="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="״̬" prop="status">
<el-select v-model="queryParams.status" placeholder="ʵ<><CAB5>״̬" clearable>
<el-select v-model="queryParams.status" placeholder="ʵ<><CAB5>״̬" clearable>
<el-option
v-for="dict in statusOptions"
:key="dict.value"
@@ -20,8 +20,8 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"><EFBFBD><EFBFBD><EFBFBD><EFBFBD></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"><EFBFBD><EFBFBD><EFBFBD><EFBFBD></el-button>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"><EFBFBD><EFBFBD><EFBFBD><EFBFBD></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"><EFBFBD><EFBFBD><EFBFBD><EFBFBD></el-button>
</el-form-item>
</el-form>
@@ -34,7 +34,7 @@
size="mini"
@click="handleAdd"
v-hasPermi="['wcs:flowinstance:add']"
><EFBFBD><EFBFBD><EFBFBD><EFBFBD></el-button>
><EFBFBD><EFBFBD><EFBFBD><EFBFBD></el-button>
</el-col>
<el-col :span="1.5">
<el-button
@@ -45,7 +45,7 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['wcs:flowinstance:edit']"
><EFBFBD>޸<EFBFBD></el-button>
><EFBFBD>޸<EFBFBD></el-button>
</el-col>
<el-col :span="1.5">
<el-button
@@ -56,7 +56,7 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['wcs:flowinstance:remove']"
>ɾ<EFBFBD><EFBFBD></el-button>
>ɾ<EFBFBD><EFBFBD></el-button>
</el-col>
<el-col :span="1.5">
<el-button
@@ -66,32 +66,32 @@
size="mini"
@click="handleExport"
v-hasPermi="['wcs:flowinstance:export']"
><EFBFBD><EFBFBD><EFBFBD><EFBFBD></el-button>
><EFBFBD><EFBFBD><EFBFBD><EFBFBD></el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="instanceList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ʵ<><CAB5>ID" align="center" prop="instanceId" />
<el-table-column label="<22><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" align="center" prop="processDefName" :show-overflow-tooltip="true" />
<el-table-column label="ʵ<><CAB5>ID" align="center" prop="instanceId" />
<el-table-column label="<22><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" align="center" prop="processDefName" :show-overflow-tooltip="true" />
<el-table-column label="״̬" align="center" prop="status">
<template slot-scope="scope">
<el-tag :type="statusTagType(scope.row.status)">{{ statusLabel(scope.row.status) }}</el-tag>
</template>
</el-table-column>
<el-table-column label="<22><>ʼʱ<CABC><CAB1>" align="center" prop="startTime" width="180">
<el-table-column label="<22><>ʼʱ<CABC><CAB1>" align="center" prop="startTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.startTime) }}</span>
</template>
</el-table-column>
<el-table-column label="<22><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>" align="center" prop="endTime" width="180">
<el-table-column label="<22><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>" align="center" prop="endTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endTime) }}</span>
</template>
</el-table-column>
<el-table-column label="<22><>ע" align="center" prop="remark" :show-overflow-tooltip="true" />
<el-table-column label="<22><><EFBFBD><EFBFBD>" align="center" class-name="small-padding fixed-width">
<el-table-column label="<22><>ע" align="center" prop="remark" :show-overflow-tooltip="true" />
<el-table-column label="<22><><EFBFBD><EFBFBD>" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
@@ -99,14 +99,21 @@
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['wcs:flowinstance:edit']"
><EFBFBD>޸<EFBFBD></el-button>
><EFBFBD>޸<EFBFBD></el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['wcs:flowinstance:remove']"
>ɾ<EFBFBD><EFBFBD></el-button>
>ɾ<EFBFBD><EFBFBD></el-button>
<el-button
size="mini"
type="text"
icon="el-icon-video-play"
@click="handleExecute(scope.row)"
v-hasPermi="['wcs:flowinstance:execute']"
>执行</el-button>
</template>
</el-table-column>
</el-table>
@@ -119,14 +126,14 @@
@pagination="getList"
/>
<!-- <EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD><EFBFBD> -->
<!-- <EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD><EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD><EFBFBD> -->
<el-dialog :title="title" :visible.sync="open" width="550px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="<22><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" prop="processDefName">
<el-input v-model="form.processDefName" placeholder="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" />
<el-form-item label="<22><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" prop="processDefName">
<el-input v-model="form.processDefName" placeholder="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" />
</el-form-item>
<el-form-item label="״̬" prop="status">
<el-select v-model="form.status" placeholder="<22><>ѡ<EFBFBD><D1A1>״̬">
<el-select v-model="form.status" placeholder="<22><>ѡ<EFBFBD><D1A1>״̬">
<el-option
v-for="dict in statusOptions"
:key="dict.value"
@@ -135,38 +142,38 @@
/>
</el-select>
</el-form-item>
<el-form-item label="<22><>ʼʱ<CABC><CAB1>" prop="startTime">
<el-form-item label="<22><>ʼʱ<CABC><CAB1>" prop="startTime">
<el-date-picker
v-model="form.startTime"
type="datetime"
placeholder="ѡ<><D1A1><EFBFBD><EFBFBD>ʼʱ<EFBFBD><EFBFBD>"
placeholder="ѡ<><D1A1>ʼʱ<CABC><CAB1>"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="<22><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>" prop="endTime">
<el-form-item label="<22><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>" prop="endTime">
<el-date-picker
v-model="form.endTime"
type="datetime"
placeholder="ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>"
placeholder="ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%"
/>
</el-form-item>
<el-form-item label="<22><>ע" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" />
<el-form-item label="<22><>ע" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">ȷ <EFBFBD><EFBFBD></el-button>
<el-button @click="cancel">ȡ <EFBFBD><EFBFBD></el-button>
<el-button type="primary" @click="submitForm">ȷ <EFBFBD><EFBFBD></el-button>
<el-button @click="cancel">ȡ <EFBFBD><EFBFBD></el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listFlowInstance, getFlowInstance, delFlowInstance, addFlowInstance, updateFlowInstance } from "@/api/wcs/flowinstance"
import { listFlowInstance, getFlowInstance, delFlowInstance, addFlowInstance, updateFlowInstance, executeFlowInstance } from "@/api/wcs/flowinstance"
export default {
name: "WcsFlowInstance",
@@ -182,10 +189,10 @@ export default {
title: "",
open: false,
statusOptions: [
{ value: "0", label: "<22><>ִ<EFBFBD><D6B4>" },
{ value: "1", label: "ִ<><D6B4><EFBFBD><EFBFBD>" },
{ value: "2", label: "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" },
{ value: "3", label: "<22>쳣<EFBFBD><ECB3A3>ֹ" }
{ value: "0", label: "<22><>ִ<EFBFBD><D6B4>" },
{ value: "1", label: "ִ<><D6B4><EFBFBD><EFBFBD>" },
{ value: "2", label: "<22><><EFBFBD><EFBFBD><EFBFBD>" },
{ value: "3", label: "<22>쳣<EFBFBD><ECB3A3>ֹ" }
],
queryParams: {
pageNum: 1,
@@ -196,10 +203,10 @@ export default {
form: {},
rules: {
processDefName: [
{ required: true, message: "<22><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ϊ<EFBFBD><CEAA>", trigger: "blur" }
{ required: true, message: "<22><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ϊ<EFBFBD><CEAA>", trigger: "blur" }
],
status: [
{ required: true, message: "״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>", trigger: "change" }
{ required: true, message: "״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>", trigger: "change" }
]
}
}
@@ -217,7 +224,7 @@ export default {
})
},
statusLabel(status) {
const map = { "0": "<22><>ִ<EFBFBD><D6B4>", "1": "ִ<><D6B4><EFBFBD><EFBFBD>", "2": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "3": "<22>쳣<EFBFBD><ECB3A3>ֹ" }
const map = { "0": "<22><>ִ<EFBFBD><D6B4>", "1": "ִ<><D6B4><EFBFBD><EFBFBD>", "2": "<22><><EFBFBD><EFBFBD><EFBFBD>", "3": "<22>쳣<EFBFBD><ECB3A3>ֹ" }
return map[status] || "δ֪"
},
statusTagType(status) {
@@ -255,7 +262,7 @@ export default {
handleAdd() {
this.reset()
this.open = true
this.title = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>"
this.title = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>"
},
handleUpdate(row) {
this.reset()
@@ -263,7 +270,7 @@ export default {
getFlowInstance(instanceId).then(response => {
this.form = response.data
this.open = true
this.title = "<22>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>"
this.title = "<22>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>"
})
},
submitForm() {
@@ -271,13 +278,13 @@ export default {
if (valid) {
if (this.form.instanceId != undefined) {
updateFlowInstance(this.form).then(() => {
this.$modal.msgSuccess("<22>޸ijɹ<C4B3>")
this.$modal.msgSuccess("<22>޸ijɹ<C4B3>")
this.open = false
this.getList()
})
} else {
addFlowInstance(this.form).then(() => {
this.$modal.msgSuccess("<22><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>")
this.$modal.msgSuccess("<22><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>")
this.open = false
this.getList()
})
@@ -287,11 +294,20 @@ export default {
},
handleDelete(row) {
const instanceIds = row.instanceId || this.ids
this.$modal.confirm('<27>Ƿ<EFBFBD>ȷ<EFBFBD><C8B7>ɾ<EFBFBD><C9BE>ʵ<EFBFBD><CAB5>IDΪ"' + instanceIds + '"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>').then(function() {
this.$modal.confirm('<27>Ƿ<EFBFBD>ȷ<EFBFBD><C8B7>ɾ<EFBFBD><C9BE>ʵ<EFBFBD><CAB5>IDΪ"' + instanceIds + '"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>').then(function() {
return delFlowInstance(instanceIds)
}).then(() => {
this.getList()
this.$modal.msgSuccess("ɾ<><C9BE><EFBFBD>ɹ<EFBFBD>")
this.$modal.msgSuccess("ɾ<><C9BE><EFBFBD>ɹ<EFBFBD>")
}).catch(() => {})
},
handleExecute(row) {
const flowDefId = row.flowDefId
this.$modal.confirm('是否确认执行流程定义ID为"' + flowDefId + '"的流程?').then(() => {
return executeFlowInstance(flowDefId)
}).then((response) => {
this.$modal.msgSuccess("流程已启动,实例ID:" + response.data)
this.getList()
}).catch(() => {})
},
handleExport() {