From abe1c32b3e76864dd2f50d24cf36b2f19dfbaebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=90=E5=A4=9C?= <278898052@qq.com> Date: Wed, 7 May 2025 10:54:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E5=BC=8F=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/bpm/processExpression/index.ts | 53 ++++++ .../src/views/bpm/processExpression/data.ts | 151 ++++++++++++++++++ .../src/views/bpm/processExpression/index.vue | 136 +++++++++++++--- .../bpm/processExpression/modules/form.vue | 83 ++++++++++ 4 files changed, 402 insertions(+), 21 deletions(-) create mode 100644 apps/web-antd/src/api/bpm/processExpression/index.ts create mode 100644 apps/web-antd/src/views/bpm/processExpression/data.ts create mode 100644 apps/web-antd/src/views/bpm/processExpression/modules/form.vue diff --git a/apps/web-antd/src/api/bpm/processExpression/index.ts b/apps/web-antd/src/api/bpm/processExpression/index.ts new file mode 100644 index 000000000..9444dd26e --- /dev/null +++ b/apps/web-antd/src/api/bpm/processExpression/index.ts @@ -0,0 +1,53 @@ +import type { PageParam, PageResult } from '@vben/request'; + +import { requestClient } from '#/api/request'; + +export namespace BpmProcessExpressionApi { + /** BPM 流程表达式 VO */ + export interface ProcessExpressionVO { + id: number; // 编号 + name: string; // 表达式名字 + status: number; // 表达式状态 + expression: string; // 表达式 + } +} + +/** 查询流程表达式分页 */ +export async function getProcessExpressionPage(params: PageParam) { + return requestClient.get< + PageResult + >('/bpm/process-expression/page', { params }); +} + +/** 查询流程表达式详情 */ +export async function getProcessExpression(id: number) { + return requestClient.get( + `/bpm/process-expression/get?id=${id}`, + ); +} + +/** 新增流程表达式 */ +export async function createProcessExpression( + data: BpmProcessExpressionApi.ProcessExpressionVO, +) { + return requestClient.post('/bpm/process-expression/create', data); +} + +/** 修改流程表达式 */ +export async function updateProcessExpression( + data: BpmProcessExpressionApi.ProcessExpressionVO, +) { + return requestClient.put('/bpm/process-expression/update', data); +} + +/** 删除流程表达式 */ +export async function deleteProcessExpression(id: number) { + return requestClient.delete( + `/bpm/process-expression/delete?id=${id}`, + ); +} + +/** 导出流程表达式 */ +export async function exportProcessExpression(params: any) { + return requestClient.download('/bpm/process-expression/export-excel', params); +} diff --git a/apps/web-antd/src/views/bpm/processExpression/data.ts b/apps/web-antd/src/views/bpm/processExpression/data.ts new file mode 100644 index 000000000..fd148b86a --- /dev/null +++ b/apps/web-antd/src/views/bpm/processExpression/data.ts @@ -0,0 +1,151 @@ +import type { VbenFormSchema } from '#/adapter/form'; +import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; +import type { BpmProcessExpressionApi } from '#/api/bpm/processExpression'; + +import { useAccess } from '@vben/access'; + +import { z } from '#/adapter/form'; +import { CommonStatusEnum, DICT_TYPE, getDictOptions } from '#/utils'; + +const { hasAccessByCodes } = useAccess(); +/** 新增/修改的表单 */ +export function useFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'id', + component: 'Input', + dependencies: { + triggerFields: [''], + show: () => false, + }, + }, + { + fieldName: 'name', + label: '名字', + component: 'Input', + componentProps: { + placeholder: '请输入名字', + }, + rules: 'required', + }, + { + fieldName: 'status', + label: '状态', + component: 'RadioGroup', + componentProps: { + options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'), + buttonStyle: 'solid', + optionType: 'button', + }, + rules: z.number().default(CommonStatusEnum.ENABLE), + }, + { + fieldName: 'expression', + label: '表达式', + component: 'Textarea', + componentProps: { + placeholder: '请输入表达式', + }, + rules: 'required', + }, + ]; +} + +/** 列表的搜索表单 */ +export function useGridFormSchema(): VbenFormSchema[] { + return [ + { + fieldName: 'name', + label: '名字', + component: 'Input', + componentProps: { + placeholder: '请输入名字', + allowClear: true, + }, + }, + { + fieldName: 'status', + label: '状态', + component: 'Select', + componentProps: { + options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'), + placeholder: '请选择状态', + allowClear: true, + }, + }, + { + fieldName: 'createTime', + label: '创建时间', + component: 'RangePicker', + componentProps: { + placeholder: ['开始时间', '结束时间'], + valueFormat: 'YYYY-MM-DD HH:mm:ss', + allowClear: true, + }, + }, + ]; +} + +/** 列表的字段 */ +export function useGridColumns( + onActionClick: OnActionClickFn, +): VxeTableGridOptions['columns'] { + return [ + { + field: 'id', + title: '编号', + minWidth: 100, + }, + { + field: 'name', + title: '名字', + minWidth: 200, + }, + + { + field: 'status', + title: '状态', + minWidth: 100, + cellRender: { + name: 'CellDict', + props: { type: DICT_TYPE.COMMON_STATUS }, + }, + }, + { + field: 'expression', + title: '表达式', + minWidth: 200, + }, + { + field: 'createTime', + title: '创建时间', + minWidth: 180, + formatter: 'formatDateTime', + }, + { + field: 'operation', + title: '操作', + minWidth: 180, + align: 'center', + fixed: 'right', + cellRender: { + attrs: { + nameField: 'name', + nameTitle: '流程表达式', + onClick: onActionClick, + }, + name: 'CellOperation', + options: [ + { + code: 'edit', + show: hasAccessByCodes(['bpm:process-expression:update']), + }, + { + code: 'delete', + show: hasAccessByCodes(['bpm:process-expression:delete']), + }, + ], + }, + }, + ]; +} diff --git a/apps/web-antd/src/views/bpm/processExpression/index.vue b/apps/web-antd/src/views/bpm/processExpression/index.vue index 80bf15bf0..0e32548c8 100644 --- a/apps/web-antd/src/views/bpm/processExpression/index.vue +++ b/apps/web-antd/src/views/bpm/processExpression/index.vue @@ -1,31 +1,125 @@ diff --git a/apps/web-antd/src/views/bpm/processExpression/modules/form.vue b/apps/web-antd/src/views/bpm/processExpression/modules/form.vue new file mode 100644 index 000000000..9a9a526ab --- /dev/null +++ b/apps/web-antd/src/views/bpm/processExpression/modules/form.vue @@ -0,0 +1,83 @@ + + + -- Gitee