Browse Source

update

main
wangshaoping 12 months ago
parent
commit
58a494707c
  1. 6
      app.platform/build.gradle
  2. 2
      erm.frontend/package.json
  3. 61
      erm.frontend/src/views/kpi/Indicator.vue
  4. 17
      erm.frontend/src/views/kpi/IndicatorStatus.vue
  5. 47
      erm.frontend/src/views/kpi/SelectIndicatorDialog.vue
  6. 2
      io.sc.engine.mv.frontend/package.json
  7. 2
      io.sc.platform.core.frontend/package.json
  8. 3
      io.sc.platform.core.frontend/src/platform/components/index.ts
  9. 38
      io.sc.platform.core.frontend/src/platform/components/layout/WHScreenDiv.vue
  10. 17
      io.sc.platform.core.frontend/src/platform/components/layout/WVExpandDiv.vue
  11. 1
      io.sc.platform.core.frontend/src/platform/index.ts
  12. 11
      io.sc.platform.core.frontend/src/platform/views/Home.vue
  13. 4
      io.sc.platform.core.frontend/src/views/FormElements.vue
  14. 4
      io.sc.platform.core.frontend/template-project/package.json
  15. 40
      io.sc.platform.core.frontend/template-project/src/components/index.ts
  16. 94
      io.sc.platform.core.frontend/template-project/src/views/FormElements.vue
  17. 4
      io.sc.platform.core.frontend/template-project/util-components-generator.cjs
  18. 2
      io.sc.platform.core/src/main/java/io/sc/platform/core/controller/EnumWebController.java
  19. 1
      io.sc.platform.jdbc.liquibase/src/main/resources/META-INF/platform/plugins/components.json
  20. 6
      io.sc.platform.jdbc.liquibase/src/main/resources/templates/io/sc/platform/jdbc/liquibase/updater/updater.html
  21. 4
      io.sc.platform.lcdp.frontend/src/views/Frontend.vue
  22. 4
      io.sc.platform.lcdp.frontend/src/views/Theme.vue

6
app.platform/build.gradle

