diff --git a/io.sc.platform.components.frontend/src/platform/components/PlatformGrid.vue b/io.sc.platform.components.frontend/src/platform/components/PlatformGrid.vue index 06671f77..dff4490b 100644 --- a/io.sc.platform.components.frontend/src/platform/components/PlatformGrid.vue +++ b/io.sc.platform.components.frontend/src/platform/components/PlatformGrid.vue @@ -243,17 +243,22 @@ - - - - + + {{ scope.rowIndex + 1 }} + {{ scope.value }} - + + {{ scope.value }} + + @@ -349,13 +354,12 @@ - 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 8625dc10..4cc0cdb5 100644 --- a/io.sc.platform.core.frontend/src/platform/components/index.ts +++ b/io.sc.platform.core.frontend/src/platform/components/index.ts @@ -7,17 +7,31 @@ import WColorInput from './widget/color/WColorInput.vue'; import WColorInputPalette from './widget/color/WColorInputPalette.vue'; import WPosition from './widget/position/WPosition.vue'; import WCodemirror from './widget/codemirror/WCodemirror.vue'; -import WSelect from './widget/select/WSelect.vue'; -import WListGrid from './grid/WListGrid.vue'; import WTreeGrid from './tree/WTreeGrid.vue'; import WDialog from './dialog/WDialog.vue'; import PlatformDialog from './dialog/PlatformDialog.vue'; import PlatformDrawer from './drawer/PlatformDrawer.vue'; +import WDrawer from './drawer/WDrawer.vue'; + import PlatformForm from './form/PlatformForm.vue'; +import WForm from './form/WForm.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 WDate from './form/elements/WDate.vue'; +import WCheckbox from './form/elements/WCheckbox.vue'; +import WTextBtn from './form/elements/WTextBtn.vue'; + +import WInfoPanel from './panel/WInfoPanel.vue'; + import PlatformGrid from './grid/PlatformGrid.vue'; +import WGrid from './grid/WGrid.vue'; import PlatformGridTdDrag from './grid/PlatformGridTdDrag.vue'; +import WToolbar from './toolbar/WToolbar.vue'; + export default { install: (app: App) => { app.component('WPlatformPage', WPlatformPage); @@ -29,15 +43,28 @@ export default { app.component('WPosition', WPosition); app.component('WCodemirror', WCodemirror); app.component('WSelect', WSelect); - app.component('WListGrid', WListGrid); app.component('WTreeGrid', WTreeGrid); app.component('WDialog', WDialog); app.component('PlatformDialog', PlatformDialog); + app.component('WDrawer', WDrawer); app.component('PlatformDrawer', PlatformDrawer); + app.component('WForm', WForm); + app.component('WText', WText); + app.component('WNumber', WNumber); + app.component('WTextarea', WTextarea); + app.component('WDate', WDate); + app.component('WCheckbox', WCheckbox); + app.component('WTextBtn', WTextBtn); + + app.component('WInfoPanel', WInfoPanel); + app.component('PlatformForm', PlatformForm); app.component('PlatformGrid', PlatformGrid); + app.component('WGrid', WGrid); app.component('PlatformGridTdDrag', PlatformGridTdDrag); + + app.component('WToolbar', WToolbar); }, }; @@ -50,14 +77,23 @@ export { WPosition, WCodemirror, WSelect, - WListGrid, WTreeGrid, WDialog, PlatformDialog, PlatformDrawer, + WDrawer, PlatformForm, + WForm, + WText, + WNumber, + WTextarea, + WDate, + WCheckbox, + WTextBtn, PlatformGrid, + WGrid, PlatformGridTdDrag, + WToolbar, }; export { PlatformIconEnum } from './utils'; @@ -79,3 +115,5 @@ export { extractTableProps } from './utils'; export { extractTableColumnsProps } from './utils'; export { getQueryFormColsNumberByScreen } from './utils'; export { arrayToMap } from './utils'; + +export { FormValidators } from './utils'; diff --git a/io.sc.platform.core.frontend/src/platform/components/panel/WInfoPanel.vue b/io.sc.platform.core.frontend/src/platform/components/panel/WInfoPanel.vue new file mode 100644 index 00000000..a4ea1e8f --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/panel/WInfoPanel.vue @@ -0,0 +1,95 @@ + + + + + + + + {{ tdItem.label }} + + + + + + {{ tdItem.value }} + + + + + + + + + + + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/toolbar/ChildrenBtn.vue b/io.sc.platform.core.frontend/src/platform/components/toolbar/ChildrenBtn.vue new file mode 100644 index 00000000..b46447f4 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/toolbar/ChildrenBtn.vue @@ -0,0 +1,57 @@ + + + + {{ button[0].label }} + + + + + + + + + + + + + + + {{ childrenBtn.label }} + + + + + + + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/toolbar/WToolbar.vue b/io.sc.platform.core.frontend/src/platform/components/toolbar/WToolbar.vue new file mode 100644 index 00000000..e0149e10 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/toolbar/WToolbar.vue @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + {{ childrenBtn.label }} + + + + + + + + + + + + + + + + + + {{ childrenBtn.data.label }} + + + + + + + + + + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/utils/FormValidators.ts b/io.sc.platform.core.frontend/src/platform/components/utils/FormValidators.ts new file mode 100644 index 00000000..f9061516 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/utils/FormValidators.ts @@ -0,0 +1,58 @@ +/** + * Form表单元素验证器 + */ +export class FormValidators { + /** + * 必填项验证 + * @returns + */ + public static required(msg: string) { + return (val) => { + if (val === null || val === undefined) { + return msg || '必填项未填写'; + } + if (typeof val === 'string') { + return val !== '' || msg || '必填项未填写'; + } else if (Array.isArray(val)) { + return val.length > 0 || msg || '必填项未填写'; + } else { + return true; + } + }; + } + + /** + * 长度范围验证 + * @param min 最小长度 + * @param max 最大长度 + * @returns + */ + public static lengthRange(min: number, max: number, msg: string) { + return (val) => { + const tmp = String(val); + if (tmp === null || tmp === '' || (tmp.length >= min && tmp.length <= max)) { + return true; + } else { + return msg || '长度不符合要求(' + min + '-' + max + ')'; + } + }; + } + + /** + * 数字最大精度校验 + * @param precision 最大位数 + * @returns + */ + public static maxPrecision(precision: number, msg: string) { + return (val) => { + const tmp = String(val); + if (val === null || tmp === '' || tmp.indexOf('.') === -1 || tmp.substring(tmp.indexOf('.') + 1).length <= precision) { + return true; + } else if (precision === 0) { + return '只能输入整数'; + } else { + return msg || '最大允许输入的小数位:' + precision; + } + }; + } +} diff --git a/io.sc.platform.core.frontend/src/platform/components/utils/componentComm.ts b/io.sc.platform.core.frontend/src/platform/components/utils/componentComm.ts index 46a98ca8..cc38a5e3 100644 --- a/io.sc.platform.core.frontend/src/platform/components/utils/componentComm.ts +++ b/io.sc.platform.core.frontend/src/platform/components/utils/componentComm.ts @@ -254,7 +254,7 @@ function columnStyle(item: any) { style = item.style; } if (Object.hasOwnProperty.call(item, 'width')) { - item.style = `min-width: ` + item.width + `px; max-width: ` + item.width + `px;` + style; + item.style = `min-width: ` + item.width + `px; width: ` + item.width + `px;max-width: ` + item.width + `px;` + style; delete item.width; if (Object.hasOwnProperty.call(item, 'classes')) { @@ -282,11 +282,11 @@ function columnChildrenHandler(item: any, gridColumns: any) { */ export function extractTableColumnsProps(props: any) { const gridColumns = []; - if (props.tableColumns && props.tableColumns.length > 0) { - if (props.tableShowSortNo) { + if (props.columns && props.columns.length > 0) { + if (props.showSortNo) { gridColumns.push({ name: '_sortNo_', align: 'center', label: '序号', field: '_sortNo_' }); } - props.tableColumns.forEach((item: any) => { + props.columns.forEach((item: any) => { columnChildrenHandler(item, gridColumns); }); return gridColumns; diff --git a/io.sc.platform.core.frontend/src/platform/components/utils/index.ts b/io.sc.platform.core.frontend/src/platform/components/utils/index.ts index c5949a65..83328339 100644 --- a/io.sc.platform.core.frontend/src/platform/components/utils/index.ts +++ b/io.sc.platform.core.frontend/src/platform/components/utils/index.ts @@ -17,3 +17,5 @@ export { extractTableProps } from './componentComm'; export { extractTableColumnsProps } from './componentComm'; export { getQueryFormColsNumberByScreen } from './componentComm'; export { arrayToMap } from './componentComm'; + +export { FormValidators } from './FormValidators'; diff --git a/io.sc.platform.core.frontend/src/platform/index.ts b/io.sc.platform.core.frontend/src/platform/index.ts index 35a4a397..0de8e7d1 100644 --- a/io.sc.platform.core.frontend/src/platform/index.ts +++ b/io.sc.platform.core.frontend/src/platform/index.ts @@ -105,7 +105,7 @@ export { WPosition, WCodemirror, WSelect, - WListGrid, + // WListGrid, WTreeGrid, PlatformDialog, PlatformDrawer, diff --git a/io.sc.platform.core.frontend/src/routes/routes.json b/io.sc.platform.core.frontend/src/routes/routes.json index fdcc0041..7efd0281 100644 --- a/io.sc.platform.core.frontend/src/routes/routes.json +++ b/io.sc.platform.core.frontend/src/routes/routes.json @@ -48,15 +48,99 @@ } }, { - "name": "route.testcase.table", - "path": "testcase/table", + "name": "route.testcase.likm.dialog", + "path": "testcase/likm/dialog", "parent": "/", "priority": 0, - "component": "component.testcase.table", - "componentPath": "@/views/Table.vue", + "component": "component.testcase.likmDialog", + "componentPath": "@/views/likm/Dialog.vue", "redirect": null, "meta": { - "permissions": ["/testcase/table/**/*"] + "permissions": ["/testcase/treeGrid/**/*"] + } + }, + { + "name": "route.testcase.likm.drawer", + "path": "testcase/likm/drawer", + "parent": "/", + "priority": 0, + "component": "component.testcase.likmDrawer", + "componentPath": "@/views/likm/Drawer.vue", + "redirect": null, + "meta": { + "permissions": ["/testcase/treeGrid/**/*"] + } + }, + { + "name": "route.testcase.likm.form", + "path": "testcase/likm/form", + "parent": "/", + "priority": 0, + "component": "component.testcase.likmForm", + "componentPath": "@/views/likm/Form.vue", + "redirect": null, + "meta": { + "permissions": ["/testcase/treeGrid/**/*"] + } + }, + { + "name": "route.testcase.likm.infoPanel", + "path": "testcase/likm/infoPanel", + "parent": "/", + "priority": 0, + "component": "component.testcase.infoPanel", + "componentPath": "@/views/likm/InfoPanel.vue", + "redirect": null, + "meta": { + "permissions": ["/testcase/treeGrid/**/*"] + } + }, + { + "name": "route.testcase.likm.grid", + "path": "testcase/likm/grid", + "parent": "/", + "priority": 0, + "component": "component.testcase.grid", + "componentPath": "@/views/likm/Grid.vue", + "redirect": null, + "meta": { + "permissions": ["/testcase/treeGrid/**/*"] + } + }, + { + "name": "route.testcase.likm.toolbar", + "path": "testcase/likm/toolbar", + "parent": "/", + "priority": 0, + "component": "component.testcase.toolbar", + "componentPath": "@/views/likm/Toolbar.vue", + "redirect": null, + "meta": { + "permissions": ["/testcase/treeGrid/**/*"] + } + }, + { + "name": "route.testcase.likm.quasarGrid", + "path": "testcase/likm/quasarGrid", + "parent": "/", + "priority": 0, + "component": "component.testcase.quasarGrid", + "componentPath": "@/views/likm/QuasarGrid.vue", + "redirect": null, + "meta": { + "permissions": ["/testcase/treeGrid/**/*"] + } + }, + { + "name": "route.testcase.likm.gridLayout", + "path": "testcase/likm/gridLayout", + "parent": "/", + "priority": 0, + "component": "component.testcase.gridLayout", + "componentPath": "@/views/likm/GridLayout.vue", + "redirect": null, + "meta": { + "permissions": ["/testcase/treeGrid/**/*"] } } ] diff --git a/io.sc.platform.core.frontend/src/views/Form1.vue b/io.sc.platform.core.frontend/src/views/Form1.vue new file mode 100644 index 00000000..444f06df --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/Form1.vue @@ -0,0 +1,30 @@ + + + + + + diff --git a/io.sc.platform.core.frontend/src/views/Grid1.vue b/io.sc.platform.core.frontend/src/views/Grid1.vue new file mode 100644 index 00000000..d7e5272c --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/Grid1.vue @@ -0,0 +1,4 @@ + + 2222 + + diff --git a/io.sc.platform.core.frontend/src/views/likm/A.vue b/io.sc.platform.core.frontend/src/views/likm/A.vue new file mode 100644 index 00000000..f1d6b20d --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/A.vue @@ -0,0 +1,13 @@ + + + + diff --git a/io.sc.platform.core.frontend/src/views/likm/Dialog.vue b/io.sc.platform.core.frontend/src/views/likm/Dialog.vue new file mode 100644 index 00000000..91b5a8b9 --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/Dialog.vue @@ -0,0 +1,35 @@ + + + + + 11111 + 22222 + + + + + diff --git a/io.sc.platform.core.frontend/src/views/likm/Drawer.vue b/io.sc.platform.core.frontend/src/views/likm/Drawer.vue new file mode 100644 index 00000000..210f1cb7 --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/Drawer.vue @@ -0,0 +1,34 @@ + + + + + 1111 + + + + + diff --git a/io.sc.platform.core.frontend/src/views/likm/Form.vue b/io.sc.platform.core.frontend/src/views/likm/Form.vue new file mode 100644 index 00000000..cc38fdfe --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/Form.vue @@ -0,0 +1,152 @@ + + + + + + + + diff --git a/io.sc.platform.core.frontend/src/views/likm/Grid.vue b/io.sc.platform.core.frontend/src/views/likm/Grid.vue new file mode 100644 index 00000000..7e4b8ae4 --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/Grid.vue @@ -0,0 +1,220 @@ + + + + + + + diff --git a/io.sc.platform.core.frontend/src/views/likm/GridLayout.vue b/io.sc.platform.core.frontend/src/views/likm/GridLayout.vue new file mode 100644 index 00000000..2b8c2a7c --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/GridLayout.vue @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + 11111 + + + + + diff --git a/io.sc.platform.core.frontend/src/views/likm/InfoPanel.vue b/io.sc.platform.core.frontend/src/views/likm/InfoPanel.vue new file mode 100644 index 00000000..1b13197c --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/InfoPanel.vue @@ -0,0 +1,15 @@ + + + + + + diff --git a/io.sc.platform.core.frontend/src/views/likm/QuasarGrid.vue b/io.sc.platform.core.frontend/src/views/likm/QuasarGrid.vue new file mode 100644 index 00000000..b5d0620a --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/QuasarGrid.vue @@ -0,0 +1,154 @@ + + + + + + + + + diff --git a/io.sc.platform.core.frontend/src/views/likm/Toolbar.vue b/io.sc.platform.core.frontend/src/views/likm/Toolbar.vue new file mode 100644 index 00000000..f2910ede --- /dev/null +++ b/io.sc.platform.core.frontend/src/views/likm/Toolbar.vue @@ -0,0 +1,153 @@ + + + + 这是测试标题 + + + + + + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/Form1.vue b/io.sc.platform.core.frontend/template-project/src/views/Form1.vue new file mode 100644 index 00000000..444f06df --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/Form1.vue @@ -0,0 +1,30 @@ + + + + + + diff --git a/io.sc.platform.core.frontend/template-project/src/views/Grid1.vue b/io.sc.platform.core.frontend/template-project/src/views/Grid1.vue new file mode 100644 index 00000000..d7e5272c --- /dev/null +++ b/io.sc.platform.core.frontend/template-project/src/views/Grid1.vue @@ -0,0 +1,4 @@ + + 2222 + +