CONTROL-BASE.vue.ftl 13.5 KB
Newer Older
tony001's avatar
tony001 committed
1
<#if ctrl.getPortletType() != 'CONTAINER'>
tony001's avatar
tony001 committed
2
<#ibizinclude>../@MACRO/CONTROL/LANGBASE.vue.ftl</#ibizinclude>
3 4 5 6 7
<#macro renderUiaction>
  <#if ctrl.getPSUIActionGroup?? && ctrl.getPSUIActionGroup()?? && ctrl.getPSUIActionGroup().getPSUIActionGroupDetails()??>
    <#assign UIActionDetails=ctrl.getPSUIActionGroup().getPSUIActionGroupDetails() />
<span class="portlet-action">
    <#list UIActionDetails as uiactiondetail>
8
      <#if !uiactiondetail.isShowCaption()>
9 10
  <tooltip :transfer="true" :max-width="600">
      </#if>
11
    <a @click="uiAction('${uiactiondetail.getName()?lower_case}', $event)">
12 13 14 15 16 17 18 19 20 21 22
      <#if uiactiondetail.getPSUIAction()??>
        <#if uiactiondetail.isShowIcon()>
          <#if uiactiondetail.getPSUIAction().getPSSysImage()??>
            <#assign viewimg=uiactiondetail.getPSUIAction().getPSSysImage()/>
            <#if viewimg.getCssClass() != ''>
      <i class="${viewimg.getCssClass()}" />
            <#else>
      <img src="${viewimg.getImagePath()}" />
            </#if>
          </#if>
        </#if>
23
    <#--  <#if uiactiondetail.isShowCaption()><span><#if langbase??>{{$t('${langbase}.uiactions.${uiactiondetail.getPSUIAction().getUIActionTag()?lower_case}')}}<#else>${uiactiondetail.getPSUIAction().getCaption()}</#if></span></#if>  -->
24 25 26 27
        <#if uiactiondetail.isShowCaption()>
      <span>${uiactiondetail.getPSUIAction().getCaption()}</span>
        </#if>
      </#if>
28
    </a>
29
      <#if !uiactiondetail.isShowCaption()>
30 31 32
    <div slot='content'>${uiactiondetail.getPSUIAction().getCaption()}</div>
  </tooltip>
      </#if>
33 34 35 36
    </#list>
</span>
  </#if>
</#macro>
37
<template>
38
    <div class='portlet ${srffilepath2(ctrl.getCodeName())} <#if ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>' :style="{<#if (ctrl.getHeight?? && ctrl.getHeight() gt 0)>'height': isAdaptiveSize ? 'calc(100% - 16px)' : getHeight,</#if><#if (ctrl.getWidth?? && ctrl.getWidth() gt 0)>'width': isAdaptiveSize ? 'calc(100% - 16px)' : (width ? width+'px' :'${ctrl.getWidth()?c}px')</#if>}">
39
    <#if ctrl.getPortletType?? && ctrl.getPortletType()??><#t>
tony001's avatar
tony001 committed
40 41
      <#--  视图  -->
      <#if ctrl.getPortletType() == 'VIEW' && ctrl.getPortletPSAppView?? && ctrl.getPortletPSAppView()??><#t>
42 43
        <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
        <p class='portlet-title'>
tony001's avatar
tony001 committed
44 45
            <span>
            <#if ctrl.getPSSysImage()??><i class='<#assign img=ctrl.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if>'></i></#if>
46
            ${ctrl.getTitle()}
tony001's avatar
tony001 committed
47
            </span>
48
            <#assign render_uiaction><@renderUiaction /></#assign>
49
            <@ibizindent blank=12>
50
            ${render_uiaction}<#t>
51
            </@ibizindent>
52 53
        </p>
        </#if>
54
        <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
55 56 57
        <#assign refview = ctrl.getPortletPSAppView()><#t>
        <${srffilepath2(refview.getCodeName())} :viewdata="JSON.stringify(context)" :viewDefaultUsage="false" ></${srffilepath2(refview.getCodeName())}>
        </div>