@ -15,9 +15,9 @@ dependencies {
project(":io.sc.platform.developer"),
project(":io.sc.platform.security.loginform"),
// project(":io.sc.engine.mv"),
// project(":io.sc.engine.mv.frontend"),
// project(":io.sc.engine.mv.sample"),
project(":io.sc.engine.mv"),
project(":io.sc.engine.mv.frontend"),
project(":io.sc.engine.mv.sample"),
project(":erm"),
project(":erm.frontend"),

2
erm.frontend/package.json

@ -80,7 +80,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
"platform-core": "8.1.138",
"platform-core": "8.1.140",
"quasar": "2.14.2",
"tailwindcss": "3.4.0",
"vue": "3.4.3",

61
erm.frontend/src/views/kpi/Indicator.vue

@ -24,7 +24,7 @@
label: $t('erm.kpi.indicator.grid.entity.source'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_SOURCE),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_SOURCE),
queryOperator: 'equals',
},
{
@ -40,7 +40,7 @@
label: $t('erm.kpi.indicator.grid.entity.categoryRisk'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY_RISK),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_RISK),
queryOperator: 'equals',
},
{
@ -48,7 +48,7 @@
label: $t('erm.kpi.indicator.grid.entity.categoryBusiness'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY_BUSINESS),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_BUSINESS),
queryOperator: 'equals',
},
{
@ -56,7 +56,7 @@
label: $t('erm.kpi.indicator.grid.entity.categoryCal'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY_CAL),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_CAL),
queryOperator: 'equals',
},
{
@ -64,7 +64,7 @@
label: $t('erm.kpi.indicator.grid.entity.unit'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_UNIT),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_UNIT),
queryOperator: 'equals',
},
{
@ -72,7 +72,7 @@
label: $t('erm.kpi.indicator.grid.entity.frequency'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_FREQUENCY),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_FREQUENCY),
queryOperator: 'equals',
},
]"
@ -86,27 +86,32 @@
{ width: 100, name: 'code', label: $t('code') },
{ width: 300, name: 'name', label: $t('name') },
{ width: 70, name: 'enable', label: $t('enable'), align: 'center', format: Formater.enableTag() },
{ width: 70, name: 'unit', label: $t('erm.kpi.indicator.grid.entity.unit'), format: Formater.dictionary(INDICATOR_UNIT) },
{ width: 70, name: 'frequency', label: $t('erm.kpi.indicator.grid.entity.frequency'), format: Formater.dictionary(INDICATOR_FREQUENCY) },
{ width: 80, name: 'category', label: $t('erm.kpi.indicator.grid.entity.category'), format: Formater.dictionary(INDICATOR_CATEGORY) },
{ width: 100, name: 'categoryCal', label: $t('erm.kpi.indicator.grid.entity.categoryCal'), format: Formater.dictionary(INDICATOR_CATEGORY_CAL) },
{ width: 70, name: 'unit', label: $t('erm.kpi.indicator.grid.entity.unit'), format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_UNIT) },
{ width: 70, name: 'frequency', label: $t('erm.kpi.indicator.grid.entity.frequency'), format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_FREQUENCY) },
{ width: 80, name: 'category', label: $t('erm.kpi.indicator.grid.entity.category'), format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY) },
{
width: 100,
name: 'categoryCal',
label: $t('erm.kpi.indicator.grid.entity.categoryCal'),
format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_CAL),
},
{
width: 100,
name: 'categoryRisk',
label: $t('erm.kpi.indicator.grid.entity.categoryRisk'),
format: Formater.dictionary(INDICATOR_CATEGORY_RISK),
format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_RISK),
},
{
width: 100,
name: 'categoryBusiness',
label: $t('erm.kpi.indicator.grid.entity.categoryBusiness'),
format: Formater.dictionary(INDICATOR_CATEGORY_BUSINESS),
format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_BUSINESS),
},
{
width: 100,
name: 'source',
label: $t('erm.kpi.indicator.grid.entity.source'),
format: Formater.dictionary(INDICATOR_SOURCE),
format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_SOURCE),
},
{
width: 100,
@ -142,47 +147,47 @@
label: $t('erm.kpi.indicator.grid.entity.source'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_SOURCE),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_SOURCE),
},
{
name: 'category',
label: $t('erm.kpi.indicator.grid.entity.category'),
type: 'select',
required: true,
options: Options.dictionary(INDICATOR_CATEGORY),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY),
},
{
name: 'categoryCal',
label: $t('erm.kpi.indicator.grid.entity.categoryCal'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY_CAL),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_CAL),
},
{
name: 'categoryRisk',
label: $t('erm.kpi.indicator.grid.entity.categoryRisk'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY_RISK),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_RISK),
},
{
name: 'categoryBusiness',
label: $t('erm.kpi.indicator.grid.entity.categoryBusiness'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY_BUSINESS),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_BUSINESS),
},
{
name: 'unit',
label: $t('erm.kpi.indicator.grid.entity.unit'),
type: 'select',
options: Options.dictionary(INDICATOR_UNIT),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_UNIT),
},
{
name: 'frequency',
label: $t('erm.kpi.indicator.grid.entity.frequency'),
type: 'select',
options: Options.dictionary(INDICATOR_FREQUENCY),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_FREQUENCY),
},
{ name: 'formula', label: $t('erm.kpi.indicator.grid.entity.formula'), type: 'code-mirror', colSpan: 3, rows: 3 },
{ name: 'sql', label: $t('erm.kpi.indicator.grid.entity.sql'), type: 'code-mirror', colSpan: 3, rows: 3 },
@ -246,12 +251,14 @@ import IndicatorStatus from './IndicatorStatus';
const gridRef = ref();
const INDICATOR_CATEGORY = await DictionaryTools.fetch('INDICATOR_CATEGORY');
const INDICATOR_CATEGORY_RISK = await DictionaryTools.fetch('INDICATOR_CATEGORY_RISK');
const INDICATOR_CATEGORY_BUSINESS = await DictionaryTools.fetch('INDICATOR_CATEGORY_BUSINESS');
const INDICATOR_CATEGORY_CAL = await DictionaryTools.fetch('INDICATOR_CATEGORY_CAL');
const INDICATOR_UNIT = await DictionaryTools.fetch('INDICATOR_UNIT');
const INDICATOR_FREQUENCY = await DictionaryTools.fetch('INDICATOR_FREQUENCY');
const INDICATOR_SOURCE = await DictionaryTools.fetch('INDICATOR_SOURCE');
const DICTIONARY_MAP = await DictionaryTools.fetch([
'INDICATOR_CATEGORY',
'INDICATOR_CATEGORY_RISK',
'INDICATOR_CATEGORY_BUSINESS',
'INDICATOR_CATEGORY_CAL',
'INDICATOR_UNIT',
'INDICATOR_FREQUENCY',
'INDICATOR_SOURCE',
]);
const CONDITIONS = ['>', '>=', '<', '<='];
</script>

