提交 30c0271a 编写于 作者: Shine-zwj's avatar Shine-zwj

update:更新

上级 046ef750
...@@ -102,120 +102,19 @@ import UIService from '@/uiservice/ui-service'; ...@@ -102,120 +102,19 @@ import UIService from '@/uiservice/ui-service';
public appUIService:UIService = new UIService(); public appUIService:UIService = new UIService();
</#if> </#if>
/** <#assign panelItems = ctrl.getAllPSPanelItems()>
* 视图布局是否加载 <#assign type='ITEMLAYOUT' />
* <#assign item=ctrl />
* @public <@getLayoutItemModel panelItems type view item/>
* @memberof ${srfclassname('${ctrl.name}')}Base </#assign>
*/
public isLayoutLoadding: boolean = false;
/**
* 视图布局数据
*
* @public
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public layoutData:any = {};
/**
* 视图布局面板模型对象
*
* @public
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public layoutModelDetails:any = {};
/** <#assign item=ctrl>
* 视图布局顶级成员名称 <#assign rootPanelItems=null />
*
* @public
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public rootLayoutDetailNames: string[] = <@compress single_line=true>[
<#if ctrl.getRootPSPanelItems?? && ctrl.getRootPSPanelItems()??> <#if ctrl.getRootPSPanelItems?? && ctrl.getRootPSPanelItems()??>
<#list ctrl.getRootPSPanelItems() as panelItem> <#assign rootPanelItems=ctrl.getRootPSPanelItems()>
'${panelItem.name}'<#if panelItem_has_next>,</#if>
</#list>
</#if> </#if>
];</@compress> <@initLayout rootPanelItems item/>
</#assign>
/**
* 初始化布局
*
* @public
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public async initLayout() {
if (this.rootLayoutDetailNames.length > 0) {
for (let i = 0; i < this.rootLayoutDetailNames.length; i++) {
const name = this.rootLayoutDetailNames[i];
const rootItem = this.layoutItems[name];
if (!rootItem) {
return;
}
await this.initLayoutItem(rootItem);
}
}
return true;
}
/**
* 初始化布局项
*
* @public
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public async initLayoutItem(layoutModelItem: any, index: number = 0) {
const { name } = layoutModelItem;
const layoutModelDetail = Util.getLayoutItemInstance(layoutModelItem);
if (!index) {
await layoutModelDetail.load(this.context, this.viewparams);
this.$set(this.layoutModelDetails, name, layoutModelDetail);
this.$set(this.layoutData, name, layoutModelDetail.getData());
} else {
layoutModelDetail.setIndex(index);
await layoutModelDetail.load(this.context, this.viewparams);
<#noparse>this.$set(this.layoutModelDetails, `${name}_${index}`, layoutModelDetail);</#noparse>
<#noparse>this.$set(this.layoutData, `${name}_${index}`, layoutModelDetail.getData());</#noparse>
}
if (layoutModelDetail && layoutModelDetail.details) {
if (layoutModelDetail.dataRegionType === 'MULTIDATA') {
const multiData = layoutModelDetail.getData();
if (multiData && multiData.length > 0) {
for (let i = 0; i < multiData.length; i++) {
for (let j = 0; j < layoutModelDetail.details.length; j++) {
const key = layoutModelDetail.details[j];
if (this.layoutItems[key]) {
await this.initLayoutItem(this.layoutItems[key], i);
}
}
}
}
} else {
for (let i = 0; i < layoutModelDetail.details.length; i++) {
const key = layoutModelDetail.details[i];
if (this.layoutItems[key]) {
await this.initLayoutItem(this.layoutItems[key],index);
}
}
}
}
}
/**
* 视图布局面板项模型对象
*
* @public
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public layoutItems:any = {
<#if ctrl.getAllPSPanelItems()??>
<#assign panelItems = ctrl.getAllPSPanelItems() />
<#assign type='ITEMLAYOUT' />
<@getLayoutItemModel panelItems type view />
</#if>
};
/** /**
* 监听数据对象 * 监听数据对象
...@@ -333,20 +232,6 @@ import UIService from '@/uiservice/ui-service'; ...@@ -333,20 +232,6 @@ import UIService from '@/uiservice/ui-service';
this.panelEditItemChange(name, value); this.panelEditItemChange(name, value);
} }
/**
* 计算按钮权限状态
*
* @public
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public computeButtonAuthState() {
Object.values(this.layoutModelDetails).forEach((layoutModel: any) => {
if (layoutModel.itemType == 'BUTTON') {
layoutModel.computeActionAuthState();
}
})
}
/** /**
* 面板编辑项值变化后续操作 * 面板编辑项值变化后续操作
* *
...@@ -368,26 +253,11 @@ import UIService from '@/uiservice/ui-service'; ...@@ -368,26 +253,11 @@ import UIService from '@/uiservice/ui-service';
} }
} }
/**
* 面板逻辑
*
* @public
* @params name 改变项名称
* @params index 多数据容器下标
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public panelLogic(name: string, index?: number): void {
if (name && (index || index === 0)) {
<#noparse>name = name.replace(`_${index}`,"");</#noparse>
}
<#list ctrl.getAllPSPanelItems() as panelItem>
<@getPanelItemLogic panelItem />
</#list>
}
<#if ctrl.getAllPSPanelItems()??> <#if ctrl.getAllPSPanelItems()??>
<#assign panelItems = ctrl.getAllPSPanelItems() /> <#assign panelItems = ctrl.getAllPSPanelItems() />
<#assign item = ctrl /> <#assign item = ctrl />
<@panelDynamicLogic panelItems item />
<@handleButtonClick panelItems item /> <@handleButtonClick panelItems item />
</#if> </#if>
......
...@@ -27,8 +27,22 @@ this.$verify.testCond(_${item.getDstModelField()?lower_case}, "${item.getCondOp( ...@@ -27,8 +27,22 @@ this.$verify.testCond(_${item.getDstModelField()?lower_case}, "${item.getCondOp(
</@compress> </@compress>
</#macro> </#macro>
<#-- 面板项动态逻辑 --> <#-- 面板动态逻辑 -->
<#macro getPanelItemLogic panelItem> <#macro panelDynamicLogic panelItems item>
/**
* 面板逻辑
*
* @public
* @params name 改变项名称
* @params index 多数据容器下标
* @memberof ${srfclassname('${item.codeName}')}Base
*/
public panelLogic(name: string, index?: number): void {
if (name && (index || index === 0)) {
<#noparse>name = name.replace(`_${index}`,"");</#noparse>
}
<#list panelItems as panelItem>
<#if panelItem.getPSPanelItemGroupLogic('ITEMBLANK')??> <#if panelItem.getPSPanelItemGroupLogic('ITEMBLANK')??>
<#assign ITEMBLANK = panelItem.getPSPanelItemGroupLogic('ITEMBLANK')/> <#assign ITEMBLANK = panelItem.getPSPanelItemGroupLogic('ITEMBLANK')/>
if (Object.is(name, '')<#if ITEMBLANK.getRelatedItemNames()??><#list ITEMBLANK.getRelatedItemNames() as detailName> || Object.is(name, '${detailName}')</#list></#if>) { if (Object.is(name, '')<#if ITEMBLANK.getRelatedItemNames()??><#list ITEMBLANK.getRelatedItemNames() as detailName> || Object.is(name, '${detailName}')</#list></#if>) {
...@@ -101,6 +115,8 @@ this.$verify.testCond(_${item.getDstModelField()?lower_case}, "${item.getCondOp( ...@@ -101,6 +115,8 @@ this.$verify.testCond(_${item.getDstModelField()?lower_case}, "${item.getCondOp(
} }
} }
</#if> </#if>
</#list>
}
</#macro> </#macro>
<#-- 处理按钮点击 --> <#-- 处理按钮点击 -->
...@@ -145,8 +161,16 @@ this.$verify.testCond(_${item.getDstModelField()?lower_case}, "${item.getCondOp( ...@@ -145,8 +161,16 @@ this.$verify.testCond(_${item.getDstModelField()?lower_case}, "${item.getCondOp(
</#macro> </#macro>
<#-- 获取布局项模型 type-布局项类型('ITEMLAYOUT' | 'VIEWLAYOUT') --> <#-- 获取布局项模型 type-布局项类型('ITEMLAYOUT' | 'VIEWLAYOUT') -->
<#macro getLayoutItemModel panelItems type view> <#macro getLayoutItemModel panelItems type view item>
<#list panelItems as panelItem>
/**
* 视图布局面板项模型对象
*
* @public
* @memberof ${srfclassname('${item.name}')}Base
*/
public layoutItems:any = {
<#list panelItems as panelItem>
<#assign detail> <#assign detail>
name: '${panelItem.getName()}', name: '${panelItem.getName()}',
type: '${type}', type: '${type}',
...@@ -292,5 +316,123 @@ this.$verify.testCond(_${item.getDstModelField()?lower_case}, "${item.getCondOp( ...@@ -292,5 +316,123 @@ this.$verify.testCond(_${item.getDstModelField()?lower_case}, "${item.getCondOp(
<@compress single_line=true>${panelItem.name}:{ ${detail}<#if panelItem.getPSPanelItems()??>, <@compress single_line=true>${panelItem.name}:{ ${detail}<#if panelItem.getPSPanelItems()??>,
details:[<#list panelItem.getPSPanelItems() as childPanelItem>'${childPanelItem.getName()}'<#if childPanelItem_has_next>,</#if></#list>]</#if>}<#if panelItem_has_next>,</#if></@compress> details:[<#list panelItem.getPSPanelItems() as childPanelItem>'${childPanelItem.getName()}'<#if childPanelItem_has_next>,</#if></#list>]</#if>}<#if panelItem_has_next>,</#if></@compress>
</#if> </#if>
</#list> </#list>
}
</#macro> </#macro>
<#macro initLayout rootPanelItems item >
/**
* 布局面板是否加载
*
* @public
* @memberof ${srfclassname('${item.name}')}Base
*/
public isLayoutLoadding: boolean = false;
/**
* 布局面板数据
*
* @public
* @memberof ${srfclassname('${item.name}')}Base
*/
public layoutData:any = {};
/**
* 布局面板模型对象
*
* @public
* @memberof ${srfclassname('${item.name}')}Base
*/
public layoutModelDetails:any = {};
/**
* 视图布局顶级成员名称
*
* @public
* @memberof ${srfclassname('${item.name}')}Base
*/
public rootLayoutDetailNames: string[] = <@compress single_line=true>[
<#if rootPanelItems>
<#list rootPanelItems as panelItem>
'${panelItem.name}'<#if panelItem_has_next>,</#if>
</#list>
</#if>
];</@compress>
/**
* 初始化布局
*
* @public
* @memberof ${srfclassname('${item.name}')}Base
*/
public async initLayout() {
if (this.rootLayoutDetailNames.length > 0) {
for (let i = 0; i < this.rootLayoutDetailNames.length; i++) {
const name = this.rootLayoutDetailNames[i];
const rootItem = this.layoutItems[name];
if (!rootItem) {
return;
}
await this.initLayoutItem(rootItem);
}
}
return true;
}
/**
* 初始化布局项
*
* @public
* @memberof ${srfclassname('${item.name}')}Base
*/
public async initLayoutItem(layoutModelItem: any, index: number = 0) {
const { name } = layoutModelItem;
const layoutModelDetail = Util.getLayoutItemInstance(layoutModelItem);
if (!index) {
await layoutModelDetail.load(this.context, this.viewparams);
this.$set(this.layoutModelDetails, name, layoutModelDetail);
this.$set(this.layoutData, name, layoutModelDetail.getData());
} else {
layoutModelDetail.setIndex(index);
await layoutModelDetail.load(this.context, this.viewparams);
<#noparse>this.$set(this.layoutModelDetails, `${name}_${index}`, layoutModelDetail);</#noparse>
<#noparse>this.$set(this.layoutData, `${name}_${index}`, layoutModelDetail.getData());</#noparse>
}
if (layoutModelDetail && layoutModelDetail.details) {
if (layoutModelDetail.dataRegionType === 'MULTIDATA') {
const multiData = layoutModelDetail.getData();
if (multiData && multiData.length > 0) {
for (let i = 0; i < multiData.length; i++) {
for (let j = 0; j < layoutModelDetail.details.length; j++) {
const key = layoutModelDetail.details[j];
if (this.layoutItems[key]) {
await this.initLayoutItem(this.layoutItems[key], i);
}
}
}
}
} else {
for (let i = 0; i < layoutModelDetail.details.length; i++) {
const key = layoutModelDetail.details[i];
if (this.layoutItems[key]) {
await this.initLayoutItem(this.layoutItems[key],index);
}
}
}
}
}
/**
* 计算面板按钮权限状态
*
* @public
* @memberof ${srfclassname('${item.name}')}Base
*/
public computeButtonAuthState() {
Object.values(this.layoutModelDetails).forEach((layoutModel: any) => {
if (layoutModel.itemType == 'BUTTON') {
layoutModel.computeActionAuthState();
}
})
}
<#macro>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册