5 changed files with 163 additions and 22 deletions
@ -1,3 +1,3 @@ |
|||||||
<template> |
<template> |
||||||
123 |
<div>123</div> |
||||||
</template> |
</template> |
||||||
|
@ -0,0 +1,32 @@ |
|||||||
|
import type { BasicColumn } from '@/components/Table' |
||||||
|
import { DICT_TYPE } from '@/utils/dict' |
||||||
|
import { useRender } from '@/components/Table' |
||||||
|
|
||||||
|
export const columns: BasicColumn[] = [ |
||||||
|
{ |
||||||
|
title: '流程名称', |
||||||
|
dataIndex: 'name', |
||||||
|
width: 120, |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '流程分类', |
||||||
|
dataIndex: 'category', |
||||||
|
width: 120, |
||||||
|
customRender: ({ text }) => { |
||||||
|
return useRender.renderDict(text, DICT_TYPE.BPM_MODEL_CATEGORY) |
||||||
|
}, |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '流程版本', |
||||||
|
dataIndex: 'name', |
||||||
|
width: 120, |
||||||
|
customRender: ({ text }) => { |
||||||
|
return useRender.renderTag(text) |
||||||
|
}, |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '流程描述', |
||||||
|
dataIndex: 'description', |
||||||
|
width: 200, |
||||||
|
}, |
||||||
|
] |
@ -1,3 +1,123 @@ |
|||||||
|
<script lang="ts" setup> |
||||||
|
import { Card, Steps } from 'ant-design-vue' |
||||||
|
import { ref } from 'vue' |
||||||
|
import { columns } from './create.data' |
||||||
|
import { useGo } from '@/hooks/web/usePage' |
||||||
|
import { useI18n } from '@/hooks/web/useI18n' |
||||||
|
import { useMessage } from '@/hooks/web/useMessage' |
||||||
|
import { PageWrapper } from '@/components/Page' |
||||||
|
import { IconEnum } from '@/enums/appEnum' |
||||||
|
import Icon from '@/components/Icon' |
||||||
|
import { BasicTable, TableAction, useTable } from '@/components/Table' |
||||||
|
import { getProcessDefinitionBpmnXML, getProcessDefinitionList } from '@/api/bpm/definition' |
||||||
|
import { createProcessInstance } from '@/api/bpm/processInstance' |
||||||
|
|
||||||
|
defineOptions({ name: 'BpmProcessInstanceCreate' }) |
||||||
|
|
||||||
|
const go = useGo() |
||||||
|
const { t } = useI18n() |
||||||
|
const { createMessage } = useMessage() |
||||||
|
const current = ref(0) |
||||||
|
|
||||||
|
const bpmnXML = ref(null) // BPMN 数据 |
||||||
|
const selectProcessInstance = ref() // 选择的流程实例 |
||||||
|
|
||||||
|
const [registerTable] = useTable({ |
||||||
|
api: getProcessDefinitionList, |
||||||
|
columns, |
||||||
|
actionColumn: { |
||||||
|
width: 140, |
||||||
|
title: t('common.action'), |
||||||
|
dataIndex: 'action', |
||||||
|
fixed: 'right', |
||||||
|
}, |
||||||
|
}) |
||||||
|
|
||||||
|
/** 处理选择流程的按钮操作 **/ |
||||||
|
async function handleSelect(row) { |
||||||
|
// 设置选择的流程 |
||||||
|
selectProcessInstance.value = row |
||||||
|
|
||||||
|
// 情况一:流程表单 |
||||||
|
if (row.formType === 10) { |
||||||
|
// 设置表单 |
||||||
|
// setConfAndFields2(detailForm, row.formConf, row.formFields) |
||||||
|
// 加载流程图 |
||||||
|
bpmnXML.value = await getProcessDefinitionBpmnXML(row.id) |
||||||
|
// 情况二:业务表单 |
||||||
|
} |
||||||
|
else if (row.formCustomCreatePath) { |
||||||
|
await go({ |
||||||
|
path: row.formCustomCreatePath, |
||||||
|
}) |
||||||
|
// 这里暂时无需加载流程图,因为跳出到另外个 Tab; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** 提交按钮 */ |
||||||
|
async function submitForm(formData) { |
||||||
|
// if (!fApi.value || !selectProcessInstance.value) |
||||||
|
// return |
||||||
|
|
||||||
|
// // 提交请求 |
||||||
|
// fApi.value.btn.loading(true) |
||||||
|
try { |
||||||
|
await createProcessInstance({ |
||||||
|
processDefinitionId: selectProcessInstance.value.id, |
||||||
|
variables: formData, |
||||||
|
}) |
||||||
|
// 提示 |
||||||
|
createMessage.success('发起流程成功') |
||||||
|
go() |
||||||
|
} |
||||||
|
finally { |
||||||
|
// fApi.value.btn.loading(false) |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
<template> |
<template> |
||||||
<div>123</div> |
<PageWrapper> |
||||||
|
<div class="step-form-form"> |
||||||
|
<Steps :current="current"> |
||||||
|
<Steps.Step title="选择流程" /> |
||||||
|
<Steps.Step title="流程提交" /> |
||||||
|
</Steps> |
||||||
|
</div> |
||||||
|
<div class="m-5"> |
||||||
|
<BasicTable v-if="!selectProcessInstance" @register="registerTable"> |
||||||
|
<template #bodyCell="{ column, record }"> |
||||||
|
<template v-if="column.key === 'action'"> |
||||||
|
<TableAction |
||||||
|
:actions="[ |
||||||
|
{ icon: IconEnum.SEND, label: '选择', onClick: handleSelect.bind(null, record) }, |
||||||
|
]" |
||||||
|
/> |
||||||
|
</template> |
||||||
|
</template> |
||||||
|
</BasicTable> |
||||||
|
<div v-if="selectProcessInstance"> |
||||||
|
<Card :title="`申请信息——【${selectProcessInstance.name}】`"> |
||||||
|
<template #extra> |
||||||
|
<a-button type="primary" @click="selectProcessInstance = undefined"> |
||||||
|
<Icon icon="ep:delete" /> 选择其它流程 |
||||||
|
</a-button> |
||||||
|
</template> |
||||||
|
<p>表单</p> |
||||||
|
<a-button type="primary" @click="submitForm"> |
||||||
|
提交 |
||||||
|
</a-button> |
||||||
|
<p>流程图</p> |
||||||
|
</Card> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</PageWrapper> |
||||||
</template> |
</template> |
||||||
|
|
||||||
|
<style lang="less" scoped> |
||||||
|
.step-form-form { |
||||||
|
width: 750px; |
||||||
|
margin: 0 auto; |
||||||
|
margin-top: 10px; |
||||||
|
} |
||||||
|
</style> |
||||||
|
Reference in new issue