提交 c0ceb20f 编写于 作者: Mosher's avatar Mosher

update:更新

1、调整视图及部件状态参数导出逻辑
2、数据视图样式调整
3、卡片视图部件支持面板
上级 10ad4d5c
...@@ -12,6 +12,7 @@ import net.ibizsys.model.control.IPSControl; ...@@ -12,6 +12,7 @@ import net.ibizsys.model.control.IPSControl;
import net.ibizsys.model.control.IPSControlContainer; import net.ibizsys.model.control.IPSControlContainer;
import net.ibizsys.model.control.dashboard.IPSDBContainerPortletPart; import net.ibizsys.model.control.dashboard.IPSDBContainerPortletPart;
import net.ibizsys.model.control.dashboard.IPSDBPortletPart; import net.ibizsys.model.control.dashboard.IPSDBPortletPart;
import net.ibizsys.model.control.dataview.IPSDEDataView;
import net.ibizsys.model.control.grid.IPSDEGrid; import net.ibizsys.model.control.grid.IPSDEGrid;
import net.ibizsys.model.control.grid.IPSDEGridColumn; import net.ibizsys.model.control.grid.IPSDEGridColumn;
import net.ibizsys.model.control.list.IPSList; import net.ibizsys.model.control.list.IPSList;
...@@ -122,6 +123,7 @@ public class CtrlModel extends BaseModel{ ...@@ -122,6 +123,7 @@ public class CtrlModel extends BaseModel{
public void handleChildControls() { public void handleChildControls() {
IPSControl control = getControl(); IPSControl control = getControl();
// 具有子部件的容器部件
if (control instanceof IPSControlContainer) { if (control instanceof IPSControlContainer) {
IPSControlContainer controlContainer = (IPSControlContainer)control; IPSControlContainer controlContainer = (IPSControlContainer)control;
List<IPSControl> controls = controlContainer.getPSControls(); List<IPSControl> controls = controlContainer.getPSControls();
...@@ -204,6 +206,7 @@ public class CtrlModel extends BaseModel{ ...@@ -204,6 +206,7 @@ public class CtrlModel extends BaseModel{
} }
} }
} }
// 列表部件项布局面板
if (control instanceof IPSList) { if (control instanceof IPSList) {
IPSList list = (IPSList)control; IPSList list = (IPSList)control;
IPSLayoutPanel layoutPanel = list.getItemPSLayoutPanel(); IPSLayoutPanel layoutPanel = list.getItemPSLayoutPanel();
...@@ -220,6 +223,24 @@ public class CtrlModel extends BaseModel{ ...@@ -220,6 +223,24 @@ public class CtrlModel extends BaseModel{
} }
} }
} }
// 卡片视图部件项布局面板
if (control instanceof IPSDEDataView) {
IPSDEDataView dataView = (IPSDEDataView) control;
IPSLayoutPanel layoutPanel = dataView.getItemPSLayoutPanel();
if (layoutPanel != null) {
CtrlModel ctrlModel = new CtrlModel(app, layoutPanel);
if (ctrlModel.getControl().getPSAppDataEntity() != null) {
AppEntityModel ctrlAppEntity = app.getAppEntity(ctrlModel.getControl().getPSAppDataEntity().getCodeName());
ctrlModel.setAppEntity(ctrlAppEntity);
ctrlAppEntity.addCtrl(ctrlModel.getId(), ctrlModel);
}
addCtrl(ctrlModel.getId(), ctrlModel);
if(!app.getCtrlsMap().containsKey(ctrlModel.getId())) {
app.getCtrlsMap().put(ctrlModel.getId(),ctrlModel);
}
}
}
} }
public void handleAllPortlets(IPSControlContainer control) { public void handleAllPortlets(IPSControlContainer control) {
......
...@@ -7,5 +7,11 @@ import { MainControlProps } from "../main-control"; ...@@ -7,5 +7,11 @@ import { MainControlProps } from "../main-control";
* @extends {MainControlProps} * @extends {MainControlProps}
*/ */
export interface PanelControlProps extends MainControlProps { export interface PanelControlProps extends MainControlProps {
/**
* 导航数据
*
* @type {any[]}
* @memberof PanelControlProps
*/
navDatas: any[];
} }
\ No newline at end of file
import { IActionParam, IParam } from "@core"; import { IActionParam, IParam } from "@core";
import { MainControl } from "../main-control"; import { MainControl } from "../main-control";
import { PanelControlProps } from "./panel-control-prop";
import { PanelControlState } from "./panel-control-state"; import { PanelControlState } from "./panel-control-state";
/** /**
...@@ -17,6 +18,14 @@ export class PanelControl extends MainControl { ...@@ -17,6 +18,14 @@ export class PanelControl extends MainControl {
*/ */
public declare state: PanelControlState; public declare state: PanelControlState;
/**
* 面板部件输入参数
*
* @type {PanelControlProps}
* @memberof PanelControl
*/
public declare props: PanelControlProps;
/** /**
* 获取当前激活数据 * 获取当前激活数据
* *
...@@ -34,14 +43,9 @@ export class PanelControl extends MainControl { ...@@ -34,14 +43,9 @@ export class PanelControl extends MainControl {
* @memberof PanelControl * @memberof PanelControl
*/ */
protected useNavDatas() { protected useNavDatas() {
const navDatas: any = toRef(this.props, 'navDatas'); watch(() => this.props.navDatas, (newVal: any, oldVal: any) => {
if (this.props.panelType === 'LAYOUT') {
this.load();
}
watch(navDatas, (newVal: any, oldVal: any) => {
this.load(); this.load();
}); }, { immediate: true, deep: true });
this.state.navDatas = navDatas;
} }
/** /**
...@@ -60,7 +64,8 @@ export class PanelControl extends MainControl { ...@@ -60,7 +64,8 @@ export class PanelControl extends MainControl {
const { viewSubject, controlName } = this.state; const { viewSubject, controlName } = this.state;
const load = async (opts: IParam = {}) => { const load = async (opts: IParam = {}) => {
const { dataMode } = this.state; const { dataMode } = this.state;
const { navDatas, data } = toRefs(this.state); const { navDatas } = toRefs(this.props);
const { data } = toRefs(this.state);
if (dataMode === 0) { if (dataMode === 0) {
// 不获取,使用传入数据 // 不获取,使用传入数据
if (navDatas && navDatas.value && navDatas.value.length) { if (navDatas && navDatas.value && navDatas.value.length) {
...@@ -153,10 +158,10 @@ export class PanelControl extends MainControl { ...@@ -153,10 +158,10 @@ export class PanelControl extends MainControl {
*/ */
public moduleInstall() { public moduleInstall() {
const superParams = super.moduleInstall(); const superParams = super.moduleInstall();
this.useLoad();
this.useNavDatas(); this.useNavDatas();
return { return {
...superParams, ...superParams,
load: this.useLoad(),
onPanelItemEvents: this.onPanelItemEvents.bind(this) onPanelItemEvents: this.onPanelItemEvents.bind(this)
} }
} }
......
export const viewState = { export const viewState = () => {
{{> @macro/front-end/views/view-base-config.hbs}} return {
{{#if page.defPSAppView}} {{> @macro/front-end/views/view-base-config.hbs}}
defaultView: '{{page.defPSAppView.codeName}}', {{#if page.defPSAppView}}
{{/if}} defaultView: '{{page.defPSAppView.codeName}}',
{{/if}}
}
}; };
\ No newline at end of file
...@@ -31,7 +31,7 @@ interface ViewEmit { ...@@ -31,7 +31,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const indexView = new IndexView(viewState, props, emit).moduleInstall(); const indexView = new IndexView(viewState(), props, emit).moduleInstall();
const { state, menu } = indexView; const { state, menu } = indexView;
const collapsed: Ref<boolean> = ref(false); const collapsed: Ref<boolean> = ref(false);
const collapsedChange = () => { const collapsedChange = () => {
......
export const viewState = { export const viewState = () => {
{{> @macro/front-end/views/view-base-config.hbs}} return {
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ 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 portalView = new PortalView(viewState, props, emit).moduleInstall(); const portalView = new PortalView(viewState(), props, emit).moduleInstall();
const { state, dashboard, onCtrlEvent } = portalView; const { state, dashboard, onCtrlEvent } = portalView;
</script> </script>
......
export const viewState = { export const viewState = () => {
enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}}, return {
expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}}, enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}} expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -14,7 +14,7 @@ import { {{codeName}}SearchForm } from '@widgets/{{spinalCase psAppDataEntity.co ...@@ -14,7 +14,7 @@ import { {{codeName}}SearchForm } from '@widgets/{{spinalCase psAppDataEntity.co
import { {{codeName}}QuickSearchForm } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-quick-search-form'; import { {{codeName}}QuickSearchForm } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-quick-search-form';
{{/if}} {{/if}}
{{#eq controlType "SEARCHBAR"}} {{#eq controlType "SEARCHBAR"}}
import { {{codeName}}SearchBar } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-searchBar'; import { {{codeName}}SearchBar } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-searchbar';
{{/eq}} {{/eq}}
{{/page.ctrls}} {{/page.ctrls}}
...@@ -39,7 +39,7 @@ interface ViewEmit { ...@@ -39,7 +39,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const dataView = new DataView(viewState, props, emit).moduleInstall(); const dataView = new DataView(viewState(), props, emit).moduleInstall();
const { state, dataViewControl, searchForm, quickSearchForm, onCtrlEvent, onToolbarEvent, onQuickGroupEvent, onQuickSearchEvent } = dataView; const { state, dataViewControl, searchForm, quickSearchForm, onCtrlEvent, onToolbarEvent, onQuickGroupEvent, onQuickSearchEvent } = dataView;
{{#if page.psAppCounterRefs}} {{#if page.psAppCounterRefs}}
// 计数器数据 // 计数器数据
......
export const viewState = { export const viewState = () => {
{{> @macro/front-end/views/view-base-config.hbs}} return {
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ 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 editView = new EditView(viewState, props, emit).moduleInstall(); const editView = new EditView(viewState(), props, emit).moduleInstall();
const { state, form, onToolbarEvent, onCtrlEvent } = editView; const { state, form, onToolbarEvent, onCtrlEvent } = editView;
{{#if page.psAppCounterRefs}} {{#if page.psAppCounterRefs}}
// 计数器数据 // 计数器数据
......
export const viewState = { export const viewState = () => {
{{#each page.ctrls as | ctrl |}} return {
{{#if (eq ctrl.controlType "GRIDEXPBAR")}} {{#each page.ctrls as | ctrl |}}
gridExpBarName: '{{ctrl.name}}', {{#if (eq ctrl.controlType "GRIDEXPBAR")}}
{{/if}} gridExpBarName: '{{ctrl.name}}',
{{/each}} {{/if}}
{{> @macro/front-end/views/view-base-config.hbs}} {{/each}}
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -25,7 +25,7 @@ interface ViewEmit { ...@@ -25,7 +25,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块 // 安装功能模块
const gridExpView = new GridExpView(viewState, props, emit).moduleInstall() const gridExpView = new GridExpView(viewState(), props, emit).moduleInstall()
const { state, onCtrlEvent, onToolbarEvent } = gridExpView; const { state, onCtrlEvent, onToolbarEvent } = gridExpView;
</script> </script>
......
export const viewState = { export const viewState = () => {
gridRowActiveMode: {{page.gridRowActiveMode}}, return {
rowEditState: {{#if page.enableRowEdit}}{{page.rowEditDefault}}{{else}}false{{/if}}, gridRowActiveMode: {{page.gridRowActiveMode}},
enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}}, rowEditState: {{#if page.enableRowEdit}}{{page.rowEditDefault}}{{else}}false{{/if}},
expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}}, enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}} expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -14,7 +14,7 @@ import { {{codeName}}SearchForm } from '@widgets/{{spinalCase psAppDataEntity.co ...@@ -14,7 +14,7 @@ import { {{codeName}}SearchForm } from '@widgets/{{spinalCase psAppDataEntity.co
import { {{codeName}}QuickSearchForm } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-quick-search-form'; import { {{codeName}}QuickSearchForm } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-quick-search-form';
{{/if}} {{/if}}
{{#eq controlType "SEARCHBAR"}} {{#eq controlType "SEARCHBAR"}}
import { {{codeName}}SearchBar } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-searchBar'; import { {{codeName}}SearchBar } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-searchbar';
{{/eq}} {{/eq}}
{{/page.ctrls}} {{/page.ctrls}}
...@@ -39,7 +39,7 @@ interface ViewEmit { ...@@ -39,7 +39,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const gridView = new GridView(viewState, props, emit).moduleInstall(); const gridView = new GridView(viewState(), props, emit).moduleInstall();
const { state, grid, searchForm, quickSearchForm, onCtrlEvent, onToolbarEvent, onQuickGroupEvent, onQuickSearchEvent } = gridView; const { state, grid, searchForm, quickSearchForm, onCtrlEvent, onToolbarEvent, onQuickGroupEvent, onQuickSearchEvent } = gridView;
{{#if page.psAppCounterRefs}} {{#if page.psAppCounterRefs}}
// 计数器数据 // 计数器数据
......
export const viewState = { export const viewState = () => {
{{#each page.ctrls as | ctrl |}} return {
{{#if (eq ctrl.controlType "LISTEXPBAR")}} {{#each page.ctrls as | ctrl |}}
listExpBarName: '{{ctrl.name}}', {{#if (eq ctrl.controlType "LISTEXPBAR")}}
{{/if}} listExpBarName: '{{ctrl.name}}',
{{/each}} {{/if}}
{{> @macro/front-end/views/view-base-config.hbs}} {{/each}}
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -25,7 +25,7 @@ interface ViewEmit { ...@@ -25,7 +25,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块 // 安装功能模块
const listExpView = new ListExpView(viewState, props, emit).moduleInstall() const listExpView = new ListExpView(viewState(), props, emit).moduleInstall()
const { state, onCtrlEvent, onToolbarEvent } = listExpView; const { state, onCtrlEvent, onToolbarEvent } = listExpView;
</script> </script>
......
export const viewState = { export const viewState = () => {
enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}}, return {
expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}}, enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}} expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -14,7 +14,7 @@ import { {{codeName}}SearchForm } from '@widgets/{{spinalCase psAppDataEntity.co ...@@ -14,7 +14,7 @@ import { {{codeName}}SearchForm } from '@widgets/{{spinalCase psAppDataEntity.co
import { {{codeName}}QuickSearchForm } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-quick-search-form'; import { {{codeName}}QuickSearchForm } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-quick-search-form';
{{/if}} {{/if}}
{{#eq controlType "SEARCHBAR"}} {{#eq controlType "SEARCHBAR"}}
import { {{codeName}}SearchBar } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-searchBar'; import { {{codeName}}SearchBar } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-searchbar';
{{/eq}} {{/eq}}
{{/page.ctrls}} {{/page.ctrls}}
...@@ -39,7 +39,7 @@ interface ViewEmit { ...@@ -39,7 +39,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const listView = new ListView(viewState, props, emit).moduleInstall(); const listView = new ListView(viewState(), props, emit).moduleInstall();
const { state, list, searchForm, quickSearchForm, onCtrlEvent, onToolbarEvent, onQuickGroupEvent, onQuickSearchEvent } = listView; const { state, list, searchForm, quickSearchForm, onCtrlEvent, onToolbarEvent, onQuickGroupEvent, onQuickSearchEvent } = listView;
{{#if page.psAppCounterRefs}} {{#if page.psAppCounterRefs}}
// 计数器数据 // 计数器数据
......
export const viewState = { export const viewState = () => {
// 实际选中数据 return {
selections: [], // 实际选中数据
selectedData: [], selections: [],
// 右侧面板选中数据 selectedData: [],
rightPanelSelections: [], // 右侧面板选中数据
{{> @macro/front-end/views/view-base-config.hbs}} rightPanelSelections: [],
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ 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 mpickupView = new MPickupView(viewState, props, emit).moduleInstall(); const mpickupView = new MPickupView(viewState(), props, emit).moduleInstall();
const { state, pickupViewPanel, onCancel, onConfirm, onCtrlEvent, onMoveRight, onMoveLeft, onAllMoveRight, onAllMoveLeft, onRightPanelClick } = mpickupView; const { state, pickupViewPanel, onCancel, onConfirm, onCtrlEvent, onMoveRight, onMoveLeft, onAllMoveRight, onAllMoveLeft, onRightPanelClick } = mpickupView;
</script> </script>
......
export const viewState = { export const viewState = () => {
{{> @macro/front-end/views/view-base-config.hbs}} return {
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ 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 panelView = new PanelView(viewState, props, emit).moduleInstall(); const panelView = new PanelView(viewState(), props, emit).moduleInstall();
const { state, panel, onToolbarEvent, onCtrlEvent } = panelView; const { state, panel, onToolbarEvent, onCtrlEvent } = panelView;
{{#if page.psAppCounterRefs}} {{#if page.psAppCounterRefs}}
// 计数器数据 // 计数器数据
......
export const viewState = { export const viewState = () => {
enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}}, return {
expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}}, enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}},
gridRowActiveMode: {{page.gridRowActiveMode}}, expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}},
rowEditState: {{#if page.enableRowEdit}}{{page.rowEditDefault}}{{else}}false{{/if}}, gridRowActiveMode: {{page.gridRowActiveMode}},
{{> @macro/front-end/views/view-base-config.hbs}} rowEditState: {{#if page.enableRowEdit}}{{page.rowEditDefault}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -40,7 +40,7 @@ interface ViewEmit { ...@@ -40,7 +40,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const pickupGridView = new PickupGridView(viewState, props, emit).moduleInstall(); const pickupGridView = new PickupGridView(viewState(), props, emit).moduleInstall();
const { state, grid, onCtrlEvent, onQuickGroupEvent, onQuickSearchEvent } = pickupGridView; const { state, grid, onCtrlEvent, onQuickGroupEvent, onQuickSearchEvent } = pickupGridView;
</script> </script>
......
export const viewState = { export const viewState = () => {
enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}}, return {
expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}}, enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}} expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -40,7 +40,7 @@ interface ViewEmit { ...@@ -40,7 +40,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const pickupTreeView = new PickupTreeView(viewState, props, emit).moduleInstall(); const pickupTreeView = new PickupTreeView(viewState(), props, emit).moduleInstall();
const { state, tree, onCtrlEvent, onQuickGroupEvent, onQuickSearchEvent } = pickupTreeView; const { state, tree, onCtrlEvent, onQuickGroupEvent, onQuickSearchEvent } = pickupTreeView;
</script> </script>
......
export const viewState = { export const viewState = () => {
{{> @macro/front-end/views/view-base-config.hbs}} return {
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -28,7 +28,7 @@ interface ViewEmit { ...@@ -28,7 +28,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const pickupView = new PickupView(viewState, props, emit).moduleInstall(); const pickupView = new PickupView(viewState(), props, emit).moduleInstall();
const { state, onCancel, onConfirm, onCtrlEvent } = pickupView; const { state, onCancel, onConfirm, onCtrlEvent } = pickupView;
</script> </script>
......
export const viewState = { export const viewState = () => {
{{> @macro/front-end/views/view-base-config.hbs}} return {
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -28,7 +28,7 @@ interface ViewEmit { ...@@ -28,7 +28,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const tabExpView = new TabExpView(viewState, props, emit).moduleInstall(); const tabExpView = new TabExpView(viewState(), props, emit).moduleInstall();
const { state, onCtrlEvent } = tabExpView; const { state, onCtrlEvent } = tabExpView;
</script> </script>
......
export const viewState = { export const viewState = () => {
{{#each page.ctrls as | ctrl |}} return {
{{#if (eq ctrl.controlType "TREEEXPBAR")}} {{#each page.ctrls as | ctrl |}}
treeExpBarName: '{{ctrl.name}}', {{#if (eq ctrl.controlType "TREEEXPBAR")}}
{{/if}} treeExpBarName: '{{ctrl.name}}',
{{/each}} {{/if}}
{{> @macro/front-end/views/view-base-config.hbs}} {{/each}}
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -25,7 +25,7 @@ interface ViewEmit { ...@@ -25,7 +25,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块 // 安装功能模块
const treeExpView = new TreeExpView(viewState, props, emit).moduleInstall() const treeExpView = new TreeExpView(viewState(), props, emit).moduleInstall()
const { state, onCtrlEvent, onToolbarEvent } = treeExpView; const { state, onCtrlEvent, onToolbarEvent } = treeExpView;
</script> </script>
......
export const viewState = { export const viewState = () => {
enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}}, return {
expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}}, enableQuickSearch: {{#if page.enableQuickSearch}}{{page.enableQuickSearch}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}} expandSearchForm: {{#if page.expandSearchForm}}{{page.expandSearchForm}}{{else}}false{{/if}},
{{> @macro/front-end/views/view-base-config.hbs}}
}
}; };
\ No newline at end of file
...@@ -13,7 +13,7 @@ import { {{codeName}}SearchForm } from '@widgets/{{spinalCase psAppDataEntity.co ...@@ -13,7 +13,7 @@ import { {{codeName}}SearchForm } from '@widgets/{{spinalCase psAppDataEntity.co
import { {{codeName}}QuickSearchForm } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-quick-search-form'; import { {{codeName}}QuickSearchForm } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-quick-search-form';
{{/if}} {{/if}}
{{#eq controlType "SEARCHBAR"}} {{#eq controlType "SEARCHBAR"}}
import { {{codeName}}SearchBar } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-searchBar'; import { {{codeName}}SearchBar } from '@widgets/{{spinalCase psAppDataEntity.codeName}}/{{spinalCase codeName}}-searchbar';
{{/eq}} {{/eq}}
{{/page.ctrls}} {{/page.ctrls}}
...@@ -38,7 +38,7 @@ interface ViewEmit { ...@@ -38,7 +38,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>(); const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const treeView = new TreeView(viewState, props, emit).moduleInstall(); const treeView = new TreeView(viewState(), props, emit).moduleInstall();
const { state, tree, onCtrlEvent, onToolbarEvent, onQuickGroupEvent, onQuickSearchEvent } = treeView; const { state, tree, onCtrlEvent, onToolbarEvent, onQuickGroupEvent, onQuickSearchEvent } = treeView;
{{#if page.psAppCounterRefs}} {{#if page.psAppCounterRefs}}
// 计数器数据 // 计数器数据
......
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
defaultOpens: [], controlName: '{{ctrl.name}}',
defaultSelect: [], defaultOpens: [],
menus: [ defaultSelect: [],
{{#each ctrl.psAppMenuItems as | item |}} menus: [
{{> @macro/front-end/widgets/menu-detail/include-menu.hbs type="MENUITEM" item=item}} {{#each ctrl.psAppMenuItems as | item |}}
{{/each}} {{> @macro/front-end/widgets/menu-detail/include-menu.hbs type="MENUITEM" item=item}}
], {{/each}}
funcs: App.getAllFuncs(), ],
}; funcs: App.getAllFuncs(),
\ No newline at end of file }
}
\ No newline at end of file
...@@ -23,7 +23,7 @@ interface CtrlEmit { ...@@ -23,7 +23,7 @@ interface CtrlEmit {
} }
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
const { name, state, onMenuSelect, load } = new MenuControl(ctrlState, props, emit).moduleInstall(); const { name, state, onMenuSelect, load } = new MenuControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state, load }); defineExpose({ name, state, load });
......
...@@ -10,13 +10,15 @@ ...@@ -10,13 +10,15 @@
{{~/eq~}} {{~/eq~}}
{{/inline}} {{/inline}}
// 部件配置对象 // 部件配置对象
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
isEnableCustomized: {{ctrl.enableCustomized}}, controlName: '{{ctrl.name}}',
portlets: [ isEnableCustomized: {{ctrl.enableCustomized}},
{{~#each ctrl.psControls as | portlet |~}} portlets: [
{{> getPortlet portlet=portlet}}{{#unless @last}},{{/unless}} {{~#each ctrl.psControls as | portlet |~}}
{{~/each~}} {{> getPortlet portlet=portlet}}{{#unless @last}},{{/unless}}
] {{~/each~}}
}; ]
\ No newline at end of file }
}
\ No newline at end of file
...@@ -31,7 +31,7 @@ interface CtrlEmit { ...@@ -31,7 +31,7 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const dashboardControl = new DashboardControl(ctrlState, props, emit).moduleInstall(); const dashboardControl = new DashboardControl(ctrlState(), props, emit).moduleInstall();
const { name, state, onCtrlEvent } = dashboardControl; const { name, state, onCtrlEvent } = dashboardControl;
// 暴露内部状态及能力 // 暴露内部状态及能力
......
...@@ -27,73 +27,75 @@ export class ControlVO extends ControlVOBase { ...@@ -27,73 +27,75 @@ export class ControlVO extends ControlVOBase {
{{/each}} {{/each}}
} }
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}', controlName: '{{ctrl.name}}',
appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}', appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}',
appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}', appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}',
appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}', appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}',
appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}', appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}',
controlService: new DataViewService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ), appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}',
selections: [], controlService: new DataViewService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ),
// 多数据部件分组 selections: [],
mdCtrlGroup: { // 多数据部件分组
enableGroup: {{ctrl.enableGroup}}, mdCtrlGroup: {
groupMode: "{{ctrl.groupMode}}", enableGroup: {{ctrl.enableGroup}},
groupField: "{{lowerCase ctrl.groupPSAppDEField.codeName}}", groupMode: "{{ctrl.groupMode}}",
{{#if ctrl.groupPSCodeList}} groupField: "{{lowerCase ctrl.groupPSAppDEField.codeName}}",
groupCodeList: { {{#if ctrl.groupPSCodeList}}
codeListTag: "{{ctrl.groupPSCodeList.codeListTag}}", groupCodeList: {
codeListType: "{{ctrl.groupPSCodeList.codeListType}}", codeListTag: "{{ctrl.groupPSCodeList.codeListTag}}",
codeListType: "{{ctrl.groupPSCodeList.codeListType}}",
},
{{/if}}
}, },
// 多数据部件排序
mdCtrlSort: {
noSort: {{ctrl.noSort}},
minorSortDir: "{{#if ctrl.minorSortDir}}{{ctrl.minorSortDir}}{{/if}}",
minorSortPSDEF: "{{ctrl.minorSortPSAppDEField.codeName}}",
},
// 多数据部件分页
mdCtrlPaging: {
enablePagingBar: true,
current: 1,
pageSize: {{#if ctrl.pagingSize}}{{ctrl.pagingSize}}{{else}}20{{/if}},
pagination: {}
},
{{#if ctrl.quickToolBarItems}}
{{#ctrl.quickToolBarItems}}
quickToolbar: [
{{#items}}
{ id:'{{id}}',name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if uIAction}}uIAction:{codeName:'{{uIAction.codeName}}',fullCodeName:'{{uIAction.fullCodeName}}',uIActionMode:'{{uIAction.uIActionMode}}',actionTarget:'{{uIAction.actionTarget}}',uIActionTag:'{{uIAction.uIActionTag}}',dataAccessAction:'{{uIAction.dataAccessAction}}',uIActionType:'{{uIAction.uIActionType}}'}{{/if}} },
{{/items}}
],
{{/ctrl.quickToolBarItems}}
{{/if}}
{{#if ctrl.batchToolBarItems}}
{{#ctrl.batchToolBarItems}}
batchToolbar: [
{{#items}}
{ id:'{{id}}',name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if uIAction}}uIAction:{codeName:'{{uIAction.codeName}}',fullCodeName:'{{uIAction.fullCodeName}}',uIActionMode:'{{uIAction.uIActionMode}}',actionTarget:'{{uIAction.actionTarget}}',uIActionTag:'{{uIAction.uIActionTag}}',dataAccessAction:'{{uIAction.dataAccessAction}}',uIActionType:'{{uIAction.uIActionType}}'}{{/if}} },
{{/items}}
],
{{/ctrl.batchToolBarItems}}
{{/if}} {{/if}}
}, // 界面行为
// 多数据部件排序 uIActions: {
mdCtrlSort: { {{#each ctrl.psDEDataViewItems as | dataViewItem |}}
noSort: {{ctrl.noSort}}, {{#and (eq dataViewItem.itemType 'ACTIONITEM') dataViewItem.psDEUIActionGroup dataViewItem.psDEUIActionGroup.psUIActionGroupDetails}}
minorSortDir: "{{#if ctrl.minorSortDir}}{{ctrl.minorSortDir}}{{/if}}", {{#dataViewItem}}
minorSortPSDEF: "{{ctrl.minorSortPSAppDEField.codeName}}", {{#each dataViewItem.psDEUIActionGroup.psUIActionGroupDetails as | uiActionDetail |}}
}, {{#if uiActionDetail.getPSUIAction}}
// 多数据部件分页 {{#uiActionDetail.getPSUIAction}}
mdCtrlPaging: { {{uIActionTag}}: { caption: '{{caption}}', tooltip: '{{tooltip}}', showCaption: {{../showCaption}}, showIcon: {{../showIcon}}, uIActionTag: '{{uIActionTag}}', uIActionType: '{{uIActionType}}', dataAccessAction: '{{dataAccessAction}}', noPrivDisplayMode: '{{noPrivDisplayMode}}', uIActionMode: '{{uIActionMode}}', disabled: false, visible: true, {{#if coutnerId}}counterId: '{{counterId}}', {{/if}}{{#if psSysImage}}cssClass: '{{psSysImage.cssClass}}', {{#if psSysImage.cssClass}}{{/if}}{{#if psSysImage.imagePath}}imagePath: '{{psSysImage.imagePath}}'{{/if}}{{/if}} },
enablePagingBar: true, {{/uiActionDetail.getPSUIAction}}
current: 1, {{/if}}
pageSize: {{#if ctrl.pagingSize}}{{ctrl.pagingSize}}{{else}}20{{/if}}, {{/each}}
pagination: {} {{/dataViewItem}}
}, {{/and}}
{{#if ctrl.quickToolBarItems}} {{/each}}
{{#ctrl.quickToolBarItems}} }
quickToolbar: [
{{#items}}
{ id:'{{id}}',name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if uIAction}}uIAction:{codeName:'{{uIAction.codeName}}',fullCodeName:'{{uIAction.fullCodeName}}',uIActionMode:'{{uIAction.uIActionMode}}',actionTarget:'{{uIAction.actionTarget}}',uIActionTag:'{{uIAction.uIActionTag}}',dataAccessAction:'{{uIAction.dataAccessAction}}',uIActionType:'{{uIAction.uIActionType}}'}{{/if}} },
{{/items}}
],
{{/ctrl.quickToolBarItems}}
{{/if}}
{{#if ctrl.batchToolBarItems}}
{{#ctrl.batchToolBarItems}}
batchToolbar: [
{{#items}}
{ id:'{{id}}',name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if uIAction}}uIAction:{codeName:'{{uIAction.codeName}}',fullCodeName:'{{uIAction.fullCodeName}}',uIActionMode:'{{uIAction.uIActionMode}}',actionTarget:'{{uIAction.actionTarget}}',uIActionTag:'{{uIAction.uIActionTag}}',dataAccessAction:'{{uIAction.dataAccessAction}}',uIActionType:'{{uIAction.uIActionType}}'}{{/if}} },
{{/items}}
],
{{/ctrl.batchToolBarItems}}
{{/if}}
// 界面行为
uIActions: {
{{#each ctrl.psDEDataViewItems as | dataViewItem |}}
{{#and (eq dataViewItem.itemType 'ACTIONITEM') dataViewItem.psDEUIActionGroup dataViewItem.psDEUIActionGroup.psUIActionGroupDetails}}
{{#dataViewItem}}
{{#each dataViewItem.psDEUIActionGroup.psUIActionGroupDetails as | uiActionDetail |}}
{{#if uiActionDetail.getPSUIAction}}
{{#uiActionDetail.getPSUIAction}}
{{uIActionTag}}: { caption: '{{caption}}', tooltip: '{{tooltip}}', showCaption: {{../showCaption}}, showIcon: {{../showIcon}}, uIActionTag: '{{uIActionTag}}', uIActionType: '{{uIActionType}}', dataAccessAction: '{{dataAccessAction}}', noPrivDisplayMode: '{{noPrivDisplayMode}}', uIActionMode: '{{uIActionMode}}', disabled: false, visible: true, {{#if coutnerId}}counterId: '{{counterId}}', {{/if}}{{#if psSysImage}}cssClass: '{{psSysImage.cssClass}}', {{#if psSysImage.cssClass}}{{/if}}{{#if psSysImage.imagePath}}imagePath: '{{psSysImage.imagePath}}'{{/if}}{{/if}} },
{{/uiActionDetail.getPSUIAction}}
{{/if}}
{{/each}}
{{/dataViewItem}}
{{/and}}
{{/each}}
} }
} }
\ No newline at end of file
...@@ -39,7 +39,7 @@ interface CtrlEmit { ...@@ -39,7 +39,7 @@ interface CtrlEmit {
const emit = defineEmits<CtrlEmit>(); const emit = defineEmits<CtrlEmit>();
// 安装功能模块,提供状态和能力 // 安装功能模块,提供状态和能力
const { name, state, onUIAction, newRow, remove, save, load, refresh, getData, xDataControl, exportExcel, onToolbarEvent, useCustom } = new DataViewControl(ctrlState, props, emit).moduleInstall(); const { name, state, onUIAction, newRow, remove, save, load, refresh, getData, xDataControl, exportExcel, onToolbarEvent, useCustom } = new DataViewControl(ctrlState(), props, emit).moduleInstall();
const { onDataViewItemSelected, isSelected } = useCustom(); const { onDataViewItemSelected, isSelected } = useCustom();
// 暴露内部状态及能力 // 暴露内部状态及能力
...@@ -54,7 +54,20 @@ defineExpose({ name, state, newRow, remove, save, load, refresh, getData, export ...@@ -54,7 +54,20 @@ defineExpose({ name, state, newRow, remove, save, load, refresh, getData, export
justify="start"> justify="start">
<template v-for="(item, index) in state.items" :key="index"> <template v-for="(item, index) in state.items" :key="index">
<a-col {{#if ctrl.cardWidth}}:style="{ width: '{{ctrl.cardWidth}}px'{{#if ctrl.cardHeight}}, height: '{{ctrl.cardHeight}}px'{{/if}} }"{{else}}:span="6"{{#if ctrl.cardHeight}}:style="{ height: '{{ctrl.cardHeight}}px' }"{{/if}}{{/if}}> <a-col {{#if ctrl.cardWidth}}:style="{ width: '{{ctrl.cardWidth}}px'{{#if ctrl.cardHeight}}, height: '{{ctrl.cardHeight}}px'{{/if}} }"{{else}}:span="6"{{#if ctrl.cardHeight}}:style="{ height: '{{ctrl.cardHeight}}px' }"{{/if}}{{/if}}>
<a-card :class="['app-dataview-item', isSelected(item) ? 'app-dataview-item__selection' : '']" @click="(event) => onDataViewItemSelected(item, event)"> {{#if ctrl.itemPSLayoutPanel}}
<{{ctrl.itemPSLayoutPanel.codeName}}Panel
:class="['app-dataview-item', isSelected(item) ? 'app-dataview-item__selection' : '']"
{{#if ctrl.cardHeight}}
:style="{ height: '{{ctrl.cardHeight}}px' }"
{{/if}}
@click="(event) => onDataViewItemSelected(item, event)"
:context="state.context"
:viewParams="state.viewParams"
:navDatas="[item]"
panelType="LAYOUT">
</{{ctrl.itemPSLayoutPanel.codeName}}Panel>
{{else}}
<a-card :class="['app-dataview-item', isSelected(item) ? 'app-dataview-item__selection' : '']" @click="(event) => onDataViewItemSelected(item, event)" {{#if ctrl.cardHeight}}:style="{ height: '{{ctrl.cardHeight}}px' }"{{/if}}>
<template #title> <template #title>
\{{item.srfmajortext}} \{{item.srfmajortext}}
</template> </template>
...@@ -77,6 +90,7 @@ defineExpose({ name, state, newRow, remove, save, load, refresh, getData, export ...@@ -77,6 +90,7 @@ defineExpose({ name, state, newRow, remove, save, load, refresh, getData, export
</template> </template>
<span class="app-dataview-item__description">\{{item.srfdescription}}</span> <span class="app-dataview-item__description">\{{item.srfdescription}}</span>
</a-card> </a-card>
{{/if}}
</a-col> </a-col>
</template> </template>
</a-row> </a-row>
......
...@@ -46,124 +46,126 @@ export class ControlVO extends ControlVOBase { ...@@ -46,124 +46,126 @@ export class ControlVO extends ControlVOBase {
} }
// 部件配置对象 // 部件配置对象
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
controlService: new EditFormService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ), controlName: '{{ctrl.name}}',
data: new ControlVO({}), controlService: new EditFormService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ),
appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}', data: new ControlVO({}),
appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}', appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}',
appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}', appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}',
appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}', appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}',
appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}', appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}',
enableAutoSave: {{ctrl.enableAutoSave}}, appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}',
// 错误信息 enableAutoSave: {{ctrl.enableAutoSave}},
errorMessages: [], // 错误信息
// 关系界面计数器 errorMessages: [],
drCount: 0, // 关系界面计数器
// 新建默认值 drCount: 0,
createDefaultItems: [ // 新建默认值
{{#each ctrl.psDEFormItems as | formItem |}} createDefaultItems: [
{{#formItem}} {{#each ctrl.psDEFormItems as | formItem |}}
{{#if (or createDV createDVT)}} {{#formItem}}
{ {{#if (or createDV createDVT)}}
createDV: "{{createDV}}", {
createDVT: "{{createDVT}}", createDV: "{{createDV}}",
property: "{{lowerCase id}}", createDVT: "{{createDVT}}",
{{#if (and psEditor psEditor.dateTimeFormat)}} property: "{{lowerCase id}}",
valueFormat: "{{editItem.psEditor.dateTimeFormat}}", {{#if (and psEditor psEditor.dateTimeFormat)}}
{{else if psAppDEField}} valueFormat: "{{editItem.psEditor.dateTimeFormat}}",
valueFormat: "{{psAppDEField.valueFormat}}", {{else if psAppDEField}}
{{/if}} valueFormat: "{{psAppDEField.valueFormat}}",
{{#if psAppDEField}}
dataType: "{{psAppDEField.stdDataType}}"
{{/if}}
}{{#unless @last}},{{/unless}}
{{/if}} {{/if}}
{{/formItem}} {{#if psAppDEField}}
{{/each}} dataType: "{{psAppDEField.stdDataType}}"
],
// 更新默认值
updateDefaultItems: [
{{#each ctrl.psDEFormItems as | formItem |}}
{{#formItem}}
{{#if (or updateDV updateDVT)}}
{
updateDV: "{{updateDV}}",
updateDVT: "{{updateDVT}}",
property: "{{lowerCase id}}",
{{#if (and psEditor psEditor.dateTimeFormat)}}
valueFormat: "{{editItem.psEditor.dateTimeFormat}}",
{{else if psAppDEField}}
valueFormat: "{{psAppDEField.valueFormat}}",
{{/if}}
{{#if psAppDEField}}
dataType: "{{psAppDEField.stdDataType}}"
{{/if}}
}{{#unless @last}},{{/unless}}
{{/if}} {{/if}}
{{/formItem}} }{{#unless @last}},{{/unless}}
{{/each}} {{/if}}
], {{/formItem}}
detailsModel: { {{/each}}
{{#if ctrl.psDEFormPages}} ],
{{#each ctrl.psDEFormPages as | FormPage | }} // 更新默认值
{{> @macro/front-end/widgets/form-detail/include-form.hbs type="FORMDETAILSMODEL" item=FormPage}} updateDefaultItems: [
{{/each}} {{#each ctrl.psDEFormItems as | formItem |}}
{{/if}} {{#formItem}}
}, {{#if (or updateDV updateDVT)}}
actionModel: {
{{#each ctrl.psDEFormPages as | FormPage | }}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type="FORMACTIONMODEL" item=FormPage}}
{{/each}}
},
rules: {
{{#each ctrl.psDEFormItemVRs as | ruleItem |}}
{{ruleItem.psDEFormItemName}}: [
{{#if (eq ruleItem.valueRuleType 'SYSVALUERULE')}}
{ {
{{#eq ruleItem.psSysValueRule.ruleType 'REG'}} updateDV: "{{updateDV}}",
trigger: ['change', 'blur'], updateDVT: "{{updateDVT}}",
pattern: /{{ruleItem.psSysValueRule.regExCode}}/, property: "{{lowerCase id}}",
message:'{{ruleItem.psSysValueRule.ruleInfo}}' {{#if (and psEditor psEditor.dateTimeFormat)}}
{{/eq}} valueFormat: "{{editItem.psEditor.dateTimeFormat}}",
{{#eq ruleItem.psSysValueRule.ruleType 'SCRIPT'}} {{else if psAppDEField}}
validator: (rule: any, value: any, callback: any) => { valueFormat: "{{psAppDEField.valueFormat}}",
if (isEmpty(value)) { {{/if}}
{{#if psAppDEField}}
dataType: "{{psAppDEField.stdDataType}}"
{{/if}}
}{{#unless @last}},{{/unless}}
{{/if}}
{{/formItem}}
{{/each}}
],
detailsModel: {
{{#if ctrl.psDEFormPages}}
{{#each ctrl.psDEFormPages as | FormPage | }}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type="FORMDETAILSMODEL" item=FormPage}}
{{/each}}
{{/if}}
},
actionModel: {
{{#each ctrl.psDEFormPages as | FormPage | }}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type="FORMACTIONMODEL" item=FormPage}}
{{/each}}
},
rules: {
{{#each ctrl.psDEFormItemVRs as | ruleItem |}}
{{ruleItem.psDEFormItemName}}: [
{{#if (eq ruleItem.valueRuleType 'SYSVALUERULE')}}
{
{{#eq ruleItem.psSysValueRule.ruleType 'REG'}}
trigger: ['change', 'blur'],
pattern: /{{ruleItem.psSysValueRule.regExCode}}/,
message:'{{ruleItem.psSysValueRule.ruleInfo}}'
{{/eq}}
{{#eq ruleItem.psSysValueRule.ruleType 'SCRIPT'}}
validator: (rule: any, value: any, callback: any) => {
if (isEmpty(value)) {
return Promise.resolve();
}
let source: any = { '{{ruleItem.psDEFormItemName}}': value };
try {
eval(`{{ruleItem.psSysValueRule.scriptCode}}`);
} catch (error: any) {
App.getNotificationService().error({ message: '校验脚本值规则异常' });
}
return Promise.resolve(); return Promise.resolve();
} }
let source: any = { '{{ruleItem.psDEFormItemName}}': value }; {{/eq}}
try { },
eval(`{{ruleItem.psSysValueRule.scriptCode}}`); {{else if (eq ruleItem.valueRuleType 'DEFVALUERULE')}}
} catch (error: any) { {
App.getNotificationService().error({ message: '校验脚本值规则异常' }); validator: async (rule: any, value: any, callback: any) => {
} if (isEmpty(value)) {
return Promise.resolve(); return Promise.resolve();
} }
{{/eq}} let source: any = { '{{ruleItem.psDEFormItemName}}': value };
}, const { isPast, infoMessage } = Verify.verifyDeRules(
{{else if (eq ruleItem.valueRuleType 'DEFVALUERULE')}} '{{ruleItem.getPSDEFormItemName}}',
{ source,
validator: async (rule: any, value: any, callback: any) => { {{> @macro/front-end/common/derules.hbs item=ruleItem.psDEFValueRule.getPSDEFVRGroupCondition}}
if (isEmpty(value)) { );
if (!isPast) {
return Promise.reject(infoMessage || '{{ruleItem.psDEFValueRule.ruleInfo}}');
}
return Promise.resolve(); return Promise.resolve();
} }
let source: any = { '{{ruleItem.psDEFormItemName}}': value };
const { isPast, infoMessage } = Verify.verifyDeRules(
'{{ruleItem.getPSDEFormItemName}}',
source,
{{> @macro/front-end/common/derules.hbs item=ruleItem.psDEFValueRule.getPSDEFVRGroupCondition}}
);
if (!isPast) {
return Promise.reject(infoMessage || '{{ruleItem.psDEFValueRule.ruleInfo}}');
}
return Promise.resolve();
} }
} {{/if}}
{{/if}} ],
], {{/each}}
{{/each}} },
}, // 锚点数据集合
// 锚点数据集合 anchorDatas: [],
anchorDatas: [], }
}; };
\ No newline at end of file
...@@ -40,7 +40,7 @@ interface CtrlEmit { ...@@ -40,7 +40,7 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, load, loadDraft, save, remove, refresh, onEditorEvent, onComponentEvent, getData, xDataCtrl } = new FormControl(ctrlState, props, emit).moduleInstall(); const { name, state, load, loadDraft, save, remove, refresh, onEditorEvent, onComponentEvent, getData, xDataCtrl } = new FormControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state, load, loadDraft, save, remove, refresh, getData }); defineExpose({ name, state, load, loadDraft, save, remove, refresh, getData });
......
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
counter: 0, controlName: '{{ctrl.name}}',
enableSearch: {{ctrl.enableSearch}}, counter: 0,
xDataControlName: '{{ctrl.xDataControlName}}', enableSearch: {{ctrl.enableSearch}},
selection: {}, xDataControlName: '{{ctrl.xDataControlName}}',
searchValue: '', selection: {},
showTitleBar: {{#if ctrl.showTitleBar}}true{{else}}false{{/if}}, searchValue: '',
split: 0.2, showTitleBar: {{#if ctrl.showTitleBar}}true{{else}}false{{/if}},
title: '{{ctrl.title}}', split: 0.2,
titleRes: '{{#if ctrl.titlePSLanguageRes}}{{ctrl.titlePSLanguageRes.lanResTag}}{{/if}}', title: '{{ctrl.title}}',
{{#each ctrl.psControls as | childCtrl |}} titleRes: '{{#if ctrl.titlePSLanguageRes}}{{ctrl.titlePSLanguageRes.lanResTag}}{{/if}}',
{{#eq childCtrl.controlType 'TOOLBAR'}} {{#each ctrl.psControls as | childCtrl |}}
toolbar: [ {{#eq childCtrl.controlType 'TOOLBAR'}}
{{#childCtrl.psDEToolbarItems}} toolbar: [
{ name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if psUIAction}}uIAction:{codeName:'{{psUIAction.codeName}}',fullCodeName:'{{psUIAction.fullCodeName}}',uIActionMode:'{{psUIAction.uIActionMode}}',actionTarget:'{{psUIAction.actionTarget}}',uIActionTag:'{{psUIAction.uIActionTag}}',dataAccessAction:'{{psUIAction.dataAccessAction}}',uIActionType:'{{psUIAction.uIActionType}}'}{{#if psUIAction.counterId}},counterId: '{{psUIAction.counterId}}'{{/if}}{{/if}} }, {{#childCtrl.psDEToolbarItems}}
{{/childCtrl.psDEToolbarItems}} { name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if psUIAction}}uIAction:{codeName:'{{psUIAction.codeName}}',fullCodeName:'{{psUIAction.fullCodeName}}',uIActionMode:'{{psUIAction.uIActionMode}}',actionTarget:'{{psUIAction.actionTarget}}',uIActionTag:'{{psUIAction.uIActionTag}}',dataAccessAction:'{{psUIAction.dataAccessAction}}',uIActionType:'{{psUIAction.uIActionType}}'}{{#if psUIAction.counterId}},counterId: '{{psUIAction.counterId}}'{{/if}}{{/if}} },
], {{/childCtrl.psDEToolbarItems}}
{{/eq}} ],
{{#eq childCtrl.controlType 'GRID'}} {{/eq}}
{{childCtrl.name}}: { {{#eq childCtrl.controlType 'GRID'}}
action:{ {{childCtrl.name}}: {
loadAction: '{{childCtrl.getPSControlAction.psAppDEMethod.codeName}}', action:{
removeAction: '{{childCtrl.removePSControlAction.psAppDEMethod.codeName}}', loadAction: '{{childCtrl.getPSControlAction.psAppDEMethod.codeName}}',
updateAction: '{{childCtrl.updatePSControlAction.psAppDEMethod.codeName}}', removeAction: '{{childCtrl.removePSControlAction.psAppDEMethod.codeName}}',
loadDraftAction: '{{childCtrl.getDraftPSControlAction.psAppDEMethod.codeName}}', updateAction: '{{childCtrl.updatePSControlAction.psAppDEMethod.codeName}}',
createAction: '{{childCtrl.createPSControlAction.psAppDEMethod.codeName}}', loadDraftAction: '{{childCtrl.getDraftPSControlAction.psAppDEMethod.codeName}}',
fetchAction:'{{childCtrl.fetchPSControlAction.psAppDEMethod.codeName}}' createAction: '{{childCtrl.createPSControlAction.psAppDEMethod.codeName}}',
} fetchAction:'{{childCtrl.fetchPSControlAction.psAppDEMethod.codeName}}'
}, }
{{#and childCtrl.navPSDER childCtrl.navPSDER.minorCodeName}} },
navPSDer: 'n_{{lowerCase childCtrl.navPSDER.minorCodeName}}_eq', {{#and childCtrl.navPSDER childCtrl.navPSDER.minorCodeName}}
{{/and}} navPSDer: 'n_{{lowerCase childCtrl.navPSDER.minorCodeName}}_eq',
{{#if childCtrl.navFilter}} {{/and}}
navFilter: '{{lowerCase childCtrl.navFilter}}', {{#if childCtrl.navFilter}}
{{/if}} navFilter: '{{lowerCase childCtrl.navFilter}}',
{{#if childCtrl.navPSAppView}} {{/if}}
navViewName: '{{childCtrl.navPSAppView.name}}', {{#if childCtrl.navPSAppView}}
{{/if}} navViewName: '{{childCtrl.navPSAppView.name}}',
{{#if childCtrl.psNavigateContexts}} {{/if}}
navigateContexts: {{> @macro/front-end/common/navparam.hbs appNavParams=childCtrl.psNavigateContexts}}, {{#if childCtrl.psNavigateContexts}}
{{/if}} navigateContexts: {{> @macro/front-end/common/navparam.hbs appNavParams=childCtrl.psNavigateContexts}},
{{#if childCtrl.psNavigateParams}} {{/if}}
navigateParams: {{> @macro/front-end/common/navparam.hbs appNavParams=childCtrl.psNavigateParams}}, {{#if childCtrl.psNavigateParams}}
{{/if}} navigateParams: {{> @macro/front-end/common/navparam.hbs appNavParams=childCtrl.psNavigateParams}},
{{/eq}} {{/if}}
{{/each}} {{/eq}}
{{/each}}
}
}; };
...@@ -34,7 +34,7 @@ interface CtrlEmit { ...@@ -34,7 +34,7 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, onCtrlEvent, xDataControl, search, onToolbarEvent } = new GridExpBarControl(ctrlState, props, emit).moduleInstall(); const { name, state, onCtrlEvent, xDataControl, search, onToolbarEvent } = new GridExpBarControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state }); defineExpose({ name, state });
......
...@@ -39,7 +39,7 @@ interface CtrlEmit { ...@@ -39,7 +39,7 @@ interface CtrlEmit {
const emit = defineEmits<CtrlEmit>(); const emit = defineEmits<CtrlEmit>();
// 安装功能模块,提供状态和能力 // 安装功能模块,提供状态和能力
const { name, state, useCustom, onEditorEvent, onToolbarEvent, onActionColEvent, newRow, remove, save, load, refresh, getData, exportExcel } = new GridControl(ctrlState, props, emit).moduleInstall(); const { name, state, useCustom, onEditorEvent, onToolbarEvent, onActionColEvent, newRow, remove, save, load, refresh, getData, exportExcel } = new GridControl(ctrlState(), props, emit).moduleInstall();
const { useScrollOption, useRowKey, useRowClassName, useCustomRow, useRowSelectionOption, onResizeColumn, onGridChange, useExpandedRowKeys, onExpandedRowsChange, formRef } = useCustom; const { useScrollOption, useRowKey, useRowClassName, useCustomRow, useRowSelectionOption, onResizeColumn, onGridChange, useExpandedRowKeys, onExpandedRowsChange, formRef } = useCustom;
{{#if ctrl.batchToolBarItems}} {{#if ctrl.batchToolBarItems}}
const renderBatchToolbar = (total: number, range: IParam[]) => { const renderBatchToolbar = (total: number, range: IParam[]) => {
......
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
counter: 0, controlName: '{{ctrl.name}}',
enableSearch: {{ctrl.enableSearch}}, counter: 0,
xDataControlName: '{{ctrl.xDataControlName}}', enableSearch: {{ctrl.enableSearch}},
selection: {}, xDataControlName: '{{ctrl.xDataControlName}}',
searchValue: '', selection: {},
showTitleBar: {{#if ctrl.showTitleBar}}true{{else}}false{{/if}}, searchValue: '',
split: 0.2, showTitleBar: {{#if ctrl.showTitleBar}}true{{else}}false{{/if}},
title: '{{ctrl.title}}', split: 0.2,
titleRes: '{{#if ctrl.titlePSLanguageRes}}{{ctrl.titlePSLanguageRes.lanResTag}}{{/if}}', title: '{{ctrl.title}}',
{{#each ctrl.psControls as | childCtrl |}} titleRes: '{{#if ctrl.titlePSLanguageRes}}{{ctrl.titlePSLanguageRes.lanResTag}}{{/if}}',
{{#eq childCtrl.controlType 'TOOLBAR'}} {{#each ctrl.psControls as | childCtrl |}}
toolbar: [ {{#eq childCtrl.controlType 'TOOLBAR'}}
{{#childCtrl.psDEToolbarItems}} toolbar: [
{ name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if psUIAction}}uIAction:{codeName:'{{psUIAction.codeName}}',fullCodeName:'{{psUIAction.fullCodeName}}',uIActionMode:'{{psUIAction.uIActionMode}}',actionTarget:'{{psUIAction.actionTarget}}',uIActionTag:'{{psUIAction.uIActionTag}}',dataAccessAction:'{{psUIAction.dataAccessAction}}',uIActionType:'{{psUIAction.uIActionType}}'}{{#if psUIAction.counterId}},counterId: '{{psUIAction.counterId}}'{{/if}}{{/if}} }, {{#childCtrl.psDEToolbarItems}}
{{/childCtrl.psDEToolbarItems}} { name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if psUIAction}}uIAction:{codeName:'{{psUIAction.codeName}}',fullCodeName:'{{psUIAction.fullCodeName}}',uIActionMode:'{{psUIAction.uIActionMode}}',actionTarget:'{{psUIAction.actionTarget}}',uIActionTag:'{{psUIAction.uIActionTag}}',dataAccessAction:'{{psUIAction.dataAccessAction}}',uIActionType:'{{psUIAction.uIActionType}}'}{{#if psUIAction.counterId}},counterId: '{{psUIAction.counterId}}'{{/if}}{{/if}} },
], {{/childCtrl.psDEToolbarItems}}
{{/eq}} ],
{{#eq childCtrl.controlType 'LIST'}} {{/eq}}
{{childCtrl.name}}: { {{#eq childCtrl.controlType 'LIST'}}
action:{ {{childCtrl.name}}: {
loadAction: '{{childCtrl.getPSControlAction.psAppDEMethod.codeName}}', action:{
removeAction: '{{childCtrl.removePSControlAction.psAppDEMethod.codeName}}', loadAction: '{{childCtrl.getPSControlAction.psAppDEMethod.codeName}}',
updateAction: '{{childCtrl.updatePSControlAction.psAppDEMethod.codeName}}', removeAction: '{{childCtrl.removePSControlAction.psAppDEMethod.codeName}}',
loadDraftAction: '{{childCtrl.getDraftPSControlAction.psAppDEMethod.codeName}}', updateAction: '{{childCtrl.updatePSControlAction.psAppDEMethod.codeName}}',
createAction: '{{childCtrl.createPSControlAction.psAppDEMethod.codeName}}', loadDraftAction: '{{childCtrl.getDraftPSControlAction.psAppDEMethod.codeName}}',
fetchAction:'{{childCtrl.fetchPSControlAction.psAppDEMethod.codeName}}' createAction: '{{childCtrl.createPSControlAction.psAppDEMethod.codeName}}',
} fetchAction:'{{childCtrl.fetchPSControlAction.psAppDEMethod.codeName}}'
}, }
{{#and childCtrl.navPSDER childCtrl.navPSDER.minorCodeName}} },
navPSDer: 'n_{{lowerCase childCtrl.navPSDER.minorCodeName}}_eq', {{#and childCtrl.navPSDER childCtrl.navPSDER.minorCodeName}}
{{/and}} navPSDer: 'n_{{lowerCase childCtrl.navPSDER.minorCodeName}}_eq',
{{#if childCtrl.navFilter}} {{/and}}
navFilter: '{{lowerCase childCtrl.navFilter}}', {{#if childCtrl.navFilter}}
{{/if}} navFilter: '{{lowerCase childCtrl.navFilter}}',
{{#if childCtrl.navPSAppView}} {{/if}}
navViewName: '{{childCtrl.navPSAppView.name}}', {{#if childCtrl.navPSAppView}}
{{/if}} navViewName: '{{childCtrl.navPSAppView.name}}',
{{#if childCtrl.psNavigateContexts}} {{/if}}
navigateContexts: {{> @macro/front-end/common/navparam.hbs appNavParams=childCtrl.psNavigateContexts}}, {{#if childCtrl.psNavigateContexts}}
{{/if}} navigateContexts: {{> @macro/front-end/common/navparam.hbs appNavParams=childCtrl.psNavigateContexts}},
{{#if childCtrl.psNavigateParams}} {{/if}}
navigateParams: {{> @macro/front-end/common/navparam.hbs appNavParams=childCtrl.psNavigateParams}}, {{#if childCtrl.psNavigateParams}}
{{/if}} navigateParams: {{> @macro/front-end/common/navparam.hbs appNavParams=childCtrl.psNavigateParams}},
{{/eq}} {{/if}}
{{/each}} {{/eq}}
{{/each}}
}
}; };
...@@ -34,7 +34,7 @@ interface CtrlEmit { ...@@ -34,7 +34,7 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, onCtrlEvent, xDataControl, search, onToolbarEvent } = new ListExpBarControl(ctrlState, props, emit).moduleInstall(); const { name, state, onCtrlEvent, xDataControl, search, onToolbarEvent } = new ListExpBarControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state }); defineExpose({ name, state });
......
...@@ -35,89 +35,91 @@ export class ControlVO extends ControlVOBase { ...@@ -35,89 +35,91 @@ export class ControlVO extends ControlVOBase {
{{/each}} {{/each}}
} }
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}', controlName: '{{ctrl.name}}',
appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}', appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}',
appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}', appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}',
appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}', appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}',
appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}', appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}',
controlService: new ListService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ), appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}',
selections: [], controlService: new ListService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ),
dataItems: [ selections: [],
{{#if ctrl.psDEListDataItems}} dataItems: [
{{#each ctrl.psDEListDataItems as | dataItem |}} {{#if ctrl.psDEListDataItems}}
{ {{#each ctrl.psDEListDataItems as | dataItem |}}
name: '{{dataItem.name}}', {
caption: '{{dataItem.caption}}', name: '{{dataItem.name}}',
{{#if dataItem.customCode}} caption: '{{dataItem.caption}}',
customCode: true, {{#if dataItem.customCode}}
customCode: true,
{{/if}}
{{#if dataItem.psAppDEField}}
property: '{{lowerCase dataItem.psAppDEField.codeName}}'
{{/if}}
}{{#unless @last}},{{/unless}}
{{/each}}
{{/if}} {{/if}}
{{#if dataItem.psAppDEField}} ],
property: '{{lowerCase dataItem.psAppDEField.codeName}}' // 多数据部件分组
mdCtrlGroup: {
enableGroup: {{ctrl.enableGroup}},
groupMode: "{{ctrl.groupMode}}",
groupField: "{{lowerCase ctrl.groupPSAppDEField.codeName}}",
{{#if ctrl.groupPSCodeList}}
groupCodeList: {
codeListTag: "{{ctrl.groupPSCodeList.codeListTag}}",
codeListType: "{{ctrl.groupPSCodeList.codeListType}}",
},
{{/if}} {{/if}}
}{{#unless @last}},{{/unless}}
{{/each}}
{{/if}}
],
// 多数据部件分组
mdCtrlGroup: {
enableGroup: {{ctrl.enableGroup}},
groupMode: "{{ctrl.groupMode}}",
groupField: "{{lowerCase ctrl.groupPSAppDEField.codeName}}",
{{#if ctrl.groupPSCodeList}}
groupCodeList: {
codeListTag: "{{ctrl.groupPSCodeList.codeListTag}}",
codeListType: "{{ctrl.groupPSCodeList.codeListType}}",
}, },
// 多数据部件排序
mdCtrlSort: {
noSort: {{ctrl.noSort}},
minorSortDir: "{{#if ctrl.minorSortDir}}{{ctrl.minorSortDir}}{{/if}}",
minorSortPSDEF: "{{ctrl.minorSortPSAppDEField.codeName}}",
},
// 多数据部件分页
mdCtrlPaging: {
enablePagingBar: true,
current: 1,
pageSize: {{#if ctrl.pagingSize}}{{ctrl.pagingSize}}{{else}}20{{/if}},
pagination: {}
},
{{#if ctrl.quickToolBarItems}}
{{#ctrl.quickToolBarItems}}
quickToolbar: [
{{#items}}
{ id:'{{id}}',name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if uIAction}}uIAction:{codeName:'{{uIAction.codeName}}',fullCodeName:'{{uIAction.fullCodeName}}',uIActionMode:'{{uIAction.uIActionMode}}',actionTarget:'{{uIAction.actionTarget}}',uIActionTag:'{{uIAction.uIActionTag}}',dataAccessAction:'{{uIAction.dataAccessAction}}',uIActionType:'{{uIAction.uIActionType}}'}{{/if}} },
{{/items}}
],
{{/ctrl.quickToolBarItems}}
{{/if}} {{/if}}
}, {{#if ctrl.batchToolBarItems}}
// 多数据部件排序 {{#ctrl.batchToolBarItems}}
mdCtrlSort: { batchToolbar: [
noSort: {{ctrl.noSort}}, {{#items}}
minorSortDir: "{{#if ctrl.minorSortDir}}{{ctrl.minorSortDir}}{{/if}}", { id:'{{id}}',name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if uIAction}}uIAction:{codeName:'{{uIAction.codeName}}',fullCodeName:'{{uIAction.fullCodeName}}',uIActionMode:'{{uIAction.uIActionMode}}',actionTarget:'{{uIAction.actionTarget}}',uIActionTag:'{{uIAction.uIActionTag}}',dataAccessAction:'{{uIAction.dataAccessAction}}',uIActionType:'{{uIAction.uIActionType}}'}{{/if}} },
minorSortPSDEF: "{{ctrl.minorSortPSAppDEField.codeName}}", {{/items}}
}, ],
// 多数据部件分页 {{/ctrl.batchToolBarItems}}
mdCtrlPaging: { {{/if}}
enablePagingBar: true, // 界面行为
current: 1, uIActions: {
pageSize: {{#if ctrl.pagingSize}}{{ctrl.pagingSize}}{{else}}20{{/if}}, {{#each ctrl.psDEListItems as | listItem |}}
pagination: {} {{#and listItem.psDEUIActionGroup listItem.psDEUIActionGroup.psUIActionGroupDetails}}
}, {{#listItem}}
{{#if ctrl.quickToolBarItems}} {{#each psDEUIActionGroup.psUIActionGroupDetails as | uiActionDetail |}}
{{#ctrl.quickToolBarItems}} {{#if uiActionDetail.getPSUIAction}}
quickToolbar: [ {{#uiActionDetail.getPSUIAction}}
{{#items}} {{uIActionTag}}: { caption: '{{caption}}', tooltip: '{{tooltip}}', showCaption: {{../showCaption}}, showIcon: {{../showIcon}}, uIActionTag: '{{uIActionTag}}', uIActionType: '{{uIActionType}}', dataAccessAction: '{{dataAccessAction}}', noPrivDisplayMode: '{{noPrivDisplayMode}}', uIActionMode: '{{uIActionMode}}', disabled: false, visible: true, {{#if coutnerId}}counterId: '{{counterId}}', {{/if}}{{#if psSysImage}}cssClass: '{{psSysImage.cssClass}}', {{#if psSysImage.cssClass}}{{/if}}{{#if psSysImage.imagePath}}imagePath: '{{psSysImage.imagePath}}'{{/if}}{{/if}} },
{ id:'{{id}}',name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if uIAction}}uIAction:{codeName:'{{uIAction.codeName}}',fullCodeName:'{{uIAction.fullCodeName}}',uIActionMode:'{{uIAction.uIActionMode}}',actionTarget:'{{uIAction.actionTarget}}',uIActionTag:'{{uIAction.uIActionTag}}',dataAccessAction:'{{uIAction.dataAccessAction}}',uIActionType:'{{uIAction.uIActionType}}'}{{/if}} }, {{/uiActionDetail.getPSUIAction}}
{{/items}} {{/if}}
], {{/each}}
{{/ctrl.quickToolBarItems}} {{/listItem}}
{{/if}} {{/and}}
{{#if ctrl.batchToolBarItems}} {{/each}}
{{#ctrl.batchToolBarItems}} }
batchToolbar: [ }
{{#items}}
{ id:'{{id}}',name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if uIAction}}uIAction:{codeName:'{{uIAction.codeName}}',fullCodeName:'{{uIAction.fullCodeName}}',uIActionMode:'{{uIAction.uIActionMode}}',actionTarget:'{{uIAction.actionTarget}}',uIActionTag:'{{uIAction.uIActionTag}}',dataAccessAction:'{{uIAction.dataAccessAction}}',uIActionType:'{{uIAction.uIActionType}}'}{{/if}} },
{{/items}}
],
{{/ctrl.batchToolBarItems}}
{{/if}}
// 界面行为
uIActions: {
{{#each ctrl.psDEListItems as | listItem |}}
{{#and listItem.psDEUIActionGroup listItem.psDEUIActionGroup.psUIActionGroupDetails}}
{{#listItem}}
{{#each psDEUIActionGroup.psUIActionGroupDetails as | uiActionDetail |}}
{{#if uiActionDetail.getPSUIAction}}
{{#uiActionDetail.getPSUIAction}}
{{uIActionTag}}: { caption: '{{caption}}', tooltip: '{{tooltip}}', showCaption: {{../showCaption}}, showIcon: {{../showIcon}}, uIActionTag: '{{uIActionTag}}', uIActionType: '{{uIActionType}}', dataAccessAction: '{{dataAccessAction}}', noPrivDisplayMode: '{{noPrivDisplayMode}}', uIActionMode: '{{uIActionMode}}', disabled: false, visible: true, {{#if coutnerId}}counterId: '{{counterId}}', {{/if}}{{#if psSysImage}}cssClass: '{{psSysImage.cssClass}}', {{#if psSysImage.cssClass}}{{/if}}{{#if psSysImage.imagePath}}imagePath: '{{psSysImage.imagePath}}'{{/if}}{{/if}} },
{{/uiActionDetail.getPSUIAction}}
{{/if}}
{{/each}}
{{/listItem}}
{{/and}}
{{/each}}
}
} }
\ No newline at end of file
...@@ -39,7 +39,7 @@ interface CtrlEmit { ...@@ -39,7 +39,7 @@ interface CtrlEmit {
const emit = defineEmits<CtrlEmit>(); const emit = defineEmits<CtrlEmit>();
// 安装功能模块,提供状态和能力 // 安装功能模块,提供状态和能力
const { name, state, onUIAction, newRow, remove, save, load, refresh, getData, xDataControl, exportExcel, useCustom, onToolbarEvent} = new ListControl(ctrlState, props, emit).moduleInstall(); const { name, state, onUIAction, newRow, remove, save, load, refresh, getData, xDataControl, exportExcel, useCustom, onToolbarEvent} = new ListControl(ctrlState(), props, emit).moduleInstall();
const { onListItemSelected, isSelected, loadMore } = useCustom; const { onListItemSelected, isSelected, loadMore } = useCustom;
// 暴露内部状态及能力 // 暴露内部状态及能力
......
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}', controlName: '{{ctrl.name}}',
appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}', appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}',
appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}', appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}',
appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}', appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}',
appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}', appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}',
data: {}, appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}',
dataMode: {{ctrl.dataMode}}, data: {},
detailsModel: { dataMode: {{ctrl.dataMode}},
{{#each ctrl.rootPSPanelItems as | panelItem |}} detailsModel: {
{{> @macro/front-end/widgets/panel-detail/panel-detail-model.hbs item=panelItem}} {{#each ctrl.rootPSPanelItems as | panelItem |}}
{{/each}} {{> @macro/front-end/widgets/panel-detail/panel-detail-model.hbs item=panelItem}}
}, {{/each}}
navDatas: [] },
navDatas: []
}
} }
\ No newline at end of file
...@@ -28,13 +28,14 @@ interface CtrlEmit { ...@@ -28,13 +28,14 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, load, onPanelItemEvents, getData, xDataCtrl } = new PanelControl(ctrlState, props, emit).moduleInstall(); const { name, state, onPanelItemEvents, getData, xDataControl } = new PanelControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state, load, getData }); defineExpose({ name, state, getData });
</script> </script>
<template> <template>
<AppRow <AppRow
ref="xDataControl"
:class="[ :class="[
'app-panel', 'app-panel',
panelType === 'LAYOUT' ? 'app-layout-panel' : '', panelType === 'LAYOUT' ? 'app-layout-panel' : '',
......
export const ctrlState = { export const ctrlState = () => {
appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}', return {
appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}', appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}',
appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}', appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}',
appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}', appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}',
appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}', appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}',
controlCodeName: '{{ctrl.codeName}}', appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}',
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
selectedData: [], controlName: '{{ctrl.name}}',
data: {}, selectedData: [],
items: [] data: {},
items: []
}
}; };
\ No newline at end of file
...@@ -37,7 +37,7 @@ interface CtrlEmit { ...@@ -37,7 +37,7 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, onViewEvent } = new PickupViewPanelControl(ctrlState, props, emit).moduleInstall(); const { name, state, onViewEvent } = new PickupViewPanelControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state }); defineExpose({ name, state });
......
// 部件配置对象 // 部件配置对象
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
portletType: '{{ctrl.portletType}}', controlName: '{{ctrl.name}}',
showCaption: {{ctrl.showTitleBar}}, portletType: '{{ctrl.portletType}}',
childControls: [ showCaption: {{ctrl.showTitleBar}},
{{~#if ctrl.psControls~}} childControls: [
{{~#each ctrl.psControls as | control |~}} {{~#if ctrl.psControls~}}
'{{control.name}}' {{~#each ctrl.psControls as | control |~}}
{{~/each~}} '{{control.name}}'
{{~/if~}} {{~/each~}}
], {{~/if~}}
{{#if ctrl.psAppDataEntity}} ],
// 实体名称 {{#if ctrl.psAppDataEntity}}
appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}', // 实体名称
{{/if}} appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}',
{{#if ctrl.psUIActionGroup.psUIActionGroupDetails}} {{/if}}
// 操作栏模型 {{#if ctrl.psUIActionGroup.psUIActionGroupDetails}}
actionBarModelData: { // 操作栏模型
{{#each ctrl.psUIActionGroup.psUIActionGroupDetails as | groupDetail |}} actionBarModelData: {
{{groupDetail.psUIAction.uIActionTag}} : { {{#each ctrl.psUIActionGroup.psUIActionGroupDetails as | groupDetail |}}
viewlogicname: '{{groupDetail.name}}', {{groupDetail.psUIAction.uIActionTag}} : {
showCaption:{{groupDetail.showCaption}}, viewlogicname: '{{groupDetail.name}}',
actionName: '{{groupDetail.psUIAction.caption}}', showCaption:{{groupDetail.showCaption}},
icon: '{{groupDetail.psUIAction.psSysImage.cssClass}}', actionName: '{{groupDetail.psUIAction.caption}}',
imgPath: '{{groupDetail.psUIAction.psSysImage.imagePath}}', icon: '{{groupDetail.psUIAction.psSysImage.cssClass}}',
disabled: false, imgPath: '{{groupDetail.psUIAction.psSysImage.imagePath}}',
visabled: true, disabled: false,
dataAccessAction: {{#if groupDetail.psUIAction.dataAccessAction}}false{{else}}true{{/if}}, visabled: true,
getNoPrivDisplayMode: {{#if groupDetail.psUIAction.noPrivDisplayMode}}groupDetail.psUIAction.noPrivDisplayMode{{else}}6{{/if}}, dataAccessAction: {{#if groupDetail.psUIAction.dataAccessAction}}false{{else}}true{{/if}},
codeName:'{{groupDetail.psUIAction.codeName}}', getNoPrivDisplayMode: {{#if groupDetail.psUIAction.noPrivDisplayMode}}groupDetail.psUIAction.noPrivDisplayMode{{else}}6{{/if}},
fullCodeName:'{{groupDetail.psUIAction.fullCodeName}}', codeName:'{{groupDetail.psUIAction.codeName}}',
uIActionMode:'{{groupDetail.psUIAction.uIActionMode}}', fullCodeName:'{{groupDetail.psUIAction.fullCodeName}}',
uIActionTag:'{{groupDetail.psUIAction.uIActionTag}}', uIActionMode:'{{groupDetail.psUIAction.uIActionMode}}',
uIActionType:'{{groupDetail.psUIAction.uIActionType}}' uIActionTag:'{{groupDetail.psUIAction.uIActionTag}}',
uIActionType:'{{groupDetail.psUIAction.uIActionType}}'
},
{{/each}}
}, },
{{/each}} {{/if}}
}, {{#and (eq ctrl.portletType 'HTML') ctrl.pageUrl}}
{{/if}} // 网页地址
{{#and (eq ctrl.portletType 'HTML') ctrl.pageUrl}} pageUrl: '{{ctrl.pageUrl}}',
// 网页地址 {{/and}}
pageUrl: '{{ctrl.pageUrl}}', {{#eq ctrl.portletType 'RAWITEM'}}
{{/and}} // 内容类型
{{#eq ctrl.portletType 'RAWITEM'}} contentType: '{{ctrl.contentType}}',
// 内容类型 {{#eq ctrl.contentType 'RAW'}}
contentType: '{{ctrl.contentType}}', rawContent: `{{ctrl.rawContent}}`,
{{#eq ctrl.contentType 'RAW'}} {{/eq}}
rawContent: `{{ctrl.rawContent}}`, {{#eq ctrl.contentType 'HTML'}}
rawContent: `{{ctrl.htmlContent}}`,
{{/eq}}
{{/eq}} {{/eq}}
{{#eq ctrl.contentType 'HTML'}} {{#if ctrl.rawContent}}
rawContent: `{{ctrl.htmlContent}}`, // 直接内容
{{/eq}} rawContent: `{{ctrl.rawContent}}`,
{{/eq}} {{/if}}
{{#if ctrl.rawContent}} {{#eq ctrl.portletType 'LIST'}}
// 直接内容 {{#ctrl.psControls}}
rawContent: `{{ctrl.rawContent}}`, {{name}}: {
{{/if}} action:{
{{#eq ctrl.portletType 'LIST'}} loadAction: '{{getPSControlAction.psAppDEMethod.codeName}}',
{{#ctrl.psControls}} removeAction: '{{removePSControlAction.psAppDEMethod.codeName}}',
{{name}}: { updateAction: '{{updatePSControlAction.psAppDEMethod.codeName}}',
action:{ loadDraftAction: '{{getDraftPSControlAction.psAppDEMethod.codeName}}',
loadAction: '{{getPSControlAction.psAppDEMethod.codeName}}', createAction: '{{createPSControlAction.psAppDEMethod.codeName}}',
removeAction: '{{removePSControlAction.psAppDEMethod.codeName}}', fetchAction:'{{fetchPSControlAction.psAppDEMethod.codeName}}'
updateAction: '{{updatePSControlAction.psAppDEMethod.codeName}}', }
loadDraftAction: '{{getDraftPSControlAction.psAppDEMethod.codeName}}',
createAction: '{{createPSControlAction.psAppDEMethod.codeName}}',
fetchAction:'{{fetchPSControlAction.psAppDEMethod.codeName}}'
} }
{{/ctrl.psControls}}
{{/eq}}
} }
{{/ctrl.psControls}}
{{/eq}}
}; };
\ No newline at end of file
...@@ -42,7 +42,7 @@ interface CtrlEmit { ...@@ -42,7 +42,7 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, onViewEvent, onCtrlEvent, handleItemClick, handleActionClick } = new PortletControl(ctrlState, props, emit).moduleInstall(); const { name, state, onViewEvent, onCtrlEvent, handleItemClick, handleActionClick } = new PortletControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state }); defineExpose({ name, state });
......
...@@ -49,41 +49,43 @@ export class ControlVO extends ControlVOBase { ...@@ -49,41 +49,43 @@ export class ControlVO extends ControlVOBase {
} }
// 部件配置对象 // 部件配置对象
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
controlService: new EditFormService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ), controlName: '{{ctrl.name}}',
data: new ControlVO({}), controlService: new EditFormService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ),
showPopover: false, data: new ControlVO({}),
selectHistoryItem: {}, showPopover: false,
historyItems: [], selectHistoryItem: {},
detailsModel: { historyItems: [],
{{#if ctrl.psDEFormPages}} detailsModel: {
{{#each ctrl.psDEFormPages as | FormPage | }} {{#if ctrl.psDEFormPages}}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type='FORMDETAILSMODEL' item=FormPage}} {{#each ctrl.psDEFormPages as | FormPage | }}
{{/each}} {{> @macro/front-end/widgets/form-detail/include-form.hbs type='FORMDETAILSMODEL' item=FormPage}}
{{/if}}
},
rules: {
{{#each ctrl.psDEFormEditItemVRs as | ruleItem |}}
{{#neq ruleItem 2}}
{{#if ruleItem.valueRuleType 'DEFVALUERULE'}}
{{psDEFormEditItemName}}: [
{{#each ruleItem.psDEFVRGroupCondition as | condition |}}
{trigger: ['change', 'blur'],
validator: (_rule: RuleObject, value: string) => verifyRules(_rule,value,{
{{#condition.condType}}type: '{{condition.condType}}',{{/condition.condType}}
{{#condition.name}}name: '{{condition.name}}',{{/condition.name}}
{{#condition.maxValue}}maxValue: '{{condition.maxValue}}',{{/condition.maxValue}}
{{#condition.minValue}}minValue: '{{condition.minValue}}',{{/condition.minValue}}
{{#condition.ruleInfo}}ruleInfo: '{{condition.ruleInfo}}',{{/condition.ruleInfo}}
{{#condition.includeMaxValue}}includeMaxValue: '{{condition.includeMaxValue}}',{{/condition.includeMaxValue}}
{{#condition.includeMinValue}}includeMinValue: '{{condition.includeMinValue}}',{{/condition.includeMinValue}}
}) }
{{/each}} {{/each}}
] {{/if}}
{{/if}} },
{{/neq}} rules: {
{{/each}} {{#each ctrl.psDEFormEditItemVRs as | ruleItem |}}
}, {{#neq ruleItem 2}}
{{#if ruleItem.valueRuleType 'DEFVALUERULE'}}
{{psDEFormEditItemName}}: [
{{#each ruleItem.psDEFVRGroupCondition as | condition |}}
{trigger: ['change', 'blur'],
validator: (_rule: RuleObject, value: string) => verifyRules(_rule,value,{
{{#condition.condType}}type: '{{condition.condType}}',{{/condition.condType}}
{{#condition.name}}name: '{{condition.name}}',{{/condition.name}}
{{#condition.maxValue}}maxValue: '{{condition.maxValue}}',{{/condition.maxValue}}
{{#condition.minValue}}minValue: '{{condition.minValue}}',{{/condition.minValue}}
{{#condition.ruleInfo}}ruleInfo: '{{condition.ruleInfo}}',{{/condition.ruleInfo}}
{{#condition.includeMaxValue}}includeMaxValue: '{{condition.includeMaxValue}}',{{/condition.includeMaxValue}}
{{#condition.includeMinValue}}includeMinValue: '{{condition.includeMinValue}}',{{/condition.includeMinValue}}
}) }
{{/each}}
]
{{/if}}
{{/neq}}
{{/each}}
}
}
}; };
\ No newline at end of file
...@@ -27,7 +27,7 @@ interface CtrlEmit { ...@@ -27,7 +27,7 @@ interface CtrlEmit {
const emit = defineEmits<CtrlEmit>(); const emit = defineEmits<CtrlEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, getData, onEditorEvent } = new QuickSearchFormControl(ctrlState, props, emit).moduleInstall(); const { name, state, getData, onEditorEvent } = new QuickSearchFormControl(ctrlState(), props, emit).moduleInstall();
defineExpose({ name, state, getData }); defineExpose({ name, state, getData });
</script> </script>
......
import {{ctrl.codeName}}SearchBar from "./{{spinalCase ctrl.codeName}}-searchBar.vue"; import {{ctrl.codeName}}SearchBar from "./{{spinalCase ctrl.codeName}}-searchbar.vue";
export { {{ctrl.codeName}}SearchBar }; export { {{ctrl.codeName}}SearchBar };
\ No newline at end of file
export const CtrlConfig = {
controlCodeName: "{{ctrl.codeName}}",
controlName: "{{ctrl.name}}",
detailsModel: {
{{#each ctrl.psSearchBarFilters as | filter | }}
{{filter.name}} : {
label: '{{filter.psAppDEField.logicName}}',
name: '{{filter.name}}',
prop: '{{lowerCase filter.psAppDEField.codeName}}',
disabled: false,
{{#if filter.psDEFSearchMode}}mode: '{{filter.psDEFSearchMode.valueOP}}',{{/if}}
},
{{/each}}
},
}
\ No newline at end of file
<script setup lang="ts"> <script setup lang="ts">
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { CtrlConfig } from './{{spinalCase ctrl.codeName}}-searchBar-config'; import { ctrlState } from './{{spinalCase ctrl.codeName}}-searchbar-state';
import { SearchBarControl, IActionParam, IParam, IContext, ControlAction, deepCopy } from '@core'; import { SearchBarControl, IActionParam, IParam, IContext, ControlAction, deepCopy } from '@core';
interface Props { interface Props {
...@@ -22,7 +21,7 @@ interface CtrlEmit { ...@@ -22,7 +21,7 @@ interface CtrlEmit {
const emit = defineEmits<CtrlEmit>(); const emit = defineEmits<CtrlEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state } = new SearchBarControl(CtrlConfig, props, emit).moduleInstall(); const { name, state } = new SearchBarControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state}); defineExpose({ name, state});
......
export const ctrlState = () => {
return {
controlCodeName: "{{ctrl.codeName}}",
controlName: "{{ctrl.name}}",
detailsModel: {
{{#each ctrl.psSearchBarFilters as | filter | }}
{{filter.name}} : {
label: '{{filter.psAppDEField.logicName}}',
name: '{{filter.name}}',
prop: '{{lowerCase filter.psAppDEField.codeName}}',
disabled: false,
{{#if filter.psDEFSearchMode}}mode: '{{filter.psDEFSearchMode.valueOP}}',{{/if}}
},
{{/each}}
},
}
}
\ No newline at end of file
...@@ -48,42 +48,44 @@ export class ControlVO extends ControlVOBase { ...@@ -48,42 +48,44 @@ export class ControlVO extends ControlVOBase {
} }
// 部件配置对象 // 部件配置对象
export const ctrlState = { export const ctrlState = () => {
autoSearch: {{ctrl.enableAutoSearch}}, return {
controlCodeName: '{{ctrl.codeName}}', autoSearch: {{ctrl.enableAutoSearch}},
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
controlService: new EditFormService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ), controlName: '{{ctrl.name}}',
data: new ControlVO({}), controlService: new EditFormService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ),
showPopover: false, data: new ControlVO({}),
selectHistoryItem: {}, showPopover: false,
historyItems: [], selectHistoryItem: {},
detailsModel: { historyItems: [],
{{#if ctrl.psDEFormPages}} detailsModel: {
{{#each ctrl.psDEFormPages as | FormPage | }} {{#if ctrl.psDEFormPages}}
{{> @macro/front-end/widgets/form-detail/include-form.hbs type="FORMDETAILSMODEL" item=FormPage}} {{#each ctrl.psDEFormPages as | FormPage | }}
{{/each}} {{> @macro/front-end/widgets/form-detail/include-form.hbs type="FORMDETAILSMODEL" item=FormPage}}
{{/if}}
},
rules: {
{{#each ctrl.psDEFormEditItemVRs as | ruleItem |}}
{{#neq ruleItem 2}}
{{#if ruleItem.valueRuleType 'DEFVALUERULE'}}
{{psDEFormEditItemName}}: [
{{#each ruleItem.psDEFVRGroupCondition as | condition |}}
{trigger: ['change', 'blur'],
validator: (_rule: RuleObject, value: string) => verifyRules(_rule,value,{
{{#condition.condType}}type: '{{condition.condType}}',{{/condition.condType}}
{{#condition.name}}name: '{{condition.name}}',{{/condition.name}}
{{#condition.maxValue}}maxValue: '{{condition.maxValue}}',{{/condition.maxValue}}
{{#condition.minValue}}minValue: '{{condition.minValue}}',{{/condition.minValue}}
{{#condition.ruleInfo}}ruleInfo: '{{condition.ruleInfo}}',{{/condition.ruleInfo}}
{{#condition.includeMaxValue}}includeMaxValue: '{{condition.includeMaxValue}}',{{/condition.includeMaxValue}}
{{#condition.includeMinValue}}includeMinValue: '{{condition.includeMinValue}}',{{/condition.includeMinValue}}
}) }
{{/each}} {{/each}}
] {{/if}}
{{/if}} },
{{/neq}} rules: {
{{/each}} {{#each ctrl.psDEFormEditItemVRs as | ruleItem |}}
}, {{#neq ruleItem 2}}
{{#if ruleItem.valueRuleType 'DEFVALUERULE'}}
{{psDEFormEditItemName}}: [
{{#each ruleItem.psDEFVRGroupCondition as | condition |}}
{trigger: ['change', 'blur'],
validator: (_rule: RuleObject, value: string) => verifyRules(_rule,value,{
{{#condition.condType}}type: '{{condition.condType}}',{{/condition.condType}}
{{#condition.name}}name: '{{condition.name}}',{{/condition.name}}
{{#condition.maxValue}}maxValue: '{{condition.maxValue}}',{{/condition.maxValue}}
{{#condition.minValue}}minValue: '{{condition.minValue}}',{{/condition.minValue}}
{{#condition.ruleInfo}}ruleInfo: '{{condition.ruleInfo}}',{{/condition.ruleInfo}}
{{#condition.includeMaxValue}}includeMaxValue: '{{condition.includeMaxValue}}',{{/condition.includeMaxValue}}
{{#condition.includeMinValue}}includeMinValue: '{{condition.includeMinValue}}',{{/condition.includeMinValue}}
}) }
{{/each}}
]
{{/if}}
{{/neq}}
{{/each}}
},
}
}; };
\ No newline at end of file
...@@ -27,7 +27,7 @@ interface CtrlEmit { ...@@ -27,7 +27,7 @@ interface CtrlEmit {
const emit = defineEmits<CtrlEmit>(); const emit = defineEmits<CtrlEmit>();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, getData, onEditorEvent, onComponentEvent, onSearch, loadDraft, onSaveHistoryItem, onCancel, onRemoveHistoryItem } = new SearchFormControl(ctrlState, props, emit).moduleInstall(); const { name, state, getData, onEditorEvent, onComponentEvent, onSearch, loadDraft, onSaveHistoryItem, onCancel, onRemoveHistoryItem } = new SearchFormControl(ctrlState(), props, emit).moduleInstall();
defineExpose({ name, state, getData }); defineExpose({ name, state, getData });
</script> </script>
<template> <template>
......
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
data: {}, controlName: '{{ctrl.name}}',
{{#if ctrl.psAppCounterRefs}} data: {},
appCounterRefs: [ {{#if ctrl.psAppCounterRefs}}
{{#each ctrl.psAppCounterRefs as | counterRef |}} appCounterRefs: [
{{#if counterRef.psAppCounter}} {{#each ctrl.psAppCounterRefs as | counterRef |}}
{{#with counterRef.psAppCounter as | counter |}} {{#if counterRef.psAppCounter}}
{ {{#with counterRef.psAppCounter as | counter |}}
id: '{{counterRef.id}}', {
getAction: '{{counter.getPSAppDEAction.codeName}}', id: '{{counterRef.id}}',
timer: {{#if counter.timer}}{{counter.timer}}{{else}}6000{{/if}}, getAction: '{{counter.getPSAppDEAction.codeName}}',
{{#if counter.psAppDataEntity}} timer: {{#if counter.timer}}{{counter.timer}}{{else}}6000{{/if}},
deCodeName: '{{lowerCase counter.psAppDataEntity.codeName}}' {{#if counter.psAppDataEntity}}
{{/if}} deCodeName: '{{lowerCase counter.psAppDataEntity.codeName}}'
}{{#unless @last}},{{/unless}} {{/if}}
{{/with}} }{{#unless @last}},{{/unless}}
{{/if}} {{/with}}
{{/each}} {{/if}}
],
counterServices: [],
{{#if ctrl.psControls}}
{{#each ctrl.psControls as | viewPanel |}}
{{#and viewPanel.psAppCounterRef viewPanel.psAppCounterRef.psAppCounter viewPanel.counterId}}
{{viewPanel.name}}Counter: { id: '{{viewPanel.psAppCounterRef.id}}', counterId: '{{viewPanel.counterId}}' },
{{/and}}
{{/each}} {{/each}}
],
counterServices: [],
{{#if ctrl.psControls}}
{{#each ctrl.psControls as | viewPanel |}}
{{#and viewPanel.psAppCounterRef viewPanel.psAppCounterRef.psAppCounter viewPanel.counterId}}
{{viewPanel.name}}Counter: { id: '{{viewPanel.psAppCounterRef.id}}', counterId: '{{viewPanel.counterId}}' },
{{/and}}
{{/each}}
{{/if}}
{{/if}} {{/if}}
{{/if}} }
}; };
\ No newline at end of file
...@@ -36,7 +36,7 @@ interface CtrlEmit { ...@@ -36,7 +36,7 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const tabExpPanelControl = new TabExpPanelControl(ctrlState, props, emit).moduleInstall(); const tabExpPanelControl = new TabExpPanelControl(ctrlState(), props, emit).moduleInstall();
const { name, state, onCtrlEvent, getCounterData } = tabExpPanelControl; const { name, state, onCtrlEvent, getCounterData } = tabExpPanelControl;
// 暴露内部状态及能力 // 暴露内部状态及能力
......
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
appDeCodeName: '{{ctrl.psAppDataEntity.codeName}}', controlName: '{{ctrl.name}}',
navFilter: "{{ctrl.navFilter}}", appDeCodeName: '{{ctrl.psAppDataEntity.codeName}}',
{{#if ctrl.navPSDER}} navFilter: "{{ctrl.navFilter}}",
navPSDer: { {{#if ctrl.navPSDER}}
{{#if ctrl.navPSDER.majorPSDataEntity}} navPSDer: {
major: '{{lowerCase ctrl.navPSDER.majorPSDataEntity.codeName}}', {{#if ctrl.navPSDER.majorPSDataEntity}}
majorKey: '{{lowerCase ctrl.navPSDER.majorPSDataEntity.keyPSDEField.codeName}}' major: '{{lowerCase ctrl.navPSDER.majorPSDataEntity.codeName}}',
majorKey: '{{lowerCase ctrl.navPSDER.majorPSDataEntity.keyPSDEField.codeName}}'
{{/if}}
}
{{/if}} {{/if}}
} {{#if ctrl.psNavigateContexts}}
navContexts:{{> @macro/front-end/common/navparam.hbs appNavParams=ctrl.psNavigateContexts}},
{{/if}}
{{#if ctrl.psNavigateParams}}
navParams:{{> @macro/front-end/common/navparam.hbs appNavParams=ctrl.psNavigateParams}},
{{/if}} {{/if}}
{{#if ctrl.psNavigateContexts}} }
navContexts:{{> @macro/front-end/common/navparam.hbs appNavParams=ctrl.psNavigateContexts}},
{{/if}}
{{#if ctrl.psNavigateParams}}
navParams:{{> @macro/front-end/common/navparam.hbs appNavParams=ctrl.psNavigateParams}},
{{/if}}
}; };
\ No newline at end of file
...@@ -30,7 +30,7 @@ interface CtrlEmit { ...@@ -30,7 +30,7 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, onViewEvent } = new TabViewPanelControl(ctrlState, props, emit).moduleInstall(); const { name, state, onViewEvent } = new TabViewPanelControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state }); defineExpose({ name, state });
......
export const ctrlState = { export const ctrlState = () => {
controlCodeName: '{{ctrl.codeName}}', return {
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
counter: 0, controlName: '{{ctrl.name}}',
enableSearch: {{ctrl.enableSearch}}, counter: 0,
xDataControlName: '{{ctrl.xDataControlName}}', enableSearch: {{ctrl.enableSearch}},
selection: {}, xDataControlName: '{{ctrl.xDataControlName}}',
searchValue: '', selection: {},
showTitleBar: {{#if ctrl.showTitleBar}}true{{else}}false{{/if}}, searchValue: '',
split: 0.2, showTitleBar: {{#if ctrl.showTitleBar}}true{{else}}false{{/if}},
title: '{{ctrl.title}}', split: 0.2,
titleRes: '{{#if ctrl.titlePSLanguageRes}}{{ctrl.titlePSLanguageRes.lanResTag}}{{/if}}', title: '{{ctrl.title}}',
{{#each ctrl.psControls as | childCtrl |}} titleRes: '{{#if ctrl.titlePSLanguageRes}}{{ctrl.titlePSLanguageRes.lanResTag}}{{/if}}',
{{#eq childCtrl.controlType 'TOOLBAR'}} {{#each ctrl.psControls as | childCtrl |}}
toolbar: [ {{#eq childCtrl.controlType 'TOOLBAR'}}
{{#childCtrl.psDEToolbarItems}} toolbar: [
{ name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if psUIAction}}uIAction:{codeName:'{{psUIAction.codeName}}',fullCodeName:'{{psUIAction.fullCodeName}}',uIActionMode:'{{psUIAction.uIActionMode}}',actionTarget:'{{psUIAction.actionTarget}}',uIActionTag:'{{psUIAction.uIActionTag}}',dataAccessAction:'{{psUIAction.dataAccessAction}}',uIActionType:'{{psUIAction.uIActionType}}'}{{#if psUIAction.counterId}},counterId: '{{psUIAction.counterId}}'{{/if}}{{/if}} }, {{#childCtrl.psDEToolbarItems}}
{{/childCtrl.psDEToolbarItems}} { name:'{{name}}',caption:'{{caption}}',groupExtractMode:'{{groupExtractMode}}',itemType:'{{itemType}}',noPrivDisplayMode:'{{noPrivDisplayMode}}',showIcon:{{showIcon}},showCaption:{{showCaption}},tooltip:'{{tooltip}}',disabled: false, visible: true, imgPath: '{{imgPath}}',iconClass: '{{iconClass}}',xDataControlName:'{{xDataControlName}}',{{#if psUIAction}}uIAction:{codeName:'{{psUIAction.codeName}}',fullCodeName:'{{psUIAction.fullCodeName}}',uIActionMode:'{{psUIAction.uIActionMode}}',actionTarget:'{{psUIAction.actionTarget}}',uIActionTag:'{{psUIAction.uIActionTag}}',dataAccessAction:'{{psUIAction.dataAccessAction}}',uIActionType:'{{psUIAction.uIActionType}}'}{{#if psUIAction.counterId}},counterId: '{{psUIAction.counterId}}'{{/if}}{{/if}} },
], {{/childCtrl.psDEToolbarItems}}
{{/eq}} ],
{{/each}} {{/eq}}
viewRefs: [
{{#each ctrl.psAppViewRefs as | viewRef |}}
{
name: '{{viewRef.name}}',
{{#if viewRef.refPSAppView}}
viewName: '{{viewRef.refPSAppView.name}}',
{{#if viewRef.refPSAppView.psAppDataEntity}}
deKeyField: '{{viewRef.refPSAppView.psAppDataEntity.codeName}}',
{{/if}}
{{/if}}
},
{{/each}} {{/each}}
] viewRefs: [
{{#each ctrl.psAppViewRefs as | viewRef |}}
{
name: '{{viewRef.name}}',
{{#if viewRef.refPSAppView}}
viewName: '{{viewRef.refPSAppView.name}}',
{{#if viewRef.refPSAppView.psAppDataEntity}}
deKeyField: '{{viewRef.refPSAppView.psAppDataEntity.codeName}}',
{{/if}}
{{/if}}
},
{{/each}}
]
}
}; };
...@@ -55,7 +55,7 @@ interface CtrlEmit { ...@@ -55,7 +55,7 @@ interface CtrlEmit {
const emit = defineEmits <CtrlEmit> (); const emit = defineEmits <CtrlEmit> ();
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, onCtrlEvent, xDataControl, search, onToolbarEvent } = new TreeExpBarControl(ctrlState, props, emit).moduleInstall(); const { name, state, onCtrlEvent, xDataControl, search, onToolbarEvent } = new TreeExpBarControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state }); defineExpose({ name, state });
......
...@@ -184,47 +184,49 @@ export class ControlVO extends ControlVOBase implements TreeControlVO { ...@@ -184,47 +184,49 @@ export class ControlVO extends ControlVOBase implements TreeControlVO {
} }
} }
export const ctrlState = { export const ctrlState = () => {
appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}', return {
appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}', appEntityCodeName: '{{ctrl.psAppDataEntity.codeName}}',
appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}', appDeCodeName:'{{ctrl.psAppDataEntity.codeName}}',
appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}', appDeLogicName: '{{ctrl.psAppDataEntity.logicName}}',
appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}', appDeKeyFieldName: '{{#if ctrl.psAppDataEntity.keyPSAppDEField}}{{ctrl.psAppDataEntity.keyPSAppDEField.codeName}}{{/if}}',
{{#and ctrl.psAppCounterRef ctrl.psAppCounterRef.psAppCounter}} appDeMajorFieldName: '{{#if ctrl.psAppDataEntity.majorPSAppDEField}}{{ctrl.psAppDataEntity.majorPSAppDEField.codeName}}{{/if}}',
appCounterRef: { {{#and ctrl.psAppCounterRef ctrl.psAppCounterRef.psAppCounter}}
{{#with ctrl.psAppCounterRef.psAppCounter as | counter |}} appCounterRef: {
id: '{{ctrl.psAppCounterRef.id}}', {{#with ctrl.psAppCounterRef.psAppCounter as | counter |}}
getAction: '{{counter.getPSAppDEAction.codeName}}', id: '{{ctrl.psAppCounterRef.id}}',
timer: {{#if counter.timer}}{{counter.timer}}{{else}}6000{{/if}}, getAction: '{{counter.getPSAppDEAction.codeName}}',
{{#if counter.psAppDataEntity}} timer: {{#if counter.timer}}{{counter.timer}}{{else}}6000{{/if}},
deCodeName: '{{lowerCase counter.psAppDataEntity.codeName}}' {{#if counter.psAppDataEntity}}
{{/if}} deCodeName: '{{lowerCase counter.psAppDataEntity.codeName}}'
{{/with}} {{/if}}
}, {{/with}}
counterService: {}, },
{{/and}} counterService: {},
contextMenus: { {{/and}}
{{#each ctrl.psDETreeNodes as | treeNode |}} contextMenus: {
{{#if (and treeNode.psDEContextMenu treeNode.psDEContextMenu.psDEToolbarItems)}} {{#each ctrl.psDETreeNodes as | treeNode |}}
{{treeNode.nodeType}}: [ {{#if (and treeNode.psDEContextMenu treeNode.psDEContextMenu.psDEToolbarItems)}}
{{#each treeNode.psDEContextMenu.psDEToolbarItems as | item |}} {{treeNode.nodeType}}: [
{{#neq item.itemType "SEPERATOR"}} {{#each treeNode.psDEContextMenu.psDEToolbarItems as | item |}}
{{> @macro/front-end/widgets/tree-detail/tree-node-context-menu-item.hbs item=item owner=treeNode.nodeType}} {{#neq item.itemType "SEPERATOR"}}
{{/neq}} {{> @macro/front-end/widgets/tree-detail/tree-node-context-menu-item.hbs item=item owner=treeNode.nodeType}}
{{/each}} {{/neq}}
], {{/each}}
{{/if}} ],
{{/each}} {{/if}}
}, {{/each}}
controlCodeName: '{{ctrl.codeName}}', },
controlName: '{{ctrl.name}}', controlCodeName: '{{ctrl.codeName}}',
controlService: new TreeService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ), controlName: '{{ctrl.name}}',
currentSelectedNode: {}, controlService: new TreeService<ControlVO>(ControlVO, new {{pascalCase ctrl.psAppDataEntity.codeName}}Service() ),
items: [], currentSelectedNode: {},
outputIconDefault: {{#eq ctrl.outputIconDefault false}}false{{else}}true{{/eq}}, items: [],
echoSelectedNodes: [], outputIconDefault: {{#eq ctrl.outputIconDefault false}}false{{else}}true{{/eq}},
expandedKeys: [], echoSelectedNodes: [],
selectedKeys: [], expandedKeys: [],
selectedNodes: [], selectedKeys: [],
selections: [] selectedNodes: [],
selections: []
}
}; };
\ No newline at end of file
...@@ -49,7 +49,7 @@ const getCustomText = (scriptCode: any) => { ...@@ -49,7 +49,7 @@ const getCustomText = (scriptCode: any) => {
} }
// 安装功能模块,提供状态和能力方法 // 安装功能模块,提供状态和能力方法
const { name, state, load, refresh, onTreeNodeSelect, onContextMenuClick, onRightClick, onCheck, getCounterData } = new TreeControl(ctrlState, props, emit).moduleInstall(); const { name, state, load, refresh, onTreeNodeSelect, onContextMenuClick, onRightClick, onCheck, getCounterData } = new TreeControl(ctrlState(), props, emit).moduleInstall();
// 暴露内部状态及能力 // 暴露内部状态及能力
defineExpose({ name, state, load, refresh }); defineExpose({ name, state, load, refresh });
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册