提交 42fcee83 编写于 作者: sq3536's avatar sq3536

Merge remote-tracking branch 'origin/master'

...@@ -59,4 +59,13 @@ public class CtrlModel extends BaseModel{ ...@@ -59,4 +59,13 @@ public class CtrlModel extends BaseModel{
return (IPSControl)opt; return (IPSControl)opt;
} }
public String getTempFilter() {
String name = this.getControl().getName();
if ("QUICKSEARCHFORM".equals(name.toUpperCase())) {
return "QUICKSEARCHFORM";
} else {
return this.getControl().getControlType();
}
}
} }
...@@ -179,7 +179,7 @@ public class ModelStorage { ...@@ -179,7 +179,7 @@ public class ModelStorage {
{ {
getSystemModel().getApps().forEach(app->{ getSystemModel().getApps().forEach(app->{
app.getCtrls().forEach(item->{ app.getCtrls().forEach(item->{
CliOption opt=newCliOption(TemplateFileType.ctrl).setCliSubType(item.getName().toUpperCase()).baseData(item,StringAdvUtils.spinalcase(item.getCodeName())).set("apps",app.getCodeName().toLowerCase()).set("appEntities",item.getFolder().toSpinalCase()); CliOption opt=newCliOption(TemplateFileType.ctrl).setCliSubType(item.getTempFilter().toUpperCase()).baseData(item,StringAdvUtils.spinalcase(item.getCodeName())).set("apps",app.getCodeName().toLowerCase()).set("appEntities",item.getFolder().toSpinalCase());
rt.addOption(opt); rt.addOption(opt);
}); });
}); });
......
...@@ -40,10 +40,10 @@ ...@@ -40,10 +40,10 @@
{{/eq}} {{/eq}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -22,10 +22,10 @@ ...@@ -22,10 +22,10 @@
:viewParams="state.viewParams" :viewParams="state.viewParams"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
:context="state.context" :context="state.context"
:viewParams="state.viewParams"/> :viewParams="state.viewParams"/>
\ No newline at end of file
...@@ -26,10 +26,10 @@ ...@@ -26,10 +26,10 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
\ No newline at end of file
...@@ -53,10 +53,10 @@ ...@@ -53,10 +53,10 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
\ No newline at end of file
...@@ -47,10 +47,10 @@ ...@@ -47,10 +47,10 @@
{{/eq}} {{/eq}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -28,11 +28,11 @@ ...@@ -28,11 +28,11 @@
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
:data="state.data" :data="state.data"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
:data="record" :data="record"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -8,11 +8,11 @@ ...@@ -8,11 +8,11 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -38,10 +38,10 @@ ...@@ -38,10 +38,10 @@
{{/eq}} {{/eq}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -38,10 +38,10 @@ ...@@ -38,10 +38,10 @@
:viewParams="state.viewParams" :viewParams="state.viewParams"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -22,10 +22,10 @@ ...@@ -22,10 +22,10 @@
:viewParams="state.viewParams" :viewParams="state.viewParams"
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
\ No newline at end of file
...@@ -14,10 +14,10 @@ ...@@ -14,10 +14,10 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -12,10 +12,10 @@ ...@@ -12,10 +12,10 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -20,11 +20,11 @@ ...@@ -20,11 +20,11 @@
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
:data="state.data" :data="state.data"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
:data="record" :data="record"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -18,10 +18,10 @@ ...@@ -18,10 +18,10 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -20,10 +20,10 @@ ...@@ -20,10 +20,10 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -11,10 +11,10 @@ ...@@ -11,10 +11,10 @@
{{/if}} {{/if}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -31,10 +31,10 @@ ...@@ -31,10 +31,10 @@
{{/eq}} {{/eq}}
{{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}} {{#if (or (eq ctrlType 'form') (eq ctrlType 'panel'))}}
:value="state.data.{{item.psEditor.name}}" :value="state.data.{{item.psEditor.name}}"
@editorEvent="handleEditorEvent" @editorEvent="onEditorEvent"
{{/if}} {{/if}}
{{#eq ctrlType 'grid'}} {{#eq ctrlType 'grid'}}
:value="record.{{item.psEditor.name}}" :value="record.{{item.psEditor.name}}"
@editorEvent="($event) => handleEditorEvent(index,$event)" @editorEvent="($event) => onEditorEvent(index,$event)"
{{/eq}} {{/eq}}
/> />
...@@ -4,6 +4,19 @@ ...@@ -4,6 +4,19 @@
viewCaption: '{{page.caption}}', viewCaption: '{{page.caption}}',
height: '{{page.height}}', height: '{{page.height}}',
width: '{{page.width}}', width: '{{page.width}}',
enableQuickGroup: {{#if page.enableQuickGroup}}true{{else}}false{{/if}},
{{#if page.quickGroupPSCodeList}}
quickGroupPSCodeList: {
codeName: '{{page.quickGroupPSCodeList.codeName}}',
codeListTag: '{{page.quickGroupPSCodeList.codeListTag}}',
codeListType: '{{page.quickGroupPSCodeList.codeListType}}',
codeItems: [
{{#page.quickGroupPSCodeList.psCodeItems}}
{codeName: '{{codeName}}', color: '{{color}}', data: '{{data}}', text: '{{text}}', value: '{{value}}', iconClass: '{{iconcls}}', imgPath: '{{icon}}'},
{{/page.quickGroupPSCodeList.psCodeItems}}
]
},
{{/if}}
appEntityName: '{{page.appEntity.codeName}}', appEntityName: '{{page.appEntity.codeName}}',
isLoadDefault: true, isLoadDefault: true,
keyPSDEField: '{{lowerCase page.appEntity.codeName}}', keyPSDEField: '{{lowerCase page.appEntity.codeName}}',
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
:titleBarCloseMode="{{item.titleBarCloseMode}}" :titleBarCloseMode="{{item.titleBarCloseMode}}"
:showCaption="{{item.showCaption}}" :showCaption="{{item.showCaption}}"
:uIActionGroup="state.detailsModel.{{item.codeName}}.uIActionGroup" :uIActionGroup="state.detailsModel.{{item.codeName}}.uIActionGroup"
@componentEvent="handleComponentEvent"> @componentEvent="onComponentEvent">
{{#eq item.psLayout.layout "FLEX"}} {{#eq item.psLayout.layout "FLEX"}}
<div class="app-form-layout-flex" style="{{#if item.psLayout.dir}}flex-direction: {{item.psLayout.dir}};{{/if}}{{#if item.psLayout.align}}justify-content: {{item.psLayout.align}};{{/if}}{{#if item.psLayout.vAlign}}align-items: {{item.psLayout.vAlign}};{{/if}}"> <div class="app-form-layout-flex" style="{{#if item.psLayout.dir}}flex-direction: {{item.psLayout.dir}};{{/if}}{{#if item.psLayout.align}}justify-content: {{item.psLayout.align}};{{/if}}{{#if item.psLayout.vAlign}}align-items: {{item.psLayout.vAlign}};{{/if}}">
{{#each item.psDEFormDetails as | formDetail |}} {{#each item.psDEFormDetails as | formDetail |}}
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
:titleBarCloseMode="{{item.titleBarCloseMode}}" :titleBarCloseMode="{{item.titleBarCloseMode}}"
:showCaption="{{item.showCaption}}" :showCaption="{{item.showCaption}}"
:uIActionGroup="state.detailsModel.{{item.codeName}}.uIActionGroup" :uIActionGroup="state.detailsModel.{{item.codeName}}.uIActionGroup"
@componentEvent="handleComponentEvent"> @componentEvent="onComponentEvent">
{{#eq item.psLayout.layout "FLEX"}} {{#eq item.psLayout.layout "FLEX"}}
<div class="app-form-layout-flex" style="{{#if item.psLayout.dir}}flex-direction: {{item.psLayout.dir}};{{/if}}{{#if item.psLayout.align}}justify-content: {{item.psLayout.align}};{{/if}}{{#if item.psLayout.vAlign}}align-items: {{item.psLayout.vAlign}};{{/if}}"> <div class="app-form-layout-flex" style="{{#if item.psLayout.dir}}flex-direction: {{item.psLayout.dir}};{{/if}}{{#if item.psLayout.align}}justify-content: {{item.psLayout.align}};{{/if}}{{#if item.psLayout.vAlign}}align-items: {{item.psLayout.vAlign}};{{/if}}">
{{#each item.psDEFormDetails as | formDetail |}} {{#each item.psDEFormDetails as | formDetail |}}
......
import { IParam } from "@core";
export const AppCodeListConfig:IParam = {
{{#each app.getAllPSAppCodeLists as |appCodeList|}}
'{{appCodeList.getCodeListTag}}':{
'name': '{{appCodeList.getName}}',
'codeName': '{{appCodeList.getCodeName}}',
'codeListTag': '{{appCodeList.getCodeListTag}}',
'codeListType': '{{appCodeList.getCodeListType}}',
'isEnableCache': {{appCodeList.isEnableCache}},
'cacheTimeout': {{appCodeList.getCacheTimeout}},
{{~#if appCodeList.getMinorSortDir}}'minorSortDir': '{{appCodeList.getMinorSortDir}}',{{/if~}}
{{~#if appCodeList.getMinorSortPSAppDEField}}'minorSortPSAppDEField': '{{lowerCase appCodeList.getMinorSortPSAppDEField.codeName}}',{{/if~}}
{{~#if appCodeList.getPredefinedType}}'predefinedType': '{{appCodeList.getPredefinedType}}',{{/if~}}
{{~#if appCodeList.getPSAppDataEntity}}'appDataEntity': '{{appCodeList.getPSAppDataEntity.codeName}}',{{/if~}}
{{~#if appCodeList.getPSAppDEDataSet}}'appDEDataSet': '{{appCodeList.getPSAppDEDataSet.codeName}}',{{/if~}}
{{~#if appCodeList.getTextPSAppDEField}}'textPSAppDEField': '{{lowerCase appCodeList.getTextPSAppDEField.codeName}}',{{/if~}}
{{~#if appCodeList.getValuePSAppDEField}}'valuePSAppDEField': '{{lowerCase appCodeList.getValuePSAppDEField.codeName}}',{{/if~}}
{{~#if appCodeList.getPValuePSAppDEField}}'pValuePSAppDEField': '{{lowerCase appCodeList.getPValuePSAppDEField.codeName}}',{{/if~}}
{{~#if appCodeList.getDisablePSAppDEField}}'disablePSAppDEField': '{{lowerCase appCodeList.getDisablePSAppDEField.codeName}}',{{/if~}}
{{~#if appCodeList.getIconPathPSAppDEField}}'iconPathPSAppDEField': '{{lowerCase appCodeList.getIconPathPSAppDEField.codeName}}',{{/if~}}
{{~#if appCodeList.getIconClsPSAppDEField}}'iconClsPSAppDEField': '{{lowerCase appCodeList.getIconClsPSAppDEField.codeName}}',{{/if}}
'emptyText': '{{appCodeList.getEmptyText}}',
{{#if appCodeList.getPSCodeItems}}
'items':[
{{#each appCodeList.getPSCodeItems as |codeItem|}}
{'value': {{#if appCodeList.isCodeItemValueNumber}}{{codeItem.getValue}}{{else}}'{{codeItem.getValue}}'{{/if}}, 'text': '{{codeItem.getText}}','codeName': '{{codeItem.codeName}}' }{{#unless @last}},{{/unless}}
{{/each}}
]
{{/if}}
}{{#unless @last}},{{/unless}}
{{/each}}
}
\ No newline at end of file
export { AppFuncConfig } from './app-func-config'; export { AppFuncConfig } from './app-func-config';
export { AppViewConfig } from './app-view-config'; export { AppViewConfig } from './app-view-config';
\ No newline at end of file export { AppCodeListConfig } from './app-code-list-config';
\ No newline at end of file
...@@ -11,13 +11,13 @@ ...@@ -11,13 +11,13 @@
<slot name="caption" /> <slot name="caption" />
</template> </template>
<template v-slot:header-content> <template v-slot:header-content>
<slot name="quickGroupSearch" />
<slot name="quickSearch" /> <slot name="quickSearch" />
</template> </template>
<template v-slot:header-right> <template v-slot:header-right>
<slot name="toolbar" /> <slot name="toolbar" />
</template> </template>
<template v-slot:header-bottom> <template v-slot:header-bottom>
<slot name="quickGroupSearch" />
<slot name="quickSearchForm" /> <slot name="quickSearchForm" />
<slot name="searchForm" /> <slot name="searchForm" />
</template> </template>
......
<script setup lang="ts">
import { IActionParam, IParam } from '@core';
import { Ref, onBeforeMount } from 'vue';
interface QuickGroupProps {
quickGroupModel: IParam;
}
interface FormGroupEmit {
(name: 'onQuickGroupEvent', value: IActionParam): void;
}
const props = withDefaults(defineProps<QuickGroupProps>(), {});
const emit = defineEmits<FormGroupEmit>();
const selectItem: Ref<IParam> = ref({});
const items: Ref<any> = ref([]);
const handleClick = ($event: any) => {
if ((selectItem.value && selectItem.value.id === $event.id) || $event.children) {
return;
}
selectItem.value = $event;
emit('onQuickGroupEvent', {
tag: 'quickGroup',
action: "valueChange",
data: $event,
});
};
onBeforeMount(() => {
items.value = props.quickGroupModel.codeItems;
//todo
// let res: any = await this.codeListService.getDataItems({ tag: this.quickGroupCodeList.codeName, type: this.quickGroupCodeList.codeListType, data: this.quickGroupCodeList, context: this.context });
// this.quickGroupModel = this.handleDynamicData(JSON.parse(JSON.stringify(res)));
});
</script>
<template>
<a-space class="app-quick-group" :size="0">
<a-button class="quick-group-item" v-for="(item, index) in items" :key="index" type="text" @click="() => handleClick(item)">
<span :style="{ color: item.color }">
<AppIconText v-if="!item.children" :text="item.text" :iconClass="item.iconClass" :imgPath="item.imgPath" />
<a-dropdown v-else>
<AppIconText :text="item.text" :iconClass="item.iconClass" :imgPath="item.imgPath" />
<template #overlay>
<a-menu>
<a-menu-item v-for="(childItem,index) in item.children">
<AppIconText :text="childItem.text" :iconClass="childItem.iconClass" :imgPath="childItem.imgPath" />
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</span>
</a-button>
</a-space>
</template>
...@@ -29,7 +29,7 @@ export class MainView extends ViewBase { ...@@ -29,7 +29,7 @@ export class MainView extends ViewBase {
* @param {IActionParam} actionParam * @param {IActionParam} actionParam
* @memberof MainView * @memberof MainView
*/ */
public handleToolbarEvent(actionParam: IActionParam) { public onToolbarEvent(actionParam: IActionParam) {
const { tag, action, data } = actionParam; const { tag, action, data } = actionParam;
if (!tag || !action || !data) { if (!tag || !action || !data) {
console.warn("工具栏执行参数不足"); console.warn("工具栏执行参数不足");
...@@ -58,7 +58,7 @@ export class MainView extends ViewBase { ...@@ -58,7 +58,7 @@ export class MainView extends ViewBase {
* @param {IActionParam} actionParam * @param {IActionParam} actionParam
* @memberof MainView * @memberof MainView
*/ */
public handleCtrlEvent(actionParam: IActionParam) { } public onCtrlEvent(actionParam: IActionParam) { }
/** /**
* @description 安装视图所有功能模块的方法 * @description 安装视图所有功能模块的方法
...@@ -70,8 +70,8 @@ export class MainView extends ViewBase { ...@@ -70,8 +70,8 @@ export class MainView extends ViewBase {
return { return {
...superParams, ...superParams,
xDataControl: this.xDataControl, xDataControl: this.xDataControl,
handleToolbarEvent: this.handleToolbarEvent.bind(this), onToolbarEvent: this.onToolbarEvent.bind(this),
handleCtrlEvent: this.handleCtrlEvent.bind(this), onCtrlEvent: this.onCtrlEvent.bind(this),
}; };
} }
} }
...@@ -104,6 +104,18 @@ export class MDView extends MainView { ...@@ -104,6 +104,18 @@ export class MDView extends MainView {
this.state.isLoadDefault = true; this.state.isLoadDefault = true;
} }
/**
* @description 快速分组查询
* @param {*} [args={}]
* @memberof MDView
*/
public handleQuickGroupSearch(args: any = {}): void {
const { viewParams } = this.state;
Object.assign(viewParams,{quickGroup: args})
const tag = this.getMDCtrl().name;
this.next({ tag: tag, action: 'load', data: viewParams });
}
/** /**
* 搜索表单搜索 * 搜索表单搜索
* *
...@@ -205,6 +217,17 @@ export class MDView extends MainView { ...@@ -205,6 +217,17 @@ export class MDView extends MainView {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
/**
* @description 处理快速分组事件
* @param {IActionParam} $event
* @memberof MDView
*/
public onQuickGroupEvent($event: IActionParam) {
if ($event) {
this.handleQuickGroupSearch($event);
}
}
/** /**
* @description 安装视图所有功能模块的方法 * @description 安装视图所有功能模块的方法
* *
...@@ -216,7 +239,8 @@ export class MDView extends MainView { ...@@ -216,7 +239,8 @@ export class MDView extends MainView {
...superParams, ...superParams,
xDataControl: this.xDataControl, xDataControl: this.xDataControl,
searchForm: this.searchForm, searchForm: this.searchForm,
searchBar: this.searchBar searchBar: this.searchBar,
onQuickGroupEvent: this.onQuickGroupEvent.bind(this)
}; };
} }
......
...@@ -605,7 +605,7 @@ export class FormControl extends MainControl { ...@@ -605,7 +605,7 @@ export class FormControl extends MainControl {
* @param {IActionParam} actionParam 行为参数 * @param {IActionParam} actionParam 行为参数
* @memberof FormControl * @memberof FormControl
*/ */
public handleEditorEvent(actionParam: IActionParam) { public onEditorEvent(actionParam: IActionParam) {
const { tag, action, data } = actionParam; const { tag, action, data } = actionParam;
switch (action) { switch (action) {
case 'valueChange': case 'valueChange':
...@@ -621,7 +621,7 @@ export class FormControl extends MainControl { ...@@ -621,7 +621,7 @@ export class FormControl extends MainControl {
* @param {IActionParam} actionParam 行为参数 * @param {IActionParam} actionParam 行为参数
* @memberof FormControl * @memberof FormControl
*/ */
public handleComponentEvent(actionParam: IActionParam) { public onComponentEvent(actionParam: IActionParam) {
const { tag, action, data } = actionParam; const { tag, action, data } = actionParam;
switch (action) { switch (action) {
case 'formGroupAction': case 'formGroupAction':
...@@ -654,8 +654,8 @@ export class FormControl extends MainControl { ...@@ -654,8 +654,8 @@ export class FormControl extends MainControl {
load: this.useLoad(), load: this.useLoad(),
loadDraft: this.useLoadDraft(), loadDraft: this.useLoadDraft(),
save: this.useSave(), save: this.useSave(),
handleEditorEvent: this.handleEditorEvent.bind(this), onEditorEvent: this.onEditorEvent.bind(this),
handleComponentEvent: this.handleComponentEvent.bind(this), onComponentEvent: this.onComponentEvent.bind(this),
}; };
} }
} }
...@@ -91,11 +91,11 @@ export class GridControl extends MDControl { ...@@ -91,11 +91,11 @@ export class GridControl extends MDControl {
}; };
}); });
// 列拖动 // 列拖动
const handleResizeColumn = (width: number, column: IParam) => { const onResizeColumn = (width: number, column: IParam) => {
column.width = width; column.width = width;
} }
// 处理表格变化(分页,过滤,排序) // 处理表格变化(分页,过滤,排序)
const handleGridChange = (pagination: IParam, filters: IParam, sorter: IParam, data: IParam) => { const onGridChange = (pagination: IParam, filters: IParam, sorter: IParam, data: IParam) => {
if (pagination) { if (pagination) {
this.useLoad().load(); this.useLoad().load();
} }
...@@ -106,8 +106,8 @@ export class GridControl extends MDControl { ...@@ -106,8 +106,8 @@ export class GridControl extends MDControl {
useRowClassName, useRowClassName,
useCustomRow, useCustomRow,
useRowSelectionOption, useRowSelectionOption,
handleResizeColumn, onResizeColumn,
handleGridChange onGridChange
} }
} }
......
...@@ -19,8 +19,8 @@ export class QuickSearchFormControl extends FormControl { ...@@ -19,8 +19,8 @@ export class QuickSearchFormControl extends FormControl {
* @param {IActionParam} actionParam 行为参数 * @param {IActionParam} actionParam 行为参数
* @memberof FormControl * @memberof FormControl
*/ */
public handleEditorEvent(actionParam: IActionParam) { public onEditorEvent(actionParam: IActionParam) {
super.handleEditorEvent(actionParam); super.onEditorEvent(actionParam);
this.emit("onCtrlEvent", { this.emit("onCtrlEvent", {
tag: this.state.controlName, tag: this.state.controlName,
action: "selectionChange", action: "selectionChange",
...@@ -35,8 +35,6 @@ export class QuickSearchFormControl extends FormControl { ...@@ -35,8 +35,6 @@ export class QuickSearchFormControl extends FormControl {
*/ */
public moduleInstall() { public moduleInstall() {
const superParams = super.moduleInstall(); const superParams = super.moduleInstall();
// 表单行为能力启用
const { loadDraft } = this.useLoadDraft();
return { return {
...superParams, ...superParams,
}; };
......
...@@ -40,7 +40,7 @@ export class SearchFormControl extends FormControl { ...@@ -40,7 +40,7 @@ export class SearchFormControl extends FormControl {
* @description 添加历史项 * @description 添加历史项
* @memberof SearchFormControl * @memberof SearchFormControl
*/ */
public addHistoryItem() { public onSaveHistoryItem() {
//todo saveModel服务 //todo saveModel服务
this.state.showPopover = false; this.state.showPopover = false;
} }
...@@ -50,7 +50,7 @@ export class SearchFormControl extends FormControl { ...@@ -50,7 +50,7 @@ export class SearchFormControl extends FormControl {
* @param {IParam} item * @param {IParam} item
* @memberof SearchFormControl * @memberof SearchFormControl
*/ */
public removeHistoryItem(item: IParam) { public onRemoveHistoryItem(item: IParam) {
const index = this.state.historyItems.findIndex((_item: IParam) => { const index = this.state.historyItems.findIndex((_item: IParam) => {
return item.name == _item.name && item.value == _item.value; return item.name == _item.name && item.value == _item.value;
}) })
...@@ -80,8 +80,8 @@ export class SearchFormControl extends FormControl { ...@@ -80,8 +80,8 @@ export class SearchFormControl extends FormControl {
...superParams, ...superParams,
onSearch: this.onSearch.bind(this), onSearch: this.onSearch.bind(this),
onCancel: this.onCancel.bind(this), onCancel: this.onCancel.bind(this),
addHistoryItem: this.addHistoryItem.bind(this), onSaveHistoryItem: this.onSaveHistoryItem.bind(this),
removeHistoryItem: this.removeHistoryItem.bind(this), onRemoveHistoryItem: this.onRemoveHistoryItem.bind(this),
}; };
} }
} }
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
height: var(--app-view-layout-header-height); height: var(--app-view-layout-header-height);
min-height: var(--app-view-layout-header-min-height);
margin: --app-view-layout-header-padding; margin: --app-view-layout-header-padding;
.app-view__caption { .app-view__caption {
white-space: nowrap; white-space: nowrap;
......
.app-quick-group {
.ant-space-item {
height: 100%;
max-height: 48px;
.quick-group-item {
padding: 0;
margin: 0 10px;
height: 100%;
border-bottom: 2px solid var(--app-color-primary);
&:hover .app-icon-text {
color: var(--app-color-primary);
}
}
}
}
\ No newline at end of file
@use './icon-text.scss'; @use './icon-text.scss';
\ No newline at end of file @use './app-quick-group.scss';
\ No newline at end of file
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
--app-view-layout-body-bg-color: var(--app-color-white); --app-view-layout-body-bg-color: var(--app-color-white);
--app-view-layout-footer-bg-color: var(--app-color-white); --app-view-layout-footer-bg-color: var(--app-color-white);
--app-view-layout-header-height: auto; --app-view-layout-header-height: auto;
--app-view-layout-header-min-height: 48px;
--app-view-layout-header-border-bottom: var(--app-color-border); --app-view-layout-header-border-bottom: var(--app-color-border);
--app-view-caption-font-size: var(--app-font-size-lg) --app-view-caption-font-size: var(--app-font-size-lg)
} }
\ No newline at end of file
...@@ -29,7 +29,7 @@ interface ViewEmit { ...@@ -29,7 +29,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { state, form, handleToolbarEvent } = new EditView(viewState, props, emit).moduleInstall(); const { state, form, onToolbarEvent } = new EditView(viewState, props, emit).moduleInstall();
</script> </script>
...@@ -51,7 +51,7 @@ const { state, form, handleToolbarEvent } = new EditView(viewState, props, emit) ...@@ -51,7 +51,7 @@ const { state, form, handleToolbarEvent } = new EditView(viewState, props, emit)
mode="button" mode="button"
name="{{lowerCase codeName}}" name="{{lowerCase codeName}}"
:actionModel="state.toolbar" :actionModel="state.toolbar"
@onToolbarEvent="handleToolbarEvent"/> @onToolbarEvent="onToolbarEvent"/>
</template> </template>
{{/eq}} {{/eq}}
{{#eq controlType "FORM"}} {{#eq controlType "FORM"}}
......
...@@ -36,7 +36,7 @@ interface ViewEmit { ...@@ -36,7 +36,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewState, props, emit).moduleInstall(); const { state, grid, onCtrlEvent, onToolbarEvent, onQuickGroupEvent } = new GridView(viewState, props, emit).moduleInstall();
</script> </script>
...@@ -45,6 +45,11 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt ...@@ -45,6 +45,11 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt
<template v-slot:caption> <template v-slot:caption>
<AppIconText class="app-view__caption" size="large" :text="state.viewCaption" /> <AppIconText class="app-view__caption" size="large" :text="state.viewCaption" />
</template> </template>
{{#if page.enableQuickGroup}}
<template v-slot:quickGroupSearch>
<app-quick-group :quickGroupModel="state.quickGroupPSCodeList" @onQuickGroupEvent="onQuickGroupEvent" />
</template>
{{/if}}
{{#page.ctrls}} {{#page.ctrls}}
{{#eq controlType "TOOLBAR"}} {{#eq controlType "TOOLBAR"}}
<template v-slot:toolbar> <template v-slot:toolbar>
...@@ -52,7 +57,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt ...@@ -52,7 +57,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt
mode="button" mode="button"
name="{{lowerCase codeName}}" name="{{lowerCase codeName}}"
:actionModel="state.toolbar" :actionModel="state.toolbar"
@onToolbarEvent="handleToolbarEvent"/> @onToolbarEvent="onToolbarEvent"/>
</template> </template>
{{/eq}} {{/eq}}
{{#if (and (eq controlType "SEARCHFORM") (eq name 'searchform'))}} {{#if (and (eq controlType "SEARCHFORM") (eq name 'searchform'))}}
...@@ -67,7 +72,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt ...@@ -67,7 +72,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt
:viewParams="state.viewParams" :viewParams="state.viewParams"
:controlAction="state.{{camelCase name}}.action" :controlAction="state.{{camelCase name}}.action"
:viewSubject="state.viewSubject" :viewSubject="state.viewSubject"
@onCtrlEvent="handleCtrlEvent" @onCtrlEvent="onCtrlEvent"
></{{codeName}}SearchForm> ></{{codeName}}SearchForm>
</template> </template>
<a-button><filter-outlined /></a-button> <a-button><filter-outlined /></a-button>
...@@ -81,7 +86,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt ...@@ -81,7 +86,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt
:viewParams="state.viewParams" :viewParams="state.viewParams"
:controlAction="state.{{camelCase name}}.action" :controlAction="state.{{camelCase name}}.action"
:viewSubject="state.viewSubject" :viewSubject="state.viewSubject"
@onCtrlEvent="handleCtrlEvent" @onCtrlEvent="onCtrlEvent"
></{{codeName}}SearchForm> ></{{codeName}}SearchForm>
</template> </template>
{{/if}} {{/if}}
...@@ -93,7 +98,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt ...@@ -93,7 +98,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt
:viewParams="state.viewParams" :viewParams="state.viewParams"
:controlAction="state.{{camelCase name}}.action" :controlAction="state.{{camelCase name}}.action"
:viewSubject="state.viewSubject" :viewSubject="state.viewSubject"
@onCtrlEvent="handleCtrlEvent" @onCtrlEvent="onCtrlEvent"
></{{codeName}}QuickSearchForm> ></{{codeName}}QuickSearchForm>
</template> </template>
{{/if}} {{/if}}
...@@ -107,7 +112,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt ...@@ -107,7 +112,7 @@ const { state, grid, handleCtrlEvent, handleToolbarEvent } = new GridView(viewSt
:viewParams="state.viewParams" :viewParams="state.viewParams"
:controlAction="state.{{name}}.action" :controlAction="state.{{name}}.action"
:viewSubject="state.viewSubject" :viewSubject="state.viewSubject"
@onCtrlEvent="handleCtrlEvent" @onCtrlEvent="onCtrlEvent"
></{{codeName}}Grid> ></{{codeName}}Grid>
{{/eq}} {{/eq}}
{{/page.ctrls}} {{/page.ctrls}}
......
...@@ -25,7 +25,7 @@ interface CtrlEmit { ...@@ -25,7 +25,7 @@ interface CtrlEmit {
const emit = defineEmits < CtrlEmit > (); const emit = defineEmits < CtrlEmit > ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { state, handleEditorEvent, handleComponentEvent } = new FormControl(ctrlState, props, emit).moduleInstall(); const { state, onEditorEvent, onComponentEvent } = new FormControl(ctrlState, props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ state, name: '{{ctrl.name}}' }); defineExpose({ state, name: '{{ctrl.name}}' });
......
...@@ -31,7 +31,7 @@ const emit = defineEmits<{(event: 'onCtrlevent', value: IActionParam): void;}>() ...@@ -31,7 +31,7 @@ const emit = defineEmits<{(event: 'onCtrlevent', value: IActionParam): void;}>()
// 安装功能模块,提供状态和能力 // 安装功能模块,提供状态和能力
const { state, useCustom } = new GridControl(ctrlState, props, emit).moduleInstall(); const { state, useCustom } = new GridControl(ctrlState, props, emit).moduleInstall();
const { useScrollOption, useRowKey, useRowClassName, useCustomRow, useRowSelectionOption, handleResizeColumn, handleGridChange } = useCustom; const { useScrollOption, useRowKey, useRowClassName, useCustomRow, useRowSelectionOption, onResizeColumn, onGridChange } = useCustom;
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ state, name: '{{ctrl.name}}' }); defineExpose({ state, name: '{{ctrl.name}}' });
...@@ -51,8 +51,8 @@ defineExpose({ state, name: '{{ctrl.name}}' }); ...@@ -51,8 +51,8 @@ defineExpose({ state, name: '{{ctrl.name}}' });
:pagination="state.mdCtrlPaging.pagination" :pagination="state.mdCtrlPaging.pagination"
:customRow="customRow" :customRow="customRow"
:rowClassName="rowClassName" :rowClassName="rowClassName"
@change="handleGridChange" @change="onGridChange"
@resizeColumn="handleResizeColumn" @resizeColumn="onResizeColumn"
> >
<template #emptyText> <template #emptyText>
<div class="not-data"> <div class="not-data">
......
...@@ -26,7 +26,7 @@ interface CtrlEmit { ...@@ -26,7 +26,7 @@ interface CtrlEmit {
const emit = defineEmits<CtrlEmit>(); const emit = defineEmits<CtrlEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { state, handleEditorEvent } = new QuickSearchFormControl(ctrlState, props, emit).moduleInstall(); const { state, onEditorEvent } = new QuickSearchFormControl(ctrlState, props, emit).moduleInstall();
</script> </script>
<template> <template>
......
...@@ -26,7 +26,7 @@ interface CtrlEmit { ...@@ -26,7 +26,7 @@ interface CtrlEmit {
const emit = defineEmits<CtrlEmit>(); const emit = defineEmits<CtrlEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { state, handleEditorEvent, handleComponentEvent, onSearch, loadDraft, addHistoryItem, onCancel, removeHistoryItem } = new SearchFormControl(ctrlState, props, emit).moduleInstall(); const { state, onEditorEvent, onComponentEvent, onSearch, loadDraft, onSaveHistoryItem, onCancel, onRemoveHistoryItem } = new SearchFormControl(ctrlState, props, emit).moduleInstall();
</script> </script>
<template> <template>
...@@ -63,7 +63,7 @@ const { state, handleEditorEvent, handleComponentEvent, onSearch, loadDraft, add ...@@ -63,7 +63,7 @@ const { state, handleEditorEvent, handleComponentEvent, onSearch, loadDraft, add
v-model:Value="state.selectHistoryItem" v-model:Value="state.selectHistoryItem"
@change="handleChange" @change="handleChange"
> >
<a-select-option class="search-form-history-option" v-for="(item,index) in state.historyItems" :key="index" :value="item.value">\{{item.name}} <close-outlined @click="() => removeHistoryItem(item)" /></a-select-option> <a-select-option class="search-form-history-option" v-for="(item,index) in state.historyItems" :key="index" :value="item.value">\{{item.name}} <close-outlined @click="() => onRemoveHistoryItem(item)" /></a-select-option>
</a-select> </a-select>
<a-button class='search-button' @click="onSearch" type="primary">搜索</a-button> <a-button class='search-button' @click="onSearch" type="primary">搜索</a-button>
<a-button class='reset-button' @click='loadDraft'>重置</a-button> <a-button class='reset-button' @click='loadDraft'>重置</a-button>
...@@ -72,7 +72,7 @@ const { state, handleEditorEvent, handleComponentEvent, onSearch, loadDraft, add ...@@ -72,7 +72,7 @@ const { state, handleEditorEvent, handleComponentEvent, onSearch, loadDraft, add
<a-input /> <a-input />
<div class="search-form-buttons"> <div class="search-form-buttons">
<a-button @click="onCancel">取消</a-button> <a-button @click="onCancel">取消</a-button>
<a-button @click="addHistoryItem" type="primary">保存</a-button> <a-button @click="onSaveHistoryItem" type="primary">保存</a-button>
</div> </div>
</template> </template>
<a-button><save-outlined /></a-button> <a-button><save-outlined /></a-button>
......
import { ControlVOBase, TreeControlVO, TreeNodeVO, TreeNodeRSVO, TreeService } from "@core";
import { {{pascalCase ctrl.psAppDataEntity.codeName}}Service } from '@api/{{spinalCase ctrl.psAppDataEntity.codeName}}/{{spinalCase ctrl.psAppDataEntity.codeName}}-service';
export class ControlVO extends ControlVOBase implements TreeControlVO {
get rootVisible(): boolean {
return {{ctrl.rootVisible}};
}
get treeNodes(): TreeNodeVO[] {
return [
{{#each ctrl.psDETreeNodes as | treeNode |}}
{
allowDrag: {{treeNode.allowDrag}},
allowDrop: {{treeNode.allowDrop}},
allowEditText: {{treeNode.allowEditText}},
allowOrder: {{treeNode.allowOrder}},
{{#if treeNode.psAppDataEntity}}
appDataEntity: {
codeName: '{{treeNode.psAppDataEntity.codeName}}',
{{#each treeNode.psAppDataEntity.allPSAppDEFields as | field |}}
{{#if field.keyField}}
keyField: '{{field.codeName}}',
{{/if}}
{{#if field.majorField}}
majorField: '{{field.majorField}}',
{{/if}}
{{/each}}
},
{{/if}}
{{#if treeNode.psAppDEDataSet}}
appDeDataSet: { codeName: '{{treeNode.psAppDEDataSet.codeName}}' },
{{/if}}
appendPNodeId: {{treeNode.appendPNodeId}},
{{#if treeNode.psCodeList}}
codeList: {
codeName: '{{treeNode.psCodeList.codeName}}',
type: '{{treeNode.psCodeList.codeListType}}'
},
{{/if}}
counterId: '{{treeNode.counterId}}',
counterMode: {{treeNode.counterMode}},
{{#if treeNode.psSysCss}}
cssName: '{{treeNode.psSysCss.cssName}}'
{{/if}}
{{#if treeNode.psDETreeNodeDataItems}}
deTreeNodeDataItems: [
customCode: {{dataItem.customCode}},
{{#each treeNode.psDETreeNodeDataItems as | dataItem |}}
{{#if dataItem.psAppDEField}}
fieldCodeName: '{{dataItem.psAppDEField.codeName}}',
{{/if}}
name: '{{dataItem.name}}',
scriptCode: `{{dataItem.scriptCode}}`
{{/each}}
],
{{/if}}
disableSelect: {{treeNode.disableSelect}},
enableCheck: {{treeNode.enableCheck}},
enableQuickSearch: {{treeNode.enableQuickSearch}},
expandFirstOnly: {{treeNode.expandFirstOnly}},
expanded: {{treeNode.expanded}},
hasPSDETreeNodeRSs: {{treeNode.hasPSDETreeNodeRSs}},
{{#if treeNode.leafFlagPSAppDEField}}
leafFlagPSAppDEField: { codeName: '{{treeNode.leafFlagPSAppDEField.codeName}}' },
{{/if}}
{{#if treeNode.idPSAppDEField}}
idPSAppDEField: { codeName: '{{treeNode.idPSAppDEField.codeName}}' },
{{/if}}
{{#if treeNode.iconPSAppDEField}}
iconPSAppDEField: { codeName: '{{treeNode.iconPSAppDEField.codeName}}' },
{{/if}}
{{#if treeNode.psSysImage}}
{{#if treeNode.psSysImage.cssClass}}
iconcls: '{{treeNode.psSysImage.cssClass}}',
{{else if (treeNode.psSysImage.imagePath)}}
icon: '{{treeNode.psSysImage.imagePath}}',
{{/if}}
{{/if}}
id: '{{treeNode.id}}',
navFilter: '{{treeNode.navFilter}}',
{{#if treeNode.psNavigateContexts}}
navigateContext: {
{{#each treeNode.psNavigateContexts as | navContext |}}
{{navContext.key}}: '{{#if navContext.rawValue}}{{navContext.value}}{{else}}%{{navContext.value}}%{{/if}}',
{{/each}}
},
{{/if}}
{{#if treeNode.psNavigateParams}}
navigateParams: {
{{#each treeNode.psNavigateParams as | navParam |}}
{{navParam.key}}: '{{#if navParam.rawValue}}{{navParam.value}}{{else}}%{{navParam.value}}%{{/if}}',
{{/each}}
},
{{/if}}
{{#if treeNode.navPSAppView}}
navView: {
viewName: '{{treeNode.navPSAppView.codeName}}'
},
{{/if}}
{{#if treeNode.nodeValue}}
nodeValue: '{{treeNode.nodeValue}}',
{{/if}}
nodeType: '{{treeNode.nodeType}}',
rootNode: {{treeNode.rootNode}},
selectFirstOnly: {{treeNode.selectFirstOnly}},
selected: {{treeNode.selected}},
{{#if treeNode.sortDir}}
sortDir: '{{treeNode.sortDir}}',
{{/if}}
{{#if treeNode.sortPSAppDEField}}
sortPSAppDEField: { codeName: '{{treeNode.sortPSAppDEField.codeName}}' },
{{/if}}
{{#if treeNode.textFormat}}
textFormat: '{{treeNode.textFormat}}',
{{/if}}
{{#if treeNode.textPSAppDEField}}
textPSAppDEField: { codeName: '{{treeNode.textPSAppDEField.codeName}}' },
{{/if}}
{{#if treeNode.text}}
text: '{{treeNode.text}}',
{{/if}}
{{#if treeNode.tooltip}}
tooltip: '{{treeNode.tooltip}}',
{{/if}}
treeNodeType: '{{treeNode.treeNodeType}}',
},
{{/each}}
];
}
get treeNodeRSs(): TreeNodeRSVO[] {
return [
{{#each ctrl.psDETreeNodeRSs as | treeNodeRS |}}
{
{{#if treeNodeRS.childPSDETreeNode}}
childDeTreeNode: {
id: '{{treeNodeRS.childPSDETreeNode.id}}'
},
{{/if}}
{{#if treeNodeRS.psNavigateContexts}}
navigateContext: {
{{#each treeNodeRS.psNavigateContexts as | navContext |}}
{{navContext.key}}: '{{#if navContext.rawValue}}{{navContext.value}}{{else}}%{{navContext.value}}%{{/if}}',
{{/each}}
},
{{/if}}
{{#if treeNodeRS.psNavigateParams}}
navigateParams: {
{{#each treeNodeRS.psNavigateParams as | navParam |}}
{{navParam.key}}: '{{#if navParam.rawValue}}{{navParam.value}}{{else}}%{{navParam.value}}%{{/if}}',
{{/each}}
},
{{/if}}
{{#if treeNodeRS.psDETreeNodeRSParams}}
params: {
{{#each treeNodeRS.psDETreeNodeRSParams as | param |}}
{{param.key}}: { value: '{{param.value}}' }
{{/each}}
},
{{/if}}
{{#if treeNodeRS.parentFilter}}
parentFilter: '{{treeNodeRS.parentFilter}}',
{{/if}}
{{#if treeNodeRS.parentPSDER1N}}
parentPSDER1N: { codeName: '{{treeNodeRS.parentPSDER1N.codeName}}' },
{{/if}}
{{#if treeNodeRS.parentPSAppDEField}}
parentPSAppDEField: { codeName: '{{treeNodeRS.parentPSAppDEField.codeName}}' },
{{/if}}
{{#if treeNodeRS.parentPSDETreeNode}}
parentPSDETreeNode: { id: '{{treeNodeRS.parentPSDETreeNode.id}}' },
{{/if}}
parentValueLevel: {{#if treeNodeRS.parentValueLevel}}{{treeNodeRS.parentValueLevel}}{{else}}null{{/if}},
searchMode: {{treeNodeRS.searchMode}}
},
{{/each}}
];
}
}
export const ctrlState = {
controlCodeName: '{{ctrl.codeName}}',
controlName: '{{ctrl.name}}',
controlService: new TreeService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ),
currentselectedNode: {},
data: [],
selectedNodes: []
};
\ No newline at end of file
...@@ -45,13 +45,14 @@ export class ControlVO extends ControlVOBase implements TreeControlVO { ...@@ -45,13 +45,14 @@ export class ControlVO extends ControlVOBase implements TreeControlVO {
{{/if}} {{/if}}
{{#if treeNode.psDETreeNodeDataItems}} {{#if treeNode.psDETreeNodeDataItems}}
deTreeNodeDataItems: [ deTreeNodeDataItems: [
customCode: {{dataItem.customCode}},
{{#each treeNode.psDETreeNodeDataItems as | dataItem |}} {{#each treeNode.psDETreeNodeDataItems as | dataItem |}}
{{#if dataItem.psAppDEField}} {
fieldCodeName: '{{dataItem.psAppDEField.codeName}}', customCode: {{dataItem.customCode}},
{{/if}} {{#if dataItem.psAppDEField}}
name: '{{dataItem.name}}', fieldCodeName: '{{dataItem.psAppDEField.codeName}}',
scriptCode: `{{dataItem.scriptCode}}` {{/if}}
name: '{{dataItem.name}}'
},
{{/each}} {{/each}}
], ],
{{/if}} {{/if}}
......
import {{ctrl.codeName}}Tree from "./{{spinalCase ctrl.codeName}}-tree.vue";
export { {{ctrl.codeName}}Tree };
<script setup lang="ts">
import { Subject } from 'rxjs';
import { IActionParam, IParam, ControlAction, TreeControl, IContext } from '@core';
import { ctrlState } from './{{spinalCase ctrl.codeName}}-tree-state';
interface Props {
context: IContext;
multiple: boolean;
selectedData: IParam[];
selectFirstDefault: boolean;
isBranchAvailable: boolean;
viewParams?: IParam;
controlAction: ControlAction;
showBusyIndicator?: boolean;
viewSubject: Subject<IActionParam>;
}
const props = withDefaults(defineProps<Props>(), {
viewSubject: () => new Subject<IActionParam>(),
showBusyIndicator: true,
selectFirstDefault: false,
isBranchAvailable: false
})
// emit声明
interface CtrlEmit {
(name: "ctrlEvent", value: IActionParam): void;
}
const emit = defineEmits<CtrlEmit>();
// 安装功能模块,提供状态和能力方法
const { state, load, treeNodeSelect } = new TreeControl(ctrlState, props, emit).moduleInstall();
// 暴露内部状态及能力
defineExpose({ state, name: '{{ctrl.name}}' });
</script>
// TODO 树节点待支持图标和自定义绘制
<template>
<a-tree
class="app-tree{{#if ctrl.psSysCss}} {{ctrl.psSysCss.cssName}}{{/if}}"
:tree-data="state.data"
:load-data="load"
:fieldNames="{ title: 'text', key: 'id' }"
@select="treeNodeSelect">
<template #title="{ text, id }">
<div class="app-tree-node">
<span class="tree-node__title">\{{ text }}</span>
</div>
</template>
</a-tree>
</template>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册