tony001's avatar
tony001 committed
58 59
      <#--  菜单  -->
      <#elseif  ctrl.getPortletType() == 'APPMENU'><#t>
60 61
        <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
        <p class='portlet-title'>
tony001's avatar
tony001 committed
62 63
            <span>
            <#if ctrl.getPSSysImage()??><i class='<#assign img=ctrl.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if>'></i></#if>
64
            ${ctrl.getTitle()}
tony001's avatar
tony001 committed
65
            </span>
66
            <#assign render_uiaction><@renderUiaction /></#assign>
67
            <@ibizindent blank=12>
68
            ${render_uiaction}<#t>
69
            </@ibizindent>
70 71
        </p>
        </#if>
72
        <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
73 74 75 76 77
        <#assign appmenu = ctrl.getPSAppMenu()><#t>
        <@ibizindent blank=6>
        ${P.getCtrlCode(appmenu, 'CONTROL.html').code}
        </@ibizindent>
        </div>
tony001's avatar
tony001 committed
78 79
      <#--  自定义  -->
      <#elseif  ctrl.getPortletType() == 'CUSTOM'>
80 81
        <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
        <p class='portlet-title'>
tony001's avatar
tony001 committed
82 83
            <span>
            <#if ctrl.getPSSysImage()??><i class='<#assign img=ctrl.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if>'></i></#if>
84
            ${ctrl.getTitle()}
tony001's avatar
tony001 committed
85
            </span>
86
            <#assign render_uiaction><@renderUiaction /></#assign>
87
            <@ibizindent blank=12>
88
            ${render_uiaction}<#t>
89
            </@ibizindent>
90 91
        </p>
        </#if>
92
        <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
93 94 95
        <#if ctrl.render??>
        ${ctrl.render.code}
        <#else>
96
        <div>{{$t('app.portlet.noExtensions')}}</div>
97 98
        </#if>
        </div>
tony001's avatar
tony001 committed
99 100
      <#--  操作栏  -->
      <#elseif  ctrl.getPortletType() == 'ACTIONBAR'>
101 102
        <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
        <p class='portlet-title'>
tony001's avatar
tony001 committed
103 104
            <span>
            <#if ctrl.getPSSysImage()??><i class='<#assign img=ctrl.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if>'></i></#if>
105
            ${ctrl.getTitle()}
tony001's avatar
tony001 committed
106
            </span>
107 108
        </p>
        </#if>
109
        <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
110 111 112
        <#if ctrl.render??>
            ${ctrl.render.code}
        <#else>
113
            <app-actionbar :viewState="viewState" :uiService="appUIService" :items="actionBarModelData" @itemClick="handleItemClick"></app-actionbar>
114 115
        </#if>
        </div>
tony001's avatar
tony001 committed
116 117
      <#--  HTML  -->
      <#elseif  ctrl.getPortletType() == 'HTML'>
118 119
        <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
        <p class='portlet-title'>
tony001's avatar
tony001 committed
120 121
            <span>
            <#if ctrl.getPSSysImage()??><i class='<#assign img=ctrl.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if>'></i></#if>
122
            ${ctrl.getTitle()}
tony001's avatar
tony001 committed
123
            </span>
124
            <#assign render_uiaction><@renderUiaction /></#assign>
125
            <@ibizindent blank=12>
126
            ${render_uiaction}<#t>
127
            </@ibizindent>
128 129
        </p>
        </#if>
130
        <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
131 132
        <iframe src="<#if ctrl.getPageUrl()??>${ctrl.getPageUrl()}</#if>" style="height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()?c}<#else>400</#if>px;width: 100%;border-width: 1px;"></iframe>
        </div>         
tony001's avatar
tony001 committed
133 134
      <#--  其他部件  -->
      <#elseif ctrl.getContentPSControl()??><#t>
135 136
        <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
        <p class='portlet-title'>
tony001's avatar
tony001 committed
137 138
            <span>
            <#if ctrl.getPSSysImage()??><i class='<#assign img=ctrl.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if>'></i></#if>
139
            ${ctrl.getTitle()}
tony001's avatar
tony001 committed
140
            </span>
