【功能新增】BPM:支持通过“历史”进行恢复
This commit is contained in:
parent
2a73b9c4fc
commit
a26cb120d1
@ -31,6 +31,7 @@ export const getModelList = async (name: string | undefined) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const getModel = async (id: string) => {
|
export const getModel = async (id: string) => {
|
||||||
|
debugger
|
||||||
return await request.get({ url: '/bpm/model/get?id=' + id })
|
return await request.get({ url: '/bpm/model/get?id=' + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,7 +277,6 @@ import { checkPermi } from '@/utils/permission'
|
|||||||
import { useUserStoreWithOut } from '@/store/modules/user'
|
import { useUserStoreWithOut } from '@/store/modules/user'
|
||||||
import { useAppStore } from '@/store/modules/app'
|
import { useAppStore } from '@/store/modules/app'
|
||||||
import { cloneDeep, isEqual } from 'lodash-es'
|
import { cloneDeep, isEqual } from 'lodash-es'
|
||||||
import { useTagsView } from '@/hooks/web/useTagsView'
|
|
||||||
import { useDebounceFn } from '@vueuse/core'
|
import { useDebounceFn } from '@vueuse/core'
|
||||||
import { subString } from '@/utils/index'
|
import { subString } from '@/utils/index'
|
||||||
|
|
||||||
@ -589,8 +588,7 @@ const handleDeleteCategory = async () => {
|
|||||||
} catch {}
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 添加流程模型弹窗 */
|
/** 添加/修改/复制流程模型弹窗 */
|
||||||
const tagsView = useTagsView()
|
|
||||||
const openModelForm = async (type: string, id?: number) => {
|
const openModelForm = async (type: string, id?: number) => {
|
||||||
if (type === 'create') {
|
if (type === 'create') {
|
||||||
await push({ name: 'BpmModelCreate' })
|
await push({ name: 'BpmModelCreate' })
|
||||||
@ -599,10 +597,6 @@ const openModelForm = async (type: string, id?: number) => {
|
|||||||
name: 'BpmModelUpdate',
|
name: 'BpmModelUpdate',
|
||||||
params: { id, type }
|
params: { id, type }
|
||||||
})
|
})
|
||||||
// 设置标题
|
|
||||||
if (type === 'copy') {
|
|
||||||
tagsView.setTitle('复制流程')
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +66,18 @@
|
|||||||
width="180"
|
width="180"
|
||||||
:formatter="dateFormatter"
|
:formatter="dateFormatter"
|
||||||
/>
|
/>
|
||||||
|
<el-table-column label="操作" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
type="primary"
|
||||||
|
@click="openModelForm(scope.row.id)"
|
||||||
|
v-hasPermi="['bpm:model:update']"
|
||||||
|
>
|
||||||
|
恢复
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<Pagination
|
<Pagination
|
||||||
@ -134,6 +146,14 @@ const handleFormDetail = async (row: any) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 恢复流程模型弹窗 */
|
||||||
|
const openModelForm = async (id?: number) => {
|
||||||
|
await push({
|
||||||
|
name: 'BpmModelUpdate',
|
||||||
|
params: { id, type: 'definition' }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/** 初始化 **/
|
/** 初始化 **/
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
|
@ -44,8 +44,13 @@
|
|||||||
|
|
||||||
<!-- 右侧按钮 -->
|
<!-- 右侧按钮 -->
|
||||||
<div class="w-200px flex items-center justify-end gap-2">
|
<div class="w-200px flex items-center justify-end gap-2">
|
||||||
<el-button v-if="route.params.id" type="success" @click="handleDeploy">发 布</el-button>
|
<el-button v-if="actionType === 'update'" type="success" @click="handleDeploy">
|
||||||
<el-button type="primary" @click="handleSave">保 存</el-button>
|
发 布
|
||||||
|
</el-button>
|
||||||
|
<el-button type="primary" @click="handleSave">
|
||||||
|
<span v-if="actionType === 'definition'">恢 复</span>
|
||||||
|
<span v-else>保 存</span>
|
||||||
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -81,20 +86,23 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { useMessage } from '@/hooks/web/useMessage'
|
import { useMessage } from '@/hooks/web/useMessage'
|
||||||
|
import { useTagsViewStore } from '@/store/modules/tagsView'
|
||||||
|
import { useUserStoreWithOut } from '@/store/modules/user'
|
||||||
import * as ModelApi from '@/api/bpm/model'
|
import * as ModelApi from '@/api/bpm/model'
|
||||||
import * as FormApi from '@/api/bpm/form'
|
import * as FormApi from '@/api/bpm/form'
|
||||||
import { CategoryApi, CategoryVO } from '@/api/bpm/category'
|
import { CategoryApi, CategoryVO } from '@/api/bpm/category'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
import { useUserStoreWithOut } from '@/store/modules/user'
|
import * as DefinitionApi from '@/api/bpm/definition'
|
||||||
import { BpmModelFormType, BpmModelType, BpmAutoApproveType } from '@/utils/constants'
|
import { BpmModelFormType, BpmModelType, BpmAutoApproveType } from '@/utils/constants'
|
||||||
import BasicInfo from './BasicInfo.vue'
|
import BasicInfo from './BasicInfo.vue'
|
||||||
import FormDesign from './FormDesign.vue'
|
import FormDesign from './FormDesign.vue'
|
||||||
import ProcessDesign from './ProcessDesign.vue'
|
import ProcessDesign from './ProcessDesign.vue'
|
||||||
import { useTagsViewStore } from '@/store/modules/tagsView'
|
|
||||||
import ExtraSettings from './ExtraSettings.vue'
|
import ExtraSettings from './ExtraSettings.vue'
|
||||||
|
import { useTagsView } from '@/hooks/web/useTagsView'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const { delView } = useTagsViewStore() // 视图操作
|
const { delView } = useTagsViewStore() // 视图操作
|
||||||
|
const tagsView = useTagsView()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const userStore = useUserStoreWithOut()
|
const userStore = useUserStoreWithOut()
|
||||||
@ -165,7 +173,7 @@ const formData: any = ref({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
//流程数据
|
// 流程数据
|
||||||
const processData = ref<any>()
|
const processData = ref<any>()
|
||||||
|
|
||||||
provide('processData', processData)
|
provide('processData', processData)
|
||||||
@ -177,20 +185,36 @@ const categoryList = ref<CategoryVO[]>([])
|
|||||||
const userList = ref<UserApi.UserVO[]>([])
|
const userList = ref<UserApi.UserVO[]>([])
|
||||||
|
|
||||||
/** 初始化数据 */
|
/** 初始化数据 */
|
||||||
|
const actionType = route.params.type as string
|
||||||
const initData = async () => {
|
const initData = async () => {
|
||||||
const modelId = route.params.id as string
|
if (actionType === 'definition') {
|
||||||
if (modelId) {
|
// 情况一:流程定义场景(恢复)
|
||||||
// 修改场景
|
const definitionId = route.params.id as string
|
||||||
|
const data = await DefinitionApi.getProcessDefinition(definitionId)
|
||||||
|
// 将 definition => model,最终赋值
|
||||||
|
data.type = data.modelType
|
||||||
|
delete data.modelType
|
||||||
|
data.id = data.modelId
|
||||||
|
delete data.modelId
|
||||||
|
if (data.simpleModel) {
|
||||||
|
data.simpleModel = JSON.parse(data.simpleModel)
|
||||||
|
}
|
||||||
|
formData.value = data
|
||||||
|
formData.value.startUserType = formData.value.startUserIds?.length > 0 ? 1 : 0
|
||||||
|
} else if (['update', 'copy'].includes(actionType)) {
|
||||||
|
// 情况二:修改场景/复制场景
|
||||||
|
const modelId = route.params.id as string
|
||||||
formData.value = await ModelApi.getModel(modelId)
|
formData.value = await ModelApi.getModel(modelId)
|
||||||
formData.value.startUserType = formData.value.startUserIds?.length > 0 ? 1 : 0
|
formData.value.startUserType = formData.value.startUserIds?.length > 0 ? 1 : 0
|
||||||
// 复制场景
|
// 特殊:复制场景
|
||||||
if (route.params.type === 'copy') {
|
if (actionType === 'copy') {
|
||||||
delete formData.value.id
|
delete formData.value.id
|
||||||
formData.value.name += '副本'
|
formData.value.name += '副本'
|
||||||
formData.value.key += '_copy'
|
formData.value.key += '_copy'
|
||||||
|
tagsView.setTitle('复制流程')
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 新增场景
|
// 情况三:新增场景
|
||||||
formData.value.startUserType = 0 // 全体
|
formData.value.startUserType = 0 // 全体
|
||||||
formData.value.managerUserIds.push(userStore.getUser.id)
|
formData.value.managerUserIds.push(userStore.getUser.id)
|
||||||
}
|
}
|
||||||
@ -271,37 +295,31 @@ const handleSave = async () => {
|
|||||||
...formData.value
|
...formData.value
|
||||||
}
|
}
|
||||||
|
|
||||||
if (formData.value.id) {
|
if (actionType === 'definition') {
|
||||||
|
// 情况一:流程定义场景(恢复)
|
||||||
|
await ModelApi.updateModel(modelData)
|
||||||
|
// 提示成功
|
||||||
|
message.success('恢复成功,可点击【发布】按钮,进行发布模型')
|
||||||
|
} else if (actionType === 'update') {
|
||||||
// 修改场景
|
// 修改场景
|
||||||
await ModelApi.updateModel(modelData)
|
await ModelApi.updateModel(modelData)
|
||||||
// 询问是否发布流程
|
// 提示成功
|
||||||
try {
|
message.success('修改成功,可点击【发布】按钮,进行发布模型')
|
||||||
await message.confirm('修改流程成功,是否发布流程?')
|
} else if (actionType === 'copy') {
|
||||||
// 用户点击确认,执行发布
|
// 情况三:复制场景
|
||||||
await handleDeploy()
|
|
||||||
} catch {
|
|
||||||
// 用户点击取消,停留在当前页面
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 新增场景
|
|
||||||
formData.value.id = await ModelApi.createModel(modelData)
|
formData.value.id = await ModelApi.createModel(modelData)
|
||||||
try {
|
// 提示成功
|
||||||
await message.confirm('流程创建成功,是否继续编辑?')
|
message.success('复制成功,可点击【发布】按钮,进行发布模型')
|
||||||
// 用户点击继续编辑,跳转到编辑页面
|
} else {
|
||||||
await nextTick()
|
// 情况四:新增场景
|
||||||
// 先删除当前页签
|
formData.value.id = await ModelApi.createModel(modelData)
|
||||||
delView(unref(router.currentRoute))
|
// 提示成功
|
||||||
// 跳转到编辑页面
|
message.success('新建成功,可点击【发布】按钮,进行发布模型')
|
||||||
await router.push({
|
}
|
||||||
name: 'BpmModelUpdate',
|
|
||||||
params: { id: formData.value.id }
|
// 返回列表页(排除更新的情况)
|
||||||
})
|
if (actionType !== 'update') {
|
||||||
} catch {
|
await router.push({ name: 'BpmModel' })
|
||||||
// 先删除当前页签
|
|
||||||
delView(unref(router.currentRoute))
|
|
||||||
// 用户点击返回列表
|
|
||||||
await router.push({ name: 'BpmModel' })
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
console.error('保存失败:', error)
|
console.error('保存失败:', error)
|
||||||
@ -346,7 +364,6 @@ const handleDeploy = async () => {
|
|||||||
/** 步骤切换处理 */
|
/** 步骤切换处理 */
|
||||||
const handleStepClick = async (index: number) => {
|
const handleStepClick = async (index: number) => {
|
||||||
try {
|
try {
|
||||||
console.log('index', index)
|
|
||||||
if (index !== 0) {
|
if (index !== 0) {
|
||||||
await validateBasic()
|
await validateBasic()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user