17
erm.frontend/src/views/kpi/IndicatorStatus.vue

@ -1,17 +0,0 @@
<template>
<div>
<q-chip v-if="appetite" color="green" text-color="white" :label="$t('erm.kpi.indicator.grid.entity.appetite')" dense></q-chip>
<q-chip v-if="limit" color="green" text-color="white" :label="$t('erm.kpi.indicator.grid.entity.limit')" dense></q-chip>
<q-chip v-if="supervise" color="green" text-color="white" :label="$t('erm.kpi.indicator.grid.entity.supervise')" dense></q-chip>
</div>
</template>
<script setup lang="ts">
const props = defineProps({
appetite: { type: Boolean, default: false },
limit: { type: Boolean, default: false },
supervise: { type: Boolean, default: false },
});
console.log(props.appetite);
console.log(props.limit);
console.log(props.supervise);
</script>

47
erm.frontend/src/views/kpi/SelectIndicatorDialog.vue

@ -47,7 +47,7 @@
label: $t('erm.kpi.indicator.grid.entity.source'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_SOURCE),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_SOURCE),
queryOperator: 'equals',
},
{
@ -55,7 +55,7 @@
label: $t('erm.kpi.indicator.grid.entity.category'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY),
queryOperator: 'equals',
},
{
@ -63,7 +63,7 @@
label: $t('erm.kpi.indicator.grid.entity.categoryRisk'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY_RISK),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_RISK),
queryOperator: 'equals',
},
{
@ -71,7 +71,7 @@
label: $t('erm.kpi.indicator.grid.entity.categoryBusiness'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY_BUSINESS),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_BUSINESS),
queryOperator: 'equals',
},
{
@ -79,7 +79,7 @@
label: $t('erm.kpi.indicator.grid.entity.categoryCal'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_CATEGORY_CAL),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_CAL),
queryOperator: 'equals',
},
{
@ -87,7 +87,7 @@
label: $t('erm.kpi.indicator.grid.entity.unit'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_UNIT),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_UNIT),
queryOperator: 'equals',
},
{
@ -95,7 +95,7 @@
label: $t('erm.kpi.indicator.grid.entity.frequency'),
type: 'select',
clearable: true,
options: Options.dictionary(INDICATOR_FREQUENCY),
options: Options.dictionary(DICTIONARY_MAP.INDICATOR_FREQUENCY),
queryOperator: 'equals',
},
]"
@ -105,26 +105,31 @@
{ width: 100, name: 'code', label: $t('code') },
{ width: 300, name: 'name', label: $t('name') },
{ width: 70, name: 'enable', label: $t('enable'), align: 'center', format: Formater.enableTag() },
{ width: 70, name: 'unit', label: $t('erm.kpi.indicator.grid.entity.unit'), format: Formater.dictionary(INDICATOR_UNIT) },
{ width: 70, name: 'frequency', label: $t('erm.kpi.indicator.grid.entity.frequency'), format: Formater.dictionary(INDICATOR_FREQUENCY) },
{ width: 80, name: 'category', label: $t('erm.kpi.indicator.grid.entity.category'), format: Formater.dictionary(INDICATOR_CATEGORY) },
{ width: 70, name: 'unit', label: $t('erm.kpi.indicator.grid.entity.unit'), format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_UNIT) },
{
width: 70,
name: 'frequency',
label: $t('erm.kpi.indicator.grid.entity.frequency'),
format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_FREQUENCY),
},
{ width: 80, name: 'category', label: $t('erm.kpi.indicator.grid.entity.category'), format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY) },
{
width: 100,
name: 'categoryCal',
label: $t('erm.kpi.indicator.grid.entity.categoryCal'),
format: Formater.dictionary(INDICATOR_CATEGORY_CAL),
format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_CAL),
},
{
width: 100,
name: 'categoryRisk',
label: $t('erm.kpi.indicator.grid.entity.categoryRisk'),
format: Formater.dictionary(INDICATOR_CATEGORY_RISK),
format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_RISK),
},
{
width: 100,
name: 'categoryBusiness',
label: $t('erm.kpi.indicator.grid.entity.categoryBusiness'),
format: Formater.dictionary(INDICATOR_CATEGORY_BUSINESS),
format: Formater.dictionary(DICTIONARY_MAP.INDICATOR_CATEGORY_BUSINESS),
},
{
width: 100,
@ -181,11 +186,13 @@ defineExpose({
close,
});
const INDICATOR_CATEGORY = await DictionaryTools.fetch('INDICATOR_CATEGORY');
const INDICATOR_CATEGORY_RISK = await DictionaryTools.fetch('INDICATOR_CATEGORY_RISK');
const INDICATOR_CATEGORY_BUSINESS = await DictionaryTools.fetch('INDICATOR_CATEGORY_BUSINESS');
const INDICATOR_CATEGORY_CAL = await DictionaryTools.fetch('INDICATOR_CATEGORY_CAL');
const INDICATOR_UNIT = await DictionaryTools.fetch('INDICATOR_UNIT');
const INDICATOR_FREQUENCY = await DictionaryTools.fetch('INDICATOR_FREQUENCY');
const INDICATOR_SOURCE = await DictionaryTools.fetch('INDICATOR_SOURCE');
const DICTIONARY_MAP = await DictionaryTools.fetch([
'INDICATOR_CATEGORY',
'INDICATOR_CATEGORY_RISK',
'INDICATOR_CATEGORY_BUSINESS',
'INDICATOR_CATEGORY_CAL',
'INDICATOR_UNIT',
'INDICATOR_FREQUENCY',
'INDICATOR_SOURCE',
]);
</script>

2
io.sc.engine.mv.frontend/package.json

@ -80,7 +80,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
"platform-core": "8.1.137",
"platform-core": "8.1.140",
"quasar": "2.14.2",
"tailwindcss": "3.4.0",
"vue": "3.4.3",

2
io.sc.platform.core.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.1.139",
"version": "8.1.141",
"description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件",
"main": "dist/platform-core.js",

3
io.sc.platform.core.frontend/src/platform/components/index.ts

@ -27,7 +27,6 @@ import WGrid from './grid/WGrid.vue';
import WIconEmpty from './icon/WIconEmpty.vue';
import WHScreenDiv from './layout/WHScreenDiv.vue';
import WVExpandDiv from './layout/WVExpandDiv.vue';
import WInfoPanel from './panel/WInfoPanel.vue';
@ -71,7 +70,6 @@ export default {
app.component('WIconEmpty', WIconEmpty);
app.component('WHScreenDiv', WHScreenDiv);
app.component('WVExpandDiv', WVExpandDiv);
app.component('WInfoPanel', WInfoPanel);
@ -110,7 +108,6 @@ export {
WOptionGroup,
WGrid,
WIconEmpty,
WHScreenDiv,
WVExpandDiv,
WInfoPanel,
WProgress,

38
io.sc.platform.core.frontend/src/platform/components/layout/WHScreenDiv.vue

@ -1,38 +0,0 @@
<template>
<div
ref="containerRef"
:style="{
'min-height': containerHeightRef + 'px',
}"
>
<slot></slot>
</div>
</template>
<script setup lang="ts">
import { ref, computed, onMounted, toRaw } from 'vue';
import { useQuasar } from 'quasar';
import { Environment, eventBus } from '@/platform';
const gc = Environment.getConfigure();
const q = useQuasar();
import TagViewBarVue from '@/platform/view/theme/TagViewBar.vue';
const containerRef = ref<HTMLElement>();
const containerHeightRef = ref(0);
onMounted(() => {
if (containerRef.value) {
const y = containerRef.value.getBoundingClientRect().y;
if (y >= q.screen.height) {
containerHeightRef.value = 0;
} else {
let height = q.screen.height - y;
height -= gc.theme.main.containerPaddingBottom;
if (gc.theme.footer.enable) {
height -= gc.theme.footer.height;
}
containerHeightRef.value = height > 0 ? height : 0;
return height > 0 ? height : 0;
}
}
});
</script>

17
io.sc.platform.core.frontend/src/platform/components/layout/WVExpandDiv.vue

@ -2,7 +2,6 @@
<div
ref="containerRef"
:style="{
height: containerHeightRef + 'px',
'min-height': containerHeightRef + 'px',
}"
>
@ -10,7 +9,7 @@
</div>
</template>
<script setup lang="ts">
import { ref, onMounted, watch } from 'vue';
import { inject, ref, onMounted, watch } from 'vue';
import { useQuasar } from 'quasar';
import { Environment } from '@/platform/plugin/environment';
@ -28,6 +27,10 @@ onMounted(() => {
changeDivHeight();
});
changeDivHeight();
const eventBus = inject('eventBus');
eventBus.on('onWindowResize', () => {
changeDivHeight();
});
});
const changeDivHeight = () => {
@ -36,15 +39,13 @@ const changeDivHeight = () => {
if (y >= q.screen.height) {
containerHeightRef.value = 0;
} else {
let height = 0;
console.log(gc.theme.footer.enable);
let height = q.screen.height - y;
height -= gc.theme.main.containerPaddingBottom;
if (gc.theme.footer.enable) {
height = q.screen.height - y - gc.theme.footer.height;
} else {
height = q.screen.height - y;
height -= gc.theme.footer.height;
}
height = height - gc.theme.main.containerPaddingBottom - gc.theme.main.paddingTop;
containerHeightRef.value = height > 0 ? height : 0;
return height > 0 ? height : 0;
}
}
};