141
            <#assign render_uiaction><@renderUiaction /></#assign>
142
            <@ibizindent blank=12>
143
            ${render_uiaction}<#t>
144
            </@ibizindent>
145 146
        </p>
        </#if>
147
        <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
148 149 150 151 152 153
        <#assign control = ctrl.getContentPSControl()><#t>
        <!-- 测试 -->
        <@ibizindent blank=6>
        ${P.getCtrlCode(control, 'CONTROL.html').code}
        </@ibizindent>
        </div>
tony001's avatar
tony001 committed
154
      </#if>
155 156 157
    </#if>
    </div>
</template>
tony001's avatar
tony001 committed
158 159 160
<#assign import_block>
import { Environment } from '@/environments/environment';
</#assign>
161 162 163 164
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_PORTLET-HEADER-BASE.vue.ftl
</#ibizinclude>

tony001's avatar
tony001 committed
165 166 167 168
    /**
     * 长度
     *
     * @type {number}
KK's avatar
KK committed
169
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
tony001's avatar
tony001 committed
170 171 172 173 174 175 176
     */
    @Prop() public height?: number;

    /**
     * 宽度
     *
     * @type {number}
KK's avatar
KK committed
177
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
tony001's avatar
tony001 committed
178 179 180
     */
    @Prop() public width?: number;

tony001's avatar
tony001 committed
181 182 183 184 185 186
    /**
     * 视图默认使用
     *
     * @type {string}
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
     */
187
    @Inject({from:'navModel',default: 'tab'})
tony001's avatar
tony001 committed
188 189
    public navModel!:string;

190 191 192 193 194
    <#if ctrl.getPortletType() == 'ACTIONBAR'>
    /**
     * 操作栏模型数据
     *
     * @returns {any[]}
195
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
196
     */
197
    public actionBarModelData:any[] =[
198 199 200 201 202 203 204
        <#if  ctrl.getPSAppViewLogics?? && ctrl.getPSAppViewLogics()??>
        <#list ctrl.getPSAppViewLogics() as appViewLogic>
        { viewlogicname:"${appViewLogic.name}",
        <#if appViewLogic.getPSAppViewUIAction?? && appViewLogic.getPSAppViewUIAction()??>
        <#assign viewUIAction = appViewLogic.getPSAppViewUIAction()/>
        <#if viewUIAction.getPSUIAction?? && viewUIAction.getPSUIAction()??>
        <#assign uiaction = viewUIAction.getPSUIAction() />
tony001's avatar
tony001 committed
205
        actionName:"${uiaction.getCaption()}",
206
        icon:"<#if uiaction.getIconCls?? && uiaction.getIconCls()??>${uiaction.getIconCls()}</#if>",
207 208
        <#if uiaction.getPSAppCounter?? && uiaction.getPSAppCounter()??>
        <#assign counter = uiaction.getPSAppCounter() />
tony001's avatar
tony001 committed
209
        counterService:this.${counter.getCodeName()?lower_case}counterservice,
210
        <#if uiaction.getCounterId()??>counterId:"${uiaction.getCounterId()}",</#if>
211
        noprivdisplaymode:<#if uiaction.getNoPrivDisplayMode(view)??>${uiaction.getNoPrivDisplayMode(view)}<#else>''</#if>,
212
        dataaccaction:'<#if uiaction.getDataAccessAction()??>${uiaction.getDataAccessAction()}</#if>',
213
        actiontarget:'<#if uiaction.getActionTarget()??>${uiaction.getActionTarget()}</#if>',
214
        visabled:true,disabled:false
215 216 217 218 219 220 221 222 223 224 225
        </#if>
        </#if>
        </#if>
        }<#if appViewLogic_has_next>,</#if>
        </#list>
        </#if>
    ];

    /**
     * 触发界面行为
     *
226
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
227
     */
