From a0b961da7b805d69fa168926cab913c603e2e894 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Mon, 31 Jul 2023 17:41:36 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9E=B6=E6=9E=84=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.js | 7 +- .../extension/form/FormCategoryModal.vue | 26 +++-- .../workflow/extension/form/form.data.ts | 60 ++++++++++ src/views/workflow/extension/form/index.vue | 65 +++++++++-- .../extension/formJson/FormJsonModal.vue | 103 ------------------ .../workflow/extension/formJson/index.vue | 3 - 6 files changed, 137 insertions(+), 127 deletions(-) delete mode 100644 src/views/workflow/extension/formJson/FormJsonModal.vue diff --git a/.eslintrc.js b/.eslintrc.js index 7244420..bf60e74 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -62,8 +62,8 @@ module.exports = defineConfig({ 'vue/attribute-hyphenation': 'off', 'vue/require-default-prop': 'off', 'vue/html-end-tags': 'error', - 'vue/html-quotes': [ 'error', 'double', { 'avoidEscape': false } ], - 'vue/no-multi-spaces': ['error', { 'ignoreProperties': false }], + 'vue/html-quotes': ['error', 'double', {'avoidEscape': false}], + 'vue/no-multi-spaces': ['error', {'ignoreProperties': false}], 'vue/html-closing-bracket-newline': ['error', { 'singleline': 'never', 'multiline': 'always' @@ -95,7 +95,7 @@ module.exports = defineConfig({ }], 'vue/this-in-template': ['error', 'never'], 'vue/component-tags-order': ['error', { - 'order': [ [ 'script', 'template' ], 'style' ] + 'order': [['script', 'template'], 'style'] }], 'vue/attributes-order': ['error', { 'order': [ @@ -115,5 +115,6 @@ module.exports = defineConfig({ }], 'vue/no-v-html': 'off', 'vue/multi-word-component-names': 'off', + 'vue/first-attribute-linebreak': 'off', } }); diff --git a/src/views/workflow/extension/form/FormCategoryModal.vue b/src/views/workflow/extension/form/FormCategoryModal.vue index 949d877..49a7dad 100644 --- a/src/views/workflow/extension/form/FormCategoryModal.vue +++ b/src/views/workflow/extension/form/FormCategoryModal.vue @@ -18,9 +18,10 @@ */ import { ref, unref } from 'vue'; import { BasicForm, useForm } from '/@/components/Form/index'; -import { formSchema } from './form.data'; -import { addFormDefinition, editFormDefinition, getFormDefinition } from '/@/api/platform/workflow/extension/controller/formDefinition'; +import { formCategorySchema } from './form.data'; import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal'; +import { listFormCategory, getFormCategory, addFormCategory, editFormCategory } from '/@/api/platform/workflow/extension/controller/formCategory'; +import { listToTree } from '/@/utils/helper/treeHelper'; /** 通用变量统一声明区域 */ const tag = ref>(''); @@ -28,7 +29,7 @@ const tag = ref>(''); const emit = defineEmits(['success', 'register']); const [registerForm, { resetFields, setFieldsValue, validate, clearValidate, updateSchema }] = useForm({ labelWidth: 100, - schemas: formSchema, + schemas: formCategorySchema, showActionButtonGroup: false, baseColProps: { span: 24 } }); @@ -38,16 +39,25 @@ const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data await clearValidate(); // 处理设置数据 tag.value = data._tag; + const rootTree = { id: '0', name: '顶级分类', children: [] }; + rootTree.children = listToTree(await listFormCategory()); + await updateSchema({ + field: 'parentId', + componentProps: { + treeData: [rootTree] + } + }); const id = data.record?.id; const props: Partial = { confirmLoading: false }; // 采用tag标签区分操作 switch (unref(tag)) { case 'add': - props.title = '新增流程表单'; + props.title = '新增表单分类'; + id && await setFieldsValue({ parentId: id }); break; case 'edit': - props.title = '编辑流程表单'; - await setFieldsValue(await getFormDefinition(id)); + props.title = '编辑表单分类'; + await setFieldsValue(await getFormCategory(id)); break; } // 尾部:设置处理后的最终配置数据 @@ -64,10 +74,10 @@ async function handleSubmit() { // 采用tag标签区分操作 switch (unref(tag)) { case 'add': - await addFormDefinition(formData); + await addFormCategory(formData); break; case 'edit': - await editFormDefinition(formData); + await editFormCategory(formData); break; } // 处理提交完成之后逻辑 diff --git a/src/views/workflow/extension/form/form.data.ts b/src/views/workflow/extension/form/form.data.ts index ebb9ce8..1fd7e88 100644 --- a/src/views/workflow/extension/form/form.data.ts +++ b/src/views/workflow/extension/form/form.data.ts @@ -109,3 +109,63 @@ export const formSchema: FormSchema[] = [ required: true, }, ]; + +export const formCategorySchema: FormSchema[] = [ + { + field: 'id', + label: 'ID', + component: 'Input', + show: false + }, + { + field: 'parentId', + label: '上级分类', + component: 'ApiTreeSelect', + componentProps: { + placeholder: '请选择分类', + fieldNames: { + label: 'name', + key: 'id', + value: 'id' + }, + getPopupContainer: () => document.body, + }, + required: true, + }, + { + field: 'name', + label: '名称', + component: 'Input', + componentProps: { + placeholder: '请输入名称', + }, + required: true, + colProps: { + span: 12 + } + }, + { + field: 'sort', + label: '排序', + component: 'InputNumber', + componentProps: { + style: { width:'100%' }, + min: 0 + }, + required: true, + colProps: { + span: 12 + } + }, + { + label: '备注', + field: 'remarks', + component: 'InputTextArea', + componentProps: { + rows: 6 + }, + colProps: { + span: 24 + } + } +]; diff --git a/src/views/workflow/extension/form/index.vue b/src/views/workflow/extension/form/index.vue index c85a804..9d84bfe 100644 --- a/src/views/workflow/extension/form/index.vue +++ b/src/views/workflow/extension/form/index.vue @@ -17,7 +17,7 @@ type="primary" shape="circle" size="small" - @click="handleAdd()" + @click="handleFormCategoryAdd()" > @@ -28,19 +28,19 @@ @@ -82,13 +82,13 @@ label: '修改', icon: 'fa-solid:mortar-pestle', color: 'error', - onClick: handleDel.bind(null, record) + onClick: handleEdit.bind(null, record) }]" :dropDownActions="[ { label: '版本管理', icon: 'fa-solid:mortar-pestle', - onClick: handleDel.bind(null, record), + onClick: handleWorkFlowVersion.bind(null, record), }, { label: '删除', @@ -101,6 +101,7 @@ + @@ -113,11 +114,12 @@ import { BasicTree, TreeItem } from '/@/components/Tree'; import { useModal } from '/@/components/Modal'; import FormModal from './FormModal.vue'; + import FormCategoryModal from './FormCategoryModal.vue'; import WorkflowFormDesign from './helper/WorkflowFormDesign.vue'; import { columns, searchFormSchema } from './form.data'; import { useMessage } from '/@/hooks/web/useMessage'; import { listToTree } from '/@/utils/helper/treeHelper'; - import { listFormCategory } from '/@/api/platform/workflow/extension/controller/formCategory'; + import { listFormCategory, delFormCategory } from '/@/api/platform/workflow/extension/controller/formCategory'; import { PlusOutlined, FormOutlined, DeleteOutlined } from '@ant-design/icons-vue'; /** 类型规范统一声明定义区域 */ @@ -141,6 +143,7 @@ FormOutlined, DeleteOutlined, WorkflowFormDesign, + FormCategoryModal }, setup() { @@ -159,6 +162,7 @@ const { createConfirm, createMessage } = useMessage(); const [registerModal, { openModal }] = useModal(); + const [registerFormCategoryModal, { openModal: openFormCategoryModal }] = useModal(); const [registerWorkflowFormModal , { openModal: openWorkflowFormModal }] = useModal(); const [registerTable, { reload, clearSelectedRowKeys, getForm }] = useTable({ title: '流程表单列表', @@ -202,8 +206,8 @@ } /** 新增按钮操作,行内新增与工具栏局域新增通用 */ - function handleAdd() { - openModal(true,{ _tag: 'add' }); + function handleAdd(record?: Recordable) { + openModal(true, { _tag: 'add', record }); } /** 编辑按钮操作,行内编辑 */ @@ -227,18 +231,53 @@ }); } + /** 处理添加表单分类 */ + function handleFormCategoryAdd(record?: Recordable) { + openFormCategoryModal(true,{ _tag: 'add', record }); + } + + /** 处理编辑表单分类 */ + function handleFormCategoryEdit(record?: Recordable) { + openFormCategoryModal(true, { _tag: 'edit', record }); + } + + /** 处理表单分类删除 */ + async function handleFormCategoryDel(record?: Recordable) { + const id = record?.id; + createConfirm({ + iconType: 'warning', + title: '警告', + content: `是否确认删除表单分类编号为${id}吗?`, + onOk: async () => { + await delFormCategory(id); + createMessage.success('删除成功!'); + handleRefreshTable(); + } + }); + } + /** 处理表格刷新 */ function handleRefreshTable() { clearSelectedRowKeys(); reload(); } + /** 处理树形列表刷新 */ + async function handleRefreshTree() { + state.treeData = listToTree(await listFormCategory()); + } + /** 处理工作流表单设计 */ function handleWorkFlowFormDesign(row: Recordable) { const record = row.formDefinitionJson || {}; openWorkflowFormModal(true, { _tag: 'edit', record }); } + /** 处理打开工作流版本管理 */ + function handleWorkFlowVersion() { + // todo + } + function handleSelect(selectedKeys: string[]) { getForm().setFieldsValue({ categoryId: selectedKeys[0] @@ -256,7 +295,13 @@ handleSelectionChange, handleRefreshTable, handleSelect, - handleWorkFlowFormDesign + handleWorkFlowFormDesign, + handleWorkFlowVersion, + registerFormCategoryModal, + handleRefreshTree, + handleFormCategoryAdd, + handleFormCategoryEdit, + handleFormCategoryDel }; } }); diff --git a/src/views/workflow/extension/formJson/FormJsonModal.vue b/src/views/workflow/extension/formJson/FormJsonModal.vue deleted file mode 100644 index ad12466..0000000 --- a/src/views/workflow/extension/formJson/FormJsonModal.vue +++ /dev/null @@ -1,103 +0,0 @@ - - diff --git a/src/views/workflow/extension/formJson/index.vue b/src/views/workflow/extension/formJson/index.vue index 06a9558..1405e33 100644 --- a/src/views/workflow/extension/formJson/index.vue +++ b/src/views/workflow/extension/formJson/index.vue @@ -44,8 +44,6 @@ - - @@ -60,7 +58,6 @@ import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { listClient, delClient } from '/@/api/platform/system/controller/client'; import { useModal } from '/@/components/Modal'; - import ClientModal from './ClientModal.vue'; import { columns, searchFormSchema } from './formJson.data'; import { useMessage } from '/@/hooks/web/useMessage';