1
io.sc.platform.core.frontend/src/platform/index.ts

@ -131,7 +131,6 @@ export {
WOptionGroup,
WGrid,
WIconEmpty,
WHScreenDiv,
WVExpandDiv,
WInfoPanel,
WProgress,

11
io.sc.platform.core.frontend/src/platform/views/Home.vue

@ -1,17 +1,12 @@
<template>
<w-h-screen-div>
<div class="px-2 py-2">
<div class="flex justify-center items-center" style="padding-top: 100px">
<q-date v-model="now" mask="YYYY-MM-DD" :years-in-month-view="false" />
</div>
</div>
</w-h-screen-div>
<div class="flex justify-center items-center px-2 py-2" style="height: 100%">
<q-date v-model="now" mask="YYYY-MM-DD" :years-in-month-view="false" />
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import dayjs from 'dayjs';
import { eventBus } from '@/platform';
const now = ref(dayjs().format('YYYY-MM-DD'));
</script>

4
io.sc.platform.core.frontend/src/views/FormElements.vue

@ -30,8 +30,8 @@
{ name: 'cron', label: 'please input cron expression', type: 'cron', outlined: true, dense: true },
{ name: 'position', label: 'please select position', type: 'position', outlined: true, dense: true, readOnly: true },
{ name: 'icon', label: 'please select icon', type: 'icon', outlined: true, dense: true },
{ name: 'dataComeFrom', label: '', type: 'select', options: Options.enum(DataComeFromEnums['io.sc.platform.orm.api.enums.DataComeFrom']) },
{ name: 'dataComeFrom', label: '', type: 'select', options: Options.enum(DataComeFromEnums['io.sc.platform.system.enums.UrlOpenType']) },
{ name: 'dataComeFrom', label: '', type: 'select', options: Options.enum(DataComeFromEnums.DataComeFrom) },
{ name: 'dataComeFrom', label: '', type: 'select', options: Options.enum(DataComeFromEnums.UrlOpenType) },
]"
>
</w-form>

