update 调整流程定义配置逻辑

This commit is contained in:
gssong 2024-04-06 21:06:59 +08:00
parent 9f73ea2d32
commit b4b0eba228
7 changed files with 183 additions and 63 deletions

View File

@ -36,3 +36,15 @@ export const deldefinitionConfig = (id: string | number | Array<string | number>
method: 'delete'
});
};
/**
*
* @param tableName
* @param tableName
*/
export const getByTableNameNotDefId = (tableName: string,definitionId: string ) => {
return request({
url: `/workflow/definitionConfig/getByTableNameNotDefId/${tableName}/${definitionId}`,
method: 'get'
});
};

View File

@ -7,9 +7,9 @@ export interface DefinitionConfigVO {
id: string | number;
/**
* ID
*
*/
formId?: string | number;
tableName?: string;
/**
* ID
@ -21,6 +21,11 @@ export interface DefinitionConfigVO {
*/
processKey: string;
/**
*
*/
version?: string | number;
/**
*
*/
@ -40,9 +45,9 @@ export interface DefinitionConfigForm extends BaseEntity {
id?: string | number;
/**
* ID
*
*/
formId?: string | number;
tableName?: string;
/**
* ID
@ -54,6 +59,11 @@ export interface DefinitionConfigForm extends BaseEntity {
*/
processKey?: string;
/**
*
*/
version?: string | number;
/**
*
*/
@ -70,9 +80,9 @@ export interface DefinitionConfigForm extends BaseEntity {
export interface DefinitionConfigQuery extends PageQuery {
/**
* ID
*
*/
formId?: string | number;
tableName?: string;
/**
* ID
@ -84,6 +94,11 @@ export interface DefinitionConfigQuery extends PageQuery {
*/
processKey?: string;
/**
*
*/
version?: string | number;
/**
*
*/

View File

@ -1,3 +1,4 @@
import { DefinitionConfigVO } from '@/api/workflow/definitionConfig/types';
export interface ProcessDefinitionQuery extends PageQuery {
key?: string;
name?: string;
@ -14,6 +15,7 @@ export interface ProcessDefinitionVO extends BaseEntity {
diagramResourceName: string;
deploymentId: string;
deploymentTime: string;
wfDefinitionConfigVo: DefinitionConfigVO;
}
export interface definitionXmlVO {

View File

@ -6,3 +6,9 @@ export interface RouterJumpVo {
taskId: string;
type: string;
}
export interface StartProcessBo {
businessKey: string | number;
tableName: string;
variables: any;
}

View File

@ -142,8 +142,7 @@ const task = ref<TaskVO>({
participantVo: undefined,
multiInstance: undefined,
businessKey: undefined,
wfNodeConfigVo: undefined,
wfDefinitionConfigVo: undefined
wfNodeConfigVo: undefined
});
//
const title = ref('');
@ -214,7 +213,7 @@ const handleCompleteTask = async () => {
dialog.visible = false;
emits('submitCallback');
proxy?.$modal.msgSuccess('操作成功');
}finally {
} finally {
loading.value = false
buttonLoading.value = false
}

View File

@ -85,7 +85,7 @@ import { startWorkFlow } from '@/api/workflow/task';
import SubmitVerify from '@/components/Process/submitVerify.vue';
import ApprovalRecord from '@/components/Process/approvalRecord.vue';
import { AxiosResponse } from 'axios';
import { StartProcessBo } from '@/api/workflow/workflowCommon/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const buttonLoading = ref(false);
@ -120,9 +120,9 @@ const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>();
const leaveFormRef = ref<ElFormInstance>();
const submitFormData = ref<Record<string, any>>({
const submitFormData = ref<StartProcessBo>({
businessKey: '',
processKey: '',
tableName: '',
variables: {}
});
const taskVariables = ref<Record<string, any>>({});
@ -191,6 +191,7 @@ const submitForm = (status: string) => {
proxy?.$modal.msgError('请假时间不能为空');
return;
}
try {
leaveFormRef.value?.validate(async (valid: boolean) => {
form.value.startDate = leaveTime.value[0];
form.value.endDate = leaveTime.value[1];
@ -213,11 +214,15 @@ const submitForm = (status: string) => {
}
}
});
} finally {
buttonLoading.value = false;
}
};
//
const handleStartWorkFlow = async (data: LeaveVO) => {
submitFormData.value.processKey = 'leave1';
try {
submitFormData.value.tableName = 'test_leave';
submitFormData.value.businessKey = data.id;
//
taskVariables.value = {
@ -232,6 +237,9 @@ const handleStartWorkFlow = async (data: LeaveVO) => {
buttonLoading.value = false;
submitVerifyRef.value.openDialog(resp.data.taskId);
}
} finally {
buttonLoading.value = false;
}
};
//
const handleApprovalRecord = () => {

View File

@ -61,24 +61,31 @@
<el-table-column align="center" prop="version" label="版本号" width="80">
<template #default="scope"> v{{ scope.row.version }}.0</template>
</el-table-column>
<el-table-column align="center" prop="resourceName" label="流程XML" min-width="80" :show-overflow-tooltip="true">
<el-table-column align="center" prop="resourceName" label="流程XML" width="100" :show-overflow-tooltip="true">
<template #default="scope">
<el-link type="primary" @click="clickPreviewXML(scope.row.id)">{{ scope.row.resourceName }}</el-link>
</template>
</el-table-column>
<el-table-column align="center" prop="diagramResourceName" label="流程图片" min-width="80" :show-overflow-tooltip="true">
<el-table-column align="center" prop="diagramResourceName" label="流程图片" width="100" :show-overflow-tooltip="true">
<template #default="scope">
<el-link type="primary" @click="clickPreviewImg(scope.row.id)">{{ scope.row.diagramResourceName }}</el-link>
</template>
</el-table-column>
<el-table-column align="center" prop="suspensionState" label="状态" min-width="50">
<el-table-column align="center" prop="suspensionState" label="状态" width="80">
<template #default="scope">
<el-tag v-if="scope.row.suspensionState == 1" type="success">激活</el-tag>
<el-tag v-else type="danger">挂起</el-tag>
</template>
</el-table-column>
<el-table-column align="center" prop="deploymentTime" label="部署时间" :show-overflow-tooltip="true"></el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="170" class-name="small-padding fixed-width">
<el-table-column align="center" prop="deploymentTime" label="部署时间" width="120" :show-overflow-tooltip="true"></el-table-column>
<el-table-column align="center" label="表名/表单KEY" width="120" :show-overflow-tooltip="true">
<template #default="scope">
<span v-if="scope.row.wfDefinitionConfigVo">
{{ scope.row.wfDefinitionConfigVo.tableName }}
</span>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="220" class-name="small-padding fixed-width">
<template #default="scope">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
@ -92,6 +99,9 @@
{{ scope.row.suspensionState === 1 ? '挂起流程' : '激活流程' }}
</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="text" size="small" icon="Document" @click="getProcessDefinitionHitoryList(scope.row.id, scope.row.key)">历史版本</el-button>
</el-col>
<el-col :span="1.5">
<el-button link type="primary" size="small" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>
</el-col>
@ -101,16 +111,7 @@
<el-button link type="primary" size="small" icon="Sort" @click="handleConvertToModel(scope.row)"> 转换模型 </el-button>
</el-col>
<el-col :span="1.5">
<el-dropdown>
<el-button type="text" size="small">
更多<el-icon class="el-icon--right"><arrow-down /></el-icon>
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="getProcessDefinitionHitoryList(scope.row.id, scope.row.key)">历史版本</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-button type="text" size="small" icon="Tickets" @click="handleDefinitionConfigOpen(scope.row)">绑定业务</el-button>
</el-col>
</el-row>
</template>
@ -203,18 +204,43 @@
</el-button>
</el-col>
<el-col :span="1.5">
<el-button link type="primary" icon="Delete" size="small" @click="handleDelete(scope.row)">删除</el-button>
<el-button type="text" size="small" icon="Tickets" @click="handleDefinitionConfigOpen(scope.row)">绑定业务</el-button>
</el-col>
</el-row>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button link type="primary" icon="Sort" size="small" @click="handleConvertToModel(scope.row)"> 转换模型 </el-button>
</el-col>
<el-col :span="1.5">
<el-button link type="primary" icon="Delete" size="small" @click="handleDelete(scope.row)">删除</el-button>
</el-col>
</el-row>
</template>
</el-table-column>
</el-table>
</el-dialog>
<!-- 表单配置 -->
<el-dialog v-model="definitionConfigDialog.visible" :title="definitionConfigDialog.title" width="650px" append-to-body :close-on-click-modal="false">
<el-form :model="definitionConfigForm" label-width="auto">
<el-form-item label="流程KEY">
<el-input v-model="definitionConfigForm.processKey" disabled/>
</el-form-item>
<el-form-item label="表名" prop="formId">
<el-input v-model="definitionConfigForm.tableName" placeholder="示例:test_leave"/>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="definitionConfigForm.remark" type="textarea" resize="none"/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="definitionConfigDialog.visible = false">取消</el-button>
<el-button type="primary" @click="handlerSaveForm">保存</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
@ -229,17 +255,20 @@ import {
deployProcessFile,
getListByKey
} from '@/api/workflow/processDefinition';
import { getByTableNameNotDefId,getByDefId,saveOrUpdate } from '@/api/workflow/definitionConfig';
import ProcessPreview from './components/processPreview.vue';
import { listCategory } from '@/api/workflow/category';
import { CategoryVO } from '@/api/workflow/category/types';
import { ProcessDefinitionQuery, ProcessDefinitionVO } from '@/api/workflow/processDefinition/types';
import { UploadRequestOptions } from 'element-plus';
import { definitionConfigForm } from '@/api/workflow/definitionConfig/types';
import { UploadRequestOptions, ElMessage, ElMessageBox } from 'element-plus';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const previewRef = ref<InstanceType<typeof ProcessPreview>>();
const queryFormRef = ref<ElFormInstance>();
const categoryTreeRef = ref<ElTreeInstance>();
const definitionConfigForm = ref<definitionConfigForm>({});
type CategoryOption = {
categoryCode: string;
@ -272,6 +301,11 @@ const processDefinitionDialog = reactive<DialogOption>({
title: '历史版本'
});
const definitionConfigDialog = reactive<DialogOption>({
visible: false,
title: '流程定义配置'
});
//
const queryParams = ref<ProcessDefinitionQuery>({
pageNum: 1,
@ -436,4 +470,48 @@ const handerDeployProcessFile = (data: UploadRequestOptions): XMLHttpRequest =>
});
return;
};
//
const handleDefinitionConfigOpen = async (row: ProcessDefinitionVO) => {
definitionConfigDialog.visible = true
definitionConfigForm.value.processKey = row.key
definitionConfigForm.value.definitionId = row.id
definitionConfigForm.value.version = row.version
const resp = await getByDefId(row.id)
if(resp.data){
definitionConfigForm.value = resp.data
}else{
definitionConfigForm.value.tableName = undefined
definitionConfigForm.value.remark = undefined
}
}
//
const handlerSaveForm = async () => {
getByTableNameNotDefId(definitionConfigForm.value.tableName,definitionConfigForm.value.definitionId).then(res => {
if(res.data && res.data.length > 0){
ElMessageBox.confirm('表名已被【'+res.data[0].processKey+'】版本v'+res.data[0].version+'.0绑定确认后将会删除绑定的流程KEY!','提示',{
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {
saveOrUpdate(definitionConfigForm.value).then(resp=>{
if(resp.code === 200){
proxy?.$modal.msgSuccess('操作成功');
definitionConfigDialog.visible = false
getList();
}
})
})
}else{
saveOrUpdate(definitionConfigForm.value).then(resp=>{
if(resp.code === 200){
proxy?.$modal.msgSuccess('操作成功');
definitionConfigDialog.visible = false
getList();
}
})
}
})
}
</script>