提交 da0ab26b 编写于 作者: tony001's avatar tony001

解决冲突

上级 2ea3e1a6
<template> <template>
<div class='dashboard'> <div class='dashboard'>
<row v-if="isEnableCustomized"> <row v-if="isEnableCustomized">
<app-build @handleClick="handleClick"></app-build> <app-build @handleClick="handleClick"></app-build>
</row> </row>
<row v-if="!isHasCustomized"> <row v-if="!isHasCustomized">
<#list ctrl.getPSPortlets() as portlet><#t> <#list ctrl.getPSPortlets() as portlet><#t>
<#if portlet.getPortletType?? && portlet.getPortletType()??><#t> <#if portlet.getPortletType?? && portlet.getPortletType()??><#t>
<#assign layout='TABLE_24COL'><#if portlet.getPSLayoutPos()??><#if portlet.getPSLayoutPos().getParentPSLayout()??><#assign layout='${portlet.getPSLayoutPos().getParentPSLayout().getLayout()}'></#if></#if><#t> <#assign layout='TABLE_24COL'><#if portlet.getPSLayoutPos()??><#if portlet.getPSLayoutPos().getParentPSLayout()??><#assign layout='${portlet.getPSLayoutPos().getParentPSLayout().getLayout()}'></#if></#if><#t>
<#assign LayoutPos = portlet.getPSLayoutPos()><#t> <#assign LayoutPos = portlet.getPSLayoutPos()><#t>
<#if portlet_index == 0 > <#if portlet_index == 0 >
<#list ctrl.getPSPortlets() as container><#t> <#list ctrl.getPSPortlets() as container><#t>
<#if container.getPortletType() == 'CONTAINER' && layout == 'FLEX'> <#if container.getPortletType() == 'CONTAINER' && layout == 'FLEX'>
<#assign flexLayout = container.getPSLayout()><#t> <#assign flexLayout = container.getPSLayout()><#t>
</#if> </#if>
</#list> </#list>
<div style = '<#if layout == 'FLEX' > display : flex; justify-content : ${flexLayout.getAlign()}; flex-direction:${flexLayout.getDir()} ;align-items:${flexLayout.getVAlign()};flex-wrap: wrap;</#if>'> <div style = '<#if layout == 'FLEX' > display : flex; justify-content : ${flexLayout.getAlign()}; flex-direction:${flexLayout.getDir()} ;align-items:${flexLayout.getVAlign()};flex-wrap: wrap;</#if>'>
</#if> </#if>
<#if layout == 'TABLE_24COL' && LayoutPos??><#t> <#if layout == 'TABLE_24COL' && LayoutPos??><#t>
<i-col<#if LayoutPos.getColXS() != -1> :xs="{ span: ${LayoutPos.getColXS()}, offset: <#if LayoutPos.getColXSOffset() != -1>${LayoutPos.getColXSOffset()}<#else>0</#if>}"</#if><#if LayoutPos.getColSM() != -1> :sm="{ span: ${LayoutPos.getColSM()}, offset: <#if LayoutPos.getColSMOffset() != -1>${LayoutPos.getColSMOffset()}<#else>0</#if>}"</#if><#if LayoutPos.getColMD() != -1> :md="{ span: ${LayoutPos.getColMD()}, offset: <#if LayoutPos.getColMDOffset() != -1>${LayoutPos.getColMDOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColLG() != -1> :lg="{ span: ${LayoutPos.getColLG()}, offset: <#if LayoutPos.getColLGOffset() != -1>${LayoutPos.getColLGOffset()}<#else>0</#if> }"</#if>> <i-col<#if LayoutPos.getColXS() != -1> :xs="{ span: ${LayoutPos.getColXS()}, offset: <#if LayoutPos.getColXSOffset() != -1>${LayoutPos.getColXSOffset()}<#else>0</#if>}"</#if><#if LayoutPos.getColSM() != -1> :sm="{ span: ${LayoutPos.getColSM()}, offset: <#if LayoutPos.getColSMOffset() != -1>${LayoutPos.getColSMOffset()}<#else>0</#if>}"</#if><#if LayoutPos.getColMD() != -1> :md="{ span: ${LayoutPos.getColMD()}, offset: <#if LayoutPos.getColMDOffset() != -1>${LayoutPos.getColMDOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColLG() != -1> :lg="{ span: ${LayoutPos.getColLG()}, offset: <#if LayoutPos.getColLGOffset() != -1>${LayoutPos.getColLGOffset()}<#else>0</#if> }"</#if>>
<card class="portlet-card" :bordered="false" dis-hover :padding="0"> <card class="portlet-card" :bordered="false" dis-hover :padding="0">
<#if portlet.isShowTitleBar() && portlet.getTitle()?has_content> <#if portlet.isShowTitleBar() && portlet.getTitle()?has_content>
<p slot='title'> <p slot='title'>
${portlet.getTitle()} ${portlet.getTitle()}
<span class="line"></span> <span class="line"></span>
</p> </p>
<a slot='extra'></a> <a slot='extra'></a>
</#if> </#if>
<span> <span>
<@ibizindent blank=10><#t> <@ibizindent blank=10><#t>
${P.getCtrlCode(portlet, 'CONTROL.html').code} ${P.getCtrlCode(portlet, 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
</span> </span>
</card> </card>
</i-col> </i-col>
<#else> <#else>
<card class="portlet-card" :bordered="false" dis-hover :padding="0"> <card class="portlet-card" :bordered="false" dis-hover :padding="0">
<#if portlet.isShowTitleBar() && portlet.getTitle()?has_content><#t> <#if portlet.isShowTitleBar() && portlet.getTitle()?has_content><#t>
<p slot='title'> <p slot='title'>
${portlet.getTitle()} ${portlet.getTitle()}
</p> </p>
<a slot='extra'></a> <a slot='extra'></a>
</#if> </#if>
<span> <span>
<@ibizindent blank=10><#t> <@ibizindent blank=10><#t>
${P.getCtrlCode(portlet, 'CONTROL.html').code} ${P.getCtrlCode(portlet, 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
</span> </span>
</card> </card>
</#if> </#if>
<#if layout == 'FLEX'> <#if layout == 'FLEX'>
<card class="portlet-card" :bordered="false" dis-hover :padding="0"> <card class="portlet-card" :bordered="false" dis-hover :padding="0">
<#if portlet.isShowTitleBar() && portlet.getTitle()?has_content><#t> <#if portlet.isShowTitleBar() && portlet.getTitle()?has_content><#t>
<p slot='title'> <p slot='title'>
${portlet.getTitle()} ${portlet.getTitle()}
</p> </p>
<a slot='extra'></a> <a slot='extra'></a>
</#if> </#if>
<span> <span>
<@ibizindent blank=10><#t> <@ibizindent blank=10><#t>
${P.getCtrlCode(portlet, 'CONTROL.html').code} ${P.getCtrlCode(portlet, 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
</span> </span>
</card> </card>
</#if> </#if>
<#if !portlet_has_next> <#if !portlet_has_next>
</div> </div>
</#if> </#if>
</#if> </#if>
</#list> </#list>
</row> </row>
<row v-if="isHasCustomized" style="width: 100%;min-height: calc(100% - 40px);"> <row v-if="isHasCustomized" style="width: 100%;min-height: calc(100% - 40px);">
<div class="portlet-container" style="position: relative;width:100%;"> <div class="portlet-container" style="position: relative;width:100%;">
<template v-for="(item, index) of modelDta"> <template v-for="(item, index) of modelDta">
<#noparse><div :key="index" :style="{zIndex: 10, position: 'absolute', height: item.h*layoutRowH + 'px', width: `calc(100% / ${layoutColNum} * ${item.w})`,top: item.y*layoutRowH + 'px', left: `calc(100% / ${layoutColNum} * ${item.x})`}"></#noparse> <#noparse><div :key="index" :style="{zIndex: 10, position: 'absolute', height: item.h*layoutRowH + 'px', width: `calc(100% / ${layoutColNum} * ${item.w})`,top: item.y*layoutRowH + 'px', left: `calc(100% / ${layoutColNum} * ${item.x})`}"></#noparse>
<component :key="$util.createUUID()" :is="item.componentName" :name="item.portletCodeName" :context="JSON.parse(JSON.stringify(context))" :viewDefaultUsage="false" :isAdaptiveSize="true" :viewState="viewState"></component> <component :key="$util.createUUID()" :is="item.componentName" :name="item.portletCodeName" :context="JSON.parse(JSON.stringify(context))" :viewDefaultUsage="false" :isAdaptiveSize="true" :viewState="viewState"></component>
</div> </div>
</template> </template>
</div> </div>
</row> </row>
</div> </div>
</template> </template>
<#assign import_block> <#assign import_block>
import UtilService from '@/utilservice/util-service'; import UtilService from '@/utilservice/util-service';
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
/** /**
* 是否支持看板定制 * 是否支持看板定制
* *
* @protected * @protected
* @type {(boolean)} * @type {(boolean)}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
@Prop() protected isEnableCustomized!:boolean; @Prop() protected isEnableCustomized!:boolean;
/** /**
* 是否已有看板定制 * 是否已有看板定制
* *
* @protected * @protected
* @type {(boolean)} * @type {(boolean)}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected isHasCustomized:boolean = false; protected isHasCustomized:boolean = false;
/** /**
* 模型数据 * 模型数据
* *
* @protected * @protected
* @type {(*)} * @type {(*)}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected modelDta:any; protected modelDta:any;
/** /**
* modleId * modleId
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected modelId:string = "dashboard_<#if ctrl.getPSAppDataEntity()??>${ctrl.getPSAppDataEntity().getCodeName()?lower_case}<#else>app</#if>_${ctrl.getCodeName()?lower_case}"; protected modelId:string = "dashboard_<#if ctrl.getPSAppDataEntity()??>${ctrl.getPSAppDataEntity().getCodeName()?lower_case}<#else>app</#if>_${ctrl.getCodeName()?lower_case}";
/** /**
* 建构功能服务对象 * 建构功能服务对象
* *
* @type {UtilService} * @type {UtilService}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected utilService:UtilService = new UtilService(); protected utilService:UtilService = new UtilService();
/** /**
* 功能服务名称 * 功能服务名称
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected utilServiceName:string = "<#if ctrl.getPSAppDynaDashboardUtil?? && ctrl.getPSAppDynaDashboardUtil()??>${ctrl.getPSAppDynaDashboardUtil().getCodeName()?lower_case}</#if>"; protected utilServiceName:string = "<#if ctrl.getPSAppDynaDashboardUtil?? && ctrl.getPSAppDynaDashboardUtil()??>${ctrl.getPSAppDynaDashboardUtil().getCodeName()?lower_case}</#if>";
/** /**
* 获取多项数据 * 获取多项数据
* *
* @returns {any[]} * @returns {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
public getDatas(): any[] { public getDatas(): any[] {
return []; return [];
} }
/** /**
* 获取单项树 * 获取单项树
* *
* @returns {*} * @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
public getData(): any { public getData(): any {
return {}; return {};
} }
/** /**
* vue 生命周期 * vue 生命周期
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected created() { protected created() {
this.afterCreated(); this.afterCreated();
} }
/** /**
* 执行created后的逻辑 * 执行created后的逻辑
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected afterCreated(){ protected afterCreated(){
if (this.viewState) { if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => { this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) { if (!Object.is(tag, this.name)) {
return; return;
} }
if (Object.is('load', action)) { if (Object.is('load', action)) {
this.loadModel(); this.loadModel();
} }
}); });
} }
} }
/** /**
* 动态设计水平列数 * 动态设计水平列数
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
public layoutColNum:number = 12; public layoutColNum:number = 12;
/** /**
* 动态设计单元格高度,80px * 动态设计单元格高度,80px
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
public layoutRowH:number = 80; public layoutRowH:number = 80;
/** /**
* 通知状态 * 通知状态
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
public notifyState(){ public notifyState(){
this.$nextTick(() =>{ this.$nextTick(() =>{
if (this.isHasCustomized) { if (this.isHasCustomized) {
if (this.modelDta && this.modelDta.length > 0) { if (this.modelDta && this.modelDta.length > 0) {
this.modelDta.forEach((item: any) => { this.modelDta.forEach((item: any) => {
this.viewState.next({ this.viewState.next({
tag: item.portletCodeName, tag: item.portletCodeName,
action: "load", action: "load",
data: JSON.parse(JSON.stringify(this.viewparams)) data: JSON.parse(JSON.stringify(this.viewparams))
}); });
}); });
} }
} else { } else {
if (this.viewState) { if (this.viewState) {
const refs: any = this.$refs; const refs: any = this.$refs;
Object.keys(refs).forEach((name: string) => { Object.keys(refs).forEach((name: string) => {
this.viewState.next({ this.viewState.next({
tag: name, tag: name,
action: "load", action: "load",
data: JSON.parse(JSON.stringify(this.viewparams)) data: JSON.parse(JSON.stringify(this.viewparams))
}); });
}); });
} }
} }
}) })
} }
/** /**
* 加载布局与数据模型 * 加载布局与数据模型
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected loadModel(){ protected loadModel(){
if(this.isEnableCustomized){ if(this.isEnableCustomized){
this.utilService.getService(this.utilServiceName).then((service:any) =>{ this.utilService.getService(this.utilServiceName).then((service:any) =>{
service.loadModelData(JSON.parse(JSON.stringify(this.context)),{modelid:this.modelId}).then((res:any) =>{ service.loadModelData(JSON.parse(JSON.stringify(this.context)),{modelid:this.modelId}).then((res:any) =>{
if(res && res.status == 200){ if(res && res.status == 200){
const data:any = res.data; const data:any = res.data;
if(data && data.length >0){ if(data && data.length >0){
this.isHasCustomized = true; this.isHasCustomized = true;
this.modelDta = data; this.modelDta = data;
this.$forceUpdate(); this.$forceUpdate();
}else{ }else{
this.isHasCustomized = false; this.isHasCustomized = false;
} }
this.notifyState(); this.notifyState();
}else{ }else{
console.error("加载面板模型异常"); console.error("加载面板模型异常");
this.isHasCustomized = false; this.isHasCustomized = false;
this.notifyState(); this.notifyState();
} }
}) })
}) })
}else{ }else{
this.notifyState(); this.notifyState();
} }
} }
/** /**
* 处理私人定制按钮 * 处理私人定制按钮
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected handleClick(){ protected handleClick(){
const view:any ={ const view:any ={
viewname: 'app-portal-design', viewname: 'app-portal-design',
title: '面板设计', title: '面板设计',
width: 1600, width: 1600,
placement: 'DRAWER_RIGHT' placement: 'DRAWER_RIGHT'
} }
const viewparam:any ={ const viewparam:any ={
modelid:this.modelId, modelid:this.modelId,
utilServiceName:this.utilServiceName, utilServiceName:this.utilServiceName,
appdeName:<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>'${ctrl.getPSAppDataEntity().getCodeName()}'<#else>'app'</#if> appdeName:<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>'${ctrl.getPSAppDataEntity().getCodeName()}'<#else>'app'</#if>
} }
const appdrawer = this.$appdrawer.openDrawer(view, JSON.parse(JSON.stringify(this.context)), viewparam); const appdrawer = this.$appdrawer.openDrawer(view, JSON.parse(JSON.stringify(this.context)), viewparam);
appdrawer.subscribe((result: any) => { appdrawer.subscribe((result: any) => {
if(Object.is(result.ret,'OK')){ if(Object.is(result.ret,'OK')){
this.loadModel(); this.loadModel();
} }
}); });
} }
/** /**
* vue 生命周期 * vue 生命周期
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected destroyed() { protected destroyed() {
this.afterDestroy(); this.afterDestroy();
} }
/** /**
* 执行destroyed后的逻辑 * 执行destroyed后的逻辑
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected afterDestroy() { protected afterDestroy() {
if (this.viewStateEvent) { if (this.viewStateEvent) {
this.viewStateEvent.unsubscribe(); this.viewStateEvent.unsubscribe();
} }
<#if destroyed_block??> <#if destroyed_block??>
${destroyed_block} ${destroyed_block}
</#if> </#if>
} }
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL-BASE.style.ftl ../@MACRO/CONTROL/CONTROL-BASE.style.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
<template> <template>
<div class='pickupviewpanel'> <div class='pickupviewpanel'>
<component <component
v-if="inited && view.viewname && !Object.is(view.viewname, '')" v-if="inited && view.viewname && !Object.is(view.viewname, '')"
:is="view.viewname" :is="view.viewname"
class="viewcontainer3" class="viewcontainer3"
:openMode="openMode" :openMode="openMode"
:viewdata="viewdata" :viewdata="viewdata"
:viewparam="viewparam" :viewparam="viewparam"
:viewDefaultUsage="false" :viewDefaultUsage="false"
:isSingleSelect="isSingleSelect" :isSingleSelect="isSingleSelect"
:selectedData="selectedData" :selectedData="selectedData"
:isShowButton="isShowButton" :isShowButton="isShowButton"
@viewdataschange="onViewDatasChange" @viewdataschange="onViewDatasChange"
@viewdatasactivated="viewDatasActivated" @viewdatasactivated="viewDatasActivated"
@viewload="onViewLoad"> @viewload="onViewLoad">
</component> </component>
</div> </div>
</template> </template>
<#assign import_block> <#assign import_block>
import ${srfclassname('${ctrl.codeName}')}Model from './${srffilepath2(ctrl.codeName)}-${ctrl.getControlType()?lower_case}-model'; import ${srfclassname('${ctrl.codeName}')}Model from './${srffilepath2(ctrl.codeName)}-${ctrl.getControlType()?lower_case}-model';
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
/** /**
* 视图打开模式 * 视图打开模式
* *
* @protected * @protected
* @type {('DEFAULT' | 'MODAL')} * @type {('DEFAULT' | 'MODAL')}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
@Prop({ default: 'DEFAULT' }) @Prop({ default: 'DEFAULT' })
protected openMode!: 'DEFAULT' | 'MODAL'; protected openMode!: 'DEFAULT' | 'MODAL';
/** /**
* 选中数据字符串 * 选中数据字符串
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
@Prop() protected selectedData?: string; @Prop() protected selectedData?: string;
/** /**
* 获取多项数据 * 获取多项数据
* *
* @returns {any[]} * @returns {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
public getDatas(): any[] { public getDatas(): any[] {
return []; return [];
} }
/** /**
* 获取单项树 * 获取单项树
* *
* @returns {*} * @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
public getData(): any { public getData(): any {
return {}; return {};
} }
/** /**
* 视图名称 * 视图名称
* *
* @type {*} * @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected view: any = { protected view: any = {
viewname: '<#if ctrl.getPSAppDEView()??>${srffilepath2(ctrl.getPSAppDEView().getCodeName())}</#if>', viewname: '<#if ctrl.getPSAppDEView()??>${srffilepath2(ctrl.getPSAppDEView().getCodeName())}</#if>',
data: {}, data: {},
} }
/** /**
* 视图数据 * 视图数据
* *
* @type {*} * @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected viewdata: string = JSON.stringify(this.context); protected viewdata: string = JSON.stringify(this.context);
/** /**
* 视图参数 * 视图参数
* *
* @type {*} * @type {*}
* @memberof PickupViewpickupviewpanel * @memberof PickupViewpickupviewpanel
*/ */
protected viewparam: string = JSON.stringify(this.viewparams); protected viewparam: string = JSON.stringify(this.viewparams);
/** /**
* 是否显示按钮 * 是否显示按钮
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
@Prop({default: true}) protected isShowButton!: boolean; @Prop({default: true}) protected isShowButton!: boolean;
/** /**
* 是否单选 * 是否单选
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
@Prop() protected isSingleSelect?: boolean; @Prop() protected isSingleSelect?: boolean;
/** /**
* 初始化完成 * 初始化完成
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected inited: boolean = false; protected inited: boolean = false;
/** /**
* 视图数据变化 * 视图数据变化
* *
* @param {*} $event * @param {*} $event
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected onViewDatasChange($event: any): void { protected onViewDatasChange($event: any): void {
if($event.length>0){ if($event.length>0){
$event.forEach((item:any,index:any) => { $event.forEach((item:any,index:any) => {
let srfmajortext = item['${ctrl.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}']; let srfmajortext = item['${ctrl.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}'];
if(srfmajortext){ if(srfmajortext){
Object.assign($event[index],{srfmajortext: srfmajortext}); Object.assign($event[index],{srfmajortext: srfmajortext});
} }
}); });
} }
this.$emit('selectionchange', $event); this.$emit('selectionchange', $event);
} }
/** /**
* 视图数据被激活 * 视图数据被激活
* *
* @param {*} $event * @param {*} $event
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected viewDatasActivated($event: any): void { protected viewDatasActivated($event: any): void {
this.$emit('activated', $event); this.$emit('activated', $event);
} }
/** /**
* 视图加载完成 * 视图加载完成
* *
* @param {*} $event * @param {*} $event
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected onViewLoad($event: any): void { protected onViewLoad($event: any): void {
this.$emit('load', $event); this.$emit('load', $event);
} }
/** /**
* vue 生命周期 * vue 生命周期
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected created() { protected created() {
this.afterCreated(); this.afterCreated();
} }
/** /**
* 执行created后的逻辑 * 执行created后的逻辑
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected afterCreated(){ protected afterCreated(){
if (this.viewState) { if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => { this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) { if (!Object.is(tag, this.name)) {
return; return;
} }
if (Object.is('load', action)) { if (Object.is('load', action)) {
this.viewdata = JSON.stringify(this.context); this.viewdata = JSON.stringify(this.context);
this.viewparam = JSON.stringify(Object.assign(data, this.viewparams)); this.viewparam = JSON.stringify(Object.assign(data, this.viewparams));
this.inited = true; this.inited = true;
} }
}); });
} }
} }
/** /**
* vue 生命周期 * vue 生命周期
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected destroyed() { protected destroyed() {
this.afterDestroy(); this.afterDestroy();
} }
/** /**
* 执行destroyed后的逻辑 * 执行destroyed后的逻辑
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected afterDestroy() { protected afterDestroy() {
if (this.viewStateEvent) { if (this.viewStateEvent) {
this.viewStateEvent.unsubscribe(); this.viewStateEvent.unsubscribe();
} }
<#if destroyed_block??> <#if destroyed_block??>
${destroyed_block} ${destroyed_block}
</#if> </#if>
} }
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL-BASE.style.ftl ../@MACRO/CONTROL/CONTROL-BASE.style.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
<#-- content --> <#-- content -->
<#assign content> <#assign content>
:isSingleSelect="isSingleSelect" :isSingleSelect="isSingleSelect"
:selectedData="selectedData" :selectedData="selectedData"
:isShowButton="isShowButton" :isShowButton="isShowButton"
:openMode="openMode" :openMode="openMode"
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/HTML/DEFAULT.html.ftl ../@MACRO/HTML/DEFAULT.html.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
<script lang='tsx'> <script lang='tsx'>
import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Provide, Emit, Watch } from 'vue-property-decorator';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { UIActionTool, Util } from '@/utils'; import { UIActionTool, Util } from '@/utils';
import { VueLifeCycleProcessing<#if view_base_name??>, ${view_base_name}</#if> } from '@/crm-core'; import { VueLifeCycleProcessing<#if view_base_name??>, ${view_base_name}</#if> } from '@/crm-core';
<#if view.getPSAppDataEntity?? && view.getPSAppDataEntity()??> <#if view.getPSAppDataEntity?? && view.getPSAppDataEntity()??>
<#assign appde = view.getPSAppDataEntity()/> <#assign appde = view.getPSAppDataEntity()/>
import ${srfclassname(appde.getCodeName())}Service from '@/service/${srffilepath2(appde.getCodeName())}/${srffilepath2(appde.getCodeName())}-service'; import ${srfclassname(appde.getCodeName())}Service from '@/service/${srffilepath2(appde.getCodeName())}/${srffilepath2(appde.getCodeName())}-service';
</#if> </#if>
<#if view.getPSAppViewEngines()??> <#if view.getPSAppViewEngines()??>
<#list view.getPSAppViewEngines() as engine> <#list view.getPSAppViewEngines() as engine>
import ${engine.getEngineType()}Engine from '@engine/${engine.getEngineCat()?lower_case}/${srffilepath2(engine.getEngineType())}-engine'; import ${engine.getEngineType()}Engine from '@engine/${engine.getEngineCat()?lower_case}/${srffilepath2(engine.getEngineType())}-engine';
</#list> </#list>
</#if> </#if>
<#if view.getPSUIActions()??> <#if view.getPSUIActions()??>
<#list view.getPSUIActions() as uiAction> <#list view.getPSUIActions() as uiAction>
<#if uiAction.getPSAppDataEntity?? && uiAction.getPSAppDataEntity()??> <#if uiAction.getPSAppDataEntity?? && uiAction.getPSAppDataEntity()??>
<#assign curAppEntity = uiAction.getPSAppDataEntity()/> <#assign curAppEntity = uiAction.getPSAppDataEntity()/>
<#if !P.exists("importService", curAppEntity.getId(), "")> <#if !P.exists("importService", curAppEntity.getId(), "")>
import ${srfclassname('${curAppEntity.getCodeName()}')}UIService from '@/uiservice/${srffilepath2(curAppEntity.getCodeName())}/${srffilepath2(curAppEntity.getCodeName())}-ui-service'; import ${srfclassname('${curAppEntity.getCodeName()}')}UIService from '@/uiservice/${srffilepath2(curAppEntity.getCodeName())}/${srffilepath2(curAppEntity.getCodeName())}-ui-service';
</#if> </#if>
</#if> </#if>
</#list> </#list>
</#if> </#if>
<#if import_block??> <#if import_block??>
${import_block} ${import_block}
</#if> </#if>
/** /**
* ${view.getTitle()}基类 * ${view.getTitle()}基类
* *
* @export * @export
* @class ${srfclassname(view.name)}Base * @class ${srfclassname(view.name)}Base
* @extends {<#if view_base_name??>${view_base_name}<#else>Vue</#if>} * @extends {<#if view_base_name??>${view_base_name}<#else>Vue</#if>}
*/ */
@Component({}) @Component({})
@VueLifeCycleProcessing @VueLifeCycleProcessing
export default class ${srfclassname(view.name)}Base extends <#if view_base_name??>${view_base_name}<#else>ViewBase</#if> { export default class ${srfclassname(view.name)}Base extends <#if view_base_name??>${view_base_name}<#else>ViewBase</#if> {
<#if view.getPSAppDataEntity?? && view.getPSAppDataEntity()??> <#if view.getPSAppDataEntity?? && view.getPSAppDataEntity()??>
<#assign appde = view.getPSAppDataEntity()/> <#assign appde = view.getPSAppDataEntity()/>
/** /**
* 实体服务对象 * 实体服务对象
* *
* @type {${srfclassname(appde.getCodeName())}Service} * @type {${srfclassname(appde.getCodeName())}Service}
* @memberof ${srfclassname(view.name)}Base * @memberof ${srfclassname(view.name)}Base
*/ */
public appEntityService: ${srfclassname(appde.getCodeName())}Service = new ${srfclassname(appde.getCodeName())}Service; public appEntityService: ${srfclassname(appde.getCodeName())}Service = new ${srfclassname(appde.getCodeName())}Service;
</#if> </#if>
/** /**
* 数据变化 * 数据变化
* *
* @param {*} val * @param {*} val
* @returns {*} * @returns {*}
* @memberof ${srfclassname(view.name)}Base * @memberof ${srfclassname(view.name)}Base
*/ */
@Emit() @Emit()
public viewDatasChange(val: any):any { public viewDatasChange(val: any):any {
return val; return val;
} }
/** /**
* 视图标识 * 视图标识
* *
* @type {string} * @type {string}
* @memberof ${srfclassname(view.name)}Base * @memberof ${srfclassname(view.name)}Base
*/ */
public viewtag: string = '${view.getId()}'; public viewtag: string = '${view.getId()}';
/** /**
* 父数据对象 * 父数据对象
* *
* @protected * @protected
* @type {*} * @type {*}
* @memberof ${srfclassname(view.name)}Base * @memberof ${srfclassname(view.name)}Base
*/ */
protected srfparentdata: any = {}; protected srfparentdata: any = {};
/** /**
* 自定义视图导航上下文集合 * 自定义视图导航上下文集合
* *
* @type {*} * @type {*}
* @memberof ${srfclassname('${view.name}')}Base * @memberof ${srfclassname('${view.name}')}Base
*/ */
protected customViewNavContexts:any ={ protected customViewNavContexts:any ={
<#if view.getPSAppViewNavContexts()??> <#if view.getPSAppViewNavContexts()??>
<#list view.getPSAppViewNavContexts() as viewNavContext> <#list view.getPSAppViewNavContexts() as viewNavContext>
"${viewNavContext.getKey()?lower_case}":{"isRawValue":${viewNavContext.isRawValue()?c},"value":"${viewNavContext.getValue()?lower_case}"}<#if viewNavContext_has_next>,</#if> "${viewNavContext.getKey()?lower_case}":{"isRawValue":${viewNavContext.isRawValue()?c},"value":"${viewNavContext.getValue()?lower_case}"}<#if viewNavContext_has_next>,</#if>
</#list> </#list>
</#if> </#if>
}; };
/** /**
* 自定义视图导航参数集合 * 自定义视图导航参数集合
* *
* @type {*} * @type {*}
* @memberof ${srfclassname('${view.name}')}Base * @memberof ${srfclassname('${view.name}')}Base
*/ */
protected customViewParams:any ={ protected customViewParams:any ={
<#if view.getPSAppViewNavParams()??> <#if view.getPSAppViewNavParams()??>
<#list view.getPSAppViewNavParams() as viewNavParam> <#list view.getPSAppViewNavParams() as viewNavParam>
"${viewNavParam.getKey()?lower_case}":{"isRawValue":${viewNavParam.isRawValue()?c},"value":"${viewNavParam.getValue()?lower_case}"}<#if viewNavParam_has_next>,</#if> "${viewNavParam.getKey()?lower_case}":{"isRawValue":${viewNavParam.isRawValue()?c},"value":"${viewNavParam.getValue()?lower_case}"}<#if viewNavParam_has_next>,</#if>
</#list> </#list>
</#if> </#if>
}; };
/** /**
* 视图模型数据 * 视图模型数据
* *
* @type {*} * @type {*}
* @memberof ${srfclassname(view.name)}Base * @memberof ${srfclassname(view.name)}Base
*/ */
public model: any = { public model: any = {
srfCaption: '<#if view.getPSAppDataEntity()??>entities.${view.getPSAppDataEntity().getCodeName()?lower_case}.views.${view.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${view.getCodeName()?lower_case}.caption</#if>', srfCaption: '<#if view.getPSAppDataEntity()??>entities.${view.getPSAppDataEntity().getCodeName()?lower_case}.views.${view.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${view.getCodeName()?lower_case}.caption</#if>',
srfTitle: '<#if view.getPSAppDataEntity()??>entities.${view.getPSAppDataEntity().getCodeName()?lower_case}.views.${view.getPSDEViewCodeName()?lower_case}.title<#else>app.views.${view.getCodeName()?lower_case}.title</#if>', srfTitle: '<#if view.getPSAppDataEntity()??>entities.${view.getPSAppDataEntity().getCodeName()?lower_case}.views.${view.getPSDEViewCodeName()?lower_case}.title<#else>app.views.${view.getCodeName()?lower_case}.title</#if>',
srfSubTitle: '<#if view.getPSAppDataEntity()??>entities.${view.getPSAppDataEntity().getCodeName()?lower_case}.views.${view.getPSDEViewCodeName()?lower_case}.subtitle<#else>app.views.${view.getCodeName()?lower_case}.subtitle</#if>', srfSubTitle: '<#if view.getPSAppDataEntity()??>entities.${view.getPSAppDataEntity().getCodeName()?lower_case}.views.${view.getPSDEViewCodeName()?lower_case}.subtitle<#else>app.views.${view.getCodeName()?lower_case}.subtitle</#if>',
dataInfo: '' dataInfo: ''
} }
/** /**
* 容器模型 * 容器模型
* *
* @type {*} * @type {*}
* @memberof ${srfclassname(view.name)}Base * @memberof ${srfclassname(view.name)}Base
*/ */
public containerModel: any = { public containerModel: any = {
<#if view.getPSControls()??> <#if view.getPSControls()??>
<#list view.getPSControls() as ctrl> <#list view.getPSControls() as ctrl>
view_${ctrl.name}: { name: '${ctrl.name}', type: '${ctrl.getControlType()}' }, view_${ctrl.name}: { name: '${ctrl.name}', type: '${ctrl.getControlType()}' },
</#list> </#list>
</#if> </#if>
<#if view.isPickupView() || (view.getViewType?? && (view.getViewType() == 'DEOPTVIEW' || view.getViewType() == 'DEWFSTARTVIEW' || view.getViewType() == 'DEWFACTIONVIEW'))> <#if view.isPickupView() || (view.getViewType?? && (view.getViewType() == 'DEOPTVIEW' || view.getViewType() == 'DEWFSTARTVIEW' || view.getViewType() == 'DEWFACTIONVIEW'))>
view_okbtn: { name: 'okbtn', type: 'button', text: '确定', disabled: true }, view_okbtn: { name: 'okbtn', type: 'button', text: '确定', disabled: true },
view_cancelbtn: { name: 'cancelbtn', type: 'button', text: '取消', disabled: false }, view_cancelbtn: { name: 'cancelbtn', type: 'button', text: '取消', disabled: false },
view_leftbtn: { name: 'leftbtn', type: 'button', text: '左移', disabled: true }, view_leftbtn: { name: 'leftbtn', type: 'button', text: '左移', disabled: true },
view_rightbtn: { name: 'rightbtn', type: 'button', text: '右移', disabled: true }, view_rightbtn: { name: 'rightbtn', type: 'button', text: '右移', disabled: true },
view_allleftbtn: { name: 'allleftbtn', type: 'button', text: '全部左移', disabled: true }, view_allleftbtn: { name: 'allleftbtn', type: 'button', text: '全部左移', disabled: true },
view_allrightbtn: { name: 'allrightbtn', type: 'button', text: '全部右移', disabled: true }, view_allrightbtn: { name: 'allrightbtn', type: 'button', text: '全部右移', disabled: true },
</#if> </#if>
<#if view.getPSWorkflow?? && view.getPSWorkflow()??> <#if view.getPSWorkflow?? && view.getPSWorkflow()??>
wflinks: [], wflinks: [],
</#if> </#if>
}; };
/** /**
* 视图状态订阅对象 * 视图状态订阅对象
* *
* @private * @private
* @type {Subject<{action: string, data: any}>} * @type {Subject<{action: string, data: any}>}
* @memberof ${srfclassname(view.name)}Base * @memberof ${srfclassname(view.name)}Base
*/ */
public viewState: Subject<ViewState> = new Subject(); public viewState: Subject<ViewState> = new Subject();
<#if view.hasPSControl('toolbar')> <#if view.hasPSControl('toolbar')>
${P.getCtrlCode('toolbar', 'CONTROL.vue').code} ${P.getCtrlCode('toolbar', 'CONTROL.vue').code}
</#if> </#if>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册