4
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.1.137",
"version": "8.1.141",
"description": "前端核心包,用于快速构建前端的脚手架",
"private": false,
"keywords": [],
@ -92,7 +92,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
"platform-core": "8.1.137",
"platform-core": "8.1.141",
"quasar": "2.14.5",
"tailwindcss": "3.4.0",
"vue": "3.4.3",

40
io.sc.platform.core.frontend/template-project/src/components/index.ts

@ -2,28 +2,28 @@
* ,
*/
import formElements from '@/views/FormElements.vue';
import likmDialog from '@/views/likm/Dialog.vue';
import likmDrawer from '@/views/likm/Drawer.vue';
import likmForm from '@/views/likm/Form.vue';
import infoPanel from '@/views/likm/InfoPanel.vue';
import grid from '@/views/likm/Grid.vue';
import toolbar from '@/views/likm/Toolbar.vue';
import quasarGrid from '@/views/likm/QuasarGrid.vue';
import gridLayout from '@/views/likm/GridLayout.vue';
import likmTreeGrid from '@/views/likm/TreeGrid.vue';
import component_testcase_formElements from '@/views/FormElements.vue';
import component_testcase_likmDialog from '@/views/likm/Dialog.vue';
import component_testcase_likmDrawer from '@/views/likm/Drawer.vue';
import component_testcase_likmForm from '@/views/likm/Form.vue';
import component_testcase_infoPanel from '@/views/likm/InfoPanel.vue';
import component_testcase_grid from '@/views/likm/Grid.vue';
import component_testcase_toolbar from '@/views/likm/Toolbar.vue';
import component_testcase_quasarGrid from '@/views/likm/QuasarGrid.vue';
import component_testcase_gridLayout from '@/views/likm/GridLayout.vue';
import component_testcase_likmTreeGrid from '@/views/likm/TreeGrid.vue';
const localComponents = {
'component.testcase.formElements': formElements,
'component.testcase.likmDialog': likmDialog,
'component.testcase.likmDrawer': likmDrawer,
'component.testcase.likmForm': likmForm,
'component.testcase.infoPanel': infoPanel,
'component.testcase.grid': grid,
'component.testcase.toolbar': toolbar,
'component.testcase.quasarGrid': quasarGrid,
'component.testcase.gridLayout': gridLayout,
'component.testcase.likmTreeGrid': likmTreeGrid,
'component.testcase.formElements': component_testcase_formElements,
'component.testcase.likmDialog': component_testcase_likmDialog,
'component.testcase.likmDrawer': component_testcase_likmDrawer,
'component.testcase.likmForm': component_testcase_likmForm,
'component.testcase.infoPanel': component_testcase_infoPanel,
'component.testcase.grid': component_testcase_grid,
'component.testcase.toolbar': component_testcase_toolbar,
'component.testcase.quasarGrid': component_testcase_quasarGrid,
'component.testcase.gridLayout': component_testcase_gridLayout,
'component.testcase.likmTreeGrid': component_testcase_likmTreeGrid,
};
export default localComponents;

