Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz-Vue-R7
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
22
议题
22
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7前端标准模板
iBiz-Vue-R7
提交
55f29b6a
提交
55f29b6a
编写于
11月 04, 2022
作者:
Mosher
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update:更新
上级
89ea9d11
变更
5
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
438 行增加
和
462 行删除
+438
-462
CONTROL-BASE.vue.ftl
@CONTROL/数据关系分页部件/CONTROL-BASE.vue.ftl
+265
-329
EDIT3.vue.ftl
@CONTROL/视图布局面板/@MACRO/EDIT3.vue.ftl
+66
-46
VIEW.vue.ftl
@CONTROL/视图布局面板/实体编辑视图(上下关系)/VIEW.vue.ftl
+57
-47
EDIT_VIEW3-BASE.vue.ftl
@VIEW/@MACRO/EDIT_VIEW3-BASE.vue.ftl
+35
-26
VIEW-BASE.vue.ftl
@VIEW/实体编辑视图(上下关系)/VIEW-BASE.vue.ftl
+15
-14
未找到文件。
@CONTROL/数据关系分页部件/CONTROL-BASE.vue.ftl
浏览文件 @
55f29b6a
<template>
<#if ctrl.render??>
${ctrl.render.code}
<#else>
<div class = "drtab<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>">
<tabs :animated='false' class='app-dr-tab' name='${ctrl.getCodeName()?lower_case}' @on-click="tabPanelClick">
<#list ctrl.getRootItem().getAllItems() as dritem>
<tab-pane <#if dritem_index == 0>v-if="isShowSlot"</#if> :index='${dritem_index?c}' name='${dritem.getId()?lower_case}' tab='${ctrl.getCodeName()?lower_case}' class='' :disabled='items[${dritem_index?c}].disabled'
label='${dritem.text}'>
<#if dritem.getId()?lower_case == 'form'>
<div class='main-data'>
<slot></slot>
</div>
<#else>
<component
v-if="Object.is(this.selection.id, '${dritem.getId()?lower_case}') && this.selection.view && !Object.is(this.selection.view.viewname, '')"
:is="selection.view.viewname"
class="viewcontainer2"
:viewdata="JSON.stringify(selection.data)"
:viewparam="JSON.stringify(selection.param)"
:viewDefaultUsage="false"
:key="this.$util.createUUID()">
</component>
</#if>
</tab-pane>
</#list>
</tabs>
</div>
</#if>
</template>
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/FUNC/MACRO.ftl
</#ibizinclude>
/**
* 是否显示插槽
*
* @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
@Prop({default:true}) public isShowSlot?: boolean;
/**
* 应用实体参数名称
*
* @type string
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
@Prop() public parentName!: string;
/**
* 表单数据
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public formData:any;
/**
* 获取多项数据
*
* @returns {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getDatas(): any[] {
return this.items;
}
/**
* 获取单项树
*
* @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getData(): any {
return this.selection;
}
/**
* 数据选中项
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public selection: any = {};
/**
* 父数据
*
* @public
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public parentData: any = {};
/**
* 关系栏数据项
*
* @type {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public items: any[] = [
<#list ctrl.getRootItem().getAllItems() as dritem>
{
index: ${dritem_index?c},
id: '${dritem.getId()?lower_case}',
name: '${dritem.getId()?lower_case}',
text: '${dritem.text}',
disabled: false,
},
</#list>
];
/**
* 关系栏数据项导航参数集合
*
* @type {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public navParamsArray:Array<any> = [
<#if ctrl.getPSDEDRCtrlItems?? && ctrl.getPSDEDRCtrlItems()??>
<#list ctrl.getPSDEDRCtrlItems() as appdeDrCtrlItem>
{
id:'${appdeDrCtrlItem.getName()?lower_case}',
localContext:<#if appdeDrCtrlItem.getPSNavigateContexts?? && appdeDrCtrlItem.getPSNavigateContexts()??><@getNavigateContext appdeDrCtrlItem /><#else>null</#if>,
localViewParam:<#if appdeDrCtrlItem.getPSNavigateParams?? && appdeDrCtrlItem.getPSNavigateParams()??><@getNavigateParams appdeDrCtrlItem /><#else>null</#if>
}<#if appdeDrCtrlItem_has_next>,</#if>
</#list>
</#if>
];
/**
* 生命周期
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public created(): void {
this.afterCreated();
}
/**
* 仿真选中第一项
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public selectFirst(){
if(this.items.length>0){
this.isShowSlot?this.tabPanelClick(this.items[0].name):this.items.length>1?this.tabPanelClick(this.items[1].name):()=>{};
}
}
/**
* 执行created后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterCreated(){
if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) {
return;
}
if (Object.is('state', action)) {
const state = !this.context.${ctrl.getPSAppDataEntity().getCodeName()?lower_case} ? true : false;
this.setItemDisabled(state);
this.formData = data;
this.selectFirst();
}
});
}
this.$nextTick(() => {
this.$emit('selectionchange', [this.items[0]]);
});
}
/**
* vue 生命周期
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public destroyed() {
this.afterDestroy();
}
/**
* 执行destroyed后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterDestroy() {
if (this.viewStateEvent) {
this.viewStateEvent.unsubscribe();
}
<#if destroyed_block??>
${destroyed_block}
</#if>
}
/**
* 获取关系项
*
* @public
* @param {*} [arg={}]
* @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getDRTabItem(arg: any = {}): any {
let expmode = arg.nodetype.toUpperCase();
if (!expmode) {
expmode = '';
}
<#list ctrl.getPSAppViewRefs() as item>
<#if (item.getName()?index_of("DRITEM:")==0)>
<#assign refview = item.getRefPSAppView()>
if (Object.is(expmode, '${item.getName()?substring(7)}')) {
return {
viewname: '${srffilepath2(refview.codeName)}',
parentdatajo: <#if item.getParentDataJO()??>${item.getParentDataJO()}<#else>{},</#if>
};
}
</#if>
</#list>
return undefined;
}
/**
* 设置关系项状态
*
* @param {boolean} state
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public setItemDisabled(state: boolean): void {
this.items.forEach((item: any) => {
if (Object.is(item.name, 'form')) {
item.disabled = false;
} else {
item.disabled = state;
}
});
}
/**
* 获取数据项
*
* @public
* @param {string} id
* @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getItem(id: string): any {
const arr: any[] = this.items.filter((_item: any) => Object.is(_item.id, id));
if (arr) {
return arr[0];
}
return null;
}
/**
* 初始化导航参数
*
* @param {*} drItem
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public initNavParam(drItem:any){
let returnNavParam:any = {};
if(drItem && drItem.id){
let curDRItem:any = this.navParamsArray.find((item:any) =>{
return Object.is(item.id,drItem.id);
})
if(curDRItem){
let localContext:any = curDRItem.localContext;
let localViewParam:any = curDRItem.localViewParam;
if(localContext && Object.keys(localContext).length >0){
let _context:any = this.$util.computedNavData(this.formData,this.context,this.viewparams,localContext);
returnNavParam.localContext = _context;
}
if(localViewParam && Object.keys(localViewParam).length >0){
let _params:any = this.$util.computedNavData(this.formData,this.context,this.viewparams,localViewParam);
returnNavParam.localViewParam = _params;
}
return returnNavParam;
}else{
return null;
}
}
}
/**
* 选中节点
*
* @param {*} $event
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public tabPanelClick($event: any): void {
const item = this.getItem($event);
if (Object.is(item.id, this.selection.id)) {
return;
}
this.$emit('selectionchange', [item]);
let localNavParam:any = this.initNavParam(item);
const refview = this.getDRTabItem({ nodetype: item.id });
this.selection = {};
const _context: any = { ...JSON.parse(JSON.stringify(this.context)) };
if(localNavParam && localNavParam.localContext){
Object.assign(_context,localNavParam.localContext);
}
Object.assign(_context,{srfparentdename:this.parentName,srfparentkey:_context[this.parentName.toLowerCase()]});
const _params: any = {};
if(localNavParam && localNavParam.localViewParam){
Object.assign(_params,localNavParam.localViewParam);
}
if (refview && refview.parentdatajo) {
Object.assign(_context, refview.parentdatajo);
Object.assign(this.selection, { view: { viewname: refview.viewname }, data: _context, param: _params });
}
Object.assign(this.selection, item);
}
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/CONTROL/CONTROL-BASE.style.ftl
<template>
<#if ctrl.render??>
${ctrl.render.code}
<#else>
<div class="app-dr-tab<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>">
<div v-for="(item, index) in items" :class="{ 'app-dr-tab-item': true, 'dr-tab-item': true, 'is-disabled': item.disabled, 'is-active': selection.id === item.id">
<span class="text">{{ item.text }}</span>
</div>
</div>
</#if>
</template>
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/FUNC/MACRO.ftl
</#ibizinclude>
/**
* 是否显示插槽
*
* @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
@Prop({default:true}) public isShowSlot?: boolean;
/**
* 应用实体参数名称
*
* @type string
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
@Prop() public parentName!: string;
/**
* 表单数据
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public formData: any;
/**
* 获取多项数据
*
* @returns {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getDatas(): any[] {
return this.items;
}
/**
* 获取单项树
*
* @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getData(): any {
return this.selection;
}
/**
* 数据选中项
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public selection: any = {};
/**
* 父数据
*
* @public
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public parentData: any = {};
/**
* 关系栏数据项
*
* @type {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public items: any[] = [
<#if ctrl.getPSDEDRTabPages?? && ctrl.getPSDEDRTabPages()??>
<#list ctrl.getPSDEDRTabPages() as item>
{
id: '${item.getId()?lower_case}',
name: '${item.getId()?lower_case}',
text: '${item.getCaption()}',
disabled: true,
navView: '<#if item.getPSAppView?? && item.getPSAppView()??>${srffilepath2(item.getPSAppView().codeName)}</#if>',
<#if drItem.getPSSysImage()??>
iconcls: '${item.getPSSysImage().getCssClass()}',
icon: '${item.getPSSysImage().getImagePath()}',
</#if>
localContext: <#if item.getPSNavigateContexts?? && item.getPSNavigateContexts()??><@getNavigateContext item /><#else>null</#if>,
localViewParam: <#if item.getPSNavigateParams?? && item.getPSNavigateParams()??><@getNavigateParams item /><#else>null</#if>
}
</#list>
</#if>
];
/**
* 生命周期
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public created(): void {
this.afterCreated();
}
/**
* 仿真选中第一项
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public selectFirst(){
if (this.items.length > 0){
this.isShowSlot?this.tabPanelClick(this.items[0].name):this.items.length>1?this.tabPanelClick(this.items[1].name):()=>{};
}
}
/**
* 执行created后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterCreated(){
if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) {
return;
}
if (Object.is('state', action)) {
const state = !this.context.${ctrl.getPSAppDataEntity().getCodeName()?lower_case} ? true : false;
this.setItemDisabled(state);
this.formData = data;
this.selectFirst();
}
});
}
}
/**
* vue 生命周期
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public destroyed() {
this.afterDestroy();
}
/**
* 执行destroyed后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterDestroy() {
if (this.viewStateEvent) {
this.viewStateEvent.unsubscribe();
}
<#if destroyed_block??>
${destroyed_block}
</#if>
}
/**
* 获取关系项
*
* @public
* @param {*} [arg={}]
* @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getDRTabItem(arg: any = {}): any {
let expmode = arg.nodetype.toUpperCase();
if (!expmode) {
expmode = '';
}
<#list ctrl.getPSAppViewRefs() as item>
<#if (item.getName()?index_of("DRITEM:")==0)>
<#assign refview = item.getRefPSAppView()>
if (Object.is(expmode, '${item.getName()?substring(7)}')) {
return {
viewname: '${srffilepath2(refview.codeName)}',
parentdatajo: <#if item.getParentDataJO()??>${item.getParentDataJO()}<#else>{},</#if>
};
}
</#if>
</#list>
return undefined;
}
/**
* 获取数据项
*
* @public
* @param {string} id
* @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getItem(id: string): any {
const arr: any[] = this.items.filter((_item: any) => Object.is(_item.id, id));
if (arr) {
return arr[0];
}
return null;
}
public handleFormDataChange(data: any) {
this.formData = data;
if (data && Object.is(data.srfuf, '1')) {
this.items.forEach((item: any) => {
item.disabled = false;
})
} else {
this.items.forEach((item: any) => {
item.disabled = true;
})
}
}
/**
* 选中节点
*
* @param {*} $event
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public tabPanelClick($event: any): void {
// const item = this.getItem($event);
// if (Object.is(item.id, this.selection.id)) {
// return;
// }
// this.$emit('selectionchange', [item]);
// let localNavParam:any = this.initNavParam(item);
// const refview = this.getDRTabItem({ nodetype: item.id });
// this.selection = {};
// const _context: any = { ...JSON.parse(JSON.stringify(this.context)) };
// if(localNavParam && localNavParam.localContext){
// Object.assign(_context,localNavParam.localContext);
// }
// Object.assign(_context,{srfparentdename:this.parentName,srfparentkey:_context[this.parentName.toLowerCase()]});
// const _params: any = {};
// if(localNavParam && localNavParam.localViewParam){
// Object.assign(_params,localNavParam.localViewParam);
// }
// if (refview && refview.parentdatajo) {
// Object.assign(_context, refview.parentdatajo);
// Object.assign(this.selection, { view: { viewname: refview.viewname }, data: _context, param: _params });
// }
// Object.assign(this.selection, item);
}
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/CONTROL/CONTROL-BASE.style.ftl
</#ibizinclude>
\ No newline at end of file
@CONTROL/视图布局面板/@MACRO/EDIT3.vue.ftl
浏览文件 @
55f29b6a
<div class="view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card <#if !view.isShowCaptionBar()> view-no-caption</#if> <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :dis-hover="true" :bordered="false">
<#if view.hasPSControl('toolbar')>
<#assign selfToolbarRender>
<template v-if="Object.is(this.selection.id, 'form')">
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</template>
</#assign>
</#if>
<#ibizinclude>
./VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('drtab')>
<@ibizindent blank=8>
${P.getCtrlCode('drtab', 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
<div class="view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card <#if !view.isShowCaptionBar()> view-no-caption</#if> <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :dis-hover="true" :bordered="false">
<#if view.hasPSControl('toolbar')>
<#assign selfToolbarRender>
<template v-if="Object.is(this.selection.id, 'form')">
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</template>
</#assign>
</#if>
<#ibizinclude>
./VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<div class="edit-view3">
<div class="edit-view3-drheader">
<span :class="{ 'dr-tab-item': true, 'is-active': drItem && drItem.id !== 'form' }" @click="handleDrTabChange"><#if view.getPSControl('drtab').getEditItemCaption?? && view.getPSControl('drtab').getEditItemCaption()??>${view.getPSControl('drtab').getEditItemCaption()}</#if></span>
<#if view.hasPSControl('drtab')>
<@ibizindent blank=8>
${P.getCtrlCode('drtab', 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
<div class="edit-view3-content">
<div class="edit-view3-content__form" :style="drItem && drItem.id !== 'form' ? 'display: none;' : ''">
<#if view.hasPSControl('form')>
<@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
<component
class="view-container2"
v-if="drItem && drItem.id && drItem.id !== 'form'"
:is="drItem.navView"
:viewDefaultUsage="false"
:viewdata="JSON.stringify(drItem.srfnavdata.context)"
:viewparam="JSON.stringify(drItem.srfnavdata.viewparams)">
</component>
</div>
</div>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
@CONTROL/视图布局面板/实体编辑视图(上下关系)/VIEW.vue.ftl
浏览文件 @
55f29b6a
<div class="view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card <#if !view.isShowCaptionBar()> view-no-caption</#if> <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :disHover="true" :padding="0" :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('form')>
<@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code}
</@ibizindent>
</#if>
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR" && ctrl.getControlType() != "FORM">
<#if P.getCtrlCode(ctrl, 'CONTROL.html')??>
<@ibizindent blank=12>
${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
</#if>
</#list>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
<div class="view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card <#if !view.isShowCaptionBar()> view-no-caption</#if> <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :disHover="true" :padding="0" :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<div class="edit-view4">
<div class="edit-view4-form">
<#if view.hasPSControl('form')>
<@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
<div class="edit-view4-content">
<#if view.hasPSControl('drtab')>
<@ibizindent blank=8>
${P.getCtrlCode('drtab', 'CONTROL.html').code}
</@ibizindent>
</#if>
<component
class="view-container2"
v-if="drItem && !drItem.disabled"
:is="drItem.navView"
:viewDefaultUsage="false"
:viewdata="JSON.stringify(drItem.srfnavdata.context)"
:viewparam="JSON.stringify(drItem.srfnavdata.viewparams)">
</component>
</div>
</div>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
\ No newline at end of file
@VIEW/@MACRO/EDIT_VIEW3-BASE.vue.ftl
浏览文件 @
55f29b6a
<#ibizinclude>
./LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>
<#ibizinclude>
./VIEW_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
./VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude>
/**
* 选中数据
*
* @type {*}
* @memberof ${srfclassname('${view.name}')}Base
*/
public selection: any = {};
<#ibizinclude>
./VIEW_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
./VIEW-BASE.style.ftl
<#ibizinclude>
./LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>
<#ibizinclude>
./VIEW_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
./VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude>
/**
* 选中数据
*
* @type {*}
* @memberof ${srfclassname('${view.name}')}Base
*/
public drItem: any = {};
/**
* 处理分页项变化
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public handleDrTabChange() {
}
<#ibizinclude>
./VIEW_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
./VIEW-BASE.style.ftl
</#ibizinclude>
\ No newline at end of file
@VIEW/实体编辑视图(上下关系)/VIEW-BASE.vue.ftl
浏览文件 @
55f29b6a
<#assign self_content>
/**
* 选中数据
*
* @type {*}
* @memberof ${srfclassname('${view.name}')}Base
*/
public
selection: any = {};
</#assign>
<#ibizinclude>
../@MACRO/VIEW-BASE.vue.ftl
<#assign self_content>
/**
* 选中数据
*
* @type {*}
* @memberof ${srfclassname('${view.name}')}Base
*/
public
drItem: any = {};
</#assign>
<#ibizinclude>
../@MACRO/VIEW-BASE.vue.ftl
</#ibizinclude>
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录