228
    public handleItemClick($event:any){
229
      let data: any = $event.params && Object.keys($event.params).length > 0 ? $event.params : null;
230 231
    <#if  ctrl.getPSAppViewLogics?? && ctrl.getPSAppViewLogics()??>
    <#list ctrl.getPSAppViewLogics() as appViewLogic>
232 233
        if(Object.is($event.tag,'${appViewLogic.name}')){
            this.${appViewLogic.name}(data, $event.tag, $event.event);
234 235 236 237 238 239
        }
    </#list>
    </#if>
    }
    </#if>

240 241 242 243 244
    <#if ctrl.getPortletType?? && ctrl.getPortletType()?? && ctrl.getPortletType() == "TOOLBAR" >
    <#assign toolbar = ctrl.getContentPSControl()/>
    ${P.getCtrlCode(toolbar, 'CONTROL.vue').code}
    </#if>

245 246 247 248
    /**
     * 是否自适应大小
     *
     * @returns {boolean}
249
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
250 251 252 253 254 255 256
     */
    @Prop({default: false})public isAdaptiveSize!: boolean;

    /**
     * 获取多项数据
     *
     * @returns {any[]}
257
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
258 259 260 261 262 263 264 265 266
     */
    public getDatas(): any[] {
        return [];
    }

    /**
     * 获取单项树
     *
     * @returns {*}
267
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
268 269 270 271 272
     */
    public getData(): any {
        return {};
    }

273 274 275 276 277 278 279 280 281 282 283 284 285 286
    /**
     * 获取高度
     *
     * @returns {any[]}
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
     */
    get getHeight(){
        if(!this.$util.isEmpty(this.height) && !this.$util.isNumberNaN(this.height)){
            if(this.height == 0){
                return 'auto';
            }else{
                return this.height+'px';
            }
        }else{
287 288 289 290
  <#if ctrl.getHeight?? && ctrl.getHeight() gt 0>
            return '${ctrl.getHeight()?c}px';
  <#else>
            return 'auto';
291 292 293 294
  </#if>
        }
    }

295 296 297
    /**
     * vue 生命周期
     *
298
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
299
     */
300
    public created() {
301 302 303 304 305 306
        this.afterCreated();
    }

    /**
     * 执行created后的逻辑
     *
307
     *  @memberof ${srfclassname('${ctrl.codeName}')}Base
308
     */    
309
    public afterCreated(){
310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325
        if (this.viewState) {
            this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
                if (!Object.is(tag, this.name)) {
                    return;
                }
                const refs: any = this.$refs;
                Object.keys(refs).forEach((_name: string) => {
                    this.viewState.next({ tag: _name, action: action, data: data });
                });
            });
        }
    }

    /**
     * vue 生命周期
     *
326
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
327
     */
328
    public destroyed() {
329 330 331 332 333 334
        this.afterDestroy();
    }

    /**
     * 执行destroyed后的逻辑
     *
335
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
336
     */
337
    public afterDestroy() {
338 339 340 341 342 343 344 345
        if (this.viewStateEvent) {
            this.viewStateEvent.unsubscribe();
        }
        <#if destroyed_block??>
        ${destroyed_block}
        </#if>
    }

tony001's avatar
tony001 committed
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363
    <#if ctrl.getPortletType() != 'ACTIONBAR'>
    <#if ctrl.getPSUIActionGroup?? && ctrl.getPSUIActionGroup()?? && ctrl.getPSUIActionGroup().getPSUIActionGroupDetails()??>
    <#assign UIActionDetails=ctrl.getPSUIActionGroup().getPSUIActionGroupDetails() />
    /**
     * 执行界面行为
     *
     * @memberof ${srfclassname('${ctrl.codeName}')}Base
     */
    public uiAction(tag:string,event:any){
    <#list UIActionDetails as uiactiondetail>
        if(Object.is(tag,'${uiactiondetail.getName()?lower_case}')){
            this.${ctrl.getName()?lower_case}_${uiactiondetail.getName()?lower_case}_click(null,tag,event);
        }
    </#list>
    }
    </#if>
    </#if>

364 365 366 367 368 369
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude>

<#ibizinclude>
../@MACRO/CONTROL/CONTROL-BASE.style.ftl
tony001's avatar
tony001 committed
370 371 372
</#ibizinclude>

</#if>