康来智慧冷链系统 - 前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

145 lines
4.4 KiB

<template>
<PageWrapper
contentClass="flex"
contentFullHeight
fixedHeight
dense
>
<div class="m-4 mr-0 overflow-hidden bg-white w-1/4 xl:w-1/5">
<BasicTree title="流程分类"
toolbar
search
defaultExpandAll
:clickRowToExpand="false"
:treeData="state.treeData"
:fieldNames="{ key: 'id', title: 'name' }"
@select="handleSelect"
/>
</div>
<BasicTable class="w-3/4 xl:w-4/5" @register="registerTable">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '启动流程',
icon: 'fa-brands:discord',
onClick: handleProcessDefinitionStart.bind(null, record)
}]"
/>
</template>
</template>
</BasicTable>
</PageWrapper>
</template>
<script lang="ts" name="Process">
/**
* 提供模板规范代码参考,请尽量保证编写代码风格跟模板规范代码一致
* 采用vben-动态表格表单封装组件编写,不采用 setup 写法
* Copyright © 2023-2023 <a href="https://godolphinx.org">海豚生态开源社区</a> All rights reserved.
* author wangxiang4
*/
import { defineComponent, onMounted, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { listProcessDef } from '/@/api/platform/workflow/controller/process';
import { columns, searchFormSchema } from './process.data';
import { PageWrapper } from '/@/components/Page';
import { BasicTree, TreeItem } from '/@/components/Tree';
import { listToTree } from '/@/utils/helper/treeHelper';
import { listProcessCategory } from '/@/api/platform/workflow/extension/controller/processCategory';
import { getTaskDefinition } from '/@/api/platform/workflow/controller/task';
import { useUserStore } from '/@/store/modules/user';
import { formatToDateTime } from '/@/utils/dateUtil';
import { useRouter } from 'vue-router';
/** 类型规范统一声明定义区域 */
interface TableState {
treeData: TreeItem[];
}
export default defineComponent({
name: 'WorkflowProcess',
components: {
PageWrapper,
BasicTable,
TableAction,
BasicTree
},
setup() {
/** 通用变量统一声明区域 */
const state = reactive<TableState>({
treeData: []
});
const userStore = useUserStore();
const { push } = useRouter();
const [registerTable, { reload, getForm }] = useTable({
title: '流程定义列表',
api: listProcessDef,
rowKey: 'id',
columns,
formConfig: {
compact: true,
labelWidth: 100,
schemas: searchFormSchema,
autoSubmitOnEnter: true,
showAdvancedButton: true,
autoAdvancedLine: 3
},
useSearchForm: true,
showTableSetting: true,
bordered: true,
clickToRowSelect: false,
showIndexColumn: false,
actionColumn: {
width: 240,
title: '操作',
dataIndex: 'action',
fixed: false
}
});
onMounted(async () => {
state.treeData = listToTree(await listProcessCategory());
});
async function handleProcessDefinitionStart(record?: Recordable) {
const tabTitle = `启动流程【${record?.name}`;
const formTitle = `${userStore.getUserInfo.nickName}${formatToDateTime()} 发起了 [${record?.name}]`;
const data = await getTaskDefinition( { processDefId: record?.id });
await push({
path: '/workflow/task/taskForm',
query: {
_meta: 'y',
processDefId: record?.id,
processDefKey: record?.key,
status: 'start',
title: tabTitle,
formTitle: formTitle,
formType: data.formType,
formKey: data.formKey
}
});
}
function handleSelect(selectedKeys: string[]) {
getForm().setFieldsValue({
categoryId: selectedKeys[0]
});
getForm().submit();
}
function handleRefreshTable() {
reload();
}
return {
state,
registerTable,
handleRefreshTable,
handleProcessDefinitionStart,
handleSelect,
};
}
});
</script>