From 61ff8119a6afba03c01d1e83bb23de904c2c5c5b Mon Sep 17 00:00:00 2001 From: xingyu Date: Mon, 15 May 2023 18:12:28 +0800 Subject: [PATCH] feat: bpm form init --- src/components/FormDesign/src/utils/index.ts | 50 +++++++ src/router/routes/index.ts | 127 +++++++++++++++++- src/views/bpm/form/FormModal.vue | 41 ++++++ src/views/bpm/form/editor/index.vue | 8 ++ src/views/bpm/form/index.vue | 25 +++- src/views/bpm/group/index.vue | 6 +- src/views/bpm/model/editor/index.vue | 1 + src/views/bpm/model/index.vue | 6 +- src/views/bpm/oa/leave/create.vue | 1 + src/views/bpm/oa/leave/detail.vue | 1 + .../bpm/processInstance/create/index.vue | 1 + .../bpm/processInstance/detail/index.vue | 1 + 12 files changed, 255 insertions(+), 13 deletions(-) create mode 100644 src/views/bpm/form/FormModal.vue create mode 100644 src/views/bpm/form/editor/index.vue create mode 100644 src/views/bpm/model/editor/index.vue create mode 100644 src/views/bpm/oa/leave/create.vue create mode 100644 src/views/bpm/oa/leave/detail.vue create mode 100644 src/views/bpm/processInstance/create/index.vue create mode 100644 src/views/bpm/processInstance/detail/index.vue diff --git a/src/components/FormDesign/src/utils/index.ts b/src/components/FormDesign/src/utils/index.ts index 859a4f8..566ab8b 100644 --- a/src/components/FormDesign/src/utils/index.ts +++ b/src/components/FormDesign/src/utils/index.ts @@ -193,3 +193,53 @@ export const runCode = (code: any): T => { return code } } + +/** + * 针对 https://github.com/xaboy/form-create-designer 封装的工具类 + */ + +// 编码表单 Conf +export const encodeConf = (designerRef: object) => { + // @ts-ignore + return JSON.stringify(designerRef.value.getOption()) +} + +// 编码表单 Fields +export const encodeFields = (designerRef: object) => { + // @ts-ignore + const rule = designerRef.value.getRule() + const fields: string[] = [] + rule.forEach((item) => { + fields.push(JSON.stringify(item)) + }) + return fields +} + +// 解码表单 Fields +export const decodeFields = (fields: string[]) => { + const rule: object[] = [] + fields.forEach((item) => { + rule.push(JSON.parse(item)) + }) + return rule +} + +// 设置表单的 Conf 和 Fields +export const setConfAndFields = (designerRef: object, conf: string, fields: string) => { + // @ts-ignore + designerRef.value.setOption(JSON.parse(conf)) + // @ts-ignore + designerRef.value.setRule(decodeFields(fields)) +} + +// 设置表单的 Conf 和 Fields +export const setConfAndFields2 = (detailPreview: object, conf: string, fields: string, value?: object) => { + // @ts-ignore + detailPreview.value.option = JSON.parse(conf) + // @ts-ignore + detailPreview.value.rule = decodeFields(fields) + if (value) { + // @ts-ignore + detailPreview.value.value = value + } +} diff --git a/src/router/routes/index.ts b/src/router/routes/index.ts index 125aea6..167c472 100644 --- a/src/router/routes/index.ts +++ b/src/router/routes/index.ts @@ -149,6 +149,131 @@ export const PayRoute: AppRouteRecordRaw = { ] } +export const BpmRoute: AppRouteRecordRaw = { + path: '/bpm', + component: LAYOUT, + name: 'bpm', + meta: { + title: '工作流', + hidden: true + }, + children: [ + { + path: '/manager/form/edit', + component: () => import('@/views/bpm/form/editor/index.vue'), + name: 'BpmFormEditor', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ant-design:edit-outlined', + title: '设计流程表单', + activeMenu: '/bpm/manager/form' + } + }, + { + path: '/manager/model/edit', + component: () => import('@/views/bpm/model/editor/index.vue'), + name: 'BpmModelEditor', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ant-design:edit-outlined', + title: '设计流程', + activeMenu: '/bpm/manager/model' + } + }, + { + path: '/manager/definition', + component: () => import('@/views/bpm/definition/index.vue'), + name: 'BpmProcessDefinition', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ant-design:edit-outlined', + title: '流程定义', + activeMenu: '/bpm/manager/model' + } + }, + { + path: '/manager/task-assign-rule', + component: () => import('@/views/bpm/taskAssignRule/index.vue'), + name: 'BpmTaskAssignRuleList', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ant-design:edit-outlined', + title: '任务分配规则' + } + }, + { + path: '/process-instance/create', + component: () => import('@/views/bpm/processInstance/create/index.vue'), + name: 'BpmProcessInstanceCreate', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ant-design:edit-outlined', + title: '发起流程', + activeMenu: 'bpm/processInstance/create' + } + }, + { + path: '/process-instance/detail', + component: () => import('@/views/bpm/processInstance/detail/index.vue'), + name: 'BpmProcessInstanceDetail', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ant-design:edit-outlined', + title: '流程详情', + activeMenu: 'bpm/processInstance/detail' + } + }, + { + path: '/bpm/oa/leave/create', + component: () => import('@/views/bpm/oa/leave/create.vue'), + name: 'OALeaveCreate', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ant-design:edit-outlined', + title: '发起 OA 请假', + activeMenu: 'bpm/oa/leave' + } + }, + { + path: '/process-instance/detail', + component: () => import('@/views/bpm/oa/leave/detail.vue'), + name: 'OALeaveDetail', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ant-design:edit-outlined', + title: '查看 OA 请假', + activeMenu: 'bpm/oa/leave' + } + } + ] +} + // Basic routing without permission // 未经许可的基本路由 -export const basicRoutes = [LoginRoute, RootRoute, ProfileRoute, CodegenRoute, JobLogRoute, PayRoute, REDIRECT_ROUTE, PAGE_NOT_FOUND_ROUTE] +export const basicRoutes = [ + LoginRoute, + RootRoute, + ProfileRoute, + CodegenRoute, + JobLogRoute, + PayRoute, + BpmRoute, + REDIRECT_ROUTE, + PAGE_NOT_FOUND_ROUTE +] diff --git a/src/views/bpm/form/FormModal.vue b/src/views/bpm/form/FormModal.vue new file mode 100644 index 0000000..ce774dc --- /dev/null +++ b/src/views/bpm/form/FormModal.vue @@ -0,0 +1,41 @@ + + diff --git a/src/views/bpm/form/editor/index.vue b/src/views/bpm/form/editor/index.vue new file mode 100644 index 0000000..30117ee --- /dev/null +++ b/src/views/bpm/form/editor/index.vue @@ -0,0 +1,8 @@ + + diff --git a/src/views/bpm/form/index.vue b/src/views/bpm/form/index.vue index ca38e43..d453155 100644 --- a/src/views/bpm/form/index.vue +++ b/src/views/bpm/form/index.vue @@ -2,7 +2,7 @@
@@ -10,12 +10,13 @@