From f6d6b41546f364f87966ad424c13602fe489d4bd Mon Sep 17 00:00:00 2001 From: likunming Date: Fri, 6 Sep 2024 09:39:52 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=A1=A8=E5=8D=95=E5=85=83=E7=B4=A0?= =?UTF-8?q?=E5=A4=A7=E6=9B=B4=E6=96=B0=202=E3=80=81=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E7=BB=84=E4=BB=B6API=E8=B0=83=E6=95=B4=E5=8F=8A=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/index.ts | 2 - .../src/mock/api/sample/params.json | 232 ++++ .../components/checkbox/WCheckbox.vue | 104 ++ .../components/checkbox/WCheckboxGroup.vue | 114 ++ .../components/code-mirror/WCodeMirror.vue | 321 +++++ .../w-code-mirror/PlaceholderPlugin.ts | 76 ++ .../platform/components/color/WColorInput.vue | 128 ++ .../components/color/WColorInputPalette.vue | 148 +++ .../platform/components/color/quasarColors.ts | 214 +++ .../src/platform/components/cron/WCron.vue | 138 ++ .../cron/w-cron-segment/DaySegment.vue | 251 ++++ .../cron/w-cron-segment/HourSegment.vue | 185 +++ .../cron/w-cron-segment/MinuteSegment.vue | 185 +++ .../cron/w-cron-segment/MonthSegment.vue | 197 +++ .../cron/w-cron-segment/SecondSegment.vue | 185 +++ .../cron/w-cron-segment/WeekSegment.vue | 233 ++++ .../cron/w-cron-segment/YearSegment.vue | 93 ++ .../src/platform/components/date/WDate.vue | 78 ++ .../platform/components/date/WDateRange.vue | 88 ++ .../src/platform/components/file/WFile.vue | 70 + .../src/platform/components/form/FormField.ts | 92 ++ .../src/platform/components/form/WForm.vue | 60 +- .../platform/components/form/WForm_bak.vue | 320 +++++ .../components/form/elements/WCheckbox.vue | 70 - .../components/form/elements/WColorInput.vue | 205 --- .../form/elements/WColorInputPalette.vue | 440 ------ .../components/form/elements/WDate.vue | 161 --- .../components/form/elements/WFile.vue | 145 -- .../components/form/elements/WListGrid.vue | 81 -- .../components/form/elements/WNumber.vue | 144 -- .../components/form/elements/WOptionGroup.vue | 93 -- .../components/form/elements/WPassword.vue | 143 -- .../components/form/elements/WPosition.vue | 206 --- .../form/elements/WQueryCondition.vue | 7 - .../components/form/elements/WSelect.vue | 144 -- .../form/elements/WSelectUserText.vue | 99 -- .../components/form/elements/WText.vue | 142 -- .../components/form/elements/WTextBtn.vue | 155 --- .../components/form/elements/WTextarea.vue | 142 -- .../components/form/elements/WTreeSelect.vue | 154 --- .../src/platform/components/grid/GridBody.vue | 38 +- .../platform/components/grid/GridConfig.vue | 2 +- .../components/grid/GridEditToolbar.vue | 79 +- .../platform/components/grid/GridEditor.vue | 24 +- .../platform/components/grid/GridHeader.vue | 2 +- .../src/platform/components/grid/GridTop.vue | 82 +- .../platform/components/grid/TreeGridRow.vue | 11 +- .../src/platform/components/grid/WGrid.vue | 1177 ++++++++++------- .../src/platform/components/grid/ts/grid.ts | 6 +- .../{form/elements => icon}/WIcon.vue | 227 ++-- .../elements => icon}/icons/bootstrap.json | 0 .../elements => icon}/icons/eva-icons.json | 0 .../icons/fontawesome-v6-icons-brands.json | 0 .../icons/fontawesome-v6-icons-regular.json | 0 .../icons/fontawesome-v6-icons-solid.json | 0 .../icons/material-icons-outlined.json | 0 .../icons/material-icons-rounded.json | 0 .../icons/material-icons-sharp.json | 0 .../icons/material-icons.json | 0 .../icons/material-symbols-outlined.json | 0 .../icons/material-symbols-rounded.json | 0 .../icons/material-symbols-sharp.json | 0 .../src/platform/components/index.ts | 59 +- .../src/platform/components/label/WLabel.vue | 7 + .../platform/components/number/WNumber.vue | 75 ++ .../components/password/WPassword.vue | 66 + .../components/position/WPosition.vue | 141 ++ .../src/platform/components/radio/WRadio.vue | 119 ++ .../components/select/WGridSelect.vue | 272 ++++ .../components/select/WInputSelect.vue | 153 +++ .../platform/components/select/WOrgSelect.vue | 259 ++++ .../platform/components/select/WSelect.vue | 66 + .../components/select/WUserSelect.vue | 304 +++++ .../components/text-editor/WTextEditor.vue | 85 ++ .../src/platform/components/text/WText.vue | 80 ++ .../components/textarea/WTextarea.vue | 65 + .../src/platform/index.ts | 7 +- .../src/routes/routes.json | 16 +- .../src/views/Editor.vue | 88 +- .../src/views/likm/Form.vue | 365 ++--- .../src/views/likm/Grid.vue | 569 +------- .../src/views/likm/TreeGrid.vue | 65 +- .../src/mock/api/sample/params.json | 232 ++++ .../build.gradle | 5 + .../gradle.properties | 0 .../plugins/jdbc-connection-template.json | 10 + .../webpack.env.serve.cjs | 2 +- 87 files changed, 6739 insertions(+), 4064 deletions(-) create mode 100644 io.sc.platform.core.frontend/src/mock/api/sample/params.json create mode 100644 io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckbox.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckboxGroup.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/code-mirror/WCodeMirror.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/code-mirror/w-code-mirror/PlaceholderPlugin.ts create mode 100644 io.sc.platform.core.frontend/src/platform/components/color/WColorInput.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/color/WColorInputPalette.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/color/quasarColors.ts create mode 100644 io.sc.platform.core.frontend/src/platform/components/cron/WCron.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/DaySegment.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/HourSegment.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/MinuteSegment.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/MonthSegment.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/SecondSegment.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/WeekSegment.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/YearSegment.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/date/WDate.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/date/WDateRange.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/file/WFile.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/form/FormField.ts create mode 100644 io.sc.platform.core.frontend/src/platform/components/form/WForm_bak.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WCheckbox.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WColorInput.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WColorInputPalette.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WDate.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WFile.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WListGrid.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WNumber.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WOptionGroup.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WPassword.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WPosition.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WQueryCondition.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WSelect.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WSelectUserText.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WText.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WTextBtn.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WTextarea.vue delete mode 100644 io.sc.platform.core.frontend/src/platform/components/form/elements/WTreeSelect.vue rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/WIcon.vue (59%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/bootstrap.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/eva-icons.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/fontawesome-v6-icons-brands.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/fontawesome-v6-icons-regular.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/fontawesome-v6-icons-solid.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/material-icons-outlined.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/material-icons-rounded.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/material-icons-sharp.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/material-icons.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/material-symbols-outlined.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/material-symbols-rounded.json (100%) rename io.sc.platform.core.frontend/src/platform/components/{form/elements => icon}/icons/material-symbols-sharp.json (100%) create mode 100644 io.sc.platform.core.frontend/src/platform/components/label/WLabel.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/number/WNumber.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/password/WPassword.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/position/WPosition.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/radio/WRadio.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/select/WInputSelect.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/select/WOrgSelect.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/select/WSelect.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/select/WUserSelect.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/text-editor/WTextEditor.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/text/WText.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/textarea/WTextarea.vue create mode 100644 io.sc.platform.core.frontend/template-project/src/mock/api/sample/params.json create mode 100644 io.sc.platform.jdbc.driver.oceanbase/build.gradle create mode 100644 io.sc.platform.jdbc.driver.oceanbase/gradle.properties create mode 100644 io.sc.platform.jdbc.driver.oceanbase/src/main/resources/META-INF/platform/plugins/jdbc-connection-template.json diff --git a/io.sc.platform.core.frontend/src/components/index.ts b/io.sc.platform.core.frontend/src/components/index.ts index 82b32f86..06378e8d 100644 --- a/io.sc.platform.core.frontend/src/components/index.ts +++ b/io.sc.platform.core.frontend/src/components/index.ts @@ -5,7 +5,6 @@ import component_testcase_openNoMenuRoute from '@/views/testcase/route/OpenNoMenuRoute.vue'; import component_testcase_noMenuRoute from '@/views/testcase/route/NoMenuRoute.vue'; import component_testcase_mathEditor from '@/views/testcase/math/MathEditor.vue'; -import component_testcase_mathEditorForm from '@/views/testcase/math/MathEditorForm.vue'; import component_testcase_form from '@/views/testcase/form/form.vue'; import component_testcase_codemirror from '@/views/testcase/code-mirror/code-mirror.vue'; import component_testcase_loading from '@/views/testcase/loading/loading.vue'; @@ -26,7 +25,6 @@ const localComponents = { 'component.testcase.openNoMenuRoute': component_testcase_openNoMenuRoute, 'component.testcase.noMenuRoute': component_testcase_noMenuRoute, 'component.testcase.mathEditor': component_testcase_mathEditor, - 'component.testcase.mathEditorForm': component_testcase_mathEditorForm, 'component.testcase.form': component_testcase_form, 'component.testcase.codemirror': component_testcase_codemirror, 'component.testcase.loading': component_testcase_loading, diff --git a/io.sc.platform.core.frontend/src/mock/api/sample/params.json b/io.sc.platform.core.frontend/src/mock/api/sample/params.json new file mode 100644 index 00000000..0706c330 --- /dev/null +++ b/io.sc.platform.core.frontend/src/mock/api/sample/params.json @@ -0,0 +1,232 @@ +{ + "enable": true, + "url": "/api/rwa/params/isc/fetchParams?pageable=false&sortBy=sortNo", + "method": "get", + "response": { + "code" : 200, + "messageI18nKey" : "success", + "message" : "success", + "data" : [ { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2023-09-05 02:02:14", + "lastModifier" : "admin", + "lastModifyDate" : "2023-09-05 02:02:14", + "corporationCode" : null, + "id" : "2268c3e2-c03f-4d8a-8bcd-e37d24cf955e", + "name" : "银行参数", + "parent" : null, + "children" : [ ], + "icon" : "folder", + "isFolder" : true, + "sortNo" : null, + "isDefault" : false, + "pageType" : null, + "templateId" : null, + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2023-08-30 08:00:00", + "lastModifier" : "admin", + "lastModifyDate" : "2023-08-30 08:00:00", + "corporationCode" : null, + "id" : "BIII", + "name" : "BIII参数", + "parent" : null, + "children" : [ { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-26 17:34:22", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-26 17:34:22", + "corporationCode" : "_PRIMARY_", + "id" : "478b6c43-ca5b-45c4-a0cb-14715f45c98c", + "name" : "信用风险-表内风险权重参数表", + "parent" : "BIII", + "ticked" : true, + "children" : [ ], + "icon" : "calendar_month", + "isFolder" : false, + "sortNo" : 100, + "isDefault" : true, + "pageType" : "TEMPLATE", + "templateId" : "47442edb-7b0d-4dc4-ab71-755ddbae71bf", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : null, + "createDate" : null, + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-27 15:41:34", + "corporationCode" : "_PRIMARY_", + "id" : "BWFXQZ", + "name" : "信用风险-表外主体权重参数表", + "parent" : "BIII", + "children" : [ ], + "icon" : "calendar_today", + "isFolder" : false, + "sortNo" : 200, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "1b42b129-b683-4ac0-a8dc-3d39db1eb836", + "routeName" : null, + "routeQuery" : null + } ], + "icon" : "folder", + "isFolder" : true, + "sortNo" : 100, + "isDefault" : false, + "pageType" : null, + "templateId" : null, + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 13:56:36", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 13:56:36", + "corporationCode" : "_PRIMARY_", + "id" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "name" : "交易对手信用风险", + "parent" : null, + "children" : [ { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 14:03:45", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 14:03:45", + "corporationCode" : "_PRIMARY_", + "id" : "fac9819a-84a7-46bd-9e89-47e07ebeb31b", + "name" : "交易对手信用风险设置", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "settings_suggest", + "isFolder" : false, + "sortNo" : 100, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "61da07af-351f-4c70-9e58-0ab99ca1d730", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 14:55:57", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 14:55:57", + "corporationCode" : "_PRIMARY_", + "id" : "2389c168-12c5-4955-b31f-5090f9dcea4b", + "name" : "SACCR监管参数配置", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "settings_applications", + "isFolder" : false, + "sortNo" : 200, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "df6de052-7f56-42bd-895b-ca09088e0906", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : null, + "createDate" : null, + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 16:13:48", + "corporationCode" : "_PRIMARY_", + "id" : "ec48aefe-1181-4764-9a97-b149f20b520e", + "name" : "CVA行业类别映射", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "linear_scale", + "isFolder" : false, + "sortNo" : 300, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "125dc90f-15cb-4b82-961b-1b7361f0df5e", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : null, + "createDate" : null, + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 16:31:40", + "corporationCode" : "_PRIMARY_", + "id" : "a315ede8-3438-4d00-a60a-c9ef2babc0b1", + "name" : "货币优先顺序", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "currency_yen", + "isFolder" : false, + "sortNo" : 400, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "3fcee541-43f6-480e-827b-6cf021f748eb", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 16:45:56", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 16:45:56", + "corporationCode" : "_PRIMARY_", + "id" : "8865a5dd-0a88-4362-9ba9-192009072ad0", + "name" : "CVA评级等级映射", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "format_list_numbered", + "isFolder" : false, + "sortNo" : 500, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "637eea6b-1fcf-4977-a56b-9653b0703c31", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 17:08:39", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 17:08:39", + "corporationCode" : "_PRIMARY_", + "id" : "62021407-ac21-4fde-a37d-e53865b94aa5", + "name" : "CVA权重映射", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "percent", + "isFolder" : false, + "sortNo" : 600, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "dacd1de2-8492-4123-b1fb-f8abb4f6346b", + "routeName" : null, + "routeQuery" : null + } ], + "icon" : "folder", + "isFolder" : true, + "sortNo" : 300, + "isDefault" : false, + "pageType" : null, + "templateId" : null, + "routeName" : null, + "routeQuery" : null + } ] + } +} diff --git a/io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckbox.vue b/io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckbox.vue new file mode 100644 index 00000000..f602a48a --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckbox.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckboxGroup.vue b/io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckboxGroup.vue new file mode 100644 index 00000000..8d560b76 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckboxGroup.vue @@ -0,0 +1,114 @@ + + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/code-mirror/WCodeMirror.vue b/io.sc.platform.core.frontend/src/platform/components/code-mirror/WCodeMirror.vue new file mode 100644 index 00000000..c00168ec --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/code-mirror/WCodeMirror.vue @@ -0,0 +1,321 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/code-mirror/w-code-mirror/PlaceholderPlugin.ts b/io.sc.platform.core.frontend/src/platform/components/code-mirror/w-code-mirror/PlaceholderPlugin.ts new file mode 100644 index 00000000..f8ba5a69 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/code-mirror/w-code-mirror/PlaceholderPlugin.ts @@ -0,0 +1,76 @@ +import { EditorView, ViewPlugin, ViewUpdate, MatchDecorator, Decoration, DecorationSet, WidgetType } from '@codemirror/view'; + +class PlaceholderWidget extends WidgetType { + constructor(name) { + super(); + this.name = name; + } + + eq(other) { + return this.name == other.name; + } + + toDOM() { + const container = document.createElement('span'); + container.className = 'px-0.5'; + + const elt = document.createElement('span'); + elt.setAttribute('placeholder', true); + elt.className = 'p-0.5 border border-gray-800 rounded-md'; + elt.textContent = this.name; + + container.appendChild(elt); + return container; + } + + ignoreEvent() { + return false; + } +} + +const placeholderMatcher = new MatchDecorator({ + regexp: /\$\{(.+?)\}/g, + decoration: (match) => + Decoration.replace({ + widget: new PlaceholderWidget(match[1]), + }), +}); + +const placeholderPlugin = ViewPlugin.fromClass( + class { + placeholders: DecorationSet; + constructor(view: EditorView) { + this.placeholders = placeholderMatcher.createDeco(view); + } + update(update: ViewUpdate) { + this.placeholders = placeholderMatcher.updateDeco(update, this.placeholders); + } + }, + { + decorations: (instance) => instance.placeholders, + provide: (plugin) => + EditorView.atomicRanges.of((view) => { + return view.plugin(plugin)?.placeholders || Decoration.none; + }), + eventHandlers: { + mouseover: (e, view) => { + const target = e.target as HTMLElement; + if (target.tagName.toLowerCase() === 'span' && target.getAttribute('placeholder')) { + target.className = 'p-0.5 border border-orange-400 rounded-md'; + } + }, + mouseout: (e, view) => { + const target = e.target as HTMLElement; + if (target.tagName.toLowerCase() === 'span' && target.getAttribute('placeholder')) { + target.className = 'p-0.5 border border-gray-800 rounded-md'; + } + }, + contextmenu: (e, view) => { + e.preventDefault(); + console.log(view); + }, + }, + }, +); + +export default placeholderPlugin; diff --git a/io.sc.platform.core.frontend/src/platform/components/color/WColorInput.vue b/io.sc.platform.core.frontend/src/platform/components/color/WColorInput.vue new file mode 100644 index 00000000..89f66435 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/color/WColorInput.vue @@ -0,0 +1,128 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/color/WColorInputPalette.vue b/io.sc.platform.core.frontend/src/platform/components/color/WColorInputPalette.vue new file mode 100644 index 00000000..95e67e43 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/color/WColorInputPalette.vue @@ -0,0 +1,148 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/color/quasarColors.ts b/io.sc.platform.core.frontend/src/platform/components/color/quasarColors.ts new file mode 100644 index 00000000..9bcce93c --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/color/quasarColors.ts @@ -0,0 +1,214 @@ +export const quasarColors = [ + ['red', 'red-1', 'red-2', 'red-3', 'red-4', 'red-5', 'red-6', 'red-7', 'red-8', 'red-9', 'red-10', 'red-11', 'red-12', 'red-13', 'red-14'], + ['pink', 'pink-1', 'pink-2', 'pink-3', 'pink-4', 'pink-5', 'pink-6', 'pink-7', 'pink-8', 'pink-9', 'pink-10', 'pink-11', 'pink-12', 'pink-13', 'pink-14'], + [ + 'purple', + 'purple-1', + 'purple-2', + 'purple-3', + 'purple-4', + 'purple-5', + 'purple-6', + 'purple-7', + 'purple-8', + 'purple-9', + 'purple-10', + 'purple-11', + 'purple-12', + 'purple-13', + 'purple-14', + ], + [ + 'deep-purple', + 'deep-purple-1', + 'deep-purple-2', + 'deep-purple-3', + 'deep-purple-4', + 'deep-purple-5', + 'deep-purple-6', + 'deep-purple-7', + 'deep-purple-8', + 'deep-purple-9', + 'deep-purple-10', + 'deep-purple-11', + 'deep-purple-12', + 'deep-purple-13', + 'deep-purple-14', + ], + [ + 'indigo', + 'indigo-1', + 'indigo-2', + 'indigo-3', + 'indigo-4', + 'indigo-5', + 'indigo-6', + 'indigo-7', + 'indigo-8', + 'indigo-9', + 'indigo-10', + 'indigo-11', + 'indigo-12', + 'indigo-13', + 'indigo-14', + ], + ['blue', 'blue-1', 'blue-2', 'blue-3', 'blue-4', 'blue-5', 'blue-6', 'blue-7', 'blue-8', 'blue-9', 'blue-10', 'blue-11', 'blue-12', 'blue-13', 'blue-14'], + [ + 'light-blue', + 'light-blue-1', + 'light-blue-2', + 'light-blue-3', + 'light-blue-4', + 'light-blue-5', + 'light-blue-6', + 'light-blue-7', + 'light-blue-8', + 'light-blue-9', + 'light-blue-10', + 'light-blue-11', + 'light-blue-12', + 'light-blue-13', + 'light-blue-14', + ], + ['cyan', 'cyan-1', 'cyan-2', 'cyan-3', 'cyan-4', 'cyan-5', 'cyan-6', 'cyan-7', 'cyan-8', 'cyan-9', 'cyan-10', 'cyan-11', 'cyan-12', 'cyan-13', 'cyan-14'], + ['teal', 'teal-1', 'teal-2', 'teal-3', 'teal-4', 'teal-5', 'teal-6', 'teal-7', 'teal-8', 'teal-9', 'teal-10', 'teal-11', 'teal-12', 'teal-13', 'teal-14'], + [ + 'green', + 'green-1', + 'green-2', + 'green-3', + 'green-4', + 'green-5', + 'green-6', + 'green-7', + 'green-8', + 'green-9', + 'green-10', + 'green-11', + 'green-12', + 'green-13', + 'green-14', + ], + [ + 'light-green', + 'light-green-1', + 'light-green-2', + 'light-green-3', + 'light-green-4', + 'light-green-5', + 'light-green-6', + 'light-green-7', + 'light-green-8', + 'light-green-9', + 'light-green-10', + 'light-green-11', + 'light-green-12', + 'light-green-13', + 'light-green-14', + ], + ['lime', 'lime-1', 'lime-2', 'lime-3', 'lime-4', 'lime-5', 'lime-6', 'lime-7', 'lime-8', 'lime-9', 'lime-10', 'lime-11', 'lime-12', 'lime-13', 'lime-14'], + [ + 'yellow', + 'yellow-1', + 'yellow-2', + 'yellow-3', + 'yellow-4', + 'yellow-5', + 'yellow-6', + 'yellow-7', + 'yellow-8', + 'yellow-9', + 'yellow-10', + 'yellow-11', + 'yellow-12', + 'yellow-13', + 'yellow-14', + ], + [ + 'amber', + 'amber-1', + 'amber-2', + 'amber-3', + 'amber-4', + 'amber-5', + 'amber-6', + 'amber-7', + 'amber-8', + 'amber-9', + 'amber-10', + 'amber-11', + 'amber-12', + 'amber-13', + 'amber-14', + ], + [ + 'orange', + 'orange-1', + 'orange-2', + 'orange-3', + 'orange-4', + 'orange-5', + 'orange-6', + 'orange-7', + 'orange-8', + 'orange-9', + 'orange-10', + 'orange-11', + 'orange-12', + 'orange-13', + 'orange-14', + ], + [ + 'deep-orange', + 'deep-orange-1', + 'deep-orange-2', + 'deep-orange-3', + 'deep-orange-4', + 'deep-orange-5', + 'deep-orange-6', + 'deep-orange-7', + 'deep-orange-8', + 'deep-orange-9', + 'deep-orange-10', + 'deep-orange-11', + 'deep-orange-12', + 'deep-orange-13', + 'deep-orange-14', + ], + [ + 'brown', + 'brown-1', + 'brown-2', + 'brown-3', + 'brown-4', + 'brown-5', + 'brown-6', + 'brown-7', + 'brown-8', + 'brown-9', + 'brown-10', + 'brown-11', + 'brown-12', + 'brown-13', + 'brown-14', + ], + ['grey', 'grey-1', 'grey-2', 'grey-3', 'grey-4', 'grey-5', 'grey-6', 'grey-7', 'grey-8', 'grey-9', 'grey-10', 'grey-11', 'grey-12', 'grey-13', 'grey-14'], + [ + 'blue-grey', + 'blue-grey-1', + 'blue-grey-2', + 'blue-grey-3', + 'blue-grey-4', + 'blue-grey-5', + 'blue-grey-6', + 'blue-grey-7', + 'blue-grey-8', + 'blue-grey-9', + 'blue-grey-10', + 'blue-grey-11', + 'blue-grey-12', + 'blue-grey-13', + 'blue-grey-14', + ], + ['white', 'black'], +]; diff --git a/io.sc.platform.core.frontend/src/platform/components/cron/WCron.vue b/io.sc.platform.core.frontend/src/platform/components/cron/WCron.vue new file mode 100644 index 00000000..84015d7d --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/cron/WCron.vue @@ -0,0 +1,138 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/DaySegment.vue b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/DaySegment.vue new file mode 100644 index 00000000..9af31937 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/DaySegment.vue @@ -0,0 +1,251 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/HourSegment.vue b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/HourSegment.vue new file mode 100644 index 00000000..46cf0173 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/HourSegment.vue @@ -0,0 +1,185 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/MinuteSegment.vue b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/MinuteSegment.vue new file mode 100644 index 00000000..90e4f44f --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/MinuteSegment.vue @@ -0,0 +1,185 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/MonthSegment.vue b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/MonthSegment.vue new file mode 100644 index 00000000..13604ef3 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/MonthSegment.vue @@ -0,0 +1,197 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/SecondSegment.vue b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/SecondSegment.vue new file mode 100644 index 00000000..c68291be --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/SecondSegment.vue @@ -0,0 +1,185 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/WeekSegment.vue b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/WeekSegment.vue new file mode 100644 index 00000000..6c07fa4b --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/WeekSegment.vue @@ -0,0 +1,233 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/YearSegment.vue b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/YearSegment.vue new file mode 100644 index 00000000..25c18efb --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/cron/w-cron-segment/YearSegment.vue @@ -0,0 +1,93 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/date/WDate.vue b/io.sc.platform.core.frontend/src/platform/components/date/WDate.vue new file mode 100644 index 00000000..6b98deba --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/date/WDate.vue @@ -0,0 +1,78 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/date/WDateRange.vue b/io.sc.platform.core.frontend/src/platform/components/date/WDateRange.vue new file mode 100644 index 00000000..1144ad84 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/date/WDateRange.vue @@ -0,0 +1,88 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/file/WFile.vue b/io.sc.platform.core.frontend/src/platform/components/file/WFile.vue new file mode 100644 index 00000000..7800e395 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/file/WFile.vue @@ -0,0 +1,70 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/form/FormField.ts b/io.sc.platform.core.frontend/src/platform/components/form/FormField.ts new file mode 100644 index 00000000..8c3c92bf --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/form/FormField.ts @@ -0,0 +1,92 @@ +import { Tools } from '@/platform'; +import { FormValidators } from '@/platform/components'; + +export interface FormFieldProps { + name?: string; + form?: object; // form对象实例 + showIf?: boolean | (() => void); // 是否显示 + requiredIf?: boolean | (() => void); // 是否必填 + readOnlyIf?: boolean | (() => void); // 是否只读 + disableIf?: boolean | (() => void); // 是否禁用 + rules?: Array<() => void>; // 验证规则集合 + onUpdateValue?: () => void; // 值改变事件函数 +} + +export abstract class FormFieldMethods { + // 值改变事件 + abstract updateValue(value_): void; + // 验证方法 + abstract validate(): Promise | boolean; + // 设置值 + abstract setValue(value_): void; + // 获取值 + abstract getValue(): any; + // 清空值 + abstract clearValue(): void; + + // 获取验证规则集结果 + static getRules = (props_, value_, componentRef_, defaultValue_) => { + let result = props_.rules || []; + if (!Tools.isEmpty(defaultValue_)) { + result.push(...defaultValue_); + } + const showResult = FormFieldMethods.getShow(props_, value_); + const requiredResult = FormFieldMethods.getRequired(props_, value_); + if (showResult && requiredResult) { + result.push(FormValidators.required()); + } else if (!showResult) { + result = []; + } + if (componentRef_?.value) { + componentRef_.value.resetValidation(); + } + return result; + }; + // 获取是否必填结果 + static getRequired = (props_, value_) => { + if (!Tools.isEmpty(props_.requiredIf)) { + if (typeof props_.requiredIf === 'boolean') { + return props_.requiredIf; + } else if (typeof props_.requiredIf === 'function') { + return props_.requiredIf({ value: value_, form: props_.form }) || false; + } + } + return false; + }; + // 获取是否显示结果 + static getShow = (props_, value_) => { + if (!Tools.isEmpty(props_.showIf)) { + if (typeof props_.showIf === 'boolean') { + return props_.showIf; + } else if (typeof props_.showIf === 'function') { + return props_.showIf({ value: value_, form: props_.form }) || false; + } + } + return true; + }; + // 获取是否只读结果 + static getReadOnly = (props_, value_) => { + if (props_.form && props_.form.getStatus() === 'view') { + return true; + } + if (!Tools.isEmpty(props_.readOnlyIf)) { + if (typeof props_.readOnlyIf === 'boolean') { + return props_.readOnlyIf; + } else if (typeof props_.readOnlyIf === 'function') { + return props_.readOnlyIf({ value: value_, form: props_.form }) || false; + } + } + return false; + }; + // 获取是否禁用结果 + static getDisable = (props_, value_) => { + if (!Tools.isEmpty(props_.disableIf)) { + if (typeof props_.disableIf === 'boolean') { + return props_.disableIf; + } else if (typeof props_.disableIf === 'function') { + return props_.disableIf({ value: value_, form: props_.form }) || false; + } + } + return false; + }; +} diff --git a/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue b/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue index 6048f1b3..d1c608aa 100644 --- a/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue +++ b/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue @@ -5,7 +5,7 @@ @@ -200,6 +201,10 @@ const props = defineProps({ return 0; }, }, + updates: { + type: Function, + default: () => {}, + }, }); const table = inject('table'); @@ -398,7 +403,7 @@ const onDragStart = (e, dataRow) => { ) { table.dragRecords = selecteds; } else { - props.grid.cleanSelected(); + props.grid.clearSelected(); // 触发选择 dataRow[table.selectedField] = true; table.dragRecords = [dataRow]; @@ -666,7 +671,7 @@ const onDrop = (e, dataRow) => { // 请求后端更新排序 if (typeof props.grid.props.draggable === 'boolean' && props.grid.props.draggable && updateOrderData?.length > 0) { - props.grid.updates(updateOrderData); + props.updates(updateOrderData); } props.afterRowDraggable(updateOrderData); @@ -675,7 +680,7 @@ const onDrop = (e, dataRow) => { const click = (evt, row, rowIndex) => { if (table.bodyEditStatus === 'none') { if (!evt.ctrlKey) { - props.grid.cleanSelected(); + props.grid.clearSelected(); } row[table.selectedField] = true; if (props.grid.props.onRowClick) { diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue b/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue index 530e7a6c..08ff4949 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue @@ -114,7 +114,7 @@ diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/bootstrap.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/bootstrap.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/bootstrap.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/bootstrap.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/eva-icons.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/eva-icons.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/eva-icons.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/eva-icons.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/fontawesome-v6-icons-brands.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/fontawesome-v6-icons-brands.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/fontawesome-v6-icons-brands.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/fontawesome-v6-icons-brands.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/fontawesome-v6-icons-regular.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/fontawesome-v6-icons-regular.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/fontawesome-v6-icons-regular.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/fontawesome-v6-icons-regular.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/fontawesome-v6-icons-solid.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/fontawesome-v6-icons-solid.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/fontawesome-v6-icons-solid.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/fontawesome-v6-icons-solid.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-icons-outlined.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/material-icons-outlined.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-icons-outlined.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/material-icons-outlined.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-icons-rounded.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/material-icons-rounded.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-icons-rounded.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/material-icons-rounded.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-icons-sharp.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/material-icons-sharp.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-icons-sharp.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/material-icons-sharp.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-icons.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/material-icons.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-icons.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/material-icons.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-symbols-outlined.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/material-symbols-outlined.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-symbols-outlined.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/material-symbols-outlined.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-symbols-rounded.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/material-symbols-rounded.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-symbols-rounded.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/material-symbols-rounded.json diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-symbols-sharp.json b/io.sc.platform.core.frontend/src/platform/components/icon/icons/material-symbols-sharp.json similarity index 100% rename from io.sc.platform.core.frontend/src/platform/components/form/elements/icons/material-symbols-sharp.json rename to io.sc.platform.core.frontend/src/platform/components/icon/icons/material-symbols-sharp.json diff --git a/io.sc.platform.core.frontend/src/platform/components/index.ts b/io.sc.platform.core.frontend/src/platform/components/index.ts index 0a6b0963..10267fb1 100644 --- a/io.sc.platform.core.frontend/src/platform/components/index.ts +++ b/io.sc.platform.core.frontend/src/platform/components/index.ts @@ -7,23 +7,29 @@ import WDialog from './dialog/WDialog.vue'; import WDrawer from './drawer/WDrawer.vue'; import WForm from './form/WForm.vue'; -import WCodeMirror from './form/elements/WCodeMirror.vue'; -import WColorInput from './form/elements/WColorInput.vue'; -import WColorInputPalette from './form/elements/WColorInputPalette.vue'; -import WCron from './form/elements/WCron.vue'; -import WIcon from './form/elements/WIcon.vue'; -import WPosition from './form/elements/WPosition.vue'; -import WText from './form/elements/WText.vue'; -import WNumber from './form/elements/WNumber.vue'; -import WTextarea from './form/elements/WTextarea.vue'; -import WSelect from './form/elements/WSelect.vue'; -import WTreeSelect from './form/elements/WTreeSelect.vue'; -import WDate from './form/elements/WDate.vue'; -import WCheckbox from './form/elements/WCheckbox.vue'; -import WTextBtn from './form/elements/WTextBtn.vue'; -import WPassword from './form/elements/WPassword.vue'; -import WOptionGroup from './form/elements/WOptionGroup.vue'; -import WFile from './form/elements/WFile.vue'; +import WCodeMirror from './code-mirror/WCodeMirror.vue'; +import WColorInput from './color/WColorInput.vue'; +import WColorInputPalette from './color/WColorInputPalette.vue'; +import WCron from './cron/WCron.vue'; +import WIcon from './icon/WIcon.vue'; +import WPosition from './position/WPosition.vue'; +import WText from './text/WText.vue'; +import WNumber from './number/WNumber.vue'; +import WTextarea from './textarea/WTextarea.vue'; +import WSelect from './select/WSelect.vue'; +import WInputSelect from './select/WInputSelect.vue'; +import WGridSelect from './select/WGridSelect.vue'; +import WUserSelect from './select/WUserSelect.vue'; +import WOrgSelect from './select/WOrgSelect.vue'; +import WDate from './date/WDate.vue'; +import WDateRange from './date/WDateRange.vue'; +import WCheckbox from './checkbox/WCheckbox.vue'; +import WCheckboxGroup from './checkbox/WCheckboxGroup.vue'; +import WPassword from './password/WPassword.vue'; +import WFile from './file/WFile.vue'; +import WLabel from './label/WLabel.vue'; +import WRadio from './radio/WRadio.vue'; +import WTextEditor from './text-editor/WTextEditor.vue'; import WGrid from './grid/WGrid.vue'; @@ -74,13 +80,19 @@ export default { app.component('WNumber', WNumber); app.component('WTextarea', WTextarea); app.component('WSelect', WSelect); - app.component('WTreeSelect', WTreeSelect); + app.component('WInputSelect', WInputSelect); + app.component('WGridSelect', WGridSelect); + app.component('WUserSelect', WUserSelect); + app.component('WOrgSelect', WOrgSelect); app.component('WDate', WDate); + app.component('WDateRange', WDateRange); app.component('WCheckbox', WCheckbox); - app.component('WTextBtn', WTextBtn); + app.component('WCheckboxGroup', WCheckboxGroup); app.component('WPassword', WPassword); - app.component('WOptionGroup', WOptionGroup); app.component('WFile', WFile); + app.component('WLabel', WLabel); + app.component('WRadio', WRadio); + app.component('WTextEditor', WTextEditor); app.component('WGrid', WGrid); @@ -128,12 +140,13 @@ export { WNumber, WTextarea, WSelect, - WTreeSelect, + WGridSelect, + WUserSelect, + WOrgSelect, + WLabel, WDate, WCheckbox, - WTextBtn, WPassword, - WOptionGroup, WFile, WGrid, WIconEmpty, diff --git a/io.sc.platform.core.frontend/src/platform/components/label/WLabel.vue b/io.sc.platform.core.frontend/src/platform/components/label/WLabel.vue new file mode 100644 index 00000000..3e542743 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/label/WLabel.vue @@ -0,0 +1,7 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/number/WNumber.vue b/io.sc.platform.core.frontend/src/platform/components/number/WNumber.vue new file mode 100644 index 00000000..c7f47ffa --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/number/WNumber.vue @@ -0,0 +1,75 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/password/WPassword.vue b/io.sc.platform.core.frontend/src/platform/components/password/WPassword.vue new file mode 100644 index 00000000..af37a778 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/password/WPassword.vue @@ -0,0 +1,66 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/position/WPosition.vue b/io.sc.platform.core.frontend/src/platform/components/position/WPosition.vue new file mode 100644 index 00000000..060caa91 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/position/WPosition.vue @@ -0,0 +1,141 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/radio/WRadio.vue b/io.sc.platform.core.frontend/src/platform/components/radio/WRadio.vue new file mode 100644 index 00000000..83fd2903 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/radio/WRadio.vue @@ -0,0 +1,119 @@ + + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue b/io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue new file mode 100644 index 00000000..f6ce92ca --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue @@ -0,0 +1,272 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/select/WInputSelect.vue b/io.sc.platform.core.frontend/src/platform/components/select/WInputSelect.vue new file mode 100644 index 00000000..b1a905dc --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/select/WInputSelect.vue @@ -0,0 +1,153 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/select/WOrgSelect.vue b/io.sc.platform.core.frontend/src/platform/components/select/WOrgSelect.vue new file mode 100644 index 00000000..40280b9f --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/select/WOrgSelect.vue @@ -0,0 +1,259 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/select/WSelect.vue b/io.sc.platform.core.frontend/src/platform/components/select/WSelect.vue new file mode 100644 index 00000000..ba6f8192 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/select/WSelect.vue @@ -0,0 +1,66 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/select/WUserSelect.vue b/io.sc.platform.core.frontend/src/platform/components/select/WUserSelect.vue new file mode 100644 index 00000000..b8832727 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/select/WUserSelect.vue @@ -0,0 +1,304 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/text-editor/WTextEditor.vue b/io.sc.platform.core.frontend/src/platform/components/text-editor/WTextEditor.vue new file mode 100644 index 00000000..59027680 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/text-editor/WTextEditor.vue @@ -0,0 +1,85 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/text/WText.vue b/io.sc.platform.core.frontend/src/platform/components/text/WText.vue new file mode 100644 index 00000000..3ba71b4e --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/text/WText.vue @@ -0,0 +1,80 @@ + + diff --git a/io.sc.platform.core.frontend/src/platform/components/textarea/WTextarea.vue b/io.sc.platform.core.frontend/src/platform/components/textarea/WTextarea.vue new file mode 100644 index 00000000..92ca227b --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/textarea/WTextarea.vue @@ -0,0 +1,65 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/index.ts b/io.sc.platform.core.frontend/src/platform/index.ts index c3d28fc4..29f80853 100644 --- a/io.sc.platform.core.frontend/src/platform/index.ts +++ b/io.sc.platform.core.frontend/src/platform/index.ts @@ -135,12 +135,13 @@ export { WNumber, WTextarea, WSelect, - WTreeSelect, + WGridSelect, + WOrgSelect, + WUserSelect, + WLabel, WDate, WCheckbox, - WTextBtn, WPassword, - WOptionGroup, WGrid, WIconEmpty, WVExpandDiv, diff --git a/io.sc.platform.core.frontend/src/routes/routes.json b/io.sc.platform.core.frontend/src/routes/routes.json index 0bd0ec1c..29deba26 100644 --- a/io.sc.platform.core.frontend/src/routes/routes.json +++ b/io.sc.platform.core.frontend/src/routes/routes.json @@ -20,7 +20,7 @@ "priority": 0, "component": "component.testcase.noMenuRoute", "componentPath": "@/views/testcase/route/NoMenuRoute.vue", - "redirect": null, + "redirect": null, "meta": { "permissions": ["/testcase/route/**/*"] } @@ -38,20 +38,6 @@ "permissions": ["/testcase/math/**/*"] } }, - - { - "name": "route.testcase.mathEditorForm", - "path": "testcase/mathEditorForm", - "parent": "/", - "priority": 0, - "component": "component.testcase.mathEditorForm", - "componentPath": "@/views/testcase/math/MathEditorForm.vue", - "redirect": null, - "meta": { - "permissions": ["/testcase/math/**/*"] - } - }, - { "name": "route.testcase.form", "path": "testcase/form", diff --git a/io.sc.platform.core.frontend/src/views/Editor.vue b/io.sc.platform.core.frontend/src/views/Editor.vue index b8924ecc..0c658433 100644 --- a/io.sc.platform.core.frontend/src/views/Editor.vue +++ b/io.sc.platform.core.frontend/src/views/Editor.vue @@ -2,52 +2,52 @@
diff --git a/io.sc.platform.core.frontend/src/views/likm/Form.vue b/io.sc.platform.core.frontend/src/views/likm/Form.vue index 46d80793..ef22f76a 100644 --- a/io.sc.platform.core.frontend/src/views/likm/Form.vue +++ b/io.sc.platform.core.frontend/src/views/likm/Form.vue @@ -1,169 +1,232 @@ diff --git a/io.sc.platform.core.frontend/src/views/likm/TreeGrid.vue b/io.sc.platform.core.frontend/src/views/likm/TreeGrid.vue index 51263db6..55028bad 100644 --- a/io.sc.platform.core.frontend/src/views/likm/TreeGrid.vue +++ b/io.sc.platform.core.frontend/src/views/likm/TreeGrid.vue @@ -2,26 +2,41 @@
@@ -82,11 +97,11 @@ const testGrid = { ], 'separator', ], - queryFormFields: [ - { label: '菜单名称', name: 'name', type: 'w-password' }, - { label: '菜单类型', name: 'userName', type: 'select' }, - { label: '是否可用', name: 'enable', type: 'select' }, - ], + // queryFormFields: [ + // { label: '菜单名称', name: 'name', type: 'w-password' }, + // { label: '菜单类型', name: 'userName', type: 'select' }, + // { label: '是否可用', name: 'enable', type: 'select' }, + // ], tableColumns: [ { name: 'name', diff --git a/io.sc.platform.core.frontend/template-project/src/mock/api/sample/params.json b/io.sc.platform.core.frontend/template-project/src/mock/api/sample/params.json new file mode 100644 index 00000000..0706c330 --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/mock/api/sample/params.json @@ -0,0 +1,232 @@ +{ + "enable": true, + "url": "/api/rwa/params/isc/fetchParams?pageable=false&sortBy=sortNo", + "method": "get", + "response": { + "code" : 200, + "messageI18nKey" : "success", + "message" : "success", + "data" : [ { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2023-09-05 02:02:14", + "lastModifier" : "admin", + "lastModifyDate" : "2023-09-05 02:02:14", + "corporationCode" : null, + "id" : "2268c3e2-c03f-4d8a-8bcd-e37d24cf955e", + "name" : "银行参数", + "parent" : null, + "children" : [ ], + "icon" : "folder", + "isFolder" : true, + "sortNo" : null, + "isDefault" : false, + "pageType" : null, + "templateId" : null, + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2023-08-30 08:00:00", + "lastModifier" : "admin", + "lastModifyDate" : "2023-08-30 08:00:00", + "corporationCode" : null, + "id" : "BIII", + "name" : "BIII参数", + "parent" : null, + "children" : [ { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-26 17:34:22", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-26 17:34:22", + "corporationCode" : "_PRIMARY_", + "id" : "478b6c43-ca5b-45c4-a0cb-14715f45c98c", + "name" : "信用风险-表内风险权重参数表", + "parent" : "BIII", + "ticked" : true, + "children" : [ ], + "icon" : "calendar_month", + "isFolder" : false, + "sortNo" : 100, + "isDefault" : true, + "pageType" : "TEMPLATE", + "templateId" : "47442edb-7b0d-4dc4-ab71-755ddbae71bf", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : null, + "createDate" : null, + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-27 15:41:34", + "corporationCode" : "_PRIMARY_", + "id" : "BWFXQZ", + "name" : "信用风险-表外主体权重参数表", + "parent" : "BIII", + "children" : [ ], + "icon" : "calendar_today", + "isFolder" : false, + "sortNo" : 200, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "1b42b129-b683-4ac0-a8dc-3d39db1eb836", + "routeName" : null, + "routeQuery" : null + } ], + "icon" : "folder", + "isFolder" : true, + "sortNo" : 100, + "isDefault" : false, + "pageType" : null, + "templateId" : null, + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 13:56:36", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 13:56:36", + "corporationCode" : "_PRIMARY_", + "id" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "name" : "交易对手信用风险", + "parent" : null, + "children" : [ { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 14:03:45", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 14:03:45", + "corporationCode" : "_PRIMARY_", + "id" : "fac9819a-84a7-46bd-9e89-47e07ebeb31b", + "name" : "交易对手信用风险设置", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "settings_suggest", + "isFolder" : false, + "sortNo" : 100, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "61da07af-351f-4c70-9e58-0ab99ca1d730", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 14:55:57", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 14:55:57", + "corporationCode" : "_PRIMARY_", + "id" : "2389c168-12c5-4955-b31f-5090f9dcea4b", + "name" : "SACCR监管参数配置", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "settings_applications", + "isFolder" : false, + "sortNo" : 200, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "df6de052-7f56-42bd-895b-ca09088e0906", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : null, + "createDate" : null, + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 16:13:48", + "corporationCode" : "_PRIMARY_", + "id" : "ec48aefe-1181-4764-9a97-b149f20b520e", + "name" : "CVA行业类别映射", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "linear_scale", + "isFolder" : false, + "sortNo" : 300, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "125dc90f-15cb-4b82-961b-1b7361f0df5e", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : null, + "createDate" : null, + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 16:31:40", + "corporationCode" : "_PRIMARY_", + "id" : "a315ede8-3438-4d00-a60a-c9ef2babc0b1", + "name" : "货币优先顺序", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "currency_yen", + "isFolder" : false, + "sortNo" : 400, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "3fcee541-43f6-480e-827b-6cf021f748eb", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 16:45:56", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 16:45:56", + "corporationCode" : "_PRIMARY_", + "id" : "8865a5dd-0a88-4362-9ba9-192009072ad0", + "name" : "CVA评级等级映射", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "format_list_numbered", + "isFolder" : false, + "sortNo" : 500, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "637eea6b-1fcf-4977-a56b-9653b0703c31", + "routeName" : null, + "routeQuery" : null + }, { + "jpaVersion" : null, + "dataComeFrom" : "INPUT", + "creator" : "admin", + "createDate" : "2024-02-28 17:08:39", + "lastModifier" : "admin", + "lastModifyDate" : "2024-02-28 17:08:39", + "corporationCode" : "_PRIMARY_", + "id" : "62021407-ac21-4fde-a37d-e53865b94aa5", + "name" : "CVA权重映射", + "parent" : "bc56db9d-c4ad-4d66-9d55-7ae1a9ad3af3", + "children" : [ ], + "icon" : "percent", + "isFolder" : false, + "sortNo" : 600, + "isDefault" : false, + "pageType" : "TEMPLATE", + "templateId" : "dacd1de2-8492-4123-b1fb-f8abb4f6346b", + "routeName" : null, + "routeQuery" : null + } ], + "icon" : "folder", + "isFolder" : true, + "sortNo" : 300, + "isDefault" : false, + "pageType" : null, + "templateId" : null, + "routeName" : null, + "routeQuery" : null + } ] + } +} diff --git a/io.sc.platform.jdbc.driver.oceanbase/build.gradle b/io.sc.platform.jdbc.driver.oceanbase/build.gradle new file mode 100644 index 00000000..ed431459 --- /dev/null +++ b/io.sc.platform.jdbc.driver.oceanbase/build.gradle @@ -0,0 +1,5 @@ +dependencies { + api( + "com.oceanbase:oceanbase-client:2.4.0", + ) +} diff --git a/io.sc.platform.jdbc.driver.oceanbase/gradle.properties b/io.sc.platform.jdbc.driver.oceanbase/gradle.properties new file mode 100644 index 00000000..e69de29b diff --git a/io.sc.platform.jdbc.driver.oceanbase/src/main/resources/META-INF/platform/plugins/jdbc-connection-template.json b/io.sc.platform.jdbc.driver.oceanbase/src/main/resources/META-INF/platform/plugins/jdbc-connection-template.json new file mode 100644 index 00000000..4267ba66 --- /dev/null +++ b/io.sc.platform.jdbc.driver.oceanbase/src/main/resources/META-INF/platform/plugins/jdbc-connection-template.json @@ -0,0 +1,10 @@ +{ + "installerEnable" : true, + "type" : "OceanBase", + "version" : "2.4", + "driver" : "com.oceanbase.jdbc.Driver", + "url" : "jdbc:oceanbase://${host}:${port}/${database}", + "urlSample" : "jdbc:oceanbase://localhost:2883/shemaname?pool=false", + "hibernateDialect" : "org.hibernate.dialect.Oracle10gDialect", + "validationQuery" : "select 1 from dual" +} \ No newline at end of file diff --git a/io.sc.platform.mvc.frontend/webpack.env.serve.cjs b/io.sc.platform.mvc.frontend/webpack.env.serve.cjs index e3f793b4..b8f89d22 100644 --- a/io.sc.platform.mvc.frontend/webpack.env.serve.cjs +++ b/io.sc.platform.mvc.frontend/webpack.env.serve.cjs @@ -19,7 +19,7 @@ module.exports = (env)=> merge(common, mf,{ directory: path.join(__dirname, 'public'), }, compress: false, - port: 3000, + port: 3001, hot: true, // 保证在出现 404 错误时,能够导航到 index.html historyApiFallback: true,