94
io.sc.platform.core.frontend/template-project/src/views/FormElements.vue

@ -1,59 +1,61 @@
<template>
<q-splitter v-model="splitWidthRef">
<template #before>
<q-tabs v-model="selectedTab" vertical no-caps>
<q-tab name="formElements" label="All Form Elements" />
<q-tab name="codemirror" label="code-mirror" />
</q-tabs>
</template>
<w-v-expand-div>
<q-splitter v-model="splitWidthRef">
<template #before>
<q-tabs v-model="selectedTab" vertical no-caps>
<q-tab name="formElements" label="All Form Elements" />
<q-tab name="codemirror" label="code-mirror" />
</q-tabs>
</template>
<template #after>
<q-tab-panels v-model="selectedTab" animated swipeable vertical transition-prev="jump-up" transition-next="jump-up">
<q-tab-panel name="formElements">
<w-form
:cols-num="1"
:fields="[
{ name: 'color', label: 'please select color', type: 'color-input', outlined: true, dense: true },
{ name: 'colorPalette', label: 'please select color palette', type: 'color-input-palette', outlined: true, dense: true },
{
name: 'codemirror',
label: 'please input SQL',
type: 'code-mirror',
outlined: true,
lang: 'sql',
dense: true,
rows: 5,
readonlyIf: () => {
return true;
<template #after>
<q-tab-panels v-model="selectedTab" animated swipeable vertical transition-prev="jump-up" transition-next="jump-up">
<q-tab-panel name="formElements">
<w-form
:cols-num="1"
:fields="[
{ name: 'color', label: 'please select color', type: 'color-input', outlined: true, dense: true },
{ name: 'colorPalette', label: 'please select color palette', type: 'color-input-palette', outlined: true, dense: true },
{
name: 'codemirror',
label: 'please input SQL',
type: 'code-mirror',
outlined: true,
lang: 'sql',
dense: true,
rows: 5,
readonlyIf: () => {
return true;
},
},
},
{ name: 'cron', label: 'please input cron expression', type: 'cron', outlined: true, dense: true },
{ name: 'position', label: 'please select position', type: 'position', outlined: true, dense: true, readOnly: true },
{ name: 'icon', label: 'please select icon', type: 'icon', outlined: true, dense: true },
]"
>
</w-form>
</q-tab-panel>
<q-tab-panel name="codemirror">
<q-input v-model="valueRef" label="please input number 1:" outlined dense clearable></q-input>
<w-code-mirror v-model="valueRef" label="please input SQL:" lang="sql" outlined dense></w-code-mirror>
<q-input v-model="valueRef" label="please input number 2:" outlined dense clearable></q-input>
<w-icon v-model="iconValueRef" label="please select icon:" lang="sql" outlined dense></w-icon>
<w-progress data-url="/api/jdbc/export/traceExecuteProgress"></w-progress>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
{ name: 'cron', label: 'please input cron expression', type: 'cron', outlined: true, dense: true },
{ name: 'position', label: 'please select position', type: 'position', outlined: true, dense: true, readOnly: true },
{ name: 'icon', label: 'please select icon', type: 'icon', outlined: true, dense: true },
{ name: 'dataComeFrom', label: '', type: 'select', options: Options.enum(DataComeFromEnums.DataComeFrom) },
{ name: 'dataComeFrom', label: '', type: 'select', options: Options.enum(DataComeFromEnums.UrlOpenType) },
]"
>
</w-form>
</q-tab-panel>
<q-tab-panel name="codemirror">
<q-input v-model="valueRef" label="please input number 1:" outlined dense clearable></q-input>
<w-code-mirror v-model="valueRef" label="please input SQL:" lang="sql" outlined dense></w-code-mirror>
<q-input v-model="valueRef" label="please input number 2:" outlined dense clearable></q-input>
<w-icon v-model="iconValueRef" label="please select icon:" lang="sql" outlined dense></w-icon>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</w-v-expand-div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { EnumTools, Options } from '@/platform';
const selectedTab = ref('codemirror');
const splitWidthRef = ref(20);
const valueRef = ref('xxxx');
const iconValueRef = ref('8k_plus');
const focus = () => {
console.log('sfsdf');
};
const DataComeFromEnums = await EnumTools.fetch(['io.sc.platform.orm.api.enums.DataComeFrom', 'io.sc.platform.system.enums.UrlOpenType']);
</script>

