bpm:增加已办任务
parent
98bf423569
commit
2f46e230af
|
@ -1,92 +1,52 @@
|
||||||
import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
|
import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
// CrudSchema
|
// crudSchemas
|
||||||
const crudSchemas = reactive<CrudSchema[]>([
|
const crudSchemas = reactive<VxeCrudSchema>({
|
||||||
|
primaryKey: 'id',
|
||||||
|
primaryType: null,
|
||||||
|
action: true,
|
||||||
|
columns: [
|
||||||
{
|
{
|
||||||
label: t('common.index'),
|
title: '任务编号',
|
||||||
field: 'id',
|
field: 'id',
|
||||||
type: 'index'
|
table: {
|
||||||
},
|
width: 320
|
||||||
{
|
|
||||||
label: '任务名称',
|
|
||||||
field: 'name',
|
|
||||||
search: {
|
|
||||||
show: true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '所属流程',
|
title: '任务名称',
|
||||||
|
field: 'name',
|
||||||
|
isSearch: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '所属流程',
|
||||||
field: 'processInstance.name'
|
field: 'processInstance.name'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '流程发起人',
|
title: '流程发起人',
|
||||||
field: 'processInstance.startUserNickname'
|
field: 'processInstance.startUserNickname'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '结果',
|
title: t('common.status'),
|
||||||
field: 'result',
|
field: 'result',
|
||||||
dictType: DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT,
|
dictType: DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT,
|
||||||
dictClass: 'number'
|
dictClass: 'number',
|
||||||
|
isSearch: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '审批意见',
|
title: '原因',
|
||||||
field: 'reason'
|
field: 'reason'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: t('common.createTime'),
|
title: t('common.createTime'),
|
||||||
field: 'createTime',
|
field: 'createTime',
|
||||||
search: {
|
formatter: 'formatDate',
|
||||||
show: true,
|
table: {
|
||||||
component: 'DatePicker',
|
width: 180
|
||||||
componentProps: {
|
|
||||||
type: 'datetimerange',
|
|
||||||
valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
|
||||||
defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)],
|
|
||||||
shortcuts: [
|
|
||||||
{
|
|
||||||
text: '近一周',
|
|
||||||
value: () => {
|
|
||||||
const end = new Date()
|
|
||||||
const start = new Date()
|
|
||||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
|
|
||||||
return [start, end]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: '近一个月',
|
|
||||||
value: () => {
|
|
||||||
const end = new Date()
|
|
||||||
const start = new Date()
|
|
||||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
|
|
||||||
return [start, end]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: '近三个月',
|
|
||||||
value: () => {
|
|
||||||
const end = new Date()
|
|
||||||
const start = new Date()
|
|
||||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
|
|
||||||
return [start, end]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
})
|
||||||
}
|
export const { allSchemas } = useVxeCrudSchemas(crudSchemas)
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '审批时间',
|
|
||||||
field: 'endTime'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '耗时',
|
|
||||||
field: 'durationInMillis'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: t('table.action'),
|
|
||||||
field: 'action',
|
|
||||||
width: '100px'
|
|
||||||
}
|
|
||||||
])
|
|
||||||
export const { allSchemas } = useCrudSchemas(crudSchemas)
|
|
||||||
|
|
|
@ -1,65 +1,37 @@
|
||||||
<script setup lang="ts" name="Done">
|
|
||||||
import dayjs from 'dayjs'
|
|
||||||
import duration from 'dayjs/plugin/duration'
|
|
||||||
import { DICT_TYPE } from '@/utils/dict'
|
|
||||||
import type { TaskDoneVO } from '@/api/bpm/task/types'
|
|
||||||
import { allSchemas } from './done.data'
|
|
||||||
import * as TaskDoneApi from '@/api/bpm/task'
|
|
||||||
import { useTable } from '@/hooks/web/useTable'
|
|
||||||
dayjs.extend(duration)
|
|
||||||
const { t } = useI18n() // 国际化
|
|
||||||
const { push } = useRouter()
|
|
||||||
// ========== 列表相关 ==========
|
|
||||||
const { register, tableObject, methods } = useTable<TaskDoneVO>({
|
|
||||||
getListApi: TaskDoneApi.getDoneTaskPage
|
|
||||||
})
|
|
||||||
const { getList, setSearchParams } = methods
|
|
||||||
|
|
||||||
// 审批操作
|
|
||||||
const handleAudit = async (row: TaskDoneVO) => {
|
|
||||||
push('/bpm/process-instance/detail?id=' + row.processInstance.id)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ========== 初始化 ==========
|
|
||||||
getList()
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<!-- 搜索工作区 -->
|
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<Search :schema="allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
|
<XTable @register="registerTable">
|
||||||
</ContentWrap>
|
<template #suspensionState_default="{ row }">
|
||||||
<ContentWrap>
|
<el-tag type="success" v-if="row.suspensionState === 1">激活</el-tag>
|
||||||
<!-- 列表 -->
|
<el-tag type="warning" v-if="row.suspensionState === 2">挂起</el-tag>
|
||||||
<Table
|
|
||||||
:columns="allSchemas.tableColumns"
|
|
||||||
:selection="false"
|
|
||||||
:data="tableObject.tableList"
|
|
||||||
:loading="tableObject.loading"
|
|
||||||
:pagination="{
|
|
||||||
total: tableObject.total
|
|
||||||
}"
|
|
||||||
v-model:pageSize="tableObject.pageSize"
|
|
||||||
v-model:currentPage="tableObject.currentPage"
|
|
||||||
@register="register"
|
|
||||||
>
|
|
||||||
<template #status="{ row }">
|
|
||||||
<DictTag :type="DICT_TYPE.COMMON_STATUS" :value="row.status" />
|
|
||||||
</template>
|
</template>
|
||||||
<template #createTime="{ row }">
|
<template #actionbtns_default="{ row }">
|
||||||
<span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span>
|
<!-- 操作: 审批进度 -->
|
||||||
|
<XTextButton preIcon="ep:view" title="详情" @click="handleAudit(row)" />
|
||||||
</template>
|
</template>
|
||||||
<template #endTime="{ row }">
|
</XTable>
|
||||||
<span>{{ dayjs(row.endTime).format('YYYY-MM-DD HH:mm:ss') }}</span>
|
|
||||||
</template>
|
|
||||||
<template #durationInMillis="{ row }">
|
|
||||||
<span>{{ dayjs.duration(row.durationInMillis).asMilliseconds() }}</span>
|
|
||||||
</template>
|
|
||||||
<template #action="{ row }">
|
|
||||||
<el-button link type="primary" v-hasPermi="['bpm:task:query']" @click="handleAudit(row)">
|
|
||||||
<Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }}
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</Table>
|
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
// 业务相关的 import
|
||||||
|
import { allSchemas } from './done.data'
|
||||||
|
import * as TaskApi from '@/api/bpm/task'
|
||||||
|
|
||||||
|
const router = useRouter() // 路由
|
||||||
|
|
||||||
|
const [registerTable] = useXTable({
|
||||||
|
allSchemas: allSchemas,
|
||||||
|
getListApi: TaskApi.getDoneTaskPage
|
||||||
|
})
|
||||||
|
|
||||||
|
// 处理审批按钮
|
||||||
|
const handleAudit = (row) => {
|
||||||
|
router.push({
|
||||||
|
name: 'BpmProcessInstanceDetail',
|
||||||
|
query: {
|
||||||
|
id: row.processInstanceId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue