提交 abd1c635 编写于 作者: ysw's avatar ysw

init

上级 8e3cec50
J2EE6IONIC4_R6
\ No newline at end of file
import { IBizTabViewPanel } from 'ibizsys';
\ No newline at end of file
/**
* 分页视图面板
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizTabViewPanel }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizTabViewPanel {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
/**
* 注册工具栏按钮
*
* @memberof ${srfclassname('${ctrl.name}')}
*/
public regToolBarItems(): void {
<#assign tabView = ctrl.getPSAppDEView()>
<#if tabView??>
<#if tabView.hasPSControl('lefttoolbar')>
<#assign lefttoolbar = tabView.getPSControl('lefttoolbar')>
<#assign items = lefttoolbar.getPSDEToolbarItems()>
<#if items??>
<#list items as item>
<#if item.getItemType() == "ITEMS">
this.regToolBarItem({
name: '${item.getName()?lower_case}', caption: '${item.caption}', text: '${item.caption}', xtype: 'splitbutton',
items: [
<#assign childItems = item.getPSDEToolbarItems()>
<#list childItems as childItem>
<#assign deuiaction = childItem.getPSUIAction()>
{ type: '${childItem.getItemType()}', name: '${childItem.getName()?lower_case}', tooltip: '${childItem.getTooltip()}', isEnableToggleMode: ${childItem.isEnableToggleMode()?c}, caption: '${childItem.caption}', tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}', priv: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}<#else></#if>'<#if item.getPSSysImage()??>, icon: '${childItem.getPSSysImage().getImagePath()!''}', iconcls: '${childItem.getPSSysImage().getCssClass()!''}'</#if>, isShowCaption: ${childItem.isShowCaption()?c}, isShowIcon: ${childItem.isShowIcon()?c} },
</#list>
]
});
<#else>
<#assign deuiaction = item.getPSUIAction()>
this.regToolBarItem({ type: '${item.getItemType()}', name: '${item.getName()?lower_case}', tooltip: '${item.getTooltip()}', isEnableToggleMode: ${item.isEnableToggleMode()?c}, caption: '${item.caption}', tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}', priv: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}<#else></#if>'<#if item.getPSSysImage()??>, icon: '${item.getPSSysImage().getImagePath()!''}', iconcls: '${item.getPSSysImage().getCssClass()!''}'</#if>, isShowCaption: ${item.isShowCaption()?c}, isShowIcon: ${item.isShowIcon()?c} });
</#if>
</#list>
</#if>
</#if>
<#if tabView.hasPSControl('righttoolbar')>
<#assign righttoolbar = tabView.getPSControl('righttoolbar')>
<#assign items = righttoolbar.getPSDEToolbarItems()>
<#if items??>
<#list items as item>
<#if item.getItemType() == "ITEMS">
this.regToolBarItem({
name: '${item.getName()?lower_case}', caption: '${item.caption}', text: '${item.caption}', xtype: 'splitbutton',
items: [
<#assign childItems = item.getPSDEToolbarItems()>
<#list childItems as childItem>
<#assign deuiaction = childItem.getPSUIAction()>
{ type: '${childItem.getItemType()}', name: '${childItem.getName()?lower_case}', tooltip: '${childItem.getTooltip()}', isEnableToggleMode: ${childItem.isEnableToggleMode()?c}, caption: '${childItem.caption}', tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}', priv: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}<#else></#if>'<#if item.getPSSysImage()??>, icon: '${childItem.getPSSysImage().getImagePath()!''}', iconcls: '${childItem.getPSSysImage().getCssClass()!''}'</#if>, isShowCaption: ${childItem.isShowCaption()?c}, isShowIcon: ${childItem.isShowIcon()?c} },
</#list>
]
});
<#else>
<#assign deuiaction = item.getPSUIAction()>
this.regToolBarItem({ type: '${item.getItemType()}', name: '${item.getName()?lower_case}', tooltip: '${item.getTooltip()}', isEnableToggleMode: ${item.isEnableToggleMode()?c}, caption: '${item.caption}', tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}', priv: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}<#else></#if>'<#if item.getPSSysImage()??>, icon: '${item.getPSSysImage().getImagePath()!''}', iconcls: '${item.getPSSysImage().getCssClass()!''}'</#if>, isShowCaption: ${item.isShowCaption()?c}, isShowIcon: ${item.isShowIcon()?c} });
</#if>
</#list>
</#if>
</#if>
</#if>
}
}
\ No newline at end of file
<#if ctrl.getPSSysCounterRef()?? && ctrl.getPSSysCounterRef().getPSSysCounter()??><#assign counter = ctrl.getPSSysCounterRef().getPSSysCounter()></#if>
{ id: '${ctrl.getName()}', text: '${ctrl.getCaption()}'<#if counter??>, counter: getUICounterNum('${counter.getCodeName()}', '${ctrl.getCounterId()!''}')</#if> }
\ No newline at end of file
<ng-container *ngIf="${ctrl.getName()}.isActivated()">
<#assign tabView = ctrl.getPSAppDEView()>
<#if tabView??>
<${filename(tabView.codeName)} [hidden]="activateTab !== '${ctrl.getName()}'" #${tabView.codeName} [viewUsage]="4" [searchValue]="$searchValue" (viewInitEnd)="${ctrl.getName()}.regView($event)"></${filename(tabView.codeName)}>
</#if>
</ng-container>
\ No newline at end of file
<ion-toolbar class="ibiz-view-toolbar" [hidden]="activateTab !== '${ctrl.getName()}'" color="primary">
<#assign tabView = ctrl.getPSAppDEView()>
<#if tabView??>
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-back-button class="ibiz-view-back-button" text="返回" (click)="closeResult()"></ion-back-button>
<#if tabView.hasPSControl('lefttoolbar')>
<#assign lefttoolbar = tabView.getPSControl('lefttoolbar')>
<#assign items = lefttoolbar.getPSDEToolbarItems()>
<#list items as item>
<#if item.getItemType() == "ITEMS">
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.openActionSheet('${item.name}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}<#else>more</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#else>
<#assign deuiaction = item.getPSUIAction()>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.clickButton('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
</#if>
</#list>
</#if>
</ion-buttons>
<#if tabView.isEnableQuickSearch()>
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" [value]="$searchValue" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
<#else>
<ion-title class="ibiz-view-title">${tabView.getCaption()}</ion-title>
</#if>
<ion-buttons class="ibiz-toolbar-right-buttons" slot="end">
<#if tabView.hasPSControl('righttoolbar')>
<#assign righttoolbar = tabView.getPSControl('righttoolbar')>
<#assign items = righttoolbar.getPSDEToolbarItems()>
<#list items as item>
<#if item.getItemType() == "ITEMS">
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.openActionSheet('${item.name}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}<#else>more</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#else>
<#assign deuiaction = item.getPSUIAction()>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.clickButton('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
</#if>
</#list>
</#if>
</ion-buttons>
</#if>
</ion-toolbar>
\ No newline at end of file
CTRLTYPE=TABVIEWPANEL
\ No newline at end of file
import { IBizList } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEListControllerCode
</#ibiztemplate>
/**
* 多数据部件控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizList }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizList {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEListControllerCode
</#ibiztemplate>
<ion-list class="ibiz-mdctrl-list">
<ion-item *ngFor="let item of ${ctrl.name}.$items" class="ibiz-mdctrl-list-item" (click)="${ctrl.name}.click(item)">
<#if itemlayoutpanel??>
${itemlayoutpanel.code}
<#else>
<ion-label>
{{ item.srfmajortext }}
</ion-label>
</#if>
</ion-item>
</ion-list>
<ion-toolbar>
<div style="text-align: center;">
<span [hidden]="!${ctrl.name}.isInfinite() || ${ctrl.name}.isSendingRequest()" (tap)="${ctrl.name}.loadMore()">点击加载更多</span>
<span [hidden]="${ctrl.name}.isInfinite() || ${ctrl.name}.isSendingRequest()">没有更多啦~</span>
<ion-spinner [hidden]="!${ctrl.name}.isSendingRequest()" name="dots"></ion-spinner>
</div>
</ion-toolbar>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEListControllerCode
</#ibiztemplate>
CTRLTYPE=LIST
\ No newline at end of file
import { IBizWizardPanel } from 'ibizsys';
\ No newline at end of file
/**
* 编辑表单控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizWizardPanel }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizWizardPanel {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
public initParams(): void {
<#if ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardForms()??>
<#list ctrl.getPSDEWizard().getPSDEWizardForms() as form>
<#if form.isFirstForm() == true>
this.setStep('${form.getFormTag()}');
</#if>
</#list>
</#if>
<#if ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardForms()??>
this.initSteps([
<#list ctrl.getPSDEWizard().getPSDEWizardForms() as form>
'${form.getFormTag()}',
</#list>
]);
</#if>
<#if ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardForms()??>
this.initStepButtonState({
<#list ctrl.getPSDEWizard().getPSDEWizardForms() as form>
'${form.getFormTag()}': '<#list form.getStepActions() as action>${action},</#list>',
</#list>
});
</#if>
<#if ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardForms()??>
<#list ctrl.getPSDEWizard().getPSDEWizardForms() as form>
<#if (form.getConfirmMsg()?? && form.getConfirmMsg() != "") || (form.getConfirmMsg2()?? && form.getConfirmMsg2() != "")>
this.regConfirmMsg('${form.getFormTag()}', {<#if form.getConfirmMsg()?? && form.getConfirmMsg() != "">msg: { isAgree: false }</#if><#if form.getConfirmMsg2()?? && form.getConfirmMsg2() != "">, msg2: { isAgree: false }</#if>});
</#if>
</#list>
</#if>
}
}
\ No newline at end of file
<ion-content>
<ng-container [ngSwitch]="${ctrl.name}.getStep()">
<#list ctrl.getPSDEEditForms() as form>
<ng-container *ngSwitchCase="'${form.getPSDEWizardForm().getFormTag()}'">
${srfctrl('${form.name}').code}
<#if form.getPSDEWizardForm().getConfirmMsg()?? && form.getPSDEWizardForm().getConfirmMsg() != "">
<ion-item lines="none">
<ion-checkbox color="medium" [(ngModel)]="${ctrl.name}.$nextConfirm.get('${form.getPSDEWizardForm().getFormTag()}').msg.isAgree" style="height: 12pt;width: 12pt;"></ion-checkbox>
${form.getPSDEWizardForm().getConfirmMsg()}
</ion-item>
</#if>
<#if form.getPSDEWizardForm().getConfirmMsg2()?? && form.getPSDEWizardForm().getConfirmMsg2() != "">
<ion-item lines="none">
<ion-checkbox color="medium" [(ngModel)]="${ctrl.name}.$nextConfirm.get('${form.getPSDEWizardForm().getFormTag()}').msg2.isAgree" style="height: 12pt;width: 12pt;"></ion-checkbox>
${form.getPSDEWizardForm().getConfirmMsg2()}
</ion-item>
</#if>
</ng-container>
</#list>
</ng-container>
</ion-content>
<#if ctrl.isShowActionBar() != false></#if>
\ No newline at end of file
CTRLTYPE=WIZARDPANEL
\ No newline at end of file
import { IBizFormButton } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
new IBizFormButton({name: '${item.name!''}', caption: '${item.getCaption()}'<#if item.getParamPickupPSAppView()??><#assign view = item.getParamPickupPSAppView()>, pickupview: '${view.getPSAppModule().codeName?lower_case}_${view.codeName?lower_case}'</#if>, visible: true, fieldType: 'BUTTON', form: this, actiontype: '${item.getActionType()}'<#if item.getPSUIAction()??><#assign uiaction=item.getPSUIAction()>, uiaction: { type: '${uiaction.getUIActionType()}', tag: '${uiaction.getUIActionTag()}'<#if (uiaction.getActionTarget()!="")>, actiontarget: '${uiaction.getActionTarget()}'</#if>}</#if><#if item.getPSDEFormItemUpdate()??>, fiupdate: { tag: '${item.getPSDEFormItemUpdate().codeName}' }</#if> })
\ No newline at end of file
import { IBizMEditViewPanel } from 'ibizsys';
\ No newline at end of file
import { IBizFormDRPanel } from 'ibizsys';
import ${item.getPSAppView().codeName} from '@pages/${filename('${item.getPSAppView().getPSAppModule().codeName}')}/${filename('${item.getPSAppView().codeName}')}/${filename('${item.getPSAppView().codeName}')}';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#assign dritem=item.getPSDEDRItem()>
new IBizFormDRPanel({name:'${item.name}', caption: '${item.getCaption()}', visible: true, type: 'DRUIPART'<#if item.getRefreshItems()??>, refreshitems: '${item.getRefreshItems()}'</#if><#if item.parentLayoutMode=='TABLE'><#if (item.contentWidth>1)>, width: ${item.contentWidth}<#else>, columnWidth: ${item.contentWidth}</#if></#if>, height:${item.getContentHeight()}, width: '100%', form: this, dritem: {id:'${dritem.id}', embedviewid:'${item.getEmbedViewId()}', parentmode:{srfparenttype:'${dritem.itemType}'<#if ((dritem.itemType=='DER1N') || (dritem.itemType=='SYSDER1N'))>,srfder1nid:'${dritem.getPSDER1NName()}'</#if>}} )
\ No newline at end of file
${editor.code2}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
new IBizFormField({name: '${item.name!''}', caption: '${item.getCaption()}', visible: true, type: 'FORMITEM', allowEmpty: <#if !(item.isAllowEmpty())>true<#else>false</#if>, form: this})
\ No newline at end of file
import { IBizFormPage } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
new IBizFormPage({name: '${item.name}', caption: '${item.getCaption()}', visible: true, type: 'FORMPAGE', form: this, child: [
<#list items as rowitem><#assign rowobj = rowitem.getObj()>'${rowobj.getName()}', </#list>
]<#if item.getPSSysPFPlugin()??>, render: (item) => {
return <>${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}</>;
}</#if>})
\ No newline at end of file
import { IBizFormGroup } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
new IBizFormGroup({name: '${item.name}', caption: '${item.getCaption()}', visible: true, type: 'GROUPPANEL', isShowCaption: ${item.isShowCaption()?c}, titleBarCloseMode: '${item.getTitleBarCloseMode()}'<#if item.getColLG() != -1>, lg: ${item.getColLG()?c}</#if><#if item.getColMD() != -1>, md: ${item.getColMD()?c}</#if><#if item.getColSM() != -1>, sm: ${item.getColSM()?c}</#if><#if item.getColXS() != -1>, xs: ${item.getColXS()?c}</#if>, form: this, child: [
<#list items as rowitem><#assign rowobj = rowitem.getObj()>'${rowobj.getName()}', </#list>
]<#if item.getPSSysPFPlugin()??>, render: (item) => {
return <>${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}</>;
}</#if>})
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
new IBizFormField({name: '${item.name!''}', visible: false, type: 'HIDDENFORMITEM', form: this})
\ No newline at end of file
import { IBizFormRawItem } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
new IBizFormRawItem({name: '${item.name!''}', caption: '${item.getCaption()}', visible: true, type: 'RAWITEM', form: this})
\ No newline at end of file
import { IBizFormTabPage } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
new IBizFormTabPage({name:'${item.name}', caption: '${item.getCaption()}', visible: true, type: 'TABPAGE', form: this})
\ No newline at end of file
import { IBizFormTabPanel } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormTabPanellVC
</#ibiztemplate>
new IBizFormTabPanel({name:'${item.name}', caption: '${item.getCaption()}', visible: true, type: 'TABPANEL', form: this})
\ No newline at end of file
<#if item.getRenderPSSysPFPlugin()??>
${item.getRenderPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
<#else>
表单自定义部件没有定义插件
</#if>
\ No newline at end of file
/**
* 编辑表单控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizMEditViewPanel }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizMEditViewPanel {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<ion-button [hidden]="!fields.${item.name}?.visible" expand="full" class="ibiz-form-button<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()};</#if><#if item.getHeight() gt 0>height: ${item.getHeight()}px;</#if>' (click)="fields?.${item.name}.onClick()">${item.caption}</ion-button>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
<#else>
<ibiz-form-item [field]="fields?.${item.name}">
<ng-template let-${item.name}>
<ion-item [hidden]="!${item.name}?.visible" class="ibiz-form-item ${item.getLabelPos()?lower_case}<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()};</#if><#if item.getItemHeight() gt 0>height: ${item.getItemHeight()?c};</#if><#if item.getItemWidth() gt 0>width: ${item.getItemWidth()?c};</#if>'>
<#if item.isShowCaption()>
<label class="ibiz-form-item-label-${item.getLabelPos()?lower_case}"<#if item.getLabelPos() == "TOP">position="floating"</#if><#if item.getLabelPos() == "LEFT"> slot="start"<#elseif item.getLabelPos() == "RIGHT"> slot="end"</#if>>
<#if item.isEmptyCaption() == false> <span class="stars" *ngIf="${item.name}.allowEmpty">*</span>
${item.caption}</#if>
</label>
</#if>
${editor.code}
</ion-item>
</ng-template>
</ibiz-form-item>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#list items as rowitem>
${rowitem.code}
</#list>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
<#else>
<ion-item-group [hidden]="!fields.${item.name}?.visible" class="ibiz-form-group<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" <#if item.getPSSysCss()??>style='${item.getPSSysCss().getRawCssStyle()};'</#if>>
<#if item.isShowCaption()> <ion-item-divider><ion-label>${item.getCaption()}</ion-label></ion-item-divider></#if>
<#list items as rowitem>
${rowitem.code}
</#list>
</ion-item-group>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<ion-item class="ibiz-form-item">
${item.getRawContent()}
</ion-item>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormTabPanellVC
</#ibiztemplate>
<div class="ibiz-medit-view-panel" *ngFor="let item of ${ctrl.name}.$items;let i = index;">
<ion-card class="ibiz-medit-view-panel-card">
<ion-item>
<ion-label>${ctrl.getPSAppDEView().getCaption()}({{i + 1}})</ion-label>
<ion-button fill="outline" slot="end" (click)="${ctrl.name}.deleteItem(item, i)">删除</ion-button>
</ion-item>
<ion-card-content>
<${filename(ctrl.getPSAppDEView().codeName)} (formChange)="${ctrl.name}.editViewChange($event)" [parentData]="$parentData" [parentMode]="$parentMode" (saveCompleted)="${ctrl.name}.saveCompleted($event, i)" [saveRefView]="item.saveRefView" [(srfkey)]="item.srfkey" [viewUsage]="4"></${filename(ctrl.getPSAppDEView().codeName)}>
</ion-card-content>
</ion-card>
</div>
<div style="text-align: center;font-size: 20px;padding: 5px 0px;">
<a href="javascript:;" (click)="${ctrl.name}.addItem()">添加${ctrl.getPSAppDEView().getCaption()}</a>
</div>
\ No newline at end of file
CTRLTYPE=MULTIEDITVIEWPANEL
\ No newline at end of file
import { IBizToolbar } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DETBUIActionVC
</#ibiztemplate>
<#assign deuiaction=item.getPSUIAction()>
{ type: '${item.getItemType()}', name: '${item.getName()?lower_case}', tooltip: '${item.getTooltip()}', isEnableToggleMode: ${item.isEnableToggleMode()?c}, caption: '${item.caption}', tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}', priv: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}<#else></#if>'<#if item.getPSSysImage()??>, icon: '${item.getPSSysImage().getImagePath()!''}', iconcls: '${item.getPSSysImage().getCssClass()!''}'</#if>, isShowCaption: ${item.isShowCaption()?c}, isShowIcon: ${item.isShowIcon()?c} }
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=PSFR7DETBGroupItemVC
</#ibiztemplate>
{
name: '${item.getName()?lower_case}', caption: '${item.caption}', text: '${item.caption}', xtype: 'splitbutton',
items: [
<#list items as item>
${item.code},
</#list>
]
}
\ No newline at end of file
{ type: '${item.getItemType()}', name: '${item.getName()?lower_case}' }
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEToolbarVC
</#ibiztemplate>
/**
* 工具栏控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizToolbar }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizToolbar {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
/**
* 注册工具栏按钮
*
* @memberof ${srfclassname('${ctrl.name}')}
*/
public regToolBarItems(): void {
<#list items as item>
<#if item.code?length gt 0>
this.regToolBarItem(${item.code});
</#if>
</#list>
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DETBUIActionVC
</#ibiztemplate>
<#assign deuiaction=item.getPSUIAction()>
<#if ctrl.getToolbarStyle() == 'MOBBOTTOMMENU'>
<ion-button expand="block" (click)="clickButton('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#elseif ctrl.getToolbarStyle() == 'MOBWFACTIONMENU'>
<ion-button class="ibiz-quick-toolbar-item" expand="block" (click)="${ctrl.name}.click('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#else>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.click('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=PSFR7DETBGroupItemVC
</#ibiztemplate>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.openActionSheet('${item.name}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}<#else>more</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEToolbarVC
</#ibiztemplate>
<#if ctrl.getToolbarStyle() == 'MOBWFACTIONMENU'>
<ion-footer class="ibiz-view-footer">
<div class="ibiz-quick-toolbar">
<#list items as item>
${item.code}
</#list>
</div>
</ion-footer>
<#elseif ctrl.getToolbarStyle() == 'MOBBOTTOMMENU'>
<ion-footer<#if ctrl.getPSSysCss()??> class="${ctrl.getPSSysCss().getCssName()}"</#if>>
<#list items as item>
${item.code}
</#list>
</ion-footer>
<#else>
<#list items as item>
${item.code}
</#list>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DETBUIActionVC
</#ibiztemplate>
<#assign deuiaction=item.getPSUIAction()>
<#if ctrl.getToolbarStyle() == 'MOBBOTTOMMENU'>
<ion-button expand="block" (click)="clickButton('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#elseif ctrl.getToolbarStyle() == 'MOBWFACTIONMENU'>
<ion-button class="ibiz-quick-toolbar-item" expand="block" (click)="${ctrl.name}.click('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#else>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.click('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=PSFR7DETBGroupItemVC
</#ibiztemplate>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.openActionSheet('${item.name}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}<#else>more</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEToolbarVC
</#ibiztemplate>
CTRLTYPE=TOOLBAR
\ No newline at end of file
import { IBizFormButton } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
new IBizFormButton({name: '${item.name!''}', caption: '${item.getCaption()}'<#if item.getParamPickupPSAppView()??><#assign view = item.getParamPickupPSAppView()>, pickupview: '${view.getPSAppModule().codeName?lower_case}_${view.codeName?lower_case}'</#if>, visible: true, fieldType: 'BUTTON', form: this, actiontype: '${item.getActionType()}'<#if item.getPSUIAction()??><#assign uiaction=item.getPSUIAction()>, uiaction: { type: '${uiaction.getUIActionType()}', tag: '${uiaction.getUIActionTag()}'<#if (uiaction.getActionTarget()!="")>, actiontarget: '${uiaction.getActionTarget()}'</#if>}</#if><#if item.getPSDEFormItemUpdate()??>, fiupdate: { tag: '${item.getPSDEFormItemUpdate().codeName}' }</#if> })
\ No newline at end of file
import { IBizSearchForm } from 'ibizsys';
import { IBizFormField } from 'ibizsys';
<#list formdetails as formdetail>
<#if formdetail.code2?length gt 0>
${formdetail.code2}
</#if>
</#list>
\ No newline at end of file
import { IBizFormDRPanel } from 'ibizsys';
import ${item.getPSAppView().codeName} from '@pages/${filename('${item.getPSAppView().getPSAppModule().codeName}')}/${filename('${item.getPSAppView().codeName}')}/${filename('${item.getPSAppView().codeName}')}';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#assign dritem=item.getPSDEDRItem()>
new IBizFormDRPanel({name:'${item.name}', caption: '${item.getCaption()}', visible: true, type: 'DRUIPART'<#if item.getRefreshItems()??>, refreshitems: '${item.getRefreshItems()}'</#if><#if item.parentLayoutMode=='TABLE'><#if (item.contentWidth>1)>, width: ${item.contentWidth}<#else>, columnWidth: ${item.contentWidth}</#if></#if>, height:${item.getContentHeight()}, width: '100%', form: this, dritem: {id:'${dritem.id}', embedviewid:'${item.getEmbedViewId()}', parentmode:{srfparenttype:'${dritem.itemType}'<#if ((dritem.itemType=='DER1N') || (dritem.itemType=='SYSDER1N'))>,srfder1nid:'${dritem.getPSDER1NName()}'</#if>}} )
\ No newline at end of file
${editor.code2}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
new IBizFormField({name: '${item.name!''}', caption: '${item.getCaption()}', visible: true, type: 'FORMITEM', allowEmpty: <#if !(item.isAllowEmpty())>true<#else>false</#if>, form: this})
\ No newline at end of file
import { IBizFormPage } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
new IBizFormPage({name: '${item.name}', caption: '${item.getCaption()}', visible: true, type: 'FORMPAGE', form: this, child: [
<#list items as rowitem><#assign rowobj = rowitem.getObj()>'${rowobj.getName()}', </#list>
]<#if item.getPSSysPFPlugin()??>, render: (item) => {
return <>${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}</>;
}</#if>})
\ No newline at end of file
import { IBizFormGroup } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
new IBizFormGroup({name: '${item.name}', caption: '${item.getCaption()}', visible: true, type: 'GROUPPANEL', isShowCaption: ${item.isShowCaption()?c}, titleBarCloseMode: '${item.getTitleBarCloseMode()}'<#if item.getColLG() != -1>, lg: ${item.getColLG()?c}</#if><#if item.getColMD() != -1>, md: ${item.getColMD()?c}</#if><#if item.getColSM() != -1>, sm: ${item.getColSM()?c}</#if><#if item.getColXS() != -1>, xs: ${item.getColXS()?c}</#if>, form: this, child: [
<#list items as rowitem><#assign rowobj = rowitem.getObj()>'${rowobj.getName()}', </#list>
]<#if item.getPSSysPFPlugin()??>, render: (item) => {
return <>${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}</>;
}</#if>})
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
new IBizFormField({name: '${item.name!''}', visible: false, type: 'HIDDENFORMITEM', form: this})
\ No newline at end of file
import { IBizFormRawItem } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
new IBizFormRawItem({name: '${item.name!''}', caption: '${item.getCaption()}', visible: true, type: 'RAWITEM', form: this})
\ No newline at end of file
import { IBizFormTabPage } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
new IBizFormTabPage({name:'${item.name}', caption: '${item.getCaption()}', visible: true, type: 'TABPAGE', form: this})
\ No newline at end of file
import { IBizFormTabPanel } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormTabPanellVC
</#ibiztemplate>
new IBizFormTabPanel({name:'${item.name}', caption: '${item.getCaption()}', visible: true, type: 'TABPANEL', form: this})
\ No newline at end of file
<#if item.getRenderPSSysPFPlugin()??>
${item.getRenderPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
<#else>
表单自定义部件没有定义插件
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormControllerCode
</#ibiztemplate>
/**
* 编辑表单控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizSearchForm }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizSearchForm {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
/**
* 注册编辑表单项
*
* @memberof ${srfclassname('${ctrl.name}')}
*/
public regFormItems(): void {
<#list formdetails as formdetail>
<#if formdetail.code?length gt 0>
<#assign formitem = formdetail.getObj()>
this.regFormItem(${formdetail.code});
</#if>
</#list>
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<ion-button [hidden]="!fields.${item.name}?.visible" expand="full" class="ibiz-form-button<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()};</#if><#if item.getHeight() gt 0>height: ${item.getHeight()}px;</#if>' (click)="fields?.${item.name}.onClick()">${item.caption}</ion-button>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
<#else>
<ibiz-form-item [field]="fields?.${item.name}">
<ng-template let-${item.name}>
<ion-item [hidden]="!${item.name}?.visible" class="ibiz-form-item ${item.getLabelPos()?lower_case}<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()};</#if><#if item.getItemHeight() gt 0>height: ${item.getItemHeight()?c};</#if><#if item.getItemWidth() gt 0>width: ${item.getItemWidth()?c};</#if>'>
<#if item.isShowCaption()>
<label class="ibiz-form-item-label-${item.getLabelPos()?lower_case}"<#if item.getLabelPos() == "TOP">position="floating"</#if><#if item.getLabelPos() == "LEFT"> slot="start"<#elseif item.getLabelPos() == "RIGHT"> slot="end"</#if>>
<#if item.isEmptyCaption() == false> <span class="stars" *ngIf="${item.name}.allowEmpty">*</span>
${item.caption}</#if>
</label>
</#if>
${editor.code}
</ion-item>
</ng-template>
</ibiz-form-item>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#list items as rowitem>
${rowitem.code}
</#list>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
<#else>
<ion-item-group [hidden]="!fields.${item.name}?.visible" class="ibiz-form-group<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" <#if item.getPSSysCss()??>style='${item.getPSSysCss().getRawCssStyle()};'</#if>>
<#if item.isShowCaption()> <ion-item-divider><ion-label>${item.getCaption()}</ion-label></ion-item-divider></#if>
<#list items as rowitem>
${rowitem.code}
</#list>
</ion-item-group>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<ion-item class="ibiz-form-item">
${item.getRawContent()}
</ion-item>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormTabPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormViewCode
</#ibiztemplate>
<Accordion activeKey="searchForm">
<AccordionPanel class="ibiz-search-form" key="searchForm" header="筛选">
<div style="max-height: 50vh;overflow-y: auto;">
<ibiz-form [fields]="${ctrl.name}?.$items">
<ng-template let-fields>
<#list formpages as formpage>
${formpage.code}
</#list>
</ng-template>
</ibiz-form>
</div>
<ion-footer class="ibiz-search-form-footer">
<div class="ibiz-search-form-footer-buttons">
<div>
<ion-button (click)="${ctrl.name}.onReset()" shape="round" size="small" expand="full" color="light">重置</ion-button>
</div>
<div>
<ion-button (click)="${ctrl.name}.onSearch()" shape="round" size="small" expand="full">搜索</ion-button>
</div>
</div>
</ion-footer>
</AccordionPanel>
</Accordion>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#list items as rowitem>
${rowitem.code}
</#list>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#list items as rowitem>
${rowitem.code}
</#list>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormTabPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormViewCode
</#ibiztemplate>
<#list formpages as formpage>
${formpage.code}
</#list>
\ No newline at end of file
CTRLTYPE=SEARCHFORM
\ No newline at end of file
import { IBizDRTab } from 'ibizsys';
\ No newline at end of file
/**
* 数据关系分页
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizDRTab }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizDRTab {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
public regTabConfigs(): void {
<#list ctrl.getPSDEDRCtrlItems() as item>
this.regTabConfig('${item.name}', { 'name': '${item.name}', 'caption': '${item.getCaption()!''}'<#if item.getPSAppView()??><#assign refview=item.getPSAppView()>, 'viewParam': <#if item.getViewParamJO()??>${item.getViewParamJO().toString()}<#else>{}</#if></#if> });
</#list>
}
}
\ No newline at end of file
<ion-tab-bar slot="bottom" [selectedTab]="${ctrl.name}.$activate">
<#-- 获取实体界面组 -->
<#assign dataRelation = ctrl.getPSDEDataRelation()>
<#if dataRelation.isHideEditItem() == false>
<ion-tab-button tab="form" [disabled]="isNewDataMode()" (click)="${ctrl.name}.onTabSelectionChange('form')">
<#if dataRelation.getFormPSSysImage()??><#assign formImage = dataRelation.getFormPSSysImage()>
<ion-icon name="<#if formImage.getCssClass() != "">${formImage.getCssClass()}<#else>home</#if>"<#if formImage.getImagePath() != ""> src="${formImage.getImagePath()}"</#if>></ion-icon>
</#if>
<ion-label>${dataRelation.getFormCaption()}</ion-label>
</ion-tab-button>
</#if>
<#if dataRelation.getPSDEDRDetails()??>
<#list dataRelation.getPSDEDRDetails() as drctrlitem>
<#if drctrlitem.getPSDEDRItem()?? || drctrlitem.getPSSysPDTView()??>
<ion-tab-button tab="${drctrlitem.name}" [disabled]="isNewDataMode()" (click)="${ctrl.name}.onTabSelectionChange('${drctrlitem.name}')">
<#if drctrlitem.getPSSysImage()??>
<ion-icon name="<#if drctrlitem.getPSSysImage().getCssClass() != "">${drctrlitem.getPSSysImage().getCssClass()}<#else>home</#if>"<#if drctrlitem.getPSSysImage().getImagePath() != ""> src="${drctrlitem.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
<ion-label>${drctrlitem.getCaption()!'未设置'}</ion-label>
<#if ctrl?? && ctrl.getPSSysCounterRef()?? && ctrl.getPSSysCounterRef().getPSSysCounter()?? && item.getCounterId()??> <ion-badge color="danger">{{ getUICounterNum('${ctrl.getPSSysCounterRef().getPSSysCounter().getCodeName()}', '${drctrlitem.getCounterId()!''}') }}</ion-badge></#if>
</ion-tab-button>
</#if>
</#list>
</#if>
<#if view.hasPSControl("quicktoolbar")>
<#assign quicktoolbar = view.getPSControl("quicktoolbar")>
<#if quicktoolbar.getPSDEToolbarItems()??>
<#assign num = iteratorlength(quicktoolbar.getPSDEToolbarItems())>
<#list quicktoolbar.getPSDEToolbarItems() as item>
<ion-tab-button (click)="<#if item.getItemType() == "ITEMS">${quicktoolbar.name}.openActionSheet('${item.getName()}')<#else><#if item.getPSUIAction()??>${quicktoolbar.name}.click('${item.getPSUIAction().getCodeName()}')</#if></#if>">
<#if item.getPSSysImage()??><#assign image = item.getPSSysImage()>
<ion-icon name="<#if image.getCssClass() != "">${image.getCssClass()}<#else>home</#if>"<#if image.getImagePath() != ""> src="${image.getImagePath()}"</#if>></ion-icon>
</#if>
<ion-label>${item.getCaption()}</ion-label>
</ion-tab-button>
<#break>
</#list>
</#if>
</#if>
</ion-tab-bar>
\ No newline at end of file
<#assign dataRelation = ctrl.getPSDEDataRelation()>
<#if dataRelation.isHideEditItem() == false>
<div [hidden]="${ctrl.name}.$activate !== 'form'">
<ng-container *ngTemplateOutlet="formContent"></ng-container>
</div>
</#if>
<#list ctrl.getPSDEDRCtrlItems() as drctrlitem>
<#if drctrlitem.getPSAppView()??>
<#assign view = drctrlitem.getPSAppView()>
<div [hidden]="${ctrl.name}.$activate !== '${drctrlitem.name}'">
<${filename(view.codeName)} #${drctrlitem.name} [viewUsage]="4"></${filename(view.codeName)}>
</div>
</#if>
</#list>
\ No newline at end of file
CTRLTYPE=DRTAB
\ No newline at end of file
import { IBizChart } from 'ibizsys';
\ No newline at end of file
/**
* 数据图表部件服务对象
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizChartService }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizChart {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
/**
* 获取图表基础配置数据
*
* @returns {*}
* @memberof ${srfclassname('${ctrl.name}')}Service
*/
public getChartConfig(): any {
<#assign title=ctrl.getPSDEChartTitle()>
<#assign xaxislist=ctrl.getPSDEChartAxesesByPos('x')>
<#assign yaxislist=ctrl.getPSDEChartAxesesByPos('y')>
<#assign customCode=''>
<#if ctrl.getPSSysPFPlugin()??>
<#assign customCode= ctrl.getPSSysPFPlugin().getCode("CODE2",pf.getId(),pfstyle.getId(),view,ctrl,null)>
</#if>
const opts = {
title: { show: <#if title.isShowTitle()>true<#else>false</#if><#if title.getTitle()??>, text: '${title.getTitle()}'</#if><#if title.getSubTitle()??>, subtext: '${title.getSubTitle()}'</#if> }
, legend: {}<#if ctrl.getCoordinateSystem()??><#if ctrl.getCoordinateSystem()='XY'>, tooltip: { trigger: 'axis' }
, xAxis: [
<#assign first = 1>
<#list ctrl.getPSDEChartAxeses() as axes>
<#if axes.getAxesType() == 'category'>
<#if first==0>, </#if><#assign first = 0>{ aixstag: '${axes.getName()}', type: 'category', position: '${axes.getAxesPos()}'<#if axes.getCaption()??>, name: '${axes.getCaption()}'</#if><#if axes.getMaxValue()??>, max: ${axes.getMaxValue()?c}</#if><#if axes.getMinValue()??>, min: ${axes.getMinValue()?c}</#if> }
</#if>
</#list>
]
, yAxis: [
<#assign first = 1>
<#list ctrl.getPSDEChartAxeses() as axes>
<#if axes.getAxesType() == 'numeric'>
<#if first==0>, </#if><#assign first = 0>{ aixstag: '${axes.getName()}', type: 'value', position: '${axes.getAxesPos()}'<#if axes.getCaption()??>, name: '${axes.getCaption()}'</#if><#if axes.getMaxValue()??>, max: ${axes.getMaxValue()?c}</#if><#if axes.getMinValue()??>, min: ${axes.getMinValue()?c}</#if> }
</#if>
</#list>
]
<#elseif ctrl.getCoordinateSystem()='NONE'>, tooltip: { trigger: 'item' }<#else>, tooltip: {}</#if></#if>
, seriesMap: {
<#assign first = 1>
<#list srflist(ctrl.getPSDEChartSerieses()) as series>
<#if first==0>, </#if><#assign first = 0> ${series.getName()}: {type: '${series.getSeriesType()}'<#if series.getCaption()??>, caption: '${series.getCaption()}'</#if><#if series.getXPSChartAxes()??>, xaixstag: '${series.getXPSChartAxes().getName()}'</#if><#if series.getYPSChartAxes()??>, yaixstag: '${series.getYPSChartAxes().getName()}'</#if> }
</#list>
}
, toolbox: { show: true, feature: { dataView: { show: true, readOnly: true, title: '数据视图' }, saveAsImage: { show: true, title: '保存为图片' }}}
};
return opts;
}
}
\ No newline at end of file
<div class="ibiz-charts" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()};</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()}<#else>200</#if>px;" ibiz-echart [chartConfig]="${ctrl.name}.$chartOption"<#if ctrl.getWidth() gt 0> width="${ctrl.getWidth()}px"</#if> height="<#if ctrl.getHeight() gt 0>${ctrl.getHeight()}<#else>200</#if>px"></div>
\ No newline at end of file
CTRLTYPE=CHART
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DashboardPartVC
</#ibiztemplate>
<#if item.getPortletType() == "CUSTOM" && item.getPortletType() != "APPMENU">
<#assign sysportlet=item.getPSSysPortlet()>
<#if sysportlet.getPSSysPFPlugin()??>
${sysportlet.getPSSysPFPlugin().getCode("CODE", pf.getId(), pfstyle.getId(), view, ctrl, item)}
</#if>
<#else>
${portlet.code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DashboardViewCode
</#ibiztemplate>
<#if parts??>
<#list parts as part>
${part.code}
</#list>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DashboardPartVC
</#ibiztemplate>
${portlet.code}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DashboardViewCode
</#ibiztemplate>
<#if parts??>
<#list parts as part>
${part.code}
</#list>
</#if>
\ No newline at end of file
CTRLTYPE=DASHBOARD
\ No newline at end of file
import { IBizCalendar } from 'ibizsys';
\ No newline at end of file
/**
* 多数据部件控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizCalendar }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizCalendar {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
<#if ctrl.getPSSysCalendarItems()?? && iteratorlength(ctrl.getPSSysCalendarItems()) gt 0>
public regDataConfig(): void {
<#list ctrl.getPSSysCalendarItems() as item>
this.regDataItemConfig({ name: '${item.getName()}', type: '${item.getItemType()}', style: { <#if item.getBKColor()??>'background-color': '${item.getBKColor()}', </#if><#if item.getBKColor()??>color: '${item.getColor()}' </#if>}});
</#list>
}
</#if>
}
\ No newline at end of file
<ibiz-calendar [data]="${ctrl.name}.$items" [activeDate]="{ year: ${ctrl.name}.year, month: ${ctrl.name}.month, day: ${ctrl.name}.day }" (activeDateChange)="${ctrl.name}.activeDateChange($event)"></ibiz-calendar>
<div class="calendar-data-classify">
<div class="calendar-data-classify-item" *ngFor="let config of ${ctrl.name}.calendarDataConfig" [ngStyle]="config.style">
{{ config.name }}
</div>
</div>
<div class="calendar-list">
<div *ngFor="let item of ${ctrl.name}.activeDateItems" class="calendar-list-item" [ngStyle]="{ 'border-left-color': ${ctrl.name}.calendarDataConfig2[item.type]?.style['background-color'] }">
<div>{{ item.srfmajortext }}</div>
<div>{{ item.begintime }}</div>
</div>
</div>
\ No newline at end of file
CTRLTYPE=CALENDAR
\ No newline at end of file
import { IBizTitleBar } from 'ibizsys';
\ No newline at end of file
/**
* 标题栏控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizTitleBar }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizTitleBar {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
/**
* 注册工具栏按钮
*
* @memberof ${srfclassname('${ctrl.name}')}
*/
public regToolBarItems(): void {
<#if ctrl.getLeftPSAppMenu()??>
<#assign leftAppMenu = ctrl.getLeftPSAppMenu()>
<#list leftAppMenu.getPSAppMenuItems() as menuItem>
<#if menuItem.getPSAppMenuItems()??>
this.regToolBarItem({
'name': '${menuItem.name}',
'items': [
<#list menuItem.getPSAppMenuItems() as menu><#if menu_index gt 0>, </#if><#if menu.getItemType() == 'MENUITEM'>{ 'caption': '${menu.getCaption()!''}'<#if menu.getPSSysImage()??>, 'iconcls': '${menu.getPSSysImage().getCssClass() !''}'</#if><#if menu.getPSAppFunc()??>, 'appFuncId': '${menu.getPSAppFunc().id!''}'</#if> }<#else>{}</#if></#list>
]
});
</#if>
</#list>
</#if>
<#if ctrl.getRightPSAppMenu()??>
<#assign rightAppMenu = ctrl.getRightPSAppMenu()>
<#list rightAppMenu.getPSAppMenuItems() as menuItem>
<#if menuItem.getPSAppMenuItems()??>
this.regToolBarItem({
'name': '${menuItem.name}',
'items': [
<#list menuItem.getPSAppMenuItems() as menu><#if menu_index gt 0>, </#if><#if menu.getItemType() == 'MENUITEM'>{ 'caption': '${menu.getCaption()!''}'<#if menu.getPSSysImage()??>, 'iconcls': '${menu.getPSSysImage().getCssClass() !''}'</#if><#if menu.getPSAppFunc()??>, 'appFuncId': '${menu.getPSAppFunc().id!''}'</#if> }<#else>{}</#if></#list>
]
});
</#if>
</#list>
</#if>
}
}
\ No newline at end of file
<#if view.isShowCaptionBar()>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<#if ctrl.getLeftPSAppMenu()??>
<#assign leftAppMenu = ctrl.getLeftPSAppMenu()>
<#list leftAppMenu.getPSAppMenuItems() as menuItem>
<ion-button (click)="<#if menuItem.getPSAppMenuItems()??>${ctrl.name}.openActionSheet('${menuItem.name}')<#else>menuClick('<#if menuItem.getPSAppFunc()??>${menuItem.getPSAppFunc().id}</#if>')</#if>">
<#if menuItem.getPSSysImage()??>
<ion-icon name="<#if menuItem.getPSSysImage().getCssClass() != "">${menuItem.getPSSysImage().getCssClass()}<#else>more</#if>" <#if menuItem.getPSSysImage().getImagePath() != "">src="${menuItem.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
${menuItem.getCaption()}
</ion-button>
</#list>
</#if>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
<ion-buttons class="ibiz-toolbar-right-buttons" slot="end">
<#if ctrl.getRightPSAppMenu()??>
<#assign rightAppMenu = ctrl.getRightPSAppMenu()>
<#list rightAppMenu.getPSAppMenuItems() as menuItem>
<ion-button (click)="<#if menuItem.getPSAppMenuItems()??>${ctrl.name}.openActionSheet('${menuItem.name}')<#else>menuClick('<#if menuItem.getPSAppFunc()??>${menuItem.getPSAppFunc().id}</#if>')</#if>">
<#if menuItem.getPSSysImage()??>
<ion-icon name="<#if menuItem.getPSSysImage().getCssClass() != "">${menuItem.getPSSysImage().getCssClass()}<#else>more</#if>" <#if menuItem.getPSSysImage().getImagePath() != "">src="${menuItem.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
${menuItem.getCaption()}
</ion-button>
</#list>
</#if>
</ion-buttons>
</ion-toolbar>
</ion-header>
</#if>
\ No newline at end of file
CTRLTYPE=TITLEBAR
\ No newline at end of file
import { IBizTree } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DETBUIActionVC
</#ibiztemplate>
<#assign deuiaction=item.getPSUIAction()>
{ type: '${item.getItemType()}', name: '${item.getName()?lower_case}', tooltip: '${item.getTooltip()}', isEnableToggleMode: ${item.isEnableToggleMode()?c}, caption: '${item.caption}', tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}', priv: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}<#else></#if>'<#if item.getPSSysImage()??>, icon: '${item.getPSSysImage().getImagePath()!''}', iconcls: '${item.getPSSysImage().getCssClass()!''}'</#if>, isShowCaption: ${item.isShowCaption()?c}, isShowIcon: ${item.isShowIcon()?c} }
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=PSFR7DETBGroupItemVC
</#ibiztemplate>
{
name: '${item.getName()?lower_case}', caption: '${item.caption}', text: '${item.caption}', xtype: 'splitbutton',
items: [
<#list items as item>
${item.code},
</#list>
]
}
\ No newline at end of file
{ type: '${item.getItemType()}', name: '${item.getName()?lower_case}' }
\ No newline at end of file
/**
* 树视图控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizToolbar }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizTree {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DETBUIActionVC
</#ibiztemplate>
<#assign deuiaction=item.getPSUIAction()>
<#if ctrl.getToolbarStyle() == 'MOBBOTTOMMENU'>
<ion-button expand="block" (click)="clickButton('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#elseif ctrl.getToolbarStyle() == 'MOBWFACTIONMENU'>
<ion-button class="ibiz-quick-toolbar-item" expand="block" (click)="${ctrl.name}.click('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#else>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.click('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=PSFR7DETBGroupItemVC
</#ibiztemplate>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.openActionSheet('${item.name}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}<#else>more</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
\ No newline at end of file
<div class="ibiz-tree">
<div class="ibiz-treenode">
<ion-badge [color]="(${ctrl.name}.$treeNodeList.length > 0) ? 'primary' : 'light'" (click)="${ctrl.name}.needTreeChange()">根节点</ion-badge>
<ng-container *ngFor="let item of ${ctrl.name}.$treeNodeList;let i = index;">
<ion-badge color="white">
>
</ion-badge>
<ion-badge [color]="(${ctrl.name}.$treeNodeList.length === (i + 1)) ? 'light' : 'primary'" (click)="${ctrl.name}.needTreeChange(item, i)">
{{ item.srfmajortext }}
</ion-badge>
</ng-container>
</div>
<div style="height: 5pt;background-color: #e3e3e3;"></div>
<div *ngIf="tree?.$trunks.length > 0">
<ion-list class="ibiz-treectrl-list">
<ion-item class="ibiz-treectrl-list-item" *ngFor="let item of ${ctrl.name}.$trunks" href="javascript:;" (click)="${ctrl.name}.checkboxChange(item)">
<ion-avatar slot="start" *ngIf="(item.iconCls != '' && item.iconCls) || (item.icon != '' && item.icon)">
<ion-icon [name]="(item.iconCls != '' && item.iconCls) ? item.iconCls : ''" [src]="(item.icon != '' && item.icon) ? item.icon : ''"
size="large"></ion-icon>
</ion-avatar>
<ion-label>
{{ item.srfmajortext }}
</ion-label>
</ion-item>
</ion-list>
</div>
<div style="height: 10pt;background-color: #e3e3e3;"></div>
<div *ngIf="tree?.$leafy.length > 0">
<ion-list class="ibiz-treectrl-list">
<ion-item class="ibiz-treectrl-list-item" *ngFor="let item of ${ctrl.name}.$leafy">
<ion-checkbox *ngIf="${ctrl.name}.$isEnableSelection" slot="start" [(ngModel)]="item.isChecked" (ionChange)="${ctrl.name}.selectChange(item)"></ion-checkbox>
<ion-avatar slot="start" *ngIf="(item.iconCls != '' && item.iconCls) || (item.icon != '' && item.icon)">
<ion-icon [name]="(item.iconCls != '' && item.iconCls) ? item.iconCls : ''" [src]="(item.icon != '' && item.icon) ? item.icon : ''"
size="large"></ion-icon>
</ion-avatar>
<ion-label>
{{ item.srfmajortext }}
</ion-label>
<ion-icon *ngIf="!${ctrl.name}.$isEnableSelection" src="./assets/images/edit.svg" slot="end" (click)="${ctrl.name}.click(item)"></ion-icon>
</ion-item>
</ion-list>
</div>
</div>
<ion-infinite-scroll [disabled]="!${ctrl.name}.isInfinite()" (ionInfinite)="${ctrl.name}.loadMore($event)">
<ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="正在加载...">
</ion-infinite-scroll-content>
</ion-infinite-scroll>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DETBUIActionVC
</#ibiztemplate>
<#assign deuiaction=item.getPSUIAction()>
<#if ctrl.getToolbarStyle() == 'MOBBOTTOMMENU'>
<ion-button expand="block" (click)="clickButton('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#elseif ctrl.getToolbarStyle() == 'MOBWFACTIONMENU'>
<ion-button class="ibiz-quick-toolbar-item" expand="block" (click)="${ctrl.name}.click('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
<#else>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.click('${deuiaction.getUIActionTag()}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=PSFR7DETBGroupItemVC
</#ibiztemplate>
<ion-button class="ibiz-view-toolbar-button" (click)="${ctrl.name}.openActionSheet('${item.name}')">
<#if item.isShowIcon()>
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}<#else>more</#if>" <#if item.getPSSysImage().getImagePath() != "">src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
</#if>
</#if>
<#if item.isShowCaption()> ${item.caption!''}</#if>
</ion-button>
\ No newline at end of file
CTRLTYPE=TREEVIEW
\ No newline at end of file
import { IBizMD } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEListControllerCode
</#ibiztemplate>
/**
* 多数据部件控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizMD }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizMD {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
<#if ctrl.getPagingSize() != 1000> this.$limit = ${ctrl.getPagingSize()?c};</#if>
<#list ctrl.getPSListDataItems() as dataItem><#if dataItem.getGroupItem()??> this.$groupItem = '${dataItem.getName()}';<#break></#if></#list>
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEListControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedViewContent${ctrl.name}">
<ng-container *ngIf="!${ctrl.name}.$isEnableSelection; else enableSelection${ctrl.name}">
<div (press)="${ctrl.name}.enableSelectionChange()">
<ng-container *ngTemplateOutlet="listContent"></ng-container>
</div>
<ibiz-load-more (loadMore)="${ctrl.name}.loadMore($event)" [isEmbeddedView]="isEmbeddedView()" [isSendingRequest]="${ctrl.name}.isSendingRequest()" [isInfinite]="${ctrl.name}.isInfinite()"></ibiz-load-more>
</ng-container>
<ng-template #enableSelection${ctrl.name}>
<ion-list class="ibiz-mdctrl-list">
<ion-item class="ibiz-mdctrl-list-item" *ngFor="let item of ${ctrl.name}.$items">
<#if itemlayoutpanel??>
${itemlayoutpanel.code}
<#else>
<ion-label>
{{ item.srfmajortext }}
</ion-label>
</#if>
<ion-checkbox slot="end" [(ngModel)]="item.isChecked" (ionChange)="${ctrl.name}.selectChange(item)"></ion-checkbox>
</ion-item>
</ion-list>
</ng-template>
</ng-container>
<ng-template #embeddedViewContent${ctrl.name}>
<ng-container *ngTemplateOutlet="listContent"></ng-container>
<ibiz-load-more (loadMore)="${ctrl.name}.loadMore($event)" [loadMode]="$loadMoreMode" [isEmbeddedView]="isEmbeddedView()" [isSendingRequest]="${ctrl.name}.isSendingRequest()" [isInfinite]="${ctrl.name}.isInfinite()"></ibiz-load-more>
</ng-template>
<ng-template #listContent>
<ion-list class="ibiz-mdctrl-list ${ctrl.name}">
<#-- 是否有左右滑动行为,没有不输出 -->
<#if ctrl.getPSDEUIActionGroup()?? && ctrl.getPSDEUIActionGroup().getPSUIActions()?? || ctrl.getPSDEUIActionGroup2()?? && ctrl.getPSDEUIActionGroup2().getPSUIActions()??> <ion-item-sliding *ngFor="let item of ${ctrl.name}.$items"></#if>
<#if ctrl.getPSDEUIActionGroup()?? && ctrl.getPSDEUIActionGroup().getPSUIActions()??>
<#assign uiactions = ctrl.getPSDEUIActionGroup().getPSUIActions()>
<ion-item-options side="start">
<#list uiactions as uiaction>
<ion-item-option <#if uiaction.getUIActionTag() == "Remove">color="danger"<#else>color="medium"</#if> <#if uiaction.getUIActionTag() == "Remove">(click)="${ctrl.name}.removeItem(item.srfkey)"<#else>(click)="${ctrl.name}.uiAction('${uiaction.getUIActionTag()}', item)"</#if>>${uiaction.getCaption()}</ion-item-option>
</#list>
</ion-item-options>
</#if>
<ion-item<#if !(ctrl.getPSDEUIActionGroup()?? && ctrl.getPSDEUIActionGroup().getPSUIActions()?? || ctrl.getPSDEUIActionGroup2()?? && ctrl.getPSDEUIActionGroup2().getPSUIActions()??)> *ngFor="let item of ${ctrl.name}.$items"</#if> class="ibiz-mdctrl-list-item" (click)="${ctrl.name}.click(item)">
<#if itemlayoutpanel??>
${itemlayoutpanel.code}
<#else>
<ion-thumbnail *ngIf="item.image" slot="start">
<img [src]="item.image">
</ion-thumbnail>
<ion-label>
<h2>{{ item.srfmajortext }}</h2>
<h3>{{ item.subtitle }}</h3>
<p>{{ item.content }}</p>
</ion-label>
<div slot="end" class="ibiz-mdctrl-list-item-end">
<p>{{ item.time }}</p>
</div>
</#if>
</ion-item>
<#if ctrl.getPSDEUIActionGroup2()?? && ctrl.getPSDEUIActionGroup2().getPSUIActions()??>
<#assign uiactions = ctrl.getPSDEUIActionGroup2().getPSUIActions()>
<ion-item-options side="end">
<#list uiactions as uiaction>
<ion-item-option <#if uiaction.getUIActionTag() == "Remove">color="danger"<#else>color="medium"</#if> <#if uiaction.getUIActionTag() == "Remove">(click)="${ctrl.name}.removeItem(item.srfkey)"<#else>(click)="${ctrl.name}.uiAction('${uiaction.getUIActionTag()}', item)"</#if>>${uiaction.getCaption()}</ion-item-option>
</#list>
</ion-item-options>
</#if>
<#if ctrl.getPSDEUIActionGroup()?? && ctrl.getPSDEUIActionGroup().getPSUIActions()?? || ctrl.getPSDEUIActionGroup2()?? && ctrl.getPSDEUIActionGroup2().getPSUIActions()??> </ion-item-sliding></#if>
</ion-list>
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEListControllerCode
</#ibiztemplate>
CTRLTYPE=MOBMDCTRL
\ No newline at end of file
import { IBizFormButton } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
new IBizFormButton({name: '${item.name!''}', caption: '${item.getCaption()}'<#if item.getParamPickupPSAppView()??><#assign view = item.getParamPickupPSAppView()>, pickupview: '${view.getPSAppModule().codeName?lower_case}_${view.codeName?lower_case}'</#if>, visible: true, fieldType: 'BUTTON', form: this, actiontype: '${item.getActionType()}'<#if item.getPSUIAction()??><#assign uiaction=item.getPSUIAction()>, uiaction: { type: '${uiaction.getUIActionType()}', tag: '${uiaction.getUIActionTag()}'<#if (uiaction.getActionTarget()!="")>, actiontarget: '${uiaction.getActionTarget()}'</#if>}</#if><#if item.getPSDEFormItemUpdate()??>, fiupdate: { tag: '${item.getPSDEFormItemUpdate().codeName}' }</#if> })
\ No newline at end of file
import { IBizEditForm } from 'ibizsys';
import { IBizFormField } from 'ibizsys';
<#list formdetails as formdetail>
<#if formdetail.code2?length gt 0>
${formdetail.code2}
</#if>
</#list>
\ No newline at end of file
import { IBizFormDRPanel } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#assign dritem=item.getPSDEDRItem()>
new IBizFormDRPanel({ name: '${item.name}', caption: '${item.getCaption()}', visible: true, refviewtype: '<#if item.getPSAppView()?? && item.getPSAppView().getPSViewType()??>${item.getPSAppView().getPSViewType().getId()}</#if>', type: 'DRUIPART'<#if item.getRefreshItems()??>, refreshitems: '${item.getRefreshItems()}'</#if>, height: ${item.getContentHeight()}, form: this, dritem: { id: '${dritem.id}', embedviewid: '${item.getEmbedViewId()}', parentmode: { srfparenttype: '${dritem.itemType}'<#if ((dritem.itemType=='DER1N') || (dritem.itemType=='SYSDER1N'))>, srfder1nid: '${dritem.getPSDER1NName()}'</#if> }}})
\ No newline at end of file
${editor.code2}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#if editor.code != ''>
${editor.code}
<#else>
new IBizFormField({name: '${item.name!''}', caption: '${item.getCaption()}', visible: true, type: 'FORMITEM', allowEmpty: <#if !(item.isAllowEmpty())>true<#else>false</#if>, noPrivDisplayMode: ${item.getNoPrivDisplayMode()}, form: this})
</#if>
\ No newline at end of file
import { IBizFormPage } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
new IBizFormPage({name: '${item.name}', caption: '${item.getCaption()}', visible: true, type: 'FORMPAGE', form: this, child: [
<#list items as rowitem><#assign rowobj = rowitem.getObj()>'${rowobj.getName()}', </#list>
]<#if item.getPSSysPFPlugin()??>, render: (item) => {
return <>${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}</>;
}</#if>})
\ No newline at end of file
import { IBizFormGroup } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
new IBizFormGroup({name: '${item.name}', caption: '${item.getCaption()}', visible: true, type: 'GROUPPANEL', isShowCaption: ${item.isShowCaption()?c}, titleBarCloseMode: '${item.getTitleBarCloseMode()}'<#if item.getColLG() != -1>, lg: ${item.getColLG()?c}</#if><#if item.getColMD() != -1>, md: ${item.getColMD()?c}</#if><#if item.getColSM() != -1>, sm: ${item.getColSM()?c}</#if><#if item.getColXS() != -1>, xs: ${item.getColXS()?c}</#if>, form: this, child: [
<#list items as rowitem><#assign rowobj = rowitem.getObj()>'${rowobj.getName()}', </#list>
]<#if item.getPSSysPFPlugin()??>, render: (item) => {
return <>${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}</>;
}</#if>})
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
new IBizFormField({name: '${item.name!''}', visible: false, type: 'HIDDENFORMITEM', form: this})
\ No newline at end of file
import { IBizFormRawItem } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
new IBizFormRawItem({name: '${item.name!''}', caption: '${item.getCaption()}', visible: true, type: 'RAWITEM', form: this})
\ No newline at end of file
import { IBizFormTabPage } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
new IBizFormTabPage({name:'${item.name}', caption: '${item.getCaption()}', visible: true, type: 'TABPAGE', form: this})
\ No newline at end of file
import { IBizFormTabPanel } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormTabPanellVC
</#ibiztemplate>
new IBizFormTabPanel({name:'${item.name}', caption: '${item.getCaption()}', visible: true, type: 'TABPANEL', form: this})
\ No newline at end of file
<#if item.getRenderPSSysPFPlugin()??>
${item.getRenderPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
<#else>
表单自定义部件没有定义插件
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormControllerCode
</#ibiztemplate>
/**
* 编辑表单控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizEditForm }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizEditForm {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
<#if ctrl.getPSDEFormPages()??>
<#list ctrl.getPSDEFormPages() as formPage>
this.$activeFormPage = '${formPage.name}';
<#break>
</#list>
</#if>
}
/**
* 注册编辑表单项
*
* @memberof ${srfclassname('${ctrl.name}')}
*/
public regFormItems(): void {
<#list formdetails as formdetail>
<#if formdetail.code?length gt 0>
<#assign formitem = formdetail.getObj()>
this.regFormItem(${formdetail.code});
</#if>
</#list>
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<ion-button [hidden]="!fields.${item.name}?.visible" expand="full" class="ibiz-form-button<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()};</#if><#if item.getHeight() gt 0>height: ${item.getHeight()}px;</#if>' (click)="fields?.${item.name}.onClick()">${item.caption}</ion-button>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<ibiz-form-item [field]="fields?.${item.name}">
<ng-template let-${item.name}>
<#assign dritem = item.getPSDEDRItem()>
<#assign partViewType = item.getPSAppView().getPSViewType()>
<${filename('${item.getPSAppView().codeName}')} [loadMoreMode]="2" <#if partViewType?? && partViewType.getId() == "DEMOBMEDITVIEW9">(saveCompleted)="${item.name}.onMEditSaved($event)" (mEditFormChange)="druipart1.mEditChange()" [saveRefView]="${item.name}.$saveRefView" <#else>[changeCount]="${item.name}.$changeCount" </#if>[parentData]="{ 'srfparentkey': fields.srfkey?.value }" [parentMode]="{srfparenttype: '${dritem.itemType}'<#if ((dritem.itemType=='DER1N') || (dritem.itemType=='SYSDER1N'))>, srfder1nid:'${dritem.getPSDER1NName()}'</#if>}" [viewUsage]="4" [srfReferData]="${item.name}?.$formData" <#if item.getPSDEFormItemUpdate()??>(mdLoaded)="${ctrl.name}.updateFormItems('${item.getPSDEFormItemUpdate().codeName}')"</#if>></${filename('${item.getPSAppView().codeName}')}>
</ng-template>
</ibiz-form-item>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<ibiz-form-item [field]="fields?.${item.name}">
<ng-template let-${item.name}>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
<#else>
<ion-item lines="none" [hidden]="!${item.name}?.visible" class="ibiz-form-item ${item.getLabelPos()?lower_case}<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()};</#if><#if item.getItemHeight() gt 0>height: ${item.getItemHeight()?c};</#if><#if item.getItemWidth() gt 0>width: ${item.getItemWidth()?c};</#if>'>
<#if item.getEditorType() != "MOBMPICKER" && item.getEditorType() != "MOBPICTURELIST" && item.getEditorType() != "MOBMULTIFILEUPLOAD" && item.getEditorType() != "MOBPICTURE">
<#if item.getEditorType() == "MOBTEXTAREA" && item.getLabelPos() == "TOP">
<#else>
<#if item.isShowCaption()>
<label style="width: ${item.getLabelWidth()}px;" class="ibiz-form-item-label ${item.getLabelPos()?lower_case}"<#if item.getLabelPos() == "TOP">position="floating"</#if><#if item.getLabelPos() == "LEFT"> slot="start"<#elseif item.getLabelPos() == "RIGHT"> slot="end"</#if>>
<#if item.isEmptyCaption() == false> <#if item.getPSSysImage()??><#assign image = item.getPSSysImage()><ibiz-icon<#if image.getCssClass()?? && image.getCssClass() != ""> iconName="${image.getCssClass()}"</#if><#if image.getImagePath()?? && image.getImagePath() != ""> iconSrc="${image.getImagePath()}"</#if>></ibiz-icon> </#if>${item.caption}
<span class="stars" *ngIf="${item.name}.allowEmpty">*</span></#if>
</label>
</#if>
</#if>
</#if>
<div class="ibiz-form-item-editor" <#if item.getLabelPos() == "RIGHT"> slot="start"<#else> slot="end"</#if>>
${editor.code}<#if item.isEnableUnitName()>${item.getUnitName()}</#if>
</div>
</ion-item>
</#if>
</ng-template>
</ibiz-form-item>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<div [hidden]="${ctrl.name}.$activeFormPage !== '${item.name}'">
<#list items as rowitem>
${rowitem.code}
</#list>
</div>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
<#else>
<ion-item-group [hidden]="!fields.${item.name}?.visible" class="ibiz-form-group<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" <#if item.getPSSysCss()??>style='${item.getPSSysCss().getRawCssStyle()};'</#if>>
<#if item.isShowCaption()>
<Accordion <#if item.getTitleBarCloseMode() == 1 || item.getTitleBarCloseMode() == 0>[defaultActiveKey]="'0'"</#if> class="ibiz-form-group-accordion">
<AccordionPanel key="0" header="${item.getCaption()}"<#if item.getTitleBarCloseMode() == 0> [disabled]="true"</#if> class="ibiz-form-group-accordion-panel<#if item.getTitleBarCloseMode() == 0> non</#if>">
<#list items as rowitem>
${rowitem.code}
</#list>
</AccordionPanel>
</Accordion>
<#else>
<#list items as rowitem>
${rowitem.code}
</#list>
</#if>
</ion-item-group>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<ion-item class="ibiz-form-item">
${item.getRawContent()}
</ion-item>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormTabPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormViewCode
</#ibiztemplate>
<ibiz-form [fields]="${ctrl.name}?.$items">
<ng-template let-fields>
<#if ctrl.getPSDEFormPages()??>
<#assign pageSize = iteratorlength(ctrl.getPSDEFormPages())>
<#if pageSize gt 1>
<ion-segment (ionChange)="${ctrl.name}.formPageChange($event)" [value]="${ctrl.name}.$activeFormPage">
<#list ctrl.getPSDEFormPages() as formPage>
<ion-segment-button value="${formPage.name}">${formPage.caption}</ion-segment-button>
</#list>
</ion-segment>
</#if>
</#if>
<#list formpages as formpage>
${formpage.code}
</#list>
</ng-template>
</ibiz-form>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormDetailVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormTabPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormViewCode
</#ibiztemplate>
<#list formpages as formpage>
${formpage.code}
</#list>
\ No newline at end of file
CTRLTYPE=FORM
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
import { IBizLayoutPanel } from 'ibizsys';
import { IBizFormField } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelContainerVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelControlVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelFieldVC
</#ibiztemplate>
new IBizFormField({name: '${item.name!''}', caption: '${item.getCaption()}', visible: true, type: 'FORMITEM', allowEmpty: <#if !(item.isAllowEmpty())>true<#else>false</#if>, form: this})
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelViewCode
</#ibiztemplate>
/**
* 视图布局面板
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizLayoutPanel }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizLayoutPanel {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
public regItems(): void {
<#list rootitems as rootitem>
<#if rootitem.code != "">
this.regItem(${rootitem.code});
</#if>
</#list>
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<ion-button class="ibiz-layout-panel-button" color="primary" style='<#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if><#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if>'>${item.getCaption()}</ion-button>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelContainerVC
</#ibiztemplate>
<#assign closeMode = item.getTitleBarCloseMode()><#if closeMode != 0>
<Accordion<#if closeMode == 1> [defaultActiveKey]="'0'"</#if>>
<AccordionPanel<#if closeMode == 1> [key]="'0'"</#if><#if item.isShowCaption()> [header]="'item.title'"</#if>></#if>
<#if item.getLayoutMode() == "TABLE_12COL">
<ion-grid class="ibiz-layout-panel-container-grid">
<ion-row class="ibiz-layout-panel-container-row">
<#list items as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<ion-col class="ibiz-layout-panel-container-col<#if obj.getPSSysCss()??> ${obj.getPSSysCss().getCssName()}</#if>" style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()}${obj.getPSSysCss().getCssStyle()}</#if>'<#if obj.getColSM() != -1> sizeSm="${obj.getColSM()?c}"</#if><#if obj.getColMD() != -1> sizeMd="${obj.getColMD()?c}"</#if><#if obj.getColLG() != -1> sizeLg="${obj.getColLG()?c}"</#if><#if obj.getColXS() != -1> sizeXs="${obj.getColXS()?c}"</#if>>
${rootitem.code}
</ion-col>
</#if>
</#list>
</ion-row>
</ion-grid>
<#elseif item.getLayoutMode() == "FLEX">
<div class="ibiz-layout-panel-container-flex" style="<#if item.getFlexDir() != "">flex-direction: ${item.getFlexDir()};</#if><#if item.getFlexAlign() != "">justify-content: ${item.getFlexAlign()};</#if><#if item.getFlexVAlign() != "">align-items: ${item.getFlexVAlign()};</#if><#if item.getFlexGrow() != -1>flex-grow: ${item.getFlexGrow()?c};</#if>">
<#list items as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<div <#if obj.getPSSysCss()??> class="${obj.getPSSysCss().getCssName()}"</#if> style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getFlexGrow() != -1>flex-grow: ${obj.getFlexGrow()?c};</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()}${obj.getPSSysCss().getCssStyle()}</#if>'>
${rootitem.code}
</div>
</#if>
</#list>
</div>
<#else>
<div>面板${item.getLayoutMode()}布局不支持</div>
</#if><#if closeMode != 0>
</AccordionPanel>
</Accordion></#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelControlVC
</#ibiztemplate>
<#if srfviewctrl('${item.getPSControl().getName()}')??>
${srfviewctrl('${item.getPSControl().getName()}').code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#if srfviewctrl('${item.getName()}')??>
${srfviewctrl('${item.getName()}').code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelFieldVC
</#ibiztemplate>
<#if view.getViewType() == "DEMOBMDVIEW" || view.getViewType() == "DEMOBMDVIEW9">
{{item.${item.codeName}}}
<#else>
<ibiz-form-item *ngIf="${ctrl.name}?.$items?.${item.codeName}" [field]="${ctrl.name}?.$items.${item.codeName}">
<ng-template let-${item.codeName}>
<ion-item [hidden]="${item.codeName}?.visible" class="ibiz-layout-panel-field<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if><#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if><#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()}${item.getPSSysCss().getCssStyle()}</#if>'>
<#if item.isShowCaption()> <label slot="start" <#if item.getLabelPSSysCss()??> class="${item.getLabelPSSysCss().getCssName()}"</#if> style='<#if item.getLabelPSSysCss()??>${item.getLabelPSSysCss().getRawCssStyle()}${item.getLabelPSSysCss().getCssStyle()}</#if>'><span class="stars" *ngIf="${item.codeName}?.allowblank">*</span>${item.getCaption()!''}</label></#if>
${editor.code}
</ion-item>
</ng-template>
</ibiz-form-item>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
${srfjshtml('${item.getHtmlContent()}')}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelViewCode
</#ibiztemplate>
<#if ctrl.getLayoutMode() == "TABLE_12COL">
<ion-grid class="ibiz-layout-panel">
<ion-row>
<#list rootitems as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<ion-col <#if obj.getPSSysCss()??> class="${obj.getPSSysCss().getCssName()}"</#if> style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()};</#if>'<#if obj.getColSM() != -1> sizeSm="${obj.getColSM()?c}"</#if><#if obj.getColMD() != -1> sizeMd="${obj.getColMD()?c}"</#if><#if obj.getColLG() != -1> sizeLg="${obj.getColLG()?c}"</#if><#if obj.getColXS() != -1> sizeXs="${obj.getColXS()?c}"</#if>>
${rootitem.code}
</ion-col>
</#if>
</#list>
</ion-row>
</ion-grid>
<#else>
<div>${ctrl.getLayoutMode()}根布局模式暂只支持[栅格布局(12列)]</div>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<ion-button class="ibiz-layout-panel-button" color="primary" style='<#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if><#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if>'>${item.getCaption()}</ion-button>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelContainerVC
</#ibiztemplate>
<#assign closeMode = item.getTitleBarCloseMode()><#if closeMode != 0>
<Accordion<#if closeMode == 1> [defaultActiveKey]="'0'"</#if>>
<AccordionPanel<#if closeMode == 1> [key]="'0'"</#if><#if item.isShowCaption()> [header]="'item.title'"</#if>></#if>
<#if item.getLayoutMode() == "TABLE_12COL">
<ion-grid class="ibiz-layout-panel-container-grid">
<ion-row class="ibiz-layout-panel-container-row">
<#list items as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<ion-col class="ibiz-layout-panel-container-col<#if obj.getPSSysCss()??> ${obj.getPSSysCss().getCssName()}</#if>" style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()}${obj.getPSSysCss().getCssStyle()}</#if>'<#if obj.getColSM() != -1> sizeSm="${obj.getColSM()?c}"</#if><#if obj.getColMD() != -1> sizeMd="${obj.getColMD()?c}"</#if><#if obj.getColLG() != -1> sizeLg="${obj.getColLG()?c}"</#if><#if obj.getColXS() != -1> sizeXs="${obj.getColXS()?c}"</#if>>
${rootitem.code}
</ion-col>
</#if>
</#list>
</ion-row>
</ion-grid>
<#elseif item.getLayoutMode() == "FLEX">
<div class="ibiz-layout-panel-container-flex" style="<#if item.getFlexDir() != "">flex-direction: ${item.getFlexDir()};</#if><#if item.getFlexAlign() != "">justify-content: ${item.getFlexAlign()};</#if><#if item.getFlexVAlign() != "">align-items: ${item.getFlexVAlign()};</#if><#if item.getFlexGrow() != -1>flex-grow: ${item.getFlexGrow()?c};</#if>">
<#list items as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<div <#if obj.getPSSysCss()??> class="${obj.getPSSysCss().getCssName()}"</#if> style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getFlexGrow() != -1>flex-grow: ${obj.getFlexGrow()?c};</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()}${obj.getPSSysCss().getCssStyle()}</#if>'>
${rootitem.code}
</div>
</#if>
</#list>
</div>
<#else>
<div>面板${item.getLayoutMode()}布局不支持</div>
</#if><#if closeMode != 0>
</AccordionPanel>
</Accordion></#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelControlVC
</#ibiztemplate>
<#if srfviewctrl('${item.getPSControl().getName()}')??>
${srfviewctrl('${item.getPSControl().getName()}').code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#if srfviewctrl('${item.getName()}')??>
${srfviewctrl('${item.getName()}').code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelFieldVC
</#ibiztemplate>
<ibiz-form-item *ngIf="${ctrl.name}?.$items?.${item.codeName}" [field]="${ctrl.name}?.$items.${item.codeName}">
<ng-template let-${item.codeName}>
<ion-item [hidden]="${item.codeName}?.visible" class="ibiz-layout-panel-field<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if><#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if><#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()}${item.getPSSysCss().getCssStyle()}</#if>'>
<#if item.isShowCaption()> <label slot="start" <#if item.getLabelPSSysCss()??> class="${item.getLabelPSSysCss().getCssName()}"</#if> style='<#if item.getLabelPSSysCss()??>${item.getLabelPSSysCss().getRawCssStyle()}${item.getLabelPSSysCss().getCssStyle()}</#if>'><span class="stars" *ngIf="${item.codeName}?.allowblank">*</span>${item.getCaption()!''}</label></#if>
${editor.code}
</ion-item>
</ng-template>
</ibiz-form-item>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
${srfjshtml('${item.getHtmlContent()}')}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelViewCode
</#ibiztemplate>
CTRLTYPE=VIEWLAYOUTPANEL
\ No newline at end of file
import { IBizPickupViewPanel } from 'ibizsys';
\ No newline at end of file
/**
* 选择视图面板部件控制器
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizPickupViewPanel }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizPickupViewPanel {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
}
}
\ No newline at end of file
<#if ctrl.getPSAppDEView()??><${filename(ctrl.getPSAppDEView().getName())} (onOK)="onOK()" (selectionChange)="${ctrl.name}.onSelectedDataChange($event)" [searchValue]="getSearchValue()" [parentData]="getParentData()" [chackAllChange]="${ctrl.name}.$checkAllCount" [oldSelected]="${ctrl.name}.getSelectedData()" [srfReferData]="$srfReferData"></${filename(ctrl.getPSAppDEView().getName())}></#if>
\ No newline at end of file
CTRLTYPE=PICKUPVIEWPANEL
\ No newline at end of file
import { <#if ctrl.getPortletType() == "APPMENU">IBizAppMenu<#else>IBizPortlet</#if> } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4PortletViewCode
</#ibiztemplate>
/**
* 门户部件
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { <#if ctrl.getPortletType() == "APPMENU">IBizAppMenu<#else>IBizPortlet</#if> }
*/
export class ${srfclassname('${ctrl.name}')} extends <#if ctrl.getPortletType() == "APPMENU">IBizAppMenu<#else>IBizPortlet</#if> {
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}<#if ctrl.getPortletType() == "APPMENU">_appmenu</#if>',
...opts
});
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4PortletViewCode
</#ibiztemplate>
<#-- 是否门户菜单 -->
<#if ctrl.getPortletType() == "APPMENU">
<#-- 是否使用插件 -->
<#if ctrl.getAMSysPFPlugin()?? && ctrl.getAMSysPFPlugin().hasCode('CODE')>
${ctrl.getAMSysPFPlugin().getCode('CODE')}
<#-- 门户菜单样式是否配置 -->
<#elseif ctrl.getAMListStyle()??>
<#-- 菜单样式(图标视图) -->
<#if ctrl.getAMListStyle() == "ICONVIEW">
<ibiz-palace-menu [items]="${ctrl.name}.$items" (menuClick)="menuClick($event)" (openPickup)="${ctrl.name}.openAppFuncPickupView($event)" <#if ctrl.getPSAppFuncPickupView()??><#assign appFuncPickupView = ctrl.getPSAppFuncPickupView()> [isCustom]="true" appFuncPickupView="${appFuncPickupView.getPSAppModule().codeName?lower_case}_${appFuncPickupView.codeName?lower_case}"</#if>></ibiz-palace-menu>
<#elseif ctrl.getAMListStyle() == "LISTVIEW">
<ibiz-list-menu [items]="${ctrl.name}.$items" (menuClick)="menuClick($event)"(openPickup)="${ctrl.name}.openAppFuncPickupView($event)" <#if ctrl.getPSAppFuncPickupView()??><#assign appFuncPickupView = ctrl.getPSAppFuncPickupView()> [isCustom]="true" appFuncPickupView="${appFuncPickupView.getPSAppModule().codeName?lower_case}_${appFuncPickupView.codeName?lower_case}"</#if>></ibiz-list-menu>
<#elseif ctrl.getAMListStyle() == "SWIPERVIEW">
<ibiz-slide-menu [items]="${ctrl.name}.$items" (menuClick)="menuClick($event)" (openPickup)="${ctrl.name}.openAppFuncPickupView($event)" <#if ctrl.getPSAppFuncPickupView()??><#assign appFuncPickupView = ctrl.getPSAppFuncPickupView()> [isCustom]="true" appFuncPickupView="${appFuncPickupView.getPSAppModule().codeName?lower_case}_${appFuncPickupView.codeName?lower_case}"</#if>></ibiz-slide-menu>
<#else>
<ibiz-app-menu [items]="${ctrl.name}.$items" (menuClick)="menuClick($event)" title="${ctrl.getTitle()}"></ibiz-app-menu>
</#if>
<#else>
<ibiz-app-menu [items]="${ctrl.name}.$items" (menuClick)="menuClick($event)" title="${ctrl.getTitle()}"></ibiz-app-menu>
</#if>
<#-- 是否自定义门户部件 -->
<#elseif ctrl.getPortletType() == "CUSTOM">
<#if ctrl.getPSSysPFPlugin()??>
${ctrl.getPSSysPFPlugin().getCode("CODE", pf.getId(), pfstyle.getId(), view, ctrl, item)}
</#if>
<#elseif ctrl.getPortletType() == "LIST">
<#if ctrls??>
<#list ctrls as ctrl>
${ctrl.code}
</#list>
</#if>
<#else>
<ion-card class="ibiz-portal-card">
<#if ctrl.isShowTitleBar()>
<ion-card-header class="ibiz-portal-card-header">
<ion-card-title class="ibiz-portal-card-title">${ctrl.getTitle()}</ion-card-title>
</ion-card-header>
</#if>
<ion-card-content class="ibiz-portal-card-content" <#if ctrl.getHeight() gt 0>style="height: ${ctrl.getHeight()}px;"</#if>>
<#if ctrl.getPortletType() == 'VIEW'>
<#assign itemView = ctrl.getPortletPSAppView()>
<${filename('${itemView.codeName}')} [viewUsage]="4" [loadMoreMode]="2" #${itemView.name}></${filename('${itemView.codeName}')}>
<#else>
<#if ctrls??>
<#list ctrls as ctrl>
${ctrl.code}
</#list>
</#if>
</#if>
</ion-card-content>
</ion-card>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4PortletViewCode
</#ibiztemplate>
CTRLTYPE=PORTLET
\ No newline at end of file
import { IBizPanelButton } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
public ${item.name} = new IBizPanelButton({ name: '${item.name}' });
\ No newline at end of file
import { IBizPanel } from 'ibizsys';
<#list rootitems as rootitem>
<#if rootitem.code2 != "">
${rootitem.code2}
</#if>
</#list>
\ No newline at end of file
import { IBizPanelContainer } from 'ibizsys';
<#list items as item>
<#if item.code2 != "" >
${item.code2}
</#if>
</#list>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelContainerVC
</#ibiztemplate>
public ${item.name} = new IBizPanelContainer({ name: '${item.name}' });
<#list items as item>
<#if item.code != "" >
${item.code}
</#if>
</#list>
\ No newline at end of file
import { IBizPanelControl } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelControlVC
</#ibiztemplate>
public ${item.name} = new IBizPanelControl({ name: '${item.name}' });
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
import { IBizPanelField } from 'ibizsys';
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelFieldVC
</#ibiztemplate>
public ${item.name} = new IBizPanelField({ name: '${item.name}', form: this });
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#assign logic=item>
<#if logic.getLogicType()=="MODELCHANGE">
if (data && Object.is(data.name, '${logic.getEventPSPanelModel().getCodeName()}')) {
<#comment><!--start:逻辑参数--></#comment>
<#if logic.getPSPanelLogicParams()??>
<#list logic.getPSPanelLogicParams() as param>
<#if param.getType()=="TEMP">
const ${param.getCodeName()} = <#if param.getDataType()=="OBJECT">{}<#elseif param.getDataType()?index_of("ARRAY") != -1>[]<#else>""</#if>;
<#elseif param.getType()=="PANELMODEL" && param.getPSPanelModel().getType()=="CTRLMODEL">
const ${param.getPSPanelModel().getCodeName()} = this.model.${param.getPSPanelModel().getCodeName()};
</#if>
</#list>
</#if>
<#comment><!--end:逻辑参数--></#comment>
<#comment><!--start:处理逻辑--></#comment>
<#if logic.getPSPanelLogicNodes()??>
<#list logic.getPSPanelLogicNodes() as node>
const ${node.getCodeName()} = () => {
${srflogicnode(node)}
<#list logic.getPSPanelLogicLinks() as link>
<#if link.getSrcPSPanelLogicNode() == node>
<#assign dstnode=link.getDstPSPanelLogicNode()>
if (${srfpanellogic(link.getPSPanelLogicLinkGroupCond())}) {
${dstnode.getCodeName()}();
}
</#if>
</#list>
};
</#list>
Begin();
</#if>
<#comment><!--end:处理逻辑--></#comment>
}
</#if>
\ No newline at end of file
<#assign logic=item>
<#if logic.getLogicType()=="CTRLEVENT">
this.${logic.getEventPSPanelItem().getCodeName()}.on('${logic.getEventName()}').subscribe((args: any) => {
<#comment><!--start:逻辑参数--></#comment>
<#if logic.getPSPanelLogicParams()??>
<#list logic.getPSPanelLogicParams() as param>
<#if param.getType()=="TEMP">
const ${param.getCodeName()} = <#if param.getDataType()=="OBJECT">{}<#elseif param.getDataType()?index_of("ARRAY") != -1>[]<#else>""</#if>;
<#elseif param.getType()=="PANELMODEL" && param.getPSPanelModel().getType()=="CTRLMODEL">
const ${param.getPSPanelModel().getCodeName()} = this.model.${param.getPSPanelModel().getCodeName()};
</#if>
</#list>
</#if>
<#comment><!--end:逻辑参数--></#comment>
<#comment><!--start:处理逻辑--></#comment>
<#if logic.getPSPanelLogicNodes()??>
<#list logic.getPSPanelLogicNodes() as node>
const ${node.getCodeName()} = () => {
${srflogicnode(node)}
<#list logic.getPSPanelLogicLinks() as link>
<#if link.getSrcPSPanelLogicNode() == node>
<#assign dstnode=link.getDstPSPanelLogicNode()>
if (${srfpanellogic(link.getPSPanelLogicLinkGroupCond())}) {
${dstnode.getCodeName()}();
}
</#if>
</#list>
};
</#list>
Begin();
</#if>
<#comment><!--end:处理逻辑--></#comment>
});
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelViewCode
</#ibiztemplate>
/**
* 视图布局面板
*
* @export
* @class ${srfclassname('${ctrl.name}')}
* @extends { IBizPanel }
*/
export class ${srfclassname('${ctrl.name}')} extends IBizPanel {
<#list rootitems as rootitem>
<#if rootitem.code != "">
${rootitem.code}
</#if>
</#list>
/**
* Creates an instance of ${srfclassname('${ctrl.name}')}.
* @param {*} opts
* @memberof ${srfclassname('${ctrl.name}')}
*/
constructor(opts: any) {
super({
name: '${ctrl.name}',
...opts
});
this.panelInit();
}
public regPanelModels(): void {
<#list ctrl.getPSPanelModels() as model>
<#if model.getType() != "VIEWMODEL">
this.regPanelModel({ codeName: '${model.getCodeName()}', dataType: '${model.getDataType()}'<#if model.getPSPanelItem()??>, panelItemName: '${model.getPSPanelItem().getCodeName()}'</#if>, type: '${model.getType()}', isContextModel: ${model.isContextModel()?c} });
</#if>
</#list>
}
public regPanelLogics(): void {
<#if logics??>
<#list logics as logic>
${logic.code}
</#list>
</#if>
}
public modelChange(data: { data: any, name: any, oldValue: any, value: any }): void {
<#if logics??>
<#list logics as logic>
${logic.code2}
</#list>
</#if>
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<ion-button (click)="${ctrl.name}.${item.name}.onButtonClick()" class="ibiz-layout-panel-button" color="primary" style='<#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if><#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if>'>${item.getCaption()}</ion-button>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelContainerVC
</#ibiztemplate>
<#assign closeMode = item.getTitleBarCloseMode()><#if closeMode != 0>
<Accordion<#if closeMode == 1> [defaultActiveKey]="'0'"</#if>>
<AccordionPanel<#if closeMode == 1> [key]="'0'"</#if><#if item.isShowCaption()> [header]="'item.title'"</#if>></#if>
<#if item.getLayoutMode() == "TABLE_12COL">
<ion-grid class="ibiz-layout-panel-container-grid">
<ion-row class="ibiz-layout-panel-container-row">
<#list items as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<ion-col class="ibiz-layout-panel-container-col<#if obj.getPSSysCss()??> ${obj.getPSSysCss().getCssName()}</#if>" style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()}${obj.getPSSysCss().getCssStyle()}</#if>'<#if obj.getColSM() != -1> sizeSm="${obj.getColSM()?c}"</#if><#if obj.getColMD() != -1> sizeMd="${obj.getColMD()?c}"</#if><#if obj.getColLG() != -1> sizeLg="${obj.getColLG()?c}"</#if><#if obj.getColXS() != -1> sizeXs="${obj.getColXS()?c}"</#if>>
${rootitem.code}
</ion-col>
</#if>
</#list>
</ion-row>
</ion-grid>
<#elseif item.getLayoutMode() == "FLEX">
<div class="ibiz-layout-panel-container-flex" style="<#if item.getFlexDir() != "">flex-direction: ${item.getFlexDir()};</#if><#if item.getFlexAlign() != "">justify-content: ${item.getFlexAlign()};</#if><#if item.getFlexVAlign() != "">align-items: ${item.getFlexVAlign()};</#if><#if item.getFlexGrow() != -1>flex-grow: ${item.getFlexGrow()?c};</#if>">
<#list items as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<div <#if obj.getPSSysCss()??> class="${obj.getPSSysCss().getCssName()}"</#if> style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getFlexGrow() != -1>flex-grow: ${obj.getFlexGrow()?c};</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()}${obj.getPSSysCss().getCssStyle()}</#if>'>
${rootitem.code}
</div>
</#if>
</#list>
</div>
<#else>
<div>面板${item.getLayoutMode()}布局不支持</div>
</#if><#if closeMode != 0>
</AccordionPanel>
</Accordion></#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelControlVC
</#ibiztemplate>
<#if srfviewctrl('${item.getPSControl().getName()}')??>
${srfviewctrl('${item.getPSControl().getName()}').code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#if srfviewctrl('${item.getName()}')??>
${srfviewctrl('${item.getName()}').code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelFieldVC
</#ibiztemplate>
<ibiz-form-item [field]="${ctrl.name}?.${item.codeName}">
<ng-template let-${item.codeName}>
<ion-item [hidden]="${item.codeName}?.visible" class="ibiz-layout-panel-field<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if><#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if><#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()}${item.getPSSysCss().getCssStyle()}</#if>'>
<#if item.isShowCaption()> <label slot="start" <#if item.getLabelPSSysCss()??> class="${item.getLabelPSSysCss().getCssName()}"</#if> style='<#if item.getLabelPSSysCss()??>${item.getLabelPSSysCss().getRawCssStyle()}${item.getLabelPSSysCss().getCssStyle()}</#if>'><span class="stars" *ngIf="${item.codeName}?.allowblank">*</span>${item.getCaption()!''}</label></#if>
${editor.code}
</ion-item>
</ng-template>
</ibiz-form-item>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
${srfjshtml('${item.getHtmlContent()}')}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelViewCode
</#ibiztemplate>
<#if ctrl.getLayoutMode() == "TABLE_12COL">
<ion-grid class="ibiz-layout-panel">
<ion-row>
<#list rootitems as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<ion-col <#if obj.getPSSysCss()??> class="${obj.getPSSysCss().getCssName()}"</#if> style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()};</#if>'<#if obj.getColSM() != -1> sizeSm="${obj.getColSM()?c}"</#if><#if obj.getColMD() != -1> sizeMd="${obj.getColMD()?c}"</#if><#if obj.getColLG() != -1> sizeLg="${obj.getColLG()?c}"</#if><#if obj.getColXS() != -1> sizeXs="${obj.getColXS()?c}"</#if>>
${rootitem.code}
</ion-col>
</#if>
</#list>
</ion-row>
</ion-grid>
<#else>
<div>${ctrl.getLayoutMode()}布局暂不支持</div>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<ion-button (click)="${ctrl.name}.${item.name}.onButtonClick()" class="ibiz-layout-panel-button" color="primary" style='<#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if><#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if>'>${item.getCaption()}</ion-button>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelContainerVC
</#ibiztemplate>
<#assign closeMode = item.getTitleBarCloseMode()><#if closeMode != 0>
<Accordion<#if closeMode == 1> [defaultActiveKey]="'0'"</#if>>
<AccordionPanel<#if closeMode == 1> [key]="'0'"</#if><#if item.isShowCaption()> [header]="'item.title'"</#if>></#if>
<#if item.getLayoutMode() == "TABLE_12COL">
<ion-grid class="ibiz-layout-panel-container-grid">
<ion-row class="ibiz-layout-panel-container-row">
<#list items as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<ion-col class="ibiz-layout-panel-container-col<#if obj.getPSSysCss()??> ${obj.getPSSysCss().getCssName()}</#if>" style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()}${obj.getPSSysCss().getCssStyle()}</#if>'<#if obj.getColSM() != -1> sizeSm="${obj.getColSM()?c}"</#if><#if obj.getColMD() != -1> sizeMd="${obj.getColMD()?c}"</#if><#if obj.getColLG() != -1> sizeLg="${obj.getColLG()?c}"</#if><#if obj.getColXS() != -1> sizeXs="${obj.getColXS()?c}"</#if>>
${rootitem.code}
</ion-col>
</#if>
</#list>
</ion-row>
</ion-grid>
<#elseif item.getLayoutMode() == "FLEX">
<div class="ibiz-layout-panel-container-flex" style="<#if item.getFlexDir() != "">flex-direction: ${item.getFlexDir()};</#if><#if item.getFlexAlign() != "">justify-content: ${item.getFlexAlign()};</#if><#if item.getFlexVAlign() != "">align-items: ${item.getFlexVAlign()};</#if><#if item.getFlexGrow() != -1>flex-grow: ${item.getFlexGrow()?c};</#if>">
<#list items as rootitem>
<#if rootitem.code != "">
<#assign obj = rootitem.getObj()>
<div <#if obj.getPSSysCss()??> class="${obj.getPSSysCss().getCssName()}"</#if> style='<#if obj.getWidth() gt 0>width: ${obj.getWidth()?c}px;</#if><#if obj.getFlexGrow() != -1>flex-grow: ${obj.getFlexGrow()?c};</#if><#if obj.getPSSysCss()??>${obj.getPSSysCss().getRawCssStyle()}${obj.getPSSysCss().getCssStyle()}</#if>'>
${rootitem.code}
</div>
</#if>
</#list>
</div>
<#else>
<div>面板${item.getLayoutMode()}布局不支持</div>
</#if><#if closeMode != 0>
</AccordionPanel>
</Accordion></#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelControlVC
</#ibiztemplate>
<#if srfviewctrl('${item.getPSControl().getName()}')??>
${srfviewctrl('${item.getPSControl().getName()}').code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#if srfviewctrl('${item.getName()}')??>
${srfviewctrl('${item.getName()}').code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelFieldVC
</#ibiztemplate>
<ibiz-form-item [field]="${ctrl.name}?.${item.codeName}">
<ng-template let-${item.codeName}>
<ion-item [hidden]="${item.codeName}?.visible" class="ibiz-layout-panel-field<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" style='<#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if><#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if><#if item.getPSSysCss()??>${item.getPSSysCss().getRawCssStyle()}${item.getPSSysCss().getCssStyle()}</#if>'>
<#if item.isShowCaption()> <label slot="start" <#if item.getLabelPSSysCss()??> class="${item.getLabelPSSysCss().getCssName()}"</#if> style='<#if item.getLabelPSSysCss()??>${item.getLabelPSSysCss().getRawCssStyle()}${item.getLabelPSSysCss().getCssStyle()}</#if>'><span class="stars" *ngIf="${item.codeName}?.allowblank">*</span>${item.getCaption()!''}</label></#if>
${editor.code}
</ion-item>
</ng-template>
</ibiz-form-item>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4DEFormGroupPanellVC
</#ibiztemplate>
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
${srfjshtml('${item.getHtmlContent()}')}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelItemVC
</#ibiztemplate>
<#if item.getPSSysPFPlugin()??>
${item.getPSSysPFPlugin().getCode("CODE",pf.getId(),pfstyle.getId(),view,ctrl,item)}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4SysPanelViewCode
</#ibiztemplate>
CTRLTYPE=PANEL
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ion-label class="ibiz-form-label">{{${item.name}.value}}</ion-label>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
EDITORTYPE=SPAN
\ No newline at end of file
<#ibiztemplate>
CONTAINER=PANELFIELD
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=PANELFIELD
</#ibiztemplate>
<ion-label class="ibiz-form-label">{{${item.name}.value}}</ion-label>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=PANELFIELD
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-select [disabled]="${item.name}.disabled" [(value)]="${item.name}.value" [items]="${item.name}.config"<#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if>></ibiz-select>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-multiple-select [disabled]="${item.name}.disabled"<#if item.getCodeList()??><#if item.getCodeList().getOrMode() != ""> orMode="${item.getCodeList().getOrMode()?lower_case}"</#if><#if item.getCodeList().getValueSeparator() != ""> valueSeparator="${item.getCodeList().getValueSeparator()}"</#if><#if item.getCodeList().getTextSeparator() != ""> textSeparator="${item.getCodeList().getTextSeparator()}"</#if></#if> [(ngModel)]="${item.name}.value" [items]="${item.name}.config"></ibiz-multiple-select>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<div>移动端二维码阅读器(暂未支持)</div>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
EDITORTYPE=MOB2DBARCODEREADER
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-radio style="width: 100%;" [disabled]="${item.name}.disabled" [(value)]="${item.name}.value" [config]="${item.name}.config"></ibiz-radio>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-image-upload labelText="${item.getCaption()}" style="width: 100%" [disabled]="${item.name}.disabled" [(value)]="${item.name}.value" [params]="{ filecount: 1<#if item.getEditorParam('filesize','') != ''>, filesize: ${item.getEditorParam('filesize','')}</#if> }" [multiple]="false"></ibiz-image-upload>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-image-upload<#if item.isShowCaption()> labelText="${item.getCaption()}"</#if> [allowEmpty]="${item.name}.allowEmpty" style="width: 100%" [disabled]="${item.name}.disabled" [(value)]="${item.name}.value" [params]="{ <#if item.getEditorParam('filecount','') != ''>filecount: ${item.getEditorParam('filecount','')}</#if><#if item.getEditorParam('filesize','') != ''>, filesize: ${item.getEditorParam('filesize','')}</#if> }" [multiple]="true"></ibiz-image-upload>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#if item.getRefPickupPSAppView()??><#assign pickupview = item.getRefPickupPSAppView()></#if>
<ibiz-mpicker<#if item.isShowCaption()> labelText="${item.getCaption()}"</#if> [allowEmpty]="${item.name}.allowEmpty" [(ngModel)]="${item.name}.value" [form]="${ctrl.name}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> [disabled]="${item.name}.disabled" <#if pickupview??>[component]="getModalView('${pickupview.getPSAppModule().codeName?lower_case}_${pickupview.codeName?lower_case}')"</#if> style="width: 100%;"></ibiz-mpicker>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-textarea<#if item.isShowCaption()><#if item.getPSSysImage()??><#assign image = item.getPSSysImage()><#if image.getCssClass()?? && image.getCssClass() != ""> iconName="${image.getCssClass()}"</#if><#if image.getImagePath()?? && image.getImagePath() != ""> iconSrc="${image.getImagePath()}"</#if></#if> labelText="${item.getCaption()}"</#if> [allowEmpty]="${item.name}.allowEmpty" class="ibiz-form-item-textarea" [(value)]="${item.name}.value" [disabled]="${item.name}.disabled" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> position="${item.getLabelPos()}"<#if item.getItemHeight() gt 0> height="${item.getItemHeight()}px"</#if>></ibiz-textarea>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ion-input class="ibiz-form-item-input" type="password" [(ngModel)]="${item.name}.value" [disabled]="${item.name}.disabled" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if>></ion-input>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
EDITORTYPE=MOBPASSWORD
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-toggle [disabled]="${item.name}.disabled" [(ngModel)]="${item.name}.value"></ibiz-toggle>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#if item.getRefPickupPSAppView()??><#assign pickupview = item.getRefPickupPSAppView()></#if>
<ibiz-picker [(ngModel)]="${item.name}.value" [form]="${ctrl.name}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> [disabled]="${item.name}.disabled" <#if item.getValueItemName()?? && item.getValueItemName() != "">[valueItem]="fields.${item.getValueItemName()}"</#if> <#if pickupview??>[component]="getModalView('${pickupview.getPSAppModule().codeName?lower_case}_${pickupview.codeName?lower_case}')"</#if> style="width: 100%;"></ibiz-picker>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-file-upload style="width: 100%" [disabled]="${item.name}.disabled" [(value)]="${item.name}.value" [params]="{ filecount: 1<#if item.getEditorParam('filesize','') != ''>, filesize: ${item.getEditorParam('filesize','')}</#if> }" [multiple]="false"></ibiz-file-upload>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
EDITORTYPE=MOBSINGLEFILEUPLOAD
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-file-upload<#if item.isShowCaption()> labelText="${item.getCaption()}"</#if> [allowEmpty]="${item.name}.allowEmpty" style="width: 100%" [disabled]="${item.name}.disabled" [(value)]="${item.name}.value" [params]="{ <#if item.getEditorParam('filecount','') != ''>filecount: ${item.getEditorParam('filecount','')}</#if><#if item.getEditorParam('filesize','') != ''>, filesize: ${item.getEditorParam('filesize','')}</#if> }" [multiple]="true"></ibiz-file-upload>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ion-input class="ibiz-form-item-input" [(ngModel)]="${item.name}.value" [disabled]="${item.name}.disabled" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if>></ion-input>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=PANELFIELD
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=PANELFIELD
</#ibiztemplate>
<ion-input class="ibiz-form-item-input" [(ngModel)]="${item.name}.value" [disabled]="${item.name}.disabled" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if>></ion-input>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=PANELFIELD
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-datetime class="ibiz-form-item-datetime" [disabled]="${item.name}.disabled" datefmt="${item.getEditorParam("TIMEFMT","")}" doneText="OK" [(ngModel)]="${item.name}.value"></ibiz-datetime>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<div>移动端条码阅读器(暂未支持)</div>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
EDITORTYPE=MOBBARCODEREADER
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<ibiz-stepper class="ibiz-form-item-stepper" [(value)]="${item.name}.value" [disabled]="${item.name}.disabled" style="width: 100%;"></ibiz-stepper>
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
移动端滑动输入条 暂未支持
\ No newline at end of file
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
<#ibiztemplate>
CONTAINER=FORMITEM
</#ibiztemplate>
import { ViewChild } from '@angular/core';
import { ${viewContorllerName}, IBizViewOptions, IBizCodeList, IBizUtil, IBizUICounter } from 'ibizsys';
<#if view.getAllPSControls()?size gt 0><#if view.getAllPSControls()??>import { <#list view.getAllPSControls() as ctrl><#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>${srfclassname('${ctrl.name}')}, </#if></#list> } from './${filename('${view.codeName}')}.control';</#if></#if>
<#if refviews?? && refviews?size gt 0>
<#list refviews as view>
<#if view.isPickupView() || view.testViewUsage(2)>
import { ${srfclassname('${view.codeName}')} } from '@pages/${filename('${view.getPSAppModule().codeName}')}/${filename('${view.codeName}')}/${filename('${view.codeName}')}';
</#if>
</#list>
</#if>
export class ${srfclassname('${view.codeName}')}Base extends ${viewContorllerName} {
<#if view.getAllPSControls()?size gt 0>
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
public ${ctrl.name}: ${srfclassname('${ctrl.name}')};
</#if>
</#list>
</#if>
</#if>
<#if view.hasPSControl('drtab')>
<#assign obj = view.getPSControl('drtab')>
<#list obj.getPSDEDRCtrlItems() as drctrlitem>
<#if drctrlitem.getPSAppView()??>
@ViewChild('${drctrlitem.name}')
public ${drctrlitem.name};
</#if>
</#list>
</#if>
/**
* Creates an instance of ${srfclassname('${view.codeName}')}Base.
* @param {IBizViewOptions} opts
* @memberof ${srfclassname('${view.codeName}')}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
<#if view.getAllPSControls()?size gt 0>
<#if view.getAllPSControls()??>
public regControls(): void {
<#list view.getAllPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
this.${ctrl.name} = new ${srfclassname('${ctrl.name}')}({ url: this.getBackendUrl(), viewController: this });
this.regControl('${ctrl.name}', this.${ctrl.name});
</#if>
</#list>
this. regTabs();
}
</#if>
</#if>
<#if view.hasPSControl('drtab')>
<#assign obj = view.getPSControl('drtab')>
public regTabs(): void {
const drtab = this.getDRTab();
if (drtab) {
drtab.regTab('form', this.getForm());
<#list obj.getPSDEDRCtrlItems() as drctrlitem>
<#if drctrlitem.getPSAppView()??>
drtab.regTab('${drctrlitem.name}', this.${drctrlitem.name});
</#if>
</#list>
}
}
<#assign dataRelation = obj.getPSDEDataRelation()>
<#if dataRelation.isHideEditItem()>
public isHideEditForm(): boolean {
return true;
}
</#if>
</#if>
<#ibizinclude>EDIT_VIEW_ACTION_CONTROLLER_BASE.ftl</#ibizinclude>
<#ibizinclude>VIEW_ACTION.ftl</#ibizinclude>
<#ibizinclude>VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibizinclude>VIEW_EDIT_HTML_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<#if view.isEnablePullDownRefresh()>
<ion-refresher slot="fixed" (ionRefresh)="pullRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
</#if>
<#if drtab??>${drtab.code}</#if>
</ion-content>
<ng-template #formContent>
<#if form??>
${form.code}
</#if>
</ng-template>
\ No newline at end of file
<#if view.getPSDataEntity()??>
<#assign de=view.getPSDataEntity()>
<#if view.hasPSControl('form')>
<#assign form = view.getPSControl('form')>
<#assign isUpdate = false>
<#if form.getPSDEFormItems()??><#list form.getPSDEFormItems() as formitem><#if formitem.getPSDEFormItemUpdate()??><#assign isUpdate = true></#if></#list></#if>
<#if ((form_fdlogics?size) gt 0) || isUpdate>
/**
* 表单项值变化事件
*
* @param {string} fieldname
* @param {*} value
* @param {*} [field={}]
* @memberof ${view.codeName}Base
*/
public onFormFieldChanged(fieldname: string, field: any, value: string): void {
const form = this.getForm();
<#list form_fdlogics as fdlogic>
${fdlogic}
</#list>
<#if form.getPSDEFormItems()??>
<#list form.getPSDEFormItems() as formitem>
<#if formitem.getPSDEFormItemUpdate()??>
if(Object.is(fieldname, '${formitem.name}')) {
form.updateFormItems('${formitem.getPSDEFormItemUpdate().codeName}');
}
</#if>
</#list>
</#if>
}
</#if>
<#if (form_vrlogics?size) gt 0>
/**
* 表单项值检测
*
* @param {string} fieldname
* @param {string} value
* @memberof ${view.codeName}Base
*/
public onFormFieldValueCheck(name: string, value: string): void {
const form = this.getForm();
<#list form_vrlogics as vrlogic>
${vrlogic}
</#list>
}
</#if>
</#if>
</#if>
<#if !view.isEnableNewData()>
public isEnableNewData(): boolean {
return false;
}
</#if>
<#if !view.isEnableEditData()>
public isEnableEditData(): boolean {
return false;
}
</#if>
<#if !view.isEnableRemoveData()>
public isEnableRemoveData(): boolean {
return false;
}
</#if>
<#if (view.isEnablePrint())>
public getPrintDataView(arg: any = {}): any {
<#if view.getPSDEPrint()??>
if(true){
arg.srfprintid = '${view.getPSDEPrint().id}';
const view:any = {viewparam:arg};
return view;
}
<#else>
return undefined;
</#if>
}
</#if>
\ No newline at end of file
<#ibizinclude>VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>EDIT_VIEW_ACTION_CONTROLLER_BASE.ftl</#ibizinclude>
<#ibizinclude>VIEW_ACTION.ftl</#ibizinclude>
<#ibizinclude>VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#ibizinclude>VIEW_EDIT_HTML_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<#if view.isEnablePullDownRefresh()>
<ion-refresher slot="fixed" (ionRefresh)="pullRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
</#if>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<#if form??>
${form.code}
</#if>
</ng-template>
\ No newline at end of file
<#if ((view.getPSDataEntity()??) && (view.hasPSControl('searchform'))) >
<#assign de=view.getPSDataEntity()>
<#assign form=view.getPSControl('searchform')>
<#assign isUpdate = false>
<#if form.getPSDEFormItems()??><#list form.getPSDEFormItems() as formitem><#if formitem.getPSDEFormItemUpdate()??><#assign isUpdate = true></#if></#list></#if>
<#if ((searchform_fdlogics?size) gt 0) || isUpdate>
/**
* 搜索表单属性值发生变化
*
* @param {string} fieldname
* @param {*} field
* @param {*} value
* @memberof ${view.codeName}Base
*/
public onSearchFormFieldChanged(fieldname: string, field: any, value: any): void {
const form = this.getSearchForm();
<#list searchform_fdlogics as fdlogic>
${fdlogic}
</#list>
<#if form.getPSDEFormItems()??>
<#list form.getPSDEFormItems() as formitem>
<#if formitem.getPSDEFormItemUpdate()??>
if (Object.is(fieldname, '${formitem.name}')) {
form.updateFormItems({srfufimode:'${formitem.getPSDEFormItemUpdate().codeName}'});
}
</#if>
</#list>
</#if>
}
</#if>
</#if>
/**
* 获取新建视图
*
* @param {any} arg
* @returns {*}
* @memberof ${view.codeName}Base
*/
public getNewDataView(params: any = {}): any {
let newmode = params.srfnewmode;
if (!newmode) {
newmode = '';
}
<#list view.getAppViewRefModes() as viewref>
<#if (viewref?index_of("NEWDATA:")==0)>
<#assign newdataview=view.getRefPSAppView(viewref,true) >
<#assign newdataviewref=view.getPSAppViewRef(viewref,true) >
if (Object.is(newmode, '${viewref?substring(8)}')){
return { openMode: '${newdataview.getOpenMode(newdataviewref)}', className: '${newdataview.codeName}', viewUrl: '${newdataview.getPSAppModule().codeName?lower_case}_${newdataview.codeName?lower_case}', viewParam: params };
}
</#if>
</#list>
<#if view.getRefPSAppView("NEWDATA",true)??>
<#assign newdataview=view.getRefPSAppView("NEWDATA",true) >
<#assign newdataviewref=view.getPSAppViewRef("NEWDATA",true) >
return { openMode: '${newdataview.getOpenMode(newdataviewref)}', className: '${newdataview.codeName}', viewUrl: '${newdataview.getPSAppModule().codeName?lower_case}_${newdataview.codeName?lower_case}', viewParam: params };
</#if>
}
/**
* 获取编辑视图
*
* @param {any} arg
* @returns {*}
* @memberof ${view.codeName}Base
*/
public getEditDataView(params: any = {}): any {
const list = [params.srfeditmode2, params.srfeditmode];
for (let i = 0; i < 2; i++) {
const editmode = list[i];
if (!editmode) {
continue;
}
<#list view.getAppViewRefModes() as viewref>
<#if (viewref?index_of("EDITDATA:")==0)>
<#if view.getRefPSAppView(viewref,true)??>
<#assign editdataview=view.getRefPSAppView(viewref,true) >
<#assign editdataviewref=view.getPSAppViewRef(viewref,true) >
if (Object.is(editmode, '${viewref?substring(9)}')) {
return { openMode: '${editdataview.getOpenMode(editdataviewref)}',<#if editdataview.isRedirectView()> redirect: true, redirectUrl: '/${app.getAppFolder()}/${editdataview.getPSAppModule().codeName}/${editdataview.codeName}.do',</#if><#if !(editdataview.isRedirectView())> className: '${editdataview.codeName}', viewUrl: '${editdataview.getPSAppModule().codeName?lower_case}_${editdataview.codeName?lower_case}',</#if> viewParam: params };
}
</#if>
</#if>
</#list>
}
<#if view.getRefPSAppView("EDITDATA",true)??>
<#assign editdataview=view.getRefPSAppView("EDITDATA",true) >
<#assign editdataviewref=view.getPSAppViewRef("EDITDATA",true) >
if (true) {
params.srfeditmode = undefined;
return { openMode: '${editdataview.getOpenMode(editdataviewref)}',<#if editdataview.isRedirectView()> redirect: true, redirectUrl: '/${app.getAppFolder()}/${editdataview.getPSAppModule().codeName}/${editdataview.codeName}.do',</#if><#if !(editdataview.isRedirectView())> className: '${editdataview.codeName}', viewUrl: '${editdataview.getPSAppModule().codeName?lower_case}_${editdataview.codeName?lower_case}',</#if> viewParam: params };
}
</#if>
}
<#-- 视图获取新建向导视图 -->
<#if view.getRefPSAppView("NEWDATAWIZARD",true)??>
<#assign newdatawizardview=view.getRefPSAppView("NEWDATAWIZARD",true) >
<#assign newdatawizardviewref=view.getPSAppViewRef("NEWDATAWIZARD",true) >
/**
* 获取新建向导视图
*
* @param {any} arg
* @returns {*}
* @memberof ${view.codeName}Base
*/
public getNewDataWizardView(params: any = {}): any {
return { modal:true, className:'${newdatawizardview.codeName}', viewUrl: '${newdatawizardview.getPSAppModule().codeName?lower_case}_${newdatawizardview.codeName?lower_case}', viewParam:params };
}
</#if>
<#-- 视图支持批量添加 -->
<#if (view.isEnableBatchAdd())>
/**
* 支持批量添加
*
* @returns {boolean}
* @memberof ${view.codeName}Base
*/
public isEnableBatchAdd(): boolean {
return true;
}
/**
* 获取多选视图
*
* @param {*} [arg={}]
* @returns {*}
* @memberof ${view.codeName}Base
*/
public getMPickupView(arg: any = {}): any {
const parentMode = this.getParentMode();
Object.assign(arg, parentMode);
let tempMode = this.getMDCtrl().tempMode;
if(!tempMode) {
tempMode = false;
}
<#assign de = view.getPSDataEntity()>
<#assign dernn = de.getPSDERNN()>
<#assign der1n = dernn.getFirstPSDER1N()>
<#assign der1n2 = dernn.getSecondPSDER1N()>
if (Object.is(arg.srfder1nid, '${der1n.name}')) {
<#if view.getRefPSAppView("MPICKUPVIEW:"+der1n2.codeName,true)??>
<#assign mpickupview = view.getRefPSAppView("MPICKUPVIEW:"+der1n2.codeName,true) >
<#assign mpickupviewref = view.getPSAppViewRef("MPICKUPVIEW:"+der1n2.codeName,true) >
<#if (der1n2.getTempDataOrder() lt 0)>
arg.srftempmode = false;
<#else>
arg.srftempmode = tempMode;
</#if>
const view = { modal: true, className: '${mpickupview.codeName}', viewUrl: '${mpickupview.getPSAppModule().codeName?lower_case}_${mpickupview.codeName?lower_case}', viewParam: arg };
return view;
</#if>
}
<#assign der1n2 = dernn.getFirstPSDER1N()>
<#assign der1n = dernn.getSecondPSDER1N()>
if (Object.is(arg.srfder1nid, '${der1n.name}')) {
<#if view.getRefPSAppView("MPICKUPVIEW:"+der1n2.codeName,true)??>
<#assign mpickupview = view.getRefPSAppView("MPICKUPVIEW:"+der1n2.codeName,true) >
<#assign mpickupviewref = view.getPSAppViewRef("MPICKUPVIEW:"+der1n2.codeName,true) >
<#if (der1n2.getTempDataOrder() lt 0)>
arg.srftempmode = false;
<#else>
arg.srftempmode = tempMode;
</#if>
return { modal: true, className: '${mpickupview.codeName}', viewUrl: '${mpickupview.getPSAppModule().codeName?lower_case}_${mpickupview.codeName?lower_case}', viewParam: arg };
</#if>
}
return undefined;
}
</#if>
<#-- 视图只支持批量添加 -->
<#if (view.isBatchAddOnly())>
/**
* 只支持批量添加
*
* @returns {boolean}
* @memberof ${view.codeName}Base
*/
public isBatchAddOnly(): boolean {
return true;
}
</#if>
<#if (view.isEnablePrint())>
public getPrintDataView(params: any = {}): any {
<#if view.getPSDEPrint()??>
params.srfprintid = '${view.getPSDEPrint().id}';
return {viewParam: params};
</#if>
}
</#if>
<#-- 视图是否默认加载 -->
<#if (!view.isLoadDefault())>
/**
* 是否默认加载
*
* @returns {boolean}
* @memberof ${view.codeName}Base
*/
public isLoadDefault(): boolean {
return false;
}
</#if>
<#-- 视图是否支持快速搜索 -->
<#if (!view.isEnableQuickSearch())>
/**
* 是否支持快速搜索
*
* @returns {boolean}
* @memberof ${view.codeName}Base
*/
public isEnableQuickSearch(): boolean {
return false;
}
</#if>
<#-- 是否支持快捷搜索 -->
<#if view.isEnableQuickSearch()>
<#-- 处理快捷搜索字段 -->
<#if view.isPSDEView()>
<#assign iDataEntity = view.getDataEntity()>
/**
* 注册实体支持快速搜索字段
*
* @memberof ${view.codeName}Base
*/
public regQuickSearchDEFileds(): void {
<#list iDataEntity.getDEFields() as iDEField>
<#if iDEField.isEnableQuickSearch()>
this.$quickSearchEntityDEFields.push({ id: '${iDEField.getId()}', name: '${iDEField.getName()?lower_case}', logicname: '${iDEField.getLogicName()}', datatype: '${iDEField.getDataType()?lower_case}' });
</#if>
</#list>
}
</#if>
</#if>
\ No newline at end of file
<#ibizinclude>VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>MD_VIEW_ACTION_CONTROLLER_BASE.ftl</#ibizinclude>
<#ibizinclude>VIEW_ACTION.ftl</#ibizinclude>
<#ibizinclude>VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#if view.isShowCaptionBar()>
<#if titlebar??>
${titlebar.code}
<#else>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<#if mdctrl??><#assign obj = mdctrl.getObj()> <ng-container *ngIf="!${obj.name}.$isEnableSelection; else enableSelection"></#if>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-back-button class="ibiz-view-back-button" text="返回" (click)="closeResult()"></ion-back-button>
<#if lefttoolbar??>
${lefttoolbar.code}
</#if>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
<ion-buttons class="ibiz-toolbar-right-buttons" slot="end">
<#if righttoolbar??>
${righttoolbar.code}
</#if>
</ion-buttons>
</ion-toolbar>
<#if mdctrl??><#assign obj = mdctrl.getObj()> </ng-container>
<ng-template #enableSelection>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons slot="start">
<ion-button (click)="${obj.name}.enableSelectionChange()"><ion-icon name="close"></ion-icon></ion-button>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
<ion-buttons slot="end">
<ion-button (click)="${obj.name}.checkAll()"><ion-icon name="done-all"></ion-icon></ion-button>
</ion-buttons>
</ion-toolbar>
</ng-template></#if>
<#if view.isEnableQuickSearch()>
<ion-toolbar class="ibiz-toolbar-search" color="primary">
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
</ion-toolbar>
</#if>
</ion-header>
</#if>
<#if searchform??>
<ion-header class="ibiz-view-search-form-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
${searchform.code}
</ion-header>
</#if>
</#if>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<!-- <ion-progress-bar class="ibiz-view-progress-bar" [hidden]="!isViewSendingRequest()" color="secondary" type="indeterminate"></ion-progress-bar> -->
<#if view.isEnablePullDownRefresh()>
<ion-refresher slot="fixed" (ionRefresh)="pullRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
</#if>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
<#if mdctrl??><#assign obj = mdctrl.getObj()>
<ion-footer class="ibiz-view-footer" [hidden]="!${obj.name}.$isEnableSelection">
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-label slot="start">已选择:{{${obj.name}.$selected.length}}</ion-label>
<ion-buttons slot="end">
<ion-button (click)="clickButton('Remove')"><ion-icon name="trash"></ion-icon></ion-button>
</ion-buttons>
</ion-toolbar>
</ion-footer>
</#if>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<#list view.getAllPSControls() as control>
<#if control.getPSControlType()?? && control.getPSControlType().getId() == "MOBMDCTRL">
${srfctrl(control.name).code}
</#if>
</#list>
</ng-template>
\ No newline at end of file
<#if iteratorlength(view.getPSUIActions()) gt 0>
public regUIActions(): void {
<#list view.getPSUIActions() as uiaction>
const uiaction_${uiaction_index} = { type: '${uiaction.getUIActionType()}', tag: '${uiaction.getUIActionTag()}'<#if (uiaction.getActionTarget()!="")>, actiontarget: '${uiaction.getActionTarget()}'</#if>
<#if uiaction.getUIActionType() == 'DEUIACTION'>
<#if uiaction.getUIActionMode()!="SYS">
, actionmode: '${uiaction.getUIActionMode()}', reload:<#if uiaction.isReloadData()>true<#else>false</#if>,colseeditview:<#if uiaction.isCloseEditView()>true<#else>false</#if>
<#if uiaction.getUIActionMode()=="BACKEND">
, timeout: ${uiaction.getTimeout()?c}<#if uiaction.getConfirmMsg()??>, confirmmsg: '${uiaction.getConfirmMsg()}'</#if>
</#if>
<#comment><!--开始:向导界面--></#comment>
<#if uiaction.getFrontProcessType()=="WIZARD">
, fronttype: '${uiaction.frontProcessType}'
<#if uiaction.getFrontPSAppView(view)??>
<#assign frontview=uiaction.getFrontPSAppView(view)>
, frontview: { className: '${frontview.codeName}', viewUrl: '${frontview.getPSAppModule().codeName?lower_case}_${frontview.codeName?lower_case}', title: '${frontview.title}', openMode: '${frontview.openMode}'<#if frontview.isRedirectView()>, redirectview: true, backendurl: '/${frontview.getPSAppModule().codeName}/${frontview.codeName}.do'</#if> }
</#if>
</#if>
<#comment><!--结束:向导界面--></#comment>
<#comment><!--开始:顶级视图--></#comment>
<#if uiaction.getFrontProcessType()=="TOP">
, fronttype: '${uiaction.frontProcessType}'
<#if uiaction.getFrontPSAppView(view)??>
<#assign frontview=uiaction.getFrontPSAppView(view)>, frontview: { className: '${frontview.codeName}', viewUrl: '${frontview.getPSAppModule().codeName?lower_case}_${frontview.codeName?lower_case}', title: '${frontview.title}', openMode: '${frontview.openMode}'<#if frontview.isRedirectView()>, redirectview: true, backendurl: '/${frontview.getPSAppModule().codeName}/${frontview.codeName}.do'</#if> }
</#if>
</#if>
<#comment><!--结束:顶级视图--></#comment>
<#comment><!--开始:打开网页--></#comment>
<#if uiaction.getFrontProcessType()=="OPENHTMLPAGE">
, fronttype: '${uiaction.frontProcessType}', htmlpageurl: '${uiaction.getHtmlPageUrl()}'
</#if>
<#comment><!--结束:打开网页--></#comment>
</#if>
</#if>
<#if uiaction.getUIActionType() == 'WFUIACTION'>
, actionmode: '${uiaction.getUIActionMode()}'
<#if uiaction.getUIActionMode()=="WFBACKEND">
, timeout: ${uiaction.getTimeout()?c}<#if uiaction.getConfirmMsg()??>, confirmmsg: '${uiaction.getConfirmMsg()}'</#if>
</#if>
<#comment><!--开始:向导界面--></#comment>
<#if uiaction.getFrontProcessType()=="WIZARD">
, fronttype: '${uiaction.frontProcessType}'
<#if uiaction.getFrontPSAppView(view)??>
<#assign frontview=uiaction.getFrontPSAppView(view)>, frontview: { className: '${frontview.codeName}', viewUrl: '${frontview.getPSAppModule().codeName?lower_case}_${frontview.codeName?lower_case}', viewParam: { srfwfiatag: '${uiaction.getUIActionTag()}', srfwfstep: '${view.getWFStepValue()}' }, title: '${frontview.title}', openMode: '${frontview.openMode}' }
</#if>
</#if>
<#comment><!--结束:向导界面--></#comment>
<#comment><!--开始:顶级视图--></#comment>
<#if uiaction.getFrontProcessType()=="TOP">
, fronttype: '${uiaction.frontProcessType}'
<#if uiaction.getFrontPSAppView(view)??>
<#assign frontview=uiaction.getFrontPSAppView(view)>, frontview: { className: '${frontview.codeName}', viewUrl: '${frontview.getPSAppModule().codeName?lower_case}_${frontview.codeName?lower_case}', title: '${frontview.title}', openMode: '${frontview.openMode}'<#if frontview.isRedirectView()>, redirectview: true, backendurl: '/${frontview.getPSAppModule().codeName}/${frontview.codeName}.do'</#if> }
</#if>
</#if>
<#comment><!--结束:顶级视图--></#comment>
<#comment><!--开始:打开网页--></#comment>
<#if uiaction.getFrontProcessType()=="OPENHTMLPAGE">
, fronttype: '${uiaction.frontProcessType}', htmlpageurl: '${uiaction.getHtmlPageUrl()}'
</#if>
<#comment><!--结束:打开网页--></#comment>
</#if>
, actionparams: { vlaueitem: '${uiaction.getValueItem()}', paramitem: '${uiaction.getParamItem()}', textitem: '${uiaction.getTextItem()}', paramjo: <#if uiaction.getUIActionParamJO()??>${uiaction.getUIActionParamJO().toString()}<#else>{ }</#if> }
};
super.regUIAction(uiaction_${uiaction_index});
</#list>
}
</#if>
\ No newline at end of file
<#if imports??>
<#list imports as import>
${import}
</#list>
</#if>
<#if ctrls??>
<#list ctrls as ctrl>
${ctrl.code}
</#list>
</#if>
\ No newline at end of file
import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { NavController, ModalController } from '@ionic/angular';
import { IBizHttp, IBizApp, IBizNotification } from 'ibizsys';
import { ${srfclassname('${view.codeName}')}Base } from './${filename('${view.codeName}')}.base';
@Component({
selector: '${filename('${view.codeName}')}',
templateUrl: '${filename('${view.codeName}')}.html',
styleUrls: ['${filename('${view.codeName}')}.scss']
})
export class ${srfclassname('${view.codeName}')} extends ${srfclassname('${view.codeName}')}Base {
constructor(
public iBizApp: IBizApp,
public iBizHttp: IBizHttp,
public modalCtrl: ModalController,
public navCtrl: NavController,
public activatedRoute: ActivatedRoute,
public iBizNotification: IBizNotification
) {
super({
url: '/${app.getPKGCodeName()}/${view.getPSAppModule().codeName}/${view.codeName}.do',
iBizApp,
iBizHttp,
modalCtrl,
navCtrl,
activatedRoute,
iBizNotification
});
}
}
\ No newline at end of file
<#if view.getPSAppFuncs()?? && iteratorlength(view.getPSAppFuncs()) gt 0>
public regAppFuncs(): void {
<#list view.getPSAppFuncs() as appfunc>
<#if appfunc.getAppFuncType() == "OPENHTMLPAGE">
this.regAppFunc({funcid: '${appfunc.id}', functype: '${appfunc.appFuncType}', htmlPageUrl: '${appfunc.getHtmlPageUrl()}'});
<#elseif appfunc.getAppFuncType() == "JAVASCRIPT">
this.regAppFunc({funcid: '${appfunc.id}', functype: '${appfunc.appFuncType}'});
<#elseif appfunc.getAppFuncType() == "PDTAPPFUNC">
this.regAppFunc({funcid: '${appfunc.id}', functype: '${appfunc.appFuncType}', action: '${appfunc.getPSPDTAppFuncId()}'});
<#else>
<#if appfunc.getPSAppView()??>
<#assign _appview=appfunc.getPSAppView()>
this.regAppFunc({funcid: '${appfunc.id}', functype: '${appfunc.appFuncType}', codename: '${_appview.getPSAppModule().codeName?lower_case}_${_appview.codeName?lower_case}', openmode: '${appfunc.openMode}', className: '${_appview.codeName}', viewParam: ${appfunc.getOpenViewParam().toString()}});
</#if>
</#if>
</#list>
}
protected appFuncTypeScript(funcId): void {
<#list view.getPSAppFuncs() as appfunc>
<#if appfunc.getAppFuncType() == "JAVASCRIPT">
if (!Object.is(funcId, '${appfunc.id}')) {
${appfunc.getJSCode()}
return;
}
<#else>
</#if>
</#list>
}
</#if>
<#assign isModalView = false>
<#if refviews?? && refviews?size gt 0>
<#list refviews as view>
<#if view.isPickupView() || view.testViewUsage(2)>
<#assign isModalView = true>
</#if>
</#list>
</#if>
<#if refviews?? && refviews?size gt 0 && isModalView>
/**
* 注册模态视图
*
* @memberof ${view.codeName}Base
*/
public regModalViews(): void {
<#list refviews as view>
<#if view.isPickupView() || view.testViewUsage(2)>
this.regModalView('${view.getPSAppModule().codeName?lower_case}_${view.codeName?lower_case}', ${srfclassname('${view.codeName}')});
</#if>
</#list>
}
</#if>
<#if view.getPSSysCounterRefs()??>
<#if iteratorlength(view.getPSSysCounterRefs()) gt 0>
/**
* 注册计数器
*
* @memberof ${view.codeName}Base
*/
public regUICounters(): void {
<#list view.getPSSysCounterRefs() as syscounterref>
<#assign syscounter=syscounterref.getPSSysCounter()>
const ${syscounter.getCodeName()} = new IBizUICounter({
viewController: this,
name: '${syscounter.getCodeName()}',
counterId: '${syscounter.id}',
tag: '${syscounterref.tag}',
counterParam: ${syscounterref.getRefMode().toString()},
timer: ${syscounter.timer?c},
url: this.getBackendUrl()
});
this.regUICounter('${syscounter.getCodeName()}', ${syscounter.getCodeName()});
</#list>
}
</#if>
</#if>
<#assign count = 0>
<#list view.getRelatedPSCodeList(false) as codelist>
<#if codelist.getCodeListType()=='STATIC'>
<#assign count += 1>
</#if>
</#list>
<#if count gt 0>
/**
* 注册代码表
*
* @memberof ${view.codeName}Base
*/
public regCodeLists(): void {
<#list view.getRelatedPSCodeList(false) as codelist>
<#if codelist.getCodeListType()=='STATIC'>
/*${codelist.name}*/
this.regCodeList(new IBizCodeList({id: '${srfparamname('${sys.codeName}')}_${codelist.codeName}', datas: [<#if codelist.getPSCodeItems()??><#list codelist.getPSCodeItems() as codeitem><#if (codeitem_index>0)>, </#if>{ text: '${codeitem.text}', value: '${codeitem.value}', realtext: '${codeitem.realText}'<#if codeitem.getParentValue()??>, parentvalue: '${codeitem.getParentValue()}'</#if><#if codeitem.getColor()??>, color: '${codeitem.getColor()}'</#if><#if codeitem.getTextCls()??>, textcls: '${codeitem.getTextCls()}'</#if><#if codeitem.getIconCls()??>, iconcls: '${codeitem.getIconCls()}'</#if>}</#list></#if>]}));
</#if>
</#list>
}
</#if>
}
\ No newline at end of file
import { ${viewContorllerName}, IBizViewOptions, IBizCodeList, IBizUtil, IBizUICounter } from 'ibizsys';
<#assign ctrlCount = 0>
<#if view.getAllPSControls()?size gt 0><#if view.getAllPSControls()??><#list view.getAllPSControls() as ctrl><#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')><#assign ctrlCount += 1></#if></#list></#if></#if>
<#if ctrlCount gt 0><#if view.getAllPSControls()??>import { <#list view.getAllPSControls() as ctrl><#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>${srfclassname('${ctrl.name}')}, </#if></#list> } from './${filename('${view.codeName}')}.control';</#if></#if>
<#if refviews?? && refviews?size gt 0>
<#list refviews as view>
<#if view.isPickupView() || view.testViewUsage(2)>
import { ${srfclassname('${view.codeName}')} } from '@pages/${filename('${view.getPSAppModule().codeName}')}/${filename('${view.codeName}')}/${filename('${view.codeName}')}';
</#if>
</#list>
</#if>
export class ${srfclassname('${view.codeName}')}Base extends ${viewContorllerName} {
<#if view.getAllPSControls()?size gt 0>
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
public ${ctrl.name}: ${srfclassname('${ctrl.name}')};
</#if>
</#list>
</#if>
</#if>
/**
* Creates an instance of ${srfclassname('${view.codeName}')}Base.
* @param {IBizViewOptions} opts
* @memberof ${srfclassname('${view.codeName}')}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
<#if view.getAllPSControls()?size gt 0>
<#if view.getAllPSControls()??>
public regControls(): void {
<#list view.getAllPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
this.${ctrl.name} = new ${srfclassname('${ctrl.name}')}({ url: this.getBackendUrl(), viewController: this });
this.regControl('${ctrl.name}', this.${ctrl.name});
</#if>
</#list>
}
</#if>
</#if>
\ No newline at end of file
<#if view.isShowCaptionBar()>
<#if titlebar??>
${titlebar.code}
<#else>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-button class="ibiz-view-toolbar-button ibiz-back-button" (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
<#if lefttoolbar??>
${lefttoolbar.code}
</#if>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
<ion-buttons class="ibiz-toolbar-right-buttons" slot="end">
<#if righttoolbar??>
${righttoolbar.code}
</#if>
</ion-buttons>
</ion-toolbar>
</ion-header>
</#if>
</#if>
\ No newline at end of file
<#ibizinclude>VIEW_HTML_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<#if view.isEnablePullDownRefresh()>
<ion-refresher slot="fixed" (ionRefresh)="pullRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
</#if>
<#if ctrls??>
<#list ctrls as ctrl>
${ctrl.code}
</#list>
</#if>
</ion-content>
\ No newline at end of file
<#if view.isShowCaptionBar()>
<#if titlebar??>
${titlebar.code}
<#else>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-back-button class="ibiz-view-back-button" text="返回" (click)="closeResult()"></ion-back-button>
<#if lefttoolbar??>
${lefttoolbar.code}
</#if>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
<ion-buttons class="ibiz-toolbar-right-buttons" slot="end">
<#if righttoolbar??>
${righttoolbar.code}
</#if>
</ion-buttons>
</ion-toolbar>
</ion-header>
</#if>
</#if>
\ No newline at end of file
<#if view.isShowCaptionBar()>
<ion-header class="ibiz-view-header"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-back-button class="ibiz-view-back-button" text="返回" (click)="closeResult()"></ion-back-button>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
</ion-toolbar>
</ion-header>
</#if>
\ No newline at end of file
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { ShareModule } from '@share/share.module';
import { AuthGuard } from 'ibizsys';
import { ${srfclassname('${view.codeName}')} } from './${filename('${view.codeName}')}';
<#if refviews??>
<#list refviews as view>
<#if view.testViewUsage(4) || view.isPickupView() || view.testViewUsage(2) || view.getPSViewType().getId() == "APPWFSTEPDATAVIEW" || view.getPSViewType().getId() == "APPWFSTEPTRACEVIEW">
import { ${srfclassname('${view.codeName}')}Module } from '@pages/${filename('${view.getPSAppModule().codeName}')}/${filename('${view.codeName}')}/${filename('${view.codeName}')}.module';
</#if>
</#list>
</#if>
@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: ${srfclassname('${view.codeName}')},
canActivate: [AuthGuard],
data: { backendurl: '/${app.getPKGCodeName()}/${view.getPSAppModule().codeName}/${view.codeName}.do', accessMode: ${view.getAccUserMode()} }
}
])
],
exports: [
RouterModule
]
})
export class ${srfclassname('${view.codeName}')}RouteModule { }
@NgModule({
imports: [
ShareModule,
${srfclassname('${view.codeName}')}RouteModule,
<#if refviews??>
<#list refviews as view>
<#if view.testViewUsage(4) || view.isPickupView() || view.testViewUsage(2) || view.getPSViewType().getId() == "APPWFSTEPDATAVIEW" || view.getPSViewType().getId() == "APPWFSTEPTRACEVIEW">
${srfclassname('${view.codeName}')}Module,
</#if>
</#list>
</#if>
],
declarations: [
${srfclassname('${view.codeName}')}
],
entryComponents: [
${srfclassname('${view.codeName}')}
],
exports: [
${srfclassname('${view.codeName}')}
]
})
export class ${srfclassname('${view.codeName}')}Module { }
\ No newline at end of file
<#if ctrls??>
<#list ctrls as ctrl>
${ctrl.code}
</#list>
</#if>
<#assign viewCssName = '' />
<#if view.getPSSysCss()??>
<#assign viewCssName = view.getPSSysCss().getCssName()>
</#if>
<#list view.getPSSysCsses() as syscss>
<#if syscss.getCssName() != viewCssName>
.${syscss.getCssName()} {
${syscss.getDesignCssStyle()}
}
</#if>
<#if syscss.getCssStyle()??>
${syscss.getCssStyle()}
</#if>
</#list>
<#if view.getPSSysCss()??>
<#if view.getPSSysCss().getCssStyle()??>
${view.getPSSysCss().getCssStyle()}
</#if>
</#if>
\ No newline at end of file
import { ${viewContorllerName}, IBizViewOptions } from 'ibizsys';
export class ${view.codeName}Base extends ${viewContorllerName} {
/**
* Creates an instance of ${view.codeName}Base.
* @param {IBizViewOptions} opts
* @memberof ${view.codeName}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
}
\ No newline at end of file
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<ion-back-button></ion-back-button>
</ion-buttons>
<ion-title>${view.getCaption()}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<h1>暂未实现该视图</h1>
</ion-content>
\ No newline at end of file
<#assign sitg = "sitg">
<#if view.isWFIAMode()>
public getEditMode(data: any = {}) {
let editMode = super.getEditMode(data);
<#if view.hasPSControl("mdctrl")?? && view.getPSControl("mdctrl").hasWFDataItems() == true>
<#assign fieldname = 'srfwfstep'>
<#else>
<#assign fieldname = view.getPSDEWF().getWFStepPSDEField().getName()>
</#if>
if (editMode && editMode !== '') {
editMode = editMode + ':' + data.${fieldname?lower_case};
} else {
editMode = data.${fieldname?lower_case};
}
<#if view.getPSDEWF().getWFVerPSDEField()??>
<#if view.hasPSControl("mdctrl")?? && view.getPSControl("mdctrl").hasWFDataItems() == true>
<#assign verfieldname = 'srfwfver'>
<#else>
<#assign verfieldname = view.getPSDEWF().getWFVerPSDEField().getName()>
</#if>
const ver = data.${verfieldname?lower_case};
if (ver && ver !== '') {
editMode = editMode + '@' + ver;
}
</#if>
return editMode;
}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4TabExpViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizTabExpViewController' />
import { ${viewContorllerName}, IBizViewOptions, IBizCodeList, IBizUtil, IBizUICounter } from 'ibizsys';
<#if view.getAllPSControls()?size gt 0><#if view.getAllPSControls()??>import { <#list view.getAllPSControls() as ctrl><#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>${srfclassname('${ctrl.name}')}, </#if></#list> } from './${filename('${view.codeName}')}.control';</#if></#if>
<#if refviews?? && refviews?size gt 0>
<#list refviews as view>
<#if view.isPickupView() || view.testViewUsage(2)>
import { ${srfclassname('${view.codeName}')} } from '@pages/${filename('${view.getPSAppModule().codeName}')}/${filename('${view.codeName}')}/${filename('${view.codeName}')}';
</#if>
</#list>
</#if>
export class ${srfclassname('${view.codeName}')}Base extends ${viewContorllerName} {
<#if view.getAllPSControls()?size gt 0>
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
public ${ctrl.name}: ${srfclassname('${ctrl.name}')};
</#if>
</#list>
</#if>
</#if>
/**
* Creates an instance of ${srfclassname('${view.codeName}')}Base.
* @param {IBizViewOptions} opts
* @memberof ${srfclassname('${view.codeName}')}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
<#if view.getAllPSControls()?size gt 0>
<#if view.getAllPSControls()??>
public regControls(): void {
<#list view.getAllPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
this.${ctrl.name} = new ${srfclassname('${ctrl.name}')}({ url: this.getBackendUrl(), viewController: this });
this.regControl('${ctrl.name}', this.${ctrl.name});
</#if>
</#list><#if tabviewpanelcontrols??><#list tabviewpanelcontrols as tabviewpanel><#assign tabView = tabviewpanel.getPSAppDEView()><#if tabviewpanel_index == 0> this.${tabviewpanel.getName()}.activation();</#if></#list></#if>
}
</#if>
</#if>
<#if tabviewpanelcontrols??>
public regDefaultTabViewPanel(): void {
<#list tabviewpanelcontrols as tabviewpanel>
<#if tabviewpanel_index == 0>
this.activateTab = '${tabviewpanel.getName()}';
<#break>
</#if>
</#list>
}
</#if>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4TabExpViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#if view.isShowCaptionBar()>
<#if titlebar??>
${titlebar.code}
<#else>
<ion-header class="ibiz-view-header">
<#if tabviewpanels??>
<#list tabviewpanels as tabviewpanel>
${tabviewpanel.code}
</#list>
</#if>
</ion-header>
</#if>
</#if>
<ion-content class="ibiz-view-content ibiz-calendar-view ibiz-${view.getViewType()?lower_case}">
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<#if tabviewpanels??>
<ibiz-scroll-paging [active]="activateTab" position="${view.getTabLayout()?lower_case}" (activeChange)="onTabChange($event)" [items]="[<#list tabviewpanels as tabviewpanel><#if tabviewpanel_index gt 0>, </#if>${tabviewpanel.code2}</#list>]">
<#if tabviewpanels??>
<#list tabviewpanels as tabviewpanel>
${tabviewpanel.code3}
</#list>
</#if>
</ibiz-scroll-paging>
</#if>
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBTABEXPVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizMDViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<h1>实体移动端列表视图 已废弃 请改用 实体移动端多数据视图 </h1>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBLISTVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizWizardViewController' />
import { ${viewContorllerName}, IBizViewOptions, IBizCodeList, IBizUtil, IBizUICounter } from 'ibizsys';
<#if view.getAllPSControls()?size gt 0><#if view.getAllPSControls()??>import { <#list view.getAllPSControls() as ctrl><#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>${srfclassname('${ctrl.name}')}, </#if></#list> } from './${filename('${view.codeName}')}.control';</#if></#if>
<#if refviews?? && refviews?size gt 0>
<#list refviews as view>
<#if view.isPickupView() || view.testViewUsage(2)>
import { ${srfclassname('${view.codeName}')} } from '@pages/${filename('${view.getPSAppModule().codeName}')}/${filename('${view.codeName}')}/${filename('${view.codeName}')}';
</#if>
</#list>
</#if>
export class ${srfclassname('${view.codeName}')}Base extends ${viewContorllerName} {
<#if view.getAllPSControls()?size gt 0>
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
public ${ctrl.name}: ${srfclassname('${ctrl.name}')};
</#if>
</#list>
</#if>
</#if>
/**
* Creates an instance of ${srfclassname('${view.codeName}')}Base.
* @param {IBizViewOptions} opts
* @memberof ${srfclassname('${view.codeName}')}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
<#if view.hasPSControl('wizardpanel')>
<#assign wp = view.getPSControl('wizardpanel')>
public regControls(): void {
this.${wp.name} = new ${srfclassname('${wp.name}')}({ url: this.getBackendUrl(), viewController: this });
this.regControl('${wp.name}', this.${wp.name});
<#list wp.getPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
this.${ctrl.name} = new ${srfclassname('${ctrl.name}')}({ url: this.getBackendUrl(), viewController: this });
this.${wp.name}.regControl('${ctrl.getPSDEWizardForm().getFormTag()}', this.${ctrl.name});
</#if>
</#list>
}
</#if>
<#ibizinclude>../../@MACRO/VIEW_ACTION.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#ibizinclude>../../@MACRO/VIEW_HTML_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<#if view.isEnablePullDownRefresh()>
<ion-refresher slot="fixed" (ionRefresh)="pullRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
</#if>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<#if wizardpanel??>
${wizardpanel.code}
</#if>
</ng-template>
<#if view.hasPSControl('wizardpanel')??>
<#assign wp = view.getPSControl('wizardpanel')>
<ion-footer>
<div style="display: flex;width: 100%;justify-content: center;">
<ion-button [hidden]="!${wp.name}.$buttonState.last" expand="full" shape="round" (click)="${wp.name}.lastStep()"><#if wp.getPSDEWizard()?? && wp.getPSDEWizard().getPrevCaption()??>${wp.getPSDEWizard().getPrevCaption()}<#else>上一步</#if></ion-button>
<ion-button [hidden]="!${wp.name}.$buttonState.next" expand="full" shape="round" (click)="${wp.name}.nextStep()"><#if wp.getPSDEWizard()?? && wp.getPSDEWizard().getPrevCaption()??>${wp.getPSDEWizard().getNextCaption()}<#else>下一步</#if></ion-button>
<ion-button [hidden]="!${wp.name}.$buttonState.end" expand="full" shape="round" (click)="${wp.name}.complete()"><#if wp.getPSDEWizard()?? && wp.getPSDEWizard().getPrevCaption()??>${wp.getPSDEWizard().getFinishCaption()}<#else>完成</#if></ion-button>
</div>
</ion-footer>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBWIZARDVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizChartViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_ACTION.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#if view.isShowCaptionBar()>
<#if titlebar??>
${titlebar.code}
<#else>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<#if mdctrl??><#assign obj = mdctrl.getObj()> <ng-container *ngIf="!${obj.name}.$isEnableSelection; else enableSelection"></#if>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-back-button class="ibiz-view-back-button" text="返回" (click)="closeResult()"></ion-back-button>
<#if lefttoolbar??>
${lefttoolbar.code}
</#if>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
<ion-buttons class="ibiz-toolbar-right-buttons" slot="end">
<#if righttoolbar??>
${righttoolbar.code}
</#if>
</ion-buttons>
</ion-toolbar>
<#if mdctrl??><#assign obj = mdctrl.getObj()> </ng-container>
<ng-template #enableSelection>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons slot="start">
<ion-button (click)="${obj.name}.enableSelectionChange()"><ion-icon name="close"></ion-icon></ion-button>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
<ion-buttons slot="end">
<ion-button (click)="${obj.name}.checkAll()"><ion-icon name="done-all"></ion-icon></ion-button>
</ion-buttons>
</ion-toolbar>
</ng-template></#if>
<#if view.isEnableQuickSearch()>
<ion-toolbar class="ibiz-toolbar-search" color="primary">
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
</ion-toolbar>
</#if>
</ion-header>
</#if>
</#if>
<#if searchform??>
<ion-header class="ibiz-view-search-form-header">
${searchform.code}
</ion-header>
</#if>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<ion-progress-bar class="ibiz-view-progress-bar" [hidden]="!isViewSendingRequest()" color="secondary" type="indeterminate"></ion-progress-bar>
<#if view.isEnablePullDownRefresh()>
<ion-refresher slot="fixed" (ionRefresh)="pullRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
</#if>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<#if chart??>
${chart.code}
</#if>
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBCHARTVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizChartView9Controller' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_ACTION.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#if chart??>
${chart.code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBCHARTVIEW9
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizMDViewController' />
<#ibizinclude>../../@MACRO/MD_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/MD_VIEW_HTML.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBMDVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizMDView9Controller' />
<#ibizinclude>../../@MACRO/MD_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#list view.getAllPSControls() as control>
<#if control.getPSControlType()?? && control.getPSControlType().getId() == "MOBMDCTRL">
${srfctrl(control.name).code}
</#if>
</#list>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizMPickupViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#if titlebar??>
${titlebar.code}
<#else>
<#if view.isShowCaptionBar()>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-button class="ibiz-view-back-button" (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
<ion-buttons class="ibiz-toolbar-left-buttons" slot="end">
<ion-button class="ibiz-view-back-button" (click)="onOK()">
确认
</ion-button>
</ion-buttons>
</ion-toolbar>
<ion-toolbar class="ibiz-toolbar-search" color="primary">
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
</ion-toolbar>
</ion-header>
</#if>
</#if>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}">
<#if pickupviewpanel??>
${pickupviewpanel.code}
</#if>
</ion-content>
<#if pickupviewpanel??>
<#assign ctrl = pickupviewpanel.getObj()>
<ion-footer class="ibiz-view-footer">
<ion-toolbar class="ibiz-view-toolbar">
<ion-label slot="start">已选中:{{${ctrl.name}.getSelectedData().length}}</ion-label>
<ion-buttons slot="end">
<ion-button (click)="${ctrl.name}.checkAll()">
<ion-icon name="done-all"></ion-icon>
</ion-button>
</ion-buttons>
</ion-toolbar>
</#if>
</ion-footer>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBMPICKUPVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizMEditView9Controller' />
<#ibizinclude>../../@MACRO/EDIT_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#ibizinclude>../../@MACRO/VIEW_HTML_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}">
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<#list ctrls as ctrl>
${ctrl.code}
</#list>
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizWFStartViewController' />
<#ibizinclude>../../@MACRO/EDIT_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#if view.isShowCaptionBar()>
<#if titlebar??>
${titlebar.code}
<#else>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-button class="ibiz-view-back-button" (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
</ion-toolbar>
</ion-header>
</#if>
</#if>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<#if form??>
${form.code}
</#if>
</ion-content>
<ion-footer>
<ion-grid>
<ion-row>
<ion-col size="6">
<ion-button expand="full" shape="round" (click)="backView()">取消</ion-button>
</ion-col>
<ion-col size="6">
<ion-button expand="full" shape="round" (click)="onOk()">确认</ion-button>
</ion-col>
</ion-row>
</ion-grid>
</ion-footer>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBWFSTARTVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizWFMDViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/WF_MD_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/MD_VIEW_ACTION_CONTROLLER_BASE.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_ACTION.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/MD_VIEW_HTML.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBWFMDVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizWFActionViewController' />
<#ibizinclude>../../@MACRO/EDIT_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#if view.isShowCaptionBar()>
<#if titlebar??>
${titlebar.code}
<#else>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-button class="ibiz-view-back-button" (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
</ion-toolbar>
</ion-header>
</#if>
</#if>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}">
<#if form??>
${form.code}
</#if>
</ion-content>
<ion-footer>
<ion-grid>
<ion-row>
<ion-col size="6">
<ion-button expand="full" shape="round" (click)="backView()">取消</ion-button>
</ion-col>
<ion-col size="6">
<ion-button expand="full" shape="round" (click)="onOk()">确认</ion-button>
</ion-col>
</ion-row>
</ion-grid>
</ion-footer>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBWFACTIONVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizWFEditViewController' />
<#ibizinclude>../../@MACRO/EDIT_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/EDIT_VIEW_HTML.ftl</#ibizinclude>
<#if quicktoolbar??>${quicktoolbar.code}</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBWFEDITVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizWFEditView3Controller' />
<#ibizinclude>../../@MACRO/EDIT3_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/EDIT3_VIEW_HTML.ftl</#ibizinclude>
<ion-footer>
<#if drtab??>${drtab.code2}</#if>
</ion-footer>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizPickupViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#if titlebar??>
${titlebar.code}
<#else>
<#if view.isShowCaptionBar()>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-button class="ibiz-view-back-button" (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
</ion-toolbar>
<ion-toolbar class="ibiz-toolbar-search" color="primary">
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
</ion-toolbar>
</ion-header>
</#if>
</#if>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<#if pickupviewpanel??>
${pickupviewpanel.code}
</#if>
</ion-content>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBPICKUPVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizCalendarViewController' />
<#ibizinclude>../../@MACRO/MD_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#ibizinclude>../../@MACRO/VIEW_HTML_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-calendar-view ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<#if calendar??>
${calendar.code}
</#if>
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBCALENDARVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizTreeViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/MD_VIEW_ACTION_CONTROLLER_BASE.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_ACTION.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#if view.isShowCaptionBar()>
<#if titlebar??>
${titlebar.code}
<#else>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<#if mdctrl??><#assign obj = mdctrl.getObj()> <ng-container *ngIf="!${obj.name}.$isEnableSelection; else enableSelection"></#if>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-back-button class="ibiz-view-back-button" text="返回" (click)="closeResult()"></ion-back-button>
<#if lefttoolbar??>
${lefttoolbar.code}
</#if>
</ion-buttons>
<#if view.isEnableQuickSearch()>
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
<#else>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
</#if>
<ion-buttons class="ibiz-toolbar-right-buttons" slot="end">
<#if righttoolbar??>
${righttoolbar.code}
</#if>
</ion-buttons>
</ion-toolbar>
<#if mdctrl??><#assign obj = mdctrl.getObj()> </ng-container>
<ng-template #enableSelection>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons slot="start">
<ion-button (click)="${obj.name}.enableSelectionChange()"><ion-icon name="close"></ion-icon></ion-button>
</ion-buttons>
<#if view.isEnableQuickSearch()>
<ion-searchbar (ionChange)="onQuickSearchValueChange($event)" showCancelButton cancelButtonText="取消" debounce="500" animated placeholder="搜索" mode="ios" clearIcon="close-circle"></ion-searchbar>
<#else>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
</#if>
<ion-buttons slot="end">
<ion-button (click)="${obj.name}.checkAll()"><ion-icon name="done-all"></ion-icon></ion-button>
</ion-buttons>
</ion-toolbar>
</ng-template></#if>
</ion-header>
</#if>
<#if searchform??>
<ion-header class="ibiz-view-search-form-header">
${searchform.code}
</ion-header>
</#if>
</#if>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<#if tree??>
${tree.code}
</#if>
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBTREEVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizEditViewController' />
<#ibizinclude>../../@MACRO/EDIT_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/EDIT_VIEW_HTML.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBEDITVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizEditView3Controller' />
<#ibizinclude>../../@MACRO/EDIT3_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/EDIT3_VIEW_HTML.ftl</#ibizinclude>
<ion-footer>
<#if drtab??>${drtab.code2}</#if>
</ion-footer>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBEDITVIEW3
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizCustomController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_HTML.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBCUSTOMVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizPickupMDViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<h1>实体移动端选择列表视图(部件视图) 已废弃 请改用 实体移动端选择多数据视图(部件视图) </h1>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBPICKUPLISTVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizPickupMDViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#if mdctrl??>
<#assign ctrl = mdctrl.getObj()>
<ion-list class="ibiz-mdctrl-list">
<ion-item class="ibiz-mdctrl-list-item" *ngFor="let item of ${ctrl.name}.$items">
<ion-label>
{{ item.srfmajortext }}
</ion-label>
<ion-input type="checkbox"></ion-input>
<ion-checkbox slot="end" [(ngModel)]="item.isChecked" (ionChange)="${ctrl.name}.selectChange(item)"></ion-checkbox>
</ion-item>
</ion-list>
<ion-infinite-scroll threshold="100px" (ionInfinite)="${ctrl.name}.loadMore($event)">
<ion-infinite-scroll-content loadingSpinner="bubbles" loadingText="加载中..."></ion-infinite-scroll-content>
</ion-infinite-scroll>
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBPICKUPMDVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizPickupTreeViewController' />
import { ${viewContorllerName}, IBizViewOptions, IBizCodeList, IBizUtil } from 'ibizsys';
<#if view.getAllPSControls()?size gt 0><#if view.getAllPSControls()??>import { <#list view.getAllPSControls() as ctrl><#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>${srfclassname('${ctrl.name}')}, </#if></#list> } from './${filename('${view.codeName}')}.control';</#if></#if>
<#if refviews?? && refviews?size gt 0>
<#list refviews as view>
<#if view.isPickupView() || view.testViewUsage(2)>
import { ${srfclassname('${view.codeName}')} } from '@pages/${filename('${view.getPSAppModule().codeName}')}/${filename('${view.codeName}')}/${filename('${view.codeName}')}';
</#if>
</#list>
</#if>
export class ${srfclassname('${view.codeName}')}Base extends ${viewContorllerName} {
<#if view.getAllPSControls()?size gt 0>
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
public ${ctrl.name}: ${srfclassname('${ctrl.name}')};
</#if>
</#list>
</#if>
</#if>
/**
* Creates an instance of ${srfclassname('${view.codeName}')}Base.
* @param {IBizViewOptions} opts
* @memberof ${srfclassname('${view.codeName}')}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
<#if view.getAllPSControls()?size gt 0>
<#if view.getAllPSControls()??>
public regControls(): void {
<#list view.getAllPSControls() as ctrl>
<#if pfstyle.hasPSPFCtrlTempls(ctrl,'CONTROL')>
this.${ctrl.name} = new ${srfclassname('${ctrl.name}')}({ url: this.getBackendUrl(), viewController: this, isEnableSelection: true });
this.regControl('${ctrl.name}', this.${ctrl.name});
</#if>
</#list>
}
</#if>
</#if>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#if tree??>
${tree.code}
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBPICKUPTREEVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizOptionViewController' />
<#ibizinclude>../../@MACRO/EDIT_VIEW_CONTROLLER_BASE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#if view.isShowCaptionBar()>
<#if titlebar??>
${titlebar.code}
<#else>
<ion-header class="ibiz-view-header<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> translucent</#if>"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [translucent]="true"</#if>>
<ion-toolbar class="ibiz-view-toolbar" color="primary">
<ion-buttons class="ibiz-toolbar-left-buttons" slot="start">
<ion-button class="ibiz-view-back-button" (click)="backView()">
<ion-icon name="arrow-back"></ion-icon>
返回
</ion-button>
</ion-buttons>
<ion-title class="ibiz-view-title">${view.getCaption()}</ion-title>
<ion-buttons class="ibiz-toolbar-left-buttons" slot="end">
<ion-button class="ibiz-view-back-button" (click)="onOk()">
确认
</ion-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
</#if>
</#if>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<#if form??>
${form.code}
</#if>
</ion-content>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBOPTVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizPanelViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#ibizinclude>../../@MACRO/VIEW_HTML_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<#if panel??>
${panel.code}
</#if>
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMOBPANELVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizAppFuncPickupViewController' />
import { ${viewContorllerName}, IBizViewOptions } from 'ibizsys';
export class ${srfclassname('${view.codeName}')}Base extends ${viewContorllerName} {
/**
* Creates an instance of ${srfclassname('${view.codeName}')}Base.
* @param {IBizViewOptions} opts
* @memberof ${srfclassname('${view.codeName}')}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#ibizinclude>../../@MACRO/VIEW_HTML_NO_UIACTION_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<ion-list class="ibiz-list-menu">
<ng-container *ngFor="let item of appmenu.$items;">
<ion-item href="javascript:;" lines="full">
<ion-avatar slot="start">
<ibiz-icon [item]="item" [isDefault]="true"></ibiz-icon>
</ion-avatar>
<ion-label [ngClass]="item.textcls">
{{ item.text }}
</ion-label>
<ion-checkbox slot="end"></ion-checkbox>
</ion-item>
</ng-container>
</ion-list>
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPFUNCPICKUPVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizStartViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ion-content class="ibiz-view-content ibiz-star-view">
<ng-container *ngIf="isLogin; else startContent;">
<div class="ibiz-star-view-item">
<img src="./assets/images/start_default.jpeg">
</div>
<button type="button" class="navigation-button" (tap)="viewJump()">
跳过({{ count }})
</button>
</ng-container>
<ng-template #startContent>
<ion-slides #startSlides pager="true" [options]="slideOptions" style="height: 100%;">
<ion-slide>
<div class="ibiz-star-view-item">
<img src="./assets/images/start_one.jpeg">
</div>
</ion-slide>
<ion-slide>
<div class="ibiz-star-view-item">
<img src="./assets/images/start_two.jpeg">
</div>
</ion-slide>
<ion-slide>
<div class="ibiz-star-view-item">
<img src="./assets/images/start_three.jpeg">
</div>
<div class="ibiz-star-view-buttons">
<div class="ibiz-star-view-button">
<ion-button color="light" expand="full" shape="round" (click)="login()">登录</ion-button>
</div>
<div class="ibiz-star-view-button">
<ion-button color="primary" expand="full" shape="round">注册</ion-button>
</div>
</div>
</ion-slide>
</ion-slides>
</ng-template>
</ion-content>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
// 启动视图
.ibiz-star-view {
overflow: hidden;
.ibiz-star-view-item {
height: 100%;
width: 100%;
img {
height: 100%;
width: 100%;
}
}
.navigation-button {
position: absolute;
top: 30pt;
right: 30pt;
background-color: rgba(140, 140, 140, 0.6);
color: white;
padding: 6px 14px;
}
.ibiz-star-view-buttons {
position: absolute;
bottom: 88px;
z-index: 1;
width: 100%;
display: flex;
div {
flex-grow: 1;
}
}
}
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPSTARTVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizAppWFStepDataViewController' />
import { ${viewContorllerName}, IBizViewOptions } from 'ibizsys';
export class ${srfclassname('${view.codeName}')}Base extends ${viewContorllerName} {
/**
* Creates an instance of ${srfclassname('${view.codeName}')}Base.
* @param {IBizViewOptions} opts
* @memberof ${srfclassname('${view.codeName}')}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#ibizinclude>../../@MACRO/VIEW_HTML_NO_UIACTION_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}">
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
<ion-card class="ibiz-process-tracking">
<ion-item class="ibiz-process-tracking-header" lines="full">
<ion-avatar slot="start">
<ion-icon src="./assets/images/process-tracking-header-icon.svg"></ion-icon>
</ion-avatar>
<ion-label>流程跟踪信息</ion-label>
</ion-item>
<ion-card-content class="ibiz-process-tracking-content">
<ion-item class="ibiz-process-tracking-item" lines="none" *ngFor="let item of mdctrl.$items">
<ion-avatar slot="start">
<div class="line">
<div class="circle">
<div class="inner-circle bc"></div>
</div>
</div>
</ion-avatar>
<ion-label class="ibiz-process-tracking-item-content">
<ion-item lines="full" class="item">
<ion-label class="label" slot="start">
处理完成时间:
</ion-label>
<span class="text">{{item.actiontime}}</span>
</ion-item>
<ion-item lines="full" class="item">
<ion-label class="label" slot="start">
处理环节:
</ion-label>
<span class="text">{{item.wfplogicname}}</span>
</ion-item>
<ion-item lines="full" class="item">
<ion-label class="label" slot="start">
处理人:
</ion-label>
<span class="text">{{item.actorname}}</span>
</ion-item>
<ion-item lines="full" class="item">
<ion-label class="label" slot="start">
提交路径:
</ion-label>
<span class="text">{{item.wfstepdataname}}</span>
</ion-item>
</ion-label>
</ion-item>
</ion-card-content>
</ion-card>
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
.ibiz-process-tracking {
margin: 0px;
padding: 0px;
box-shadow: 0px 0px 0px black;
.ibiz-process-tracking-header {
ion-avatar {
padding: 5px;
}
ion-icon {
width: 100%;
height: 100%;
}
}
.ibiz-process-tracking-content {
padding: 0px;
.ibiz-process-tracking-item {
display: flex;
ion-avatar {
height: 100%;
margin-right: 16px;
}
.ibiz-process-tracking-item-content {
border: 1px solid #c8c7cc;
.item {
ion-label {
margin: 5px 10px 5px 5px;
}
}
}
.line {
border-left: 3px dashed #808080;
position: relative;
left: 50%;
height: 100%;
.circle {
width: 26px;
height: 26px;
border-radius: 50%;
border: 3px solid #54B9D1;
position: absolute;
top: 8%;
left: calc(-50% + 1px);
background: white;
.inner-circle {
width: 16px;
height: 16px;
margin: 2px;
border-radius: 50%;
position: absolute;
}
.bc {
background: #54B9D1;
}
}
}
.label {
font-size: var(--ibiz-auxiliary-font-size);
font-weight: bold;
}
.text {
font-size: var(--ibiz-secondary-font-size);
color: gray;
}
}
}
}
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPWFSTEPDATAVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizAppWFStepTraceViewController' />
import { ${viewContorllerName}, IBizViewOptions } from 'ibizsys';
export class ${srfclassname('${view.codeName}')}Base extends ${viewContorllerName} {
/**
* Creates an instance of ${srfclassname('${view.codeName}')}Base.
* @param {IBizViewOptions} opts
* @memberof ${srfclassname('${view.codeName}')}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ng-container *ngIf="!isEmbeddedView(); else embeddedView">
<#ibizinclude>../../@MACRO/VIEW_HTML_NO_UIACTION_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-${view.getViewType()?lower_case}">
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ion-content>
</ng-container>
<ng-template #embeddedView>
<ng-container *ngTemplateOutlet="viewContent"></ng-container>
</ng-template>
<ng-template #viewContent>
应用流程跟踪视图
</ng-template>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPWFSTEPTRACEVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizLoginViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<ion-content class="ibiz-view-content ibiz-login-view ibiz-apploginview" padding color="dark">
<div padding class="ibiz-login-view-title">
欢迎使用
</div>
<ion-grid padding>
<ion-row style="margin-top: 1rem;">
<ion-input type="text" placeholder="请输入用户名/手机号" [(ngModel)]="username" [clearInput]="true"></ion-input>
</ion-row>
<ion-row style="margin-top: 1.5rem;">
<ion-input type="password" inputmode="password" placeholder="请输入密码" [(ngModel)]="password" [clearInput]="true"></ion-input>
</ion-row>
</ion-grid>
<div padding style="margin-top: 1rem;">
<ion-button [disabled]="(username.length === 0 || password.length === 0) ? true : false" class="login-button" color="medium"
expand="block" (click)="login()">登录</ion-button>
</div>
<div padding style="padding-top: 0px">
<ion-text color="light" (click)="registerAccount()">注册账号</ion-text>
<ion-text style="float: right;color: #666;" (click)="modifyPassword()">忘记密码?</ion-text>
</div>
</ion-content>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { ShareModule } from '@share/share.module';
import { ${srfclassname('${view.codeName}')} } from './${filename('${view.codeName}')}';
@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: ${srfclassname('${view.codeName}')}
}
])
],
exports: [
RouterModule
]
})
export class ${srfclassname('${view.codeName}')}RouteModule { }
@NgModule({
imports: [
ShareModule,
${srfclassname('${view.codeName}')}RouteModule
],
declarations: [
${srfclassname('${view.codeName}')}
],
entryComponents: [
${srfclassname('${view.codeName}')}
],
exports: [
${srfclassname('${view.codeName}')}
]
})
export class ${srfclassname('${view.codeName}')}Module { }
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
.ibiz-login-view {
ion-row {
border-bottom: 1px solid #d3d3d3;
}
.ibiz-login-view-title {
padding: 0px 16px;
font-size: 20px;
font-weight: bold;
}
}
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPLOGINVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControlCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROL.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizPortalViewController' />
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_HEADER.ftl</#ibizinclude>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER_BASE_END.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_HTML_HEADER.ftl</#ibizinclude>
<ion-content class="ibiz-view-content ibiz-portal ibiz-${view.getViewType()?lower_case}"<#if view.getUIStyle()?? && view.getUIStyle() == "STYLE2"> [fullscreen]="true"</#if>>
<#if dashboard??>
${dashboard.code}
</#if>
</ion-content>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_MODULE.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPPORTALVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_CONTROLLER.ftl</#ibizinclude>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4IndexViewViewCode
</#ibiztemplate>
<#assign viewContorllerName = 'IBizIndexViewController' />
import { ${viewContorllerName}, IBizViewOptions, IBizUICounter } from 'ibizsys';
export class ${srfclassname('${view.codeName}')}Base extends ${viewContorllerName} {
/**
* Creates an instance of ${srfclassname('${view.codeName}')}Base.
* @param {IBizViewOptions} opts
* @memberof ${srfclassname('${view.codeName}')}Base
*/
constructor(opts: IBizViewOptions) {
super(opts);
}
<#if view.getPSSysCounterRefs()??>
<#if iteratorlength(view.getPSSysCounterRefs()) gt 0>
/**
* 注册计数器
*
* @memberof ${view.codeName}Base
*/
public regUICounters(): void {
<#list view.getPSSysCounterRefs() as syscounterref>
<#assign syscounter=syscounterref.getPSSysCounter()>
const ${syscounter.getCodeName()} = new IBizUICounter({
viewController: this,
name: '${syscounter.getCodeName()}',
counterId: '${syscounter.id}',
tag: '${syscounterref.tag}',
counterParam: ${syscounterref.getRefMode().toString()},
timer: ${syscounter.timer?c},
url: this.getBackendUrl()
});
this.regUICounter('${syscounter.getCodeName()}', ${syscounter.getCodeName()});
</#list>
}
</#if>
</#if>
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4IndexViewViewCode
</#ibiztemplate>
<ion-tabs>
<ion-tab-bar slot="bottom">
<#list view.getPSAppMenu().getPSAppMenuItems() as item>
<#if item.getPSAppFunc()?? && item.getPSAppFunc().getAppFuncType() == 'APPVIEW' && item.getPSAppFunc().getPSAppView()??>
<#assign funcview= item.getPSAppFunc().getPSAppView()>
<ion-tab-button tab="${funcview.getCodeName()?lower_case}">
<#if item.getPSSysImage()??>
<ion-icon name="<#if item.getPSSysImage().getCssClass() != "">${item.getPSSysImage().getCssClass()}<#else>home</#if>"<#if item.getPSSysImage().getImagePath() != ""> src="${item.getPSSysImage().getImagePath()}"</#if>></ion-icon>
<#else>
<ion-icon name="home"></ion-icon>
</#if>
<ion-label>${item.getCaption()}</ion-label>
<#if view.getPSAppMenu().getPSSysCounter()?? && item.getCounterId()??> <ion-badge color="danger">{{ getUICounterNum('${view.getPSAppMenu().getPSSysCounter().getCodeName()}', '${item.getCounterId()!''}') }}</ion-badge></#if>
</ion-tab-button>
</#if>
</#list>
</ion-tab-bar>
</ion-tabs>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4IndexViewViewCode
</#ibiztemplate>
import { Routes, RouterModule } from '@angular/router';
import { NgModule } from '@angular/core';
import { ShareModule } from '@share/share.module';
import { AuthGuard } from 'ibizsys';
import { ${srfclassname('${view.codeName}')} } from './${filename('${view.codeName}')}';
<#list view.getPSAppMenu().getPSAppMenuItems() as item>
<#if item.getPSAppFunc()?? && item.getPSAppFunc().getAppFuncType() == 'APPVIEW' && item.getPSAppFunc().getPSAppView()??>
<#assign funcview= item.getPSAppFunc().getPSAppView()>
<#if item.isOpenDefault()><#assign defaultOpenView = funcview></#if>
</#if>
</#list>
const routes: Routes = [
{
path: '',
redirectTo: '${view.getPSAppModule().codeName?lower_case}_${view.codeName?lower_case}',
pathMatch: 'full'
},
{
path: '${view.getPSAppModule().codeName?lower_case}_${view.codeName?lower_case}',
component: ${srfclassname('${view.codeName}')},
canActivate: [AuthGuard],
data: { backendurl: '/${app.getPKGCodeName()}/${view.getPSAppModule().codeName}/${view.codeName}.do', accessMode: ${view.getAccUserMode()} },
children: [
<#if defaultOpenView??> {
path: '',
redirectTo: '${defaultOpenView.codeName?lower_case}',
pathMatch: 'full',
},</#if>
<#list view.getPSAppMenu().getPSAppMenuItems() as item>
<#if item.getPSAppFunc()?? && item.getPSAppFunc().getAppFuncType() == 'APPVIEW' && item.getPSAppFunc().getPSAppView()??>
<#assign funcview= item.getPSAppFunc().getPSAppView()>
{
path: '${funcview.codeName?lower_case}',
children: [
{
path: '',
loadChildren: '@pages/${filename('${funcview.getPSAppModule().codeName}')}/${filename('${funcview.codeName}')}/${filename('${funcview.codeName}')}.module#${srfclassname('${funcview.codeName}')}Module'
}
]
},
</#if>
</#list>
]
}
];
@NgModule({
imports: [
RouterModule.forChild(routes)
],
exports: [
RouterModule
]
})
export class ${srfclassname('${view.codeName}')}RouteModule { }
@NgModule({
imports: [
ShareModule,
${srfclassname('${view.codeName}')}RouteModule
],
declarations: [${srfclassname('${view.codeName}')}]
})
export class ${srfclassname('${view.codeName}')}Module { }
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4ViewControllerCode
</#ibiztemplate>
<#ibizinclude>../../@MACRO/VIEW_SCSS.ftl</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPINDEXVIEW
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4AppDefaultPageCode
TARGET=PSSYSAPP
</#ibiztemplate>
import { Injectable } from '@angular/core';
import { IBizApp } from 'ibizsys';
@Injectable({ providedIn: 'root' })
export class AppInitService {
/**
* Creates an instance of AppInitService.
* @param {IBizApp} iBizApp
* @memberof AppInitService
*/
constructor(private iBizApp: IBizApp) {
this.init();
}
/**
* 初始化
*
* @private
* @memberof AppInitService
*/
private init(): void {
<#if defaultview??> this.iBizApp.regFunctionPage('default', '/${defaultview.getPSAppModule().codeName?lower_case}_${defaultview.codeName?lower_case}');</#if>
<#if app.getAllPSAppUtilPages()??>
<#list app.getAllPSAppUtilPages() as page>
<#-- 类型为应用视图 -->
<#if page.getTargetType() == "APPVIEW">
<#assign view = page.getPSAppView()>
this.iBizApp.regFunctionPage('${page.getName()?lower_case}', '/${view.getPSAppModule().codeName?lower_case}_${view.codeName?lower_case}');
</#if>
</#list>
</#if>
}
}
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4AppDefaultPageCode
TARGET=PSSYSAPP
</#ibiztemplate>
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
<#if defaultview??>
const routes: Routes = [
{
path: '',
loadChildren: '@pages/${filename('${defaultview.getPSAppModule().codeName}')}/${filename('${defaultview.codeName}')}/${filename('${defaultview.codeName}')}.module#${srfclassname('${defaultview.codeName}')}Module'
},
<#-- 是否只发布引用视图 -->
<#if app.isPubRefViewOnly()>
<#-- 所有系统已算出的引用视图 -->
<#assign allView = app.getAllRefPSAppViews()>
<#else>
<#-- 所有系统视图 -->
<#assign allView = app.getAllPSAppViews()>
</#if>
<#if allView??>
<#list allView as view>
<#if view.isRedirectView() != true && (view.codeName != defaultview.codeName) && view.isPickupView() != true>
{
path: '${view.getPSAppModule().codeName?lower_case}_${view.codeName?lower_case}',
loadChildren: '@pages/${filename('${view.getPSAppModule().codeName}')}/${filename('${view.codeName}')}/${filename('${view.codeName}')}.module#${srfclassname('${view.codeName}')}Module'
},
</#if>
</#list>
</#if>
{
path: '**',
redirectTo: '',
pathMatch: 'full'
}
];
<#else>
const routes: Routes = [];
window.alert('请配置系统默认页');
</#if>
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4AppCreateAppBat
TARGET=PSSYSAPP
</#ibiztemplate>
// 应用配置
export const IBizEnvironment = {
// 应用基础路径
BaseUrl: '..',
// 应用名称
AppName: '${app.getName()}',
// 应用程序登录模式。(default: 远程登录)(uac: 单点登录)(session: 会话)
LoginModel: <#if app.isEnableUACLogin()>'uac'<#else>'default'</#if>,
// 单点登录,跳转地址
UacLogin: '/uacclient/uaclogin.do',
// 远程登录地址,本地开发调试使用
RemoteLogin: '/api/login',
// 表单项权限标记(true or false)
formItemPrivTag: <#if app.getPSApplicationUI().isOutputFormItemUpdatePrivTag()??>${app.getPSApplicationUI().isOutputFormItemUpdatePrivTag()?c}<#else>flase</#if>,
// 表单项无权限显示模式(1: 显示空、*或内容, 2: 隐藏)
formItemNoPrivDisplayMode: ${app.getPSApplicationUI().getFormItemNoPrivDisplayMode()},
<#if sys.getPSSFId() == "DOTNETCORE">
// session失效后后台登陆重定向 .NET 版
LoginRedirect: '/ibizutil/login.html',
// 登陆地址,session、权限等管理 .NET 版
AppLogin: '/ibizutil/login.do',
// 退出登录,注销session .NET 版
Logout: '/ibizutil/logout',
// 初始化系统,超级管理员账号等 .NET 版
InitSystemEnv: '/ibizutil/initsystemenv.do',
// 安装系统环境数据 .NET 版
InstallRTData: '/ibizutil/installrtdata.do',
// PDF文件打印 .NET 版
PDFPrint: '/ibizutil/print.pdf',
// PDF报表文件 .NET 版
PDFReport: '/ibizutil/report.pdf',
// 文件导出 .NET 版
ExportFile: '/ibizutil/exportfile',
// 文件导出 .NET 版
ExportFile2: '/ibizutil/exportfile2',
// 文件导出 .NET 版
ExportFile3: '/ibizutil/exportfile3',
// 文件上传 .NET 版
UploadFile: '/ibizutil/uploadfile.do',
// 导出实体数据导入模板 .NET 版
ExportExcel: '/ibizutil/exportexcel',
// 文件上传 .NET 版
UploadDEData: '/ibizutil/uploaddedata.do',
<#elseif sys.getPSSFId() == "J2EE6">
// session失效后后台登陆重定向
LoginRedirect: '/${app.getPKGCodeName()?lower_case}/ibizutil/login.html',
// 登陆地址,session、权限等管理
AppLogin: '/${app.getPKGCodeName()?lower_case}/ibizutil/login.do',
// 退出登录,注销session
Logout: '/${app.getPKGCodeName()?lower_case}/ibizutil/logout',
// 初始化系统,超级管理员账号等
InitSystemEnv: '/${app.getPKGCodeName()?lower_case}/ibizutil/initsystemenv.do',
// 安装系统环境数据
InstallRTData: '/${app.getPKGCodeName()?lower_case}/ibizutil/installrtdata.do',
// PDF文件打印
PDFPrint: '/${app.getPKGCodeName()?lower_case}/ibizutil/print.pdf',
// PDF报表文件
PDFReport: '/${app.getPKGCodeName()?lower_case}/ibizutil/report.pdf',
// 文件导出
ExportFile: '/${app.getPKGCodeName()?lower_case}/ibizutil/exportfile',
// 文件导出
ExportFile2: '/${app.getPKGCodeName()?lower_case}/ibizutil/exportfile2',
// 文件导出
ExportFile3: '/${app.getPKGCodeName()?lower_case}/ibizutil/exportfile3',
// 文件上传
UploadFile: '/${app.getPKGCodeName()?lower_case}/ibizutil/uploadfile.do',
// 导出实体数据导入模板
ExportExcel: '/${app.getPKGCodeName()?lower_case}/ibizutil/exportexcel',
// 文件上传
UploadDEData: '/${app.getPKGCodeName()?lower_case}/ibizutil/uploaddedata.do',
</#if>
};
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4AppCreateAppBat
TARGET=PSSYSAPP
</#ibiztemplate>
<#comment>关闭回显并开启变量延迟。</#comment>
@echo off&setlocal ENABLEDELAYEDEXPANSION
<#if !pub.isUseWorkshopServer() >
<#comment>脚本执行日志路径。</#comment>
<#assign outputlog= " > " + codefolder+"\\"+sys.getPSDevCenterDomain()+"\\"+sys.getPubSystemId()+"\\"+sys.getVCName()+"\\"+"app_"+app.getPKGCodeName()+"\\run.log">
<#assign outputlog2= " > " + codefolder+"\\"+sys.getPSDevCenterDomain()+"\\"+sys.getPubSystemId()+"\\"+sys.getVCName()+"\\"+"app_"+app.getPKGCodeName()+"\\">
<#assign workshop="workshop">
<#if sys.getPSSVNInstRepo()?? && sys.getPSSVNInstRepo().getSVNType() =="GIT">
<#assign workshop="gitshop">
</#if>
<#assign ibizsys_base_file = '${app.getPFType()}'>
<#if pfstyle.getVersionString()?? && (pfstyle.getVersionString() != '')>
<#assign ibizsys_base_file += '-${pfstyle.getVersionString()}'>
</#if>
<#comment>
rem ---------------------------------------------------------------------------
rem publisher 前端应用发布器PSJQAppCreateAppBatPublisherImpl
rem app 前端应用
rem sys 后台服务系统
rem pf 前端应用技术体系
rem pfstyle 前端应用样式
rem apptempl 应用模板
rem toolfolder 发布工具目录路径
rem codefolder 发布代码根目录路径
rem ---------------------------------------------------------------------------
</#comment>
<#comment> 建立前端应用相关工作空间目录。</#comment>
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\build
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src\src
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\src
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_usr
mkdir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_usr\src
<#comment> 为发布代码添加归档标记,便于后续文件的判别处理,如增量更新、文件增量修改的版本库提交等。</#comment>
attrib +A ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\WEB\*.* /S
attrib +A ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\APP\*.* /S
attrib +A ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\USERCODE\APP_PUB\*.* /S
<#comment> 拷贝自动发布代码到合成项目。</#comment>
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\WEB\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src\src /I/E/Y/D ${outputlog}
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\APP\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src\src /I/E/Y/D ${outputlog}
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\USERCODE\APP_PUB\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src /I/E/Y ${outputlog}
<#comment> 实现合成项目中文件(大小写差异)改名功能。实现原理:需要该名称的文件会追加.rename后缀,第一个for查询改名的文件并删除,第二个for查处对应的文件去掉.rename后缀。
for /f "delims=" %%i in ('dir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\*.rename /b /s') do set info=%%i&del !info:~0,-7! /F/Q
for /f "delims=" %%i in ('dir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\*.rename /b /s') do set info=%%i&move /Y !info! !info:~0,-7!
</#comment>
<#if publisher.getContext().isRebuildMode()>
<#comment> 重构模式</#comment>
<#comment> pub项目取消归档标记</#comment>
attrib -A ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\src\*.* /S
<#comment> 完全拷贝前端初始化代码相关文件。</#comment>
xcopy ${toolfolder}\APP\${ibizsys_base_file}\APP\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src /E/Y ${outputlog}
<#if sys.getPSSVNInstRepo()??>
xcopy ${toolfolder}\APP\${ibizsys_base_file}\APP\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub /E/Y ${outputlog}
</#if>
<#comment> 拷贝自动发布代码到pub项目</#comment>
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\WEB\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\src /E/Y/D ${outputlog}
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\APP\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\src /E/Y/D ${outputlog}
<#comment> 拷贝用户自定义文件到pub项目</#comment>
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\USERCODE\APP_PUB\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub /I/E/Y ${outputlog}
<#comment> 实现pub项目文件改名功能。实现原理同上。</#comment>
for /f "delims=" %%i in ('dir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\*.rename /b /s') do set info=%%i&del !info:~0,-7! /F/Q
for /f "delims=" %%i in ('dir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\*.rename /b /s') do set info=%%i&move /Y !info! !info:~0,-7!
<#if publisher.context.isEnableVC() && (sys.getPSSVNInstRepo().getSVNType()=="GIT")>
<#comment> 指定了版本库,将pub和usr代码与版本库同步。</#comment>
"${toolfolder}\jdk1.8\bin\java.exe" -cp ${toolfolder}\js\saibz5.jar net.ibizsys.paas.builder.GitHelper ${sys.getPSSVNInstRepo().getPSGitUser().getResCfgFilePath()} ${sys.getPSSVNInstRepo().getGitPath()} ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub APP_PUB
"${toolfolder}\jdk1.8\bin\java.exe" -cp ${toolfolder}\js\saibz5.jar net.ibizsys.paas.builder.GitHelper ${sys.getPSSVNInstRepo().getPSGitUser().getResCfgFilePath()} ${sys.getPSSVNInstRepo().getGitPath()} ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_usr APP_USR
<#elseif publisher.context.isEnableVC() && (sys.getPSSVNInstRepo().getSVNType()=="SVN")>
"${toolfolder}\java\bin\java.exe" -cp ${toolfolder}\js\saibz5.jar net.ibizsys.paas.builder.SvnCmd3 ${sys.getReadOnlyPSSVNInstRepo().getConnStr()}/${sys.getPSDevSlnCodeName()}/${sys.getTrunkSysName()}/${sys.getVCName()} ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub APP_PUB <#if publisher.context.getRebuildModeEx()!=2>REBUILD</#if>
"${toolfolder}\java\bin\java.exe" -cp ${toolfolder}\js\saibz5.jar net.ibizsys.paas.builder.SvnCmd3 ${sys.getPSSVNInstRepo().getConnStr()}/${sys.getPSDevSlnCodeName()}/${sys.getTrunkSysName()}/${sys.getVCName()} ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_usr APP_USR
</#if>
<#comment> 拷贝usr代码到合成项目</#comment>
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_usr\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()} /I/E/Y ${outputlog}
<#else>
<#comment> 标准发布</#comment>
<#comment> 增量拷贝初始文件</#comment>
xcopy ${toolfolder}\APP\${ibizsys_base_file}\APP\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src /E/Y/D ${outputlog}
<#if sys.getPSSVNInstRepo()??>
xcopy ${toolfolder}\APP\${ibizsys_base_file}\APP\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub /E/Y/D ${outputlog}
</#if>
<#comment> 拷贝自动发布代码到pub项目</#comment>
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\WEB\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\src /E/Y/D ${outputlog}
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\APP\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\src /E/Y/D ${outputlog}
<#comment> 拷贝用户自定义文件到pub项目</#comment>
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\USERCODE\APP_PUB\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub /I/E/Y ${outputlog}
<#comment> 实现pub项目文件改名功能。实现原理同上。</#comment>
for /f "delims=" %%i in ('dir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\*.rename /b /s') do set info=%%i&del !info:~0,-7! /F/Q
for /f "delims=" %%i in ('dir ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub\*.rename /b /s') do set info=%%i&move /Y !info! !info:~0,-7!
<#comment> 如果指定了版本库,将pub和usr代码与版本库同步。</#comment>
<#if publisher.context.isEnableVC() && (sys.getPSSVNInstRepo().getSVNType()=="GIT")>
"${toolfolder}\jdk1.8\bin\java.exe" -cp ${toolfolder}\js\saibz5.jar net.ibizsys.paas.builder.GitHelper ${sys.getPSSVNInstRepo().getPSGitUser().getResCfgFilePath()} ${sys.getPSSVNInstRepo().getGitPath()} ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub APP_PUB
"${toolfolder}\jdk1.8\bin\java.exe" -cp ${toolfolder}\js\saibz5.jar net.ibizsys.paas.builder.GitHelper ${sys.getPSSVNInstRepo().getPSGitUser().getResCfgFilePath()} ${sys.getPSSVNInstRepo().getGitPath()} ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_usr APP_USR
<#elseif publisher.context.isEnableVC() && (sys.getPSSVNInstRepo().getSVNType()=="SVN")>
"${toolfolder}\java\bin\java.exe" -cp ${toolfolder}\js\saibz5.jar net.ibizsys.paas.builder.SvnCmd3 ${sys.getReadOnlyPSSVNInstRepo().getConnStr()}/${sys.getPSDevSlnCodeName()}/${sys.getTrunkSysName()}/${sys.getVCName()} ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_pub APP_PUB
"${toolfolder}\java\bin\java.exe" -cp ${toolfolder}\js\saibz5.jar net.ibizsys.paas.builder.SvnCmd3 ${sys.getPSSVNInstRepo().getConnStr()}/${sys.getPSDevSlnCodeName()}/${sys.getTrunkSysName()}/${sys.getVCName()} ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_usr APP_USR
</#if>
<#comment> 拷贝usr代码到合成项目</#comment>
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}_usr\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src /E/Y ${outputlog}
</#if>
<#comment> 删除合成项目中.rename后缀的文件</#comment>
del ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\*.rename /S/Q/F ${outputlog}
<#if !syspub.isPubCodeOnly()>
<#comment> 判断是否远程打包</#comment>
<#if !sys.getPSDeployServer()??>
<#comment> 不存在远程打包服务器</#comment>
<#comment> 编译合成项目</#comment>
<#assign ionic4_build="build">
<#if sysrun.getRunPSDynaModel()?? >
<#list sysrun.getRunPSDynaModel().getPSDynaModelAttrs() as attr>
<#if attr.getName()=="ionic4_build">
<#assign ionic4_build=attr.getValue()>
</#if>
</#list>
</#if>
chdir /D ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src\
call ${toolfolder}\Yarn\bin\yarn
call ${toolfolder}\Yarn\bin\yarn ${ionic4_build}
if exist ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src\www\ (
echo IONIC_BUILD_SUCCESS
) else (
echo IONIC_BUILD_ERROR
)
ping -n 3 127.0.0.1>nul
<#comment>删除历史编译文件</#comment>
del ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\build\*.* /S/F/Q ${outputlog}
<#comment>拷贝合成项目编译结果到构建目录</#comment>
xcopy ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\src\www\*.* ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${workshop}\app_${app.getPKGCodeName()}\build /E/Y ${outputlog2}run_www.log
</#if>
</#if>
<#else>
echo Remotepack Mode
</#if>
\ No newline at end of file
<#ibiztemplate>
PUBOBJ=Ionic4.PSIonic4AppCode
TARGET=PSSYSAPP
</#ibiztemplate>
<#if !pub.isUseWorkshopServer() >
<#comment>脚本执行日志路径。</#comment>
<#assign outputlog= " > " + codefolder+"\\"+sys.getPSDevCenterDomain()+"\\"+sys.getPubSystemId()+"\\"+sys.getVCName()+"\\"+"app_"+app.getPKGCodeName()+"\\run.log">
<#if publisher.getContext().isRebuildMode()>
rem 清理发布的jsp文件
del ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\WEB\*.* /S/F/Q ${outputlog}
rd ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\WEB /S/Q ${outputlog}
rem 清理发布的js文件
del ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\JS\*.* /S/F/Q ${outputlog}
rd ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\JS /S/Q ${outputlog}
rem 清理发布的扩展js文件
del ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\JS2\*.* /S/F/Q ${outputlog}
rd ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\JS2 /S/Q ${outputlog}
rem 清理发布的资源文件
del ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\APP\*.* /S/F/Q ${outputlog}
rd ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\APP /S/Q ${outputlog}
rem 清理用户自定义发布文件
del ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\USERCODE\APP_PUB\*.* /S/F/Q ${outputlog}
rd ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\${sys.getVCName()}\app_${app.getPKGCodeName()}\USERCODE\APP_PUB /S/Q ${outputlog}
rem 清理合成项目文件
del ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\workshop\app_${app.getPKGCodeName()}\src\src\*.* /S/F/Q ${outputlog}
rd ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\workshop\app_${app.getPKGCodeName()}\src\src /S/Q ${outputlog}
<#if publisher.getContext().getRebuildModeEx()==2>
rem 完整重构
<#if publisher.getContext().isEnableVC()>
rem 删除pub的版本库项目
"${toolfolder}\java\bin\java.exe" -cp ${toolfolder}\js\saibz5.jar net.ibizsys.paas.builder.SvnCmd3 ${sys.getReadOnlyPSSVNInstRepo().getConnStr()}/${sys.getPSDevSlnCodeName()}/${sys.getTrunkSysName()}/${sys.getVCName()} ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\workshop\app_${app.getPKGCodeName()}_pub REMOVE
</#if>
rem 清理pub项目文件
move /Y ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\workshop\app_${app.getPKGCodeName()}_pub ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\workshop\app_${sys.getPubSystemId()}
del ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\workshop\app_${sys.getPubSystemId()}\*.* /S/F/Q ${outputlog}
rd ${codefolder}\${sys.getPSDevCenterDomain()}\${sys.getPubSystemId()}\workshop\app_${sys.getPubSystemId()} /S/Q ${outputlog}
</#if>
</#if>
</#if>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册