4
io.sc.platform.core.frontend/template-project/util-components-generator.cjs

@ -13,7 +13,7 @@ content +='/**\n';
content +=' * 此文件为自动生成文件,请勿修改\n';
content +=' */\n\n';
for(const route of routesJson){
const componentName =route.component.substring(route.component.lastIndexOf('.')+1);
const componentName =route.component.replaceAll('.','_');
const componentPath =route.componentPath;
content +=`import ${componentName} from '${componentPath}';\n`;
}
@ -21,7 +21,7 @@ for(const route of routesJson){
content +='\n';
content +='const localComponents = { \n';
for(const route of routesJson){
const componentName =route.component.substring(route.component.lastIndexOf('.')+1);
const componentName =route.component.replaceAll('.','_');
content +=`'${route.component}': ${componentName},\n`;
}
content +='}\n\n';

2
io.sc.platform.core/src/main/java/io/sc/platform/core/controller/EnumWebController.java

@ -37,7 +37,7 @@ public class EnumWebController {
if(clazz.isEnum()){
Method method =clazz.getDeclaredMethod("values");
Enum<?>[] enums =(Enum<?>[])method.invoke(null);
result.put(type,convert(enums));
result.put(clazz.getSimpleName(),convert(enums));
}
}
}

1
io.sc.platform.jdbc.liquibase/src/main/resources/META-INF/platform/plugins/components.json

