bpm:完成流程实例的列表界面

This commit is contained in:
YunaiV 2023-01-23 00:03:56 +08:00
parent e6fadf073a
commit 2d6fe27b43
5 changed files with 26 additions and 56 deletions

View File

@ -45,11 +45,9 @@
</XModal> </XModal>
</ContentWrap> </ContentWrap>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
// import // import
import { ref } from 'vue' import { ref } from 'vue'
// import { DICT_TYPE, getDictOptions } from '@/utils/dict'
// import // import
import * as DefinitionApi from '@/api/bpm/definition' import * as DefinitionApi from '@/api/bpm/definition'
@ -87,7 +85,7 @@ const handleFormDetail = async (row) => {
// //
formDetailVisible.value = true formDetailVisible.value = true
} else { } else {
router.push({ await router.push({
path: row.formCustomCreatePath path: row.formCustomCreatePath
}) })
} }

View File

@ -15,7 +15,7 @@
@click="cancelLeave(row)" @click="cancelLeave(row)"
/> />
<!-- 操作: 详情 --> <!-- 操作: 详情 -->
<XTextButton preIcon="ep:delete" :title="t('action.detail')" @click="handleDetail(row)" /> <XTextButton preIcon="ep:view" :title="t('action.detail')" @click="handleDetail(row)" />
<!-- 操作: 审批进度 --> <!-- 操作: 审批进度 -->
<XTextButton preIcon="ep:edit-pen" title="审批进度" @click="handleProcessDetail(row)" /> <XTextButton preIcon="ep:edit-pen" title="审批进度" @click="handleProcessDetail(row)" />
</template> </template>

View File

@ -14,97 +14,69 @@
</template> </template>
<!-- 当前审批任务 --> <!-- 当前审批任务 -->
<template #tasks_default="{ row }"> <template #tasks_default="{ row }">
<el-button <el-button v-for="task in row.tasks" :key="task.id" type="text">
v-for="task in row.tasks"
:key="task.id"
type="text"
@click="handleFormDetail(task.id)"
>
<span>{{ task.name }}</span> <span>{{ task.name }}</span>
</el-button> </el-button>
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template #actionbtns_default="{ row }"> <template #actionbtns_default="{ row }">
<XButton preIcon="ep:view" :title="t('action.detail')" @click="handleDetail(row)" />
<XButton <XButton
type="primary" preIcon="ep:delete"
title="取消" title="取消"
v-if="row.result === 1" v-if="row.result === 1"
preIcon="ep:delete"
@click="handleCancel(row)" @click="handleCancel(row)"
/> />
<XButton type="primary" title="详情" preIcon="ep:edit-pen" @click="handleDetail(row)" />
</template> </template>
</XTable> </XTable>
</ContentWrap> </ContentWrap>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
// import // import
import { ref } from 'vue' import { ElMessageBox } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { useXTable } from '@/hooks/web/useXTable'
import { useRouter } from 'vue-router'
// import // import
import * as ProcessInstanceApi from '@/api/bpm/processInstance' import * as ProcessInstanceApi from '@/api/bpm/processInstance'
// import { decodeFields } from '@/utils/formGenerator' // TODO
import { allSchemas } from './process.data' import { allSchemas } from './process.data'
const router = useRouter() // const router = useRouter() //
const message = useMessage() //
const { t } = useI18n() //
// ========== ========== // ========== ==========
const [registerTable] = useXTable({ const [registerTable, { reload }] = useXTable({
allSchemas: allSchemas, allSchemas: allSchemas,
getListApi: ProcessInstanceApi.getMyProcessInstancePageApi getListApi: ProcessInstanceApi.getMyProcessInstancePageApi
}) })
//
const detailOpen = ref(false)
const detailForm = ref()
/** 发起流程操作 **/ /** 发起流程操作 **/
const handleCreate = () => { const handleCreate = () => {
router.push({ router.push({
name: 'BpmProcessInstanceCreate' name: 'BpmProcessInstanceCreate'
}) })
} }
/** 流程表单的详情按钮操作 */
const handleFormDetail = (row) => {
// 使
if (row.formId) {
// TODO
detailForm.value = {
...JSON.parse(row.formConf),
fields: decodeFields([], row.formFields)
}
//
detailOpen.value = true
// 使
} else if (row.formCustomCreatePath) {
router.push({ path: row.formCustomCreatePath })
}
}
// //
const handleDetail = (row) => { const handleDetail = (row) => {
console.log(row, 'row') router.push({
router.push({ path: '/process-instance/detail', query: { id: row.id } }) name: 'BpmProcessInstanceDetail',
query: {
id: row.processInstanceId
}
})
} }
/** 取消按钮操作 */ /** 取消按钮操作 */
const handleCancel = (row) => { const handleCancel = (row) => {
const id = row.id ElMessageBox.prompt('请输入取消原因', '取消流程', {
ElMessageBox.prompt('请输入取消原因?', '取消流程', { confirmButtonText: t('common.ok'),
type: 'warning', cancelButtonText: t('common.cancel'),
confirmButtonText: '确定',
cancelButtonText: '取消',
inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // inputPattern: /^[\s\S]*.*\S[\s\S]*$/, //
inputErrorMessage: '取消原因不能为空' inputErrorMessage: '取消原因不能为空'
}) }).then(async ({ value }) => {
.then(({ value }) => { await ProcessInstanceApi.cancelProcessInstanceApi(row.id, value)
return ProcessInstanceApi.cancelProcessInstanceApi(id, value) message.success('取消成功')
}) reload()
.then(() => {
ElMessage({
message: '取消成功',
type: 'success'
})
}) })
} }
</script> </script>

View File

@ -41,7 +41,7 @@ const crudSchemas = reactive<VxeCrudSchema>({
title: '当前审批任务', title: '当前审批任务',
field: 'tasks', field: 'tasks',
table: { table: {
width: 100, width: 140,
slots: { slots: {
default: 'tasks_default' default: 'tasks_default'
} }

View File

@ -58,7 +58,7 @@
</el-table-column> </el-table-column>
<el-table-column label="当前审批任务" align="center" prop="tasks"> <el-table-column label="当前审批任务" align="center" prop="tasks">
<template v-slot="scope"> <template v-slot="scope">
<el-button v-for="task in scope.row.tasks" :key="task.id" type="text" @click="handleFormDetail(task.id)"> <el-button v-for="task in scope.row.tasks" :key="task.id" type="text"">
<span>{{ task.name }}</span> <span>{{ task.name }}</span>
</el-button> </el-button>
</template> </template>