diff --git a/src/components/custom/workflow-category-select.vue b/src/components/custom/workflow-category-select.vue
new file mode 100644
index 00000000..d3ce2e4b
--- /dev/null
+++ b/src/components/custom/workflow-category-select.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
diff --git a/src/constants/workflow.ts b/src/constants/workflow.ts
new file mode 100644
index 00000000..234681be
--- /dev/null
+++ b/src/constants/workflow.ts
@@ -0,0 +1,10 @@
+import { transformRecordToOption } from '@/utils/common';
+
+/** workflow publish status */
+export const workflowPublishStatusRecord: Record = {
+ '0': '未发布',
+ '1': '已发布',
+ '9': '失效'
+};
+
+export const workflowPublishStatusOptions = transformRecordToOption(workflowPublishStatusRecord);
diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts
index 3730e8bd..0e9fc22f 100644
--- a/src/locales/langs/en-us.ts
+++ b/src/locales/langs/en-us.ts
@@ -217,7 +217,8 @@ const local: App.I18n.Schema = {
exception: 'Exception',
exception_403: '403',
exception_404: '404',
- exception_500: '500'
+ exception_500: '500',
+ 'workflow_process-definition': 'Process Definition'
},
page: {
login: {
diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts
index e2bb23e6..fe46e957 100644
--- a/src/locales/langs/zh-cn.ts
+++ b/src/locales/langs/zh-cn.ts
@@ -217,7 +217,8 @@ const local: App.I18n.Schema = {
exception: '异常页',
exception_403: '403',
exception_404: '404',
- exception_500: '500'
+ exception_500: '500',
+ 'workflow_process-definition': '流程定义'
},
page: {
login: {
diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts
index 6ddf682e..e6206e98 100644
--- a/src/router/elegant/imports.ts
+++ b/src/router/elegant/imports.ts
@@ -44,4 +44,5 @@ export const views: Record Promise import("@/views/system/user/index.vue"),
tool_gen: () => import("@/views/tool/gen/index.vue"),
workflow_category: () => import("@/views/workflow/category/index.vue"),
+ "workflow_process-definition": () => import("@/views/workflow/process-definition/index.vue"),
};
diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts
index 556719cf..85d79599 100644
--- a/src/router/elegant/routes.ts
+++ b/src/router/elegant/routes.ts
@@ -349,6 +349,15 @@ export const generatedRoutes: GeneratedRoute[] = [
title: 'workflow_category',
i18nKey: 'route.workflow_category'
}
+ },
+ {
+ name: 'workflow_process-definition',
+ path: '/workflow/process-definition',
+ component: 'view.workflow_process-definition',
+ meta: {
+ title: 'workflow_process-definition',
+ i18nKey: 'route.workflow_process-definition'
+ }
}
]
}
diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts
index 13279891..4a54703c 100644
--- a/src/router/elegant/transform.ts
+++ b/src/router/elegant/transform.ts
@@ -200,7 +200,8 @@ const routeMap: RouteMap = {
"tool_gen": "/tool/gen",
"user-center": "/user-center",
"workflow": "/workflow",
- "workflow_category": "/workflow/category"
+ "workflow_category": "/workflow/category",
+ "workflow_process-definition": "/workflow/process-definition"
};
/**
diff --git a/src/service/api/workflow/category.ts b/src/service/api/workflow/category.ts
index 2e6fc97c..e0c8bdcb 100644
--- a/src/service/api/workflow/category.ts
+++ b/src/service/api/workflow/category.ts
@@ -43,3 +43,11 @@ export function fetchExportCategory(params?: Api.Workflow.WorkflowCategorySearch
params
});
}
+
+/** 获取分类树 */
+export function fetchGetCategoryTree() {
+ return request({
+ url: '/workflow/category/categoryTree',
+ method: 'get'
+ });
+}
diff --git a/src/service/api/workflow/definition.ts b/src/service/api/workflow/definition.ts
new file mode 100644
index 00000000..e891c437
--- /dev/null
+++ b/src/service/api/workflow/definition.ts
@@ -0,0 +1,56 @@
+import { request } from '@/service/request';
+
+/** 获取流程定义列表 */
+export function fetchGetDefinitionList(params?: Api.Workflow.DefinitionSearchParams) {
+ return request({
+ url: '/workflow/definition/list',
+ method: 'get',
+ params
+ });
+}
+
+/** 获取未发布流程定义列表 */
+export function fetchGetUnPublishDefinitionList(params?: Api.Workflow.DefinitionSearchParams) {
+ return request({
+ url: '/workflow/definition/unPublishList',
+ method: 'get',
+ params
+ });
+}
+
+/** 新增流程定义 */
+export function fetchCreateDefinition(data: Api.Workflow.DefinitionOperateParams) {
+ return request({
+ url: '/workflow/definition',
+ method: 'post',
+ data
+ });
+}
+
+/** 修改流程定义 */
+export function fetchUpdateDefinition(data: Api.Workflow.DefinitionOperateParams) {
+ return request({
+ url: '/workflow/definition',
+ method: 'put',
+ data
+ });
+}
+
+/** 批量删除流程定义 */
+export function fetchBatchDeleteDefinition(ids: CommonType.IdType[]) {
+ return request({
+ url: `/workflow/definition/${ids.join(',')}`,
+ method: 'delete'
+ });
+}
+
+/** 激活/挂起流程定义 */
+export function fetchActiveDefinition(id: CommonType.IdType, active: boolean) {
+ return request({
+ url: `/workflow/definition/active/${id}`,
+ method: 'put',
+ params: {
+ active
+ }
+ });
+}
diff --git a/src/service/api/workflow/index.ts b/src/service/api/workflow/index.ts
index 182b5fe1..901afeb2 100644
--- a/src/service/api/workflow/index.ts
+++ b/src/service/api/workflow/index.ts
@@ -1 +1,2 @@
export * from './category';
+export * from './definition';
diff --git a/src/typings/api/workflow.api.d.ts b/src/typings/api/workflow.api.d.ts
index 10587e95..781e52f4 100644
--- a/src/typings/api/workflow.api.d.ts
+++ b/src/typings/api/workflow.api.d.ts
@@ -40,5 +40,51 @@ declare namespace Api {
/** 工作流分类列表 */
type WorkflowCategoryList = WorkflowCategory[];
+
+ /** 工作流发布状态 */
+ type WorkflowPublishStatus = 0 | 1 | 9;
+
+ /** definition */
+ type Definition = Common.CommonTenantRecord<{
+ /** 主键id */
+ id: CommonType.IdType;
+ /** 流程编码 */
+ flowCode: string;
+ /** 流程名称 */
+ flowName: string;
+ /** 流程类别 */
+ category: string;
+ /** 流程版本 */
+ version: string;
+ /** 是否发布(0未发布 1已发布 9失效) */
+ isPublish: WorkflowPublishStatus;
+ /** 审批表单是否自定义(Y是 N否) */
+ formCustom: string;
+ /** 审批表单路径 */
+ formPath: string;
+ /** 流程激活状态(0挂起 1激活) */
+ activityStatus: number;
+ /** 监听器类型 */
+ listenerType: string;
+ /** 监听器路径 */
+ listenerPath: string;
+ /** 业务详情 存业务表对象json字符串 */
+ ext: string;
+ /** 删除标志 */
+ delFlag: string;
+ }>;
+
+ /** definition search params */
+ type DefinitionSearchParams = CommonType.RecordNullable<
+ Pick & Api.Common.CommonSearchParams
+ >;
+
+ /** definition operate params */
+ type DefinitionOperateParams = CommonType.RecordNullable<
+ Pick
+ >;
+
+ /** definition list */
+ type DefinitionList = Api.Common.PaginatingQueryRecord;
}
}
diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts
index 6ae162ed..9c620148 100644
--- a/src/typings/components.d.ts
+++ b/src/typings/components.d.ts
@@ -12,6 +12,7 @@ declare module 'vue' {
BetterScroll: typeof import('./../components/custom/better-scroll.vue')['default']
BooleanTag: typeof import('./../components/custom/boolean-tag.vue')['default']
ButtonIcon: typeof import('./../components/custom/button-icon.vue')['default']
+ copy: typeof import('./../components/custom/dept-tree-select copy.vue')['default']
CountTo: typeof import('./../components/custom/count-to.vue')['default']
DarkModeContainer: typeof import('./../components/common/dark-mode-container.vue')['default']
DeptTree: typeof import('./../components/custom/dept-tree.vue')['default']
@@ -144,5 +145,6 @@ declare module 'vue' {
ThemeSchemaSwitch: typeof import('./../components/common/theme-schema-switch.vue')['default']
UserSelect: typeof import('./../components/custom/user-select.vue')['default']
WaveBg: typeof import('./../components/custom/wave-bg.vue')['default']
+ WorkflowCategorySelect: typeof import('./../components/custom/workflow-category-select.vue')['default']
}
}
diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts
index b05f3c7a..58a4bd96 100644
--- a/src/typings/elegant-router.d.ts
+++ b/src/typings/elegant-router.d.ts
@@ -55,6 +55,7 @@ declare module "@elegant-router/types" {
"user-center": "/user-center";
"workflow": "/workflow";
"workflow_category": "/workflow/category";
+ "workflow_process-definition": "/workflow/process-definition";
};
/**
@@ -149,6 +150,7 @@ declare module "@elegant-router/types" {
| "system_user"
| "tool_gen"
| "workflow_category"
+ | "workflow_process-definition"
>;
/**
diff --git a/src/views/workflow/category/index.vue b/src/views/workflow/category/index.vue
index 560c12b5..ec91c56f 100644
--- a/src/views/workflow/category/index.vue
+++ b/src/views/workflow/category/index.vue
@@ -197,7 +197,6 @@ function handleExport() {
v-model:visible="drawerVisible"
:operate-type="operateType"
:row-data="editingData"
- :category-tree-list="data"
@submitted="getData"
/>
diff --git a/src/views/workflow/category/modules/category-operate-drawer.vue b/src/views/workflow/category/modules/category-operate-drawer.vue
index 55a55a52..42c30e07 100644
--- a/src/views/workflow/category/modules/category-operate-drawer.vue
+++ b/src/views/workflow/category/modules/category-operate-drawer.vue
@@ -12,8 +12,6 @@ interface Props {
operateType: NaiveUI.TableOperateType;
/** the edit row data */
rowData?: Api.Workflow.WorkflowCategory | null;
- /** the category data */
- categoryTreeList?: Api.Workflow.WorkflowCategory[] | null;
}
const props = defineProps();
@@ -109,15 +107,7 @@ watch(visible, () => {
-
+
diff --git a/src/views/workflow/process-definition/index.vue b/src/views/workflow/process-definition/index.vue
new file mode 100644
index 00000000..5561b125
--- /dev/null
+++ b/src/views/workflow/process-definition/index.vue
@@ -0,0 +1,352 @@
+
+
+
+
+
+ handleResetTreeData()">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 部署流程文件
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/workflow/process-definition/modules/definition-import-modal.vue b/src/views/workflow/process-definition/modules/definition-import-modal.vue
new file mode 100644
index 00000000..4b37d7fe
--- /dev/null
+++ b/src/views/workflow/process-definition/modules/definition-import-modal.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 请选择 JSON 流程文件上传
+
+ 仅支持 JSON 格式文件
+
+ PS: 如若部署请部署从本项目模型管理导出的数据
+
+
+
+
+
+ {{ $t('common.import') }}
+
+
+
+
+
+
diff --git a/src/views/workflow/process-definition/modules/definition-operate-drawer.vue b/src/views/workflow/process-definition/modules/definition-operate-drawer.vue
new file mode 100644
index 00000000..dea20f1f
--- /dev/null
+++ b/src/views/workflow/process-definition/modules/definition-operate-drawer.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common.cancel') }}
+ {{ $t('common.confirm') }}
+
+
+
+
+
+
+
diff --git a/src/views/workflow/process-definition/modules/definition-search.vue b/src/views/workflow/process-definition/modules/definition-search.vue
new file mode 100644
index 00000000..1d7745d1
--- /dev/null
+++ b/src/views/workflow/process-definition/modules/definition-search.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common.reset') }}
+
+
+
+
+
+ {{ $t('common.search') }}
+
+
+
+
+
+
+
+
+
+
+