@ -1,6 +1,7 @@
{
"includes":[
"io.sc.platform.jdbc.liquibase.installer.controller",
"io.sc.platform.jdbc.liquibase.controller",
"io.sc.platform.jdbc.liquibase.service"
]
}

6
io.sc.platform.jdbc.liquibase/src/main/resources/templates/io/sc/platform/jdbc/liquibase/updater/updater.html

@ -33,7 +33,7 @@
<span th:text="#{|language.${#locale}|}"></span>
</button>
<ul class="dropdown-menu">
<li th:each="lang : ${T(io.sc.platform.system.api.i18n.I18nLanguage).values()}"><a class="dropdown-item" th:href="@{|/io.sc.platform.installer/installer.html?locale=${lang}|}" th:text="#{|language.${lang}|}">English</a></li>
<li th:each="lang : ${T(io.sc.platform.core.enums.Language).values()}"><a class="dropdown-item" th:href="@{|/io.sc.platform.installer/installer.html?locale=${lang}|}" th:text="#{|language.${lang}|}">English</a></li>
</ul>
</div>
</div>
@ -73,9 +73,9 @@
<div class="card-text">将要更新的内容清单:</div>
<table class="table">
<tr>
<th scope="col">[[#{liquibase.updater.table.order}]]</th>
<th scope="col" width="100px">[[#{liquibase.updater.table.order}]]</th>
<th scope="col">[[#{liquibase.updater.table.location}]]</th>
<th scope="col">[[#{liquibase.updater.table.description}]]</th>
<th scope="col" width="350px">[[#{liquibase.updater.table.description}]]</th>
</tr>
<tr th:each="change : ${changeSet}">
<td th:text="${change.order}"></td>

4
io.sc.platform.lcdp.frontend/src/views/Frontend.vue

@ -1,5 +1,5 @@
<template>
<w-h-screen-div>
<div>
<div class="fit row wrap justify-center items-start content-start q-pt-md q-gutter-md">
<q-input v-model="frontendWebContextPath" :label="$t('lcdp.frontend.export.frontendWebContextPath')" outlined dense style="width: 300px" />
</div>
@ -12,7 +12,7 @@
<div class="row q-pt-md">
<iframe ref="exportIframe" src="javascript:;" style="width: 100%; height: 400px"></iframe>
</div>
</w-h-screen-div>
</div>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue';

4
io.sc.platform.lcdp.frontend/src/views/Theme.vue

@ -1,5 +1,5 @@
<template>
<w-h-screen-div>
<div>
<div class="row justify-end q-gutter-md q-py-md">
<q-select
v-model="selectedTheme"
@ -101,7 +101,7 @@
</q-card-actions>
</q-card>
</q-dialog>
</w-h-screen-div>
</div>
</template>
<script setup lang="ts">
import { ref, toRaw } from 'vue';

Loading…
Cancel
Save