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

2020.4.30 模板初始化

上级 7419a602
# General
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
<#assign deuiaction=item.getPSUIAction()> <#assign deuiaction=item.getPSUIAction()>
<#assign icon><#if item.getPSSysImage()??><#assign image = item.getPSSysImage()><#if image.getCssClass()??>, iconcls: '${image.getCssClass()}'</#if><#if image.getImagePath()??>, icon: '${image.getImagePath()}'</#if></#if></#assign>
<#if deuiaction.getUIActionTag() == 'ExportExcel'> <#if deuiaction.getUIActionTag() == 'ExportExcel'>
${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', <#if item.isShowCaption()>caption: '${item.caption}',</#if> disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' }<#if view.hasPSControl("GRID")><#assign gridhandler = view.getPSControl("GRID").getPSAjaxControlHandler()>, MaxRowCount: <#if gridhandler?? && gridhandler.getPSDEDataExport()??>${gridhandler.getPSDEDataExport().getMaxRowCount()?c}<#elseif sys.getDEDataExportMaxRowCount() gt 0>${sys.getDEDataExportMaxRowCount()?c}<#else>10000</#if></#if> }, ${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', caption: '${item.caption}','isShowCaption':${item.isShowCaption()?c},'isShowIcon':${item.isShowIcon()?c}, tooltip: '${item.getTooltip()}'${icon}, disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' }<#if view.hasPSControl("GRID")><#assign gridhandler = view.getPSControl("GRID").getPSAjaxControlHandler()>, MaxRowCount: <#if gridhandler?? && gridhandler.getPSDEDataExport()??>${gridhandler.getPSDEDataExport().getMaxRowCount()?c}<#elseif sys.getDEDataExportMaxRowCount() gt 0>${sys.getDEDataExportMaxRowCount()?c}<#else>10000</#if></#if> },
<#elseif deuiaction.getUIActionTag() == 'ToggleRowEdit'> <#elseif deuiaction.getUIActionTag() == 'ToggleRowEdit'>
${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', <#if item.isShowCaption()>caption: '${item.caption}', </#if>disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' } }, ${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', caption: '${item.caption}','isShowCaption':${item.isShowCaption()?c},'isShowIcon':${item.isShowIcon()?c}, tooltip: '${item.getTooltip()}'${icon}, disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' } },
<#else> <#else>
${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', <#if item.isShowCaption()>caption: '${item.caption}', </#if>disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' } }, ${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', caption: '${item.caption}','isShowCaption':${item.isShowCaption()?c},'isShowIcon':${item.isShowIcon()?c}, tooltip: '${item.getTooltip()}'${icon}, disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' } },
</#if> </#if>
\ No newline at end of file
<#macro badge item>
<#if item.getPSUIAction?? && item.getPSUIAction()?? && item.getPSUIAction().getPSAppCounter?? && item.getPSUIAction().getPSAppCounter()??>
<#assign uiaction = item.getPSUIAction() />
<#assign counter = uiaction.getPSAppCounter() />
<Badge type="primary" :count="${srfclassname('${counter.getCodeName()}')}counterservice.counterData.<#if uiaction.getCounterId()??>${uiaction.getCounterId()}</#if>">
<#nested>
</Badge>
<#else>
<#nested>
</#if>
</#macro>
\ No newline at end of file
<#-- content --> <view_${ctrl.getName()}
<#assign content> viewState={this.viewState}
:showBusyIndicator="${ctrl.isShowBusyIndicator()?c}" viewparams={this.viewparams}
v-model="collapseChange" context={this.context}
:mode="mode" showBusyIndicator={${ctrl.isShowBusyIndicator()?c}}
:selectTheme="selectTheme" on-menus-change={(menus: any[]) => this.appMenusChange(menus)}
:isDefaultPage="isDefaultPage" name="${ctrl.name}"
:defPSAppView="defPSAppView" ref="${ctrl.name}"
</#assign> />
<#ibizinclude> \ No newline at end of file
../@MACRO/HTML/DEFAULT.html.ftl
</#ibizinclude>
\ No newline at end of file
/*** BRGIN:菜单样式 ***/
.app-app-menu { .app-app-menu {
overflow-y: auto; height: 100%;
overflow-x: hidden; width: 100%;
height: calc(100% - 58px); }
.ivu-divider{ \ No newline at end of file
background-color: #b3b3b3;
height: 2px;
}
> .el-menu {
border-right: 0;
.el-menu-item {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
.ivu-badge {
.ivu-badge-count {
box-shadow: 0 0 0 0px #fff;
}
}
}
.el-submenu__title i, .el-menu-item i {
font-size: 16px;
width: 16px;
}
.el-submenu__title .text {
font-size: 16px;
}
.el-menu-item, .el-submenu__title {
height: 36px;
font-size: 16px;
line-height: 32px;
}
.el-menu-item, .el-submenu, .el-menu {
border-top: 1px solid #fff;
}
> .el-menu-item, > .el-submenu > .el-submenu__title {
height: 40px;
line-height: 36px;
border-left: 4px solid transparent;
padding-left: 16px !important;
}
.app-menu-icon {
margin-right: 4px;
}
> .el-submenu {
> .el-menu {
> .el-menu-item, > .el-submenu > .el-submenu__title {
padding-left: 44px !important;
}
> .el-submenu {
> .el-menu {
> .el-menu-item, > .el-submenu > .el-submenu__title {
padding-left: 68px !important;
}
}
}
}
}
.active-icon {
font-size: 40px !important;
position: absolute;
right: 0;
line-height: 42px;
color: #fff !important;
display: none;
width: 24px !important;
overflow: hidden;
}
}
.ivu-divider-horizontal {
width: calc(100% - 32px);
min-width: calc(100% - 32px);
margin: 4px auto;
margin-bottom: 1px;
}
}
.app-popper-menu {
.el-menu-item, .el-submenu__title {
height: 36px;
font-size: 16px;
line-height: 36px;
}
> .el-menu-item, > .el-submenu > .el-submenu__title {
height: 40px;
line-height: 40px;
}
.el-menu-item {
.ivu-badge {
.ivu-badge-count {
box-shadow: 0 0 0 0px #fff;
}
}
> span{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.ivu-divider-horizontal {
width: calc(100% - 12px);
min-width: calc(100% - 12px);
margin: 4px auto;
margin-bottom: 1px;
}
}
<#ibizinclude>
../@MACRO/CSS/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude> <script lang='ts'>
../@MACRO/CONTROL/CONTROL.vue.ftl import { Component } from 'vue-property-decorator';
</#ibizinclude> import { VueLifeCycleProcessing } from '@/crm-core';
\ No newline at end of file import ${srfclassname(ctrl.codeName)}Base from './${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}-base.vue';
<#if ctrl.getPSControls?? && ctrl.getPSControls()??>
<#list ctrl.getPSControls() as subctrl>
<#if subctrl.getControlType() != 'TOOLBAR' && subctrl.getControlType() != 'CONTEXTMENU'>
<#if subctrl.getPSAppDataEntity?? && subctrl.getPSAppDataEntity()??>
import view_${subctrl.getName()} from '@widgets/${srffilepath2(subctrl.getPSAppDataEntity().getCodeName())}/${srffilepath2(subctrl.getCodeName())}-${subctrl.getControlType()?lower_case}/${srffilepath2(subctrl.getCodeName())}-${subctrl.getControlType()?lower_case}.vue';
<#else>
import view_${subctrl.getName()} from '@widgets/app/${srffilepath2(subctrl.getCodeName())}-${subctrl.getControlType()?lower_case}/${srffilepath2(subctrl.getCodeName())}-${subctrl.getControlType()?lower_case}.vue';
</#if>
</#if>
</#list>
</#if>
/**
* ${ctrl.getName()}基类
*
* @export
* @class ${srfclassname(ctrl.codeName)}
* @extends {${srfclassname(ctrl.codeName)}Base}
*/
@Component({
components: {
<#if ctrl.getPSControls?? && ctrl.getPSControls()??>
<#list ctrl.getPSControls() as subctrl>
<#if subctrl.getControlType() != 'TOOLBAR' && subctrl.getControlType() != 'CONTEXTMENU'>
view_${subctrl.getName()},
</#if>
</#list>
</#if>
<#if components??>${components}</#if>
}
})
@VueLifeCycleProcessing
export default class ${srfclassname(ctrl.codeName)} extends ${srfclassname(ctrl.codeName)}Base { }
</script>
\ No newline at end of file
<template>
<div class="app-data-chart <#if ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>">
<#if ctrl.render??><#t>
${ctrl.render.code}
<#else><#t>
<div class="app-charts" :id="chartId" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()};</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()}px<#else>100%</#if>;padding: 6px 0;"></div>
</#if>
</div>
</template>
<#assign import_block>
import echarts from 'echarts';
</#assign>
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
</#ibizinclude>
/**
* 获取多项数据
*
* @returns {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public getDatas(): any[] {
return [];
}
/**
* 获取单项树
*
* @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public getData(): any {
return null;
}
/**
* 显示处理提示
*
* @type {boolean}
* @memberof MOBILEENTITY3Canlen
*/
@Prop({ default: true }) protected showBusyIndicator!: boolean;
/**
* 部件行为--fetch
*
* @type {string}
* @memberof Mob
*/
@Prop() protected fetchAction!: string;
/**
* Vue声明周期(组件初始化完毕)
*
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public created() {
this.afterCreated();
}
/**
* 执行created后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public afterCreated(){
if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) {
return;
}
if (Object.is('load', action)) {
this.load(data);
}
});
}
}
/**
* vue 生命周期
*
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
protected destroyed() {
this.afterDestroy();
}
/**
* 执行destroyed后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
protected afterDestroy() {
if (this.viewStateEvent) {
this.viewStateEvent.unsubscribe();
}
<#if destroyed_block??>
${destroyed_block}
</#if>
}
/**
* 图表div绑定的id
*
* @type {}
* @memberof ${srfclassname('${ctrl.name}')}
*/
public chartId:string = this.$util.createUUID();
/**
* echarts图表对象
*
* @type {}
* @memberof ${srfclassname('${ctrl.name}')}
*/
public myChart:any;
/**
* 初始化图表所需参数
*
* @type {}
* @memberof ${srfclassname('${ctrl.name}')}
*/
public chartOption:any = {};
/**
* 图表基础配置参数
*
* @returns {*}
* @memberof ${srfclassname('${ctrl.name}')}Service
*/
public defaultConfig: any = {
<#-- 获取模板对象:BEGIN -->
<#assign title=ctrl.getPSDEChartTitle()>
<#list ctrl.getPSDEChartSerieses() as series>
<#-- 暂只支持第一个序列 -->
<#if series_index == 0>
<#assign chartSeries = series/>
</#if>
</#list>
<#-- 获取模板对象:END -->
<#-- 公共配置:BEGIN -->
title: {
show: <#if title.isShowTitle()>true<#else>false</#if>,
<#if title.getTitle()??>
text: '${title.getTitle()}',
</#if>
<#if title.getSubTitle()??>
subtext: '${title.getSubTitle()}'
</#if>
},
legend: {top: 20},
// toolbox: {
// show: true,
// feature: {
// dataView: {
// show: true,
// readOnly: true,
// title: '数据视图'
// },
// saveAsImage: {
// show: true,
// title: '保存为图片'
// }
// }
// },
tooltip: {
trigger: 'item',
formatter: (params: any) => {
return `<#noparse>${params.seriesName}<br>${params.data.name}: ${params.data.sum}个</#noparse>`
}
},
color:['#37A2DA','#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C','#ff9f7f', '#fb7293', '#E062AE','#E690D1', '#e7bcf3', '#9d96f5']
}
/**
* 深度合并对象,把secondObj的内容合并给firstObj,返回合并后的firstObj
* @param {} firstObj 被合并对象
* @param {} secondObj 合并对象
* @memberof ${srfclassname('${ctrl.name}')}
*/
public deepObjectMerge(firstObj: any, secondObj: any) {
for (let key in secondObj) {
firstObj[key] =
firstObj[key] && firstObj[key].toString() === "[object Object]"
? this.deepObjectMerge(firstObj[key], secondObj[key])
: (firstObj[key] = secondObj[key]);
}
return firstObj;
}
/**
* 刷新
*
* @param {*} [opt={}]
* @memberof ${srfclassname('${ctrl.name}')}
*/
protected refresh(opt: any = {}) {
this.load(opt);
}
/**
* 获取图表数据
*
* @returns {*}
* @memberof ${srfclassname('${ctrl.name}')}
*/
public load(opt?:any) {
let _this = this;
const arg: any = { ...opt };
const parentdata: any = {};
this.$emit('beforeload', parentdata);
Object.assign(arg, parentdata);
Object.assign(arg,{viewparams:this.viewparams});
this.service.search(this.fetchAction,JSON.parse(JSON.stringify(this.context)),arg,this.showBusyIndicator).then((res) => {
if (res) {
_this.chartOption = _this.deepObjectMerge(_this.defaultConfig, res.data);
_this.drawCharts();
}
}).catch((error) => {
console.error(error);
});
}
/**
* 绘制图表
*
* @returns {*}
* @memberof ${srfclassname('${ctrl.name}')}
*/
public drawCharts(){
if(!this.myChart){
let element:any = document.getElementById(this.chartId);
this.myChart = echarts.init(element);
}
this.myChart.setOption(this.chartOption);
this.myChart.resize();
}
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/CONTROL/CONTROL-BASE.style.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/SERVICE/SERVICE_HEADER.ts.ftl
</#ibizinclude>
/**
* 查询数据
*
* @param {string} action
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
@Errorlog
public search(action: string,context: any = {}, data: any = {}, isloading?: boolean): Promise<any> {
const {data:Data,context:Context} = this.handleRequestData(action,context,data,true);
return new Promise((resolve: any, reject: any) => {
const _appEntityService: any = this.appEntityService;
let result: Promise<any>;
if (_appEntityService[action] && _appEntityService[action] instanceof Function) {
result = _appEntityService[action](Context,Data, isloading);
}else{
result =_appEntityService.FetchDefault(Context,Data, isloading);
}
result.then((response) => {
this.handleSeries(response);
resolve(response);
}).catch(response => {
reject(response);
});
});
}
<#-- 暂只支持第一个序列 -->
<#list ctrl.getPSDEChartSerieses() as series>
<#if series_index == 0>
<#assign chartSeries = series/>
</#if>
</#list>
/**
* 生成图表数据
*
* @param {*} response
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public handleSeries(response: any) {
let chartOption:any = {};
<#-- 获取x轴的分类属性字段 -->
<#if chartSeries.getCatalogField?? && chartSeries.getCatalogField()??>
<#assign catalogField = chartSeries.getCatalogField()>
let catalogFields: any = [<#rt>
<#list catalogField?split(";") as field>
"${field?lower_case}",<#t>
</#list>
</#if>
];<#lt>
<#-- 获取y轴值属性字段和中文名称 -->
<#if chartSeries.getValueField?? && chartSeries.getValueField()??>
<#assign valueField = chartSeries.getValueField()>
let valueFields: any = [<#rt>
<#list valueField?split(";") as field>
[ "${field?lower_case}", "${de.getPSDEField(field).getLogicName()}" ],<#t>
</#list>
</#if>
];<#lt>
let otherFields: any = ['planned_revenue'];
// 数据按分类属性分组处理
let xFields:any = [];
let yFields:any = [];
let oFields: any = [];
valueFields.forEach((field: any,index: number) => {
yFields[index] = [];
});
response.data.forEach((item:any) => {
if(xFields.indexOf(item[catalogFields[0]]) > -1){
let num = xFields.indexOf(item[catalogFields[0]]);
valueFields.forEach((field: any,index: number) => {
yFields[index][num] += item[field[0]];
});
oFields[num] += item[otherFields[0]];
}else{
xFields.push(item[catalogFields[0]]);
oFields.push(item[otherFields[0]]);
valueFields.forEach((field: any,index: number) => {
yFields[index].push(item[field[0]]);
});
}
});
let series: any = [];
valueFields.forEach((field: any,index: number) => {
let yData: any = [];
xFields.forEach((item:any, num: number) => {
yData.push({value: (100 - (100 / xFields.length) * num), name: item, sum: yFields[index][num], total: oFields[num]});
});
yData.sort(function (a:any, b:any) { return a.value - b.value; });
series.push({
name:field[1],
type:"funnel",
data:yData,
minSize: '40%',
label: {
position: 'center',
formatter: (params: any) => {
return `<#noparse>${params.data.name}(${params.data.sum}个, 金额¥${params.data.total})</#noparse>`
}
},
});
});
chartOption.series = series;
response.data = chartOption;
}
<#ibizinclude>
../@MACRO/SERVICE/SERVICE_BOTTOM.ts.ftl
</#ibizinclude>
\ No newline at end of file
CTRLTYPE=CHART#FunnelChart
\ No newline at end of file
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
} }
} }
.el-table__body-wrapper{ .el-table__body-wrapper{
height: calc(100% - 43px) !important; height: calc(100% - 60px) !important;
} }
.el-table__empty-block{ .el-table__empty-block{
height: auto !important; height: auto !important;
......
此差异已折叠。
CTRLTYPE=GRID#GRIDEX
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :disHover="true" :padding="0" :bordered="false">
<#ibizinclude>
./VIEW_CAPTION.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('toolbar')>
<#assign toolbarCtrl = view.getPSControl('toolbar')>
<@ibizindent blank=8>
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<div class="content-container">
<#if view.getPSControls()??> <#if view.getPSControls()??>
<#list view.getPSControls() as ctrl> <#list view.getPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR"> <#if ctrl.getControlType() != "TOOLBAR">
...@@ -24,6 +10,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code} ...@@ -24,6 +10,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#if> </#if>
</#list> </#list>
</#if> </#if>
</div> </#assign>
</card> <#ibizinclude>
</div> ./VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <#if view.getAllPSControls()??>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :disHover="true" :padding="0" :bordered="false"> <#list view.getAllPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
<#ibizinclude> <#if P.getCtrlCode(ctrl, 'CONTROL.html')??>
./VIEW_CAPTION.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('toolbar')>
<#assign toolbarCtrl = view.getPSControl('toolbar')>
<@ibizindent blank=8>
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<div class="content-container">
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
<#if P.getCtrlCode(ctrl, 'CONTROL.html')??>
<@ibizindent blank=12> <@ibizindent blank=12>
${P.getCtrlCode(ctrl, 'CONTROL.html').code} ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
</#if> </#if>
</#if> </#if>
</#list> </#list>
</#if> </#if>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" 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" :bordered="false">
<#ibizinclude>
./VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('toolbar')>
<@ibizindent blank=8>
<div slot="extra">
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</div>
</@ibizindent>
</#if>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<#if view.hasPSControl('form')> <#if view.hasPSControl('form')>
<@ibizindent blank=8> <@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code} ${P.getCtrlCode('form', 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
</#if> </#if>
<#-- BEGIN:视图底部视图消息 --> </#assign>
<@ibizindent blank=8>
<#ibizinclude> <#ibizinclude>
./View_Pos_Bottom_Msgs.vue.ftl ./VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
</@ibizindent> \ No newline at end of file
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card' :dis-hover="true" :bordered="false">
<#ibizinclude>
./VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('toolbar')>
<@ibizindent blank=8>
<p slot="extra" v-show="Object.is(this.selection.id, 'form')">
<row style='margin-bottom: 6px;'>
<div class='pull-right'>
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</div>
</row>
</p>
</@ibizindent>
</#if>
<div class="content-container">
<#if view.hasPSControl('drtab')> <#if view.hasPSControl('drtab')>
<@ibizindent blank=8> <@ibizindent blank=8>
${P.getCtrlCode('drtab', 'CONTROL.html').code} ${P.getCtrlCode('drtab', 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
</#if> </#if>
</div> </#assign>
</card> <#ibizinclude>
</div> ./VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
\ No newline at end of file
<#assign MDContent><#t> <#assign view_content>
<#if view.getViewType() == "DEGRIDVIEW9">
<#if view.hasPSControl('searchform')> <#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code} ${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if> </#if>
<#if view.hasPSControl('grid')> <#if view.hasPSControl('grid')>
${P.getCtrlCode('grid', 'CONTROL.html').code} ${P.getCtrlCode('grid', 'CONTROL.html').code}
</#if> </#if>
</#if>
<#-- BEGIN:快速搜索或工具栏存在 -->
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))>
<row style='margin-bottom: 6px;'>
<#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' style='max-width: 400px;margin-top:6px;' />
</#if>
<div class='pull-right'>
<#if view.hasPSControl('toolbar')>
<@ibizindent blank=8>
${P.getCtrlCode('toolbar', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
</div>
</row>
</#if>
<#-- END:快速搜索或工具栏存在 -->
<#if view.getViewType() != "DEGRIDVIEW9">
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#if view.hasPSControl('grid')>
${P.getCtrlCode('grid', 'CONTROL.html').code}
</#if>
</#if>
</#assign> </#assign>
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#ibizinclude>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> ./VIEW_LAYOUT_BASE.ftl
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false"> </#ibizinclude>
<@ibizindent blank=8> \ No newline at end of file
<#ibizinclude>
./VIEW_CAPTION.vue.ftl
</#ibizinclude>
</@ibizindent>
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
./View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<#-- BEGIN:视图内容 -->
<@ibizindent blank=12>
<#ibizinclude>
./VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容 -->
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
./View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
<#if view.getPSSysCss?? && view.getPSSysCss()??>
<#assign styleName = view.getPSSysCss().getCssName()/>
</#if>
<#if styleName?? && styleName == "TopFullScreen">
<#assign isStyleName = true/>
<#else>
<#assign isStyleName = false/>
</#if>
<app-layout viewName="${view.getCodeName()?lower_case}" viewTitle="${view.getTitle()}"<#if view.isShowCaptionBar?? && (view.isShowCaptionBar() == false)> :isShowCaptionBar="false"</#if><#if !view.hasPSControl('toolbar')> :isShowToolbar="false"</#if> :className="{ 'view-container': true<#if !isStyleName>, 'default-mode-view': true</#if>, '${view.getViewType()?lower_case}': true, '${srffilepath2(view.getCodeName())}': true<#if view.getPSSysCss?? && view.getPSSysCss()??>, '${view.getPSSysCss().getCssName()}': true</#if> }"<#if !isStyleName> layoutMode="VIEW"</#if> :isShowUserInfo="isDefaultView()" :openMode="openMode" @close-view="closeView($event)">
<template slot="headerLeft">
<div class="view-header-left">
<#if isStyleName> <go-back-button v-if="isDefaultView()"/></#if>
<div class="view-caption" v-if="isDefaultView()">{{$t(model.srfCaption)}}</div>
<modal-breadcrumb v-if="isModalView()"/>
</div>
</template>
<#if view.hasPSControl('toolbar')>
<template slot="headerRight">
<div class="view-header-right">
<app-header-menus :toolbarModel="toolBarModels" @menu-click="toolbar_click($event)" mode="<#if isStyleName>view2<#else><#if header_menu_mode??>${header_menu_mode}<#else>view</#if></#if>" :openMode="openMode"<#if view.isEnableQuickSearch?? && view.isEnableQuickSearch()> :isEnableQuickSearch="true" v-model="query" @search="onSearch($event)"</#if>/>
</div>
</template>
</#if>
<template slot="content">
<div class="view-content-wrapper">
<#if view_content??>${view_content}</#if><#-- 视图内容变量:view_content -->
</div>
</template>
</app-layout>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover='true' :padding='0' :bordered='false'>
<#ibizinclude>
./VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container">
<@ibizindent blank=12> <@ibizindent blank=12>
<#if view.hasPSControl('wizardpanel')> <#if view.hasPSControl('wizardpanel')>
${P.getCtrlCode('wizardpanel', 'CONTROL.html').code} ${P.getCtrlCode('wizardpanel', 'CONTROL.html').code}
</#if> </#if>
</@ibizindent> </@ibizindent>
</div> </#assign>
</card> <#ibizinclude>
</div> ./VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <#if view.hasPSControl('tabexppanel')>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false"> ${P.getCtrlCode('tabexppanel', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('toolbar')>
<@ibizindent blank=8>
<p slot="extra">
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</p>
</@ibizindent>
</#if> </#if>
<div class='content-container'> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
<#if view.hasPSControl('tabexppanel')> \ No newline at end of file
${P.getCtrlCode('tabexppanel', 'CONTROL.html').code}
</#if>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</div>
</card>
</div>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <#if view.hasPSControl('listexpbar')>
<card class='view-card' :dis-hover="true" :bordered="false"> ${P.getCtrlCode('listexpbar', 'CONTROL.html').code}
</#if>
<#ibizinclude> </#assign>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl <#ibizinclude>
</#ibizinclude> ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
<div class="content-container"> \ No newline at end of file
<#if view.hasPSControl('listexpbar')>
${P.getCtrlCode('listexpbar', 'CONTROL.html').code}
</#if>
</div>
</card>
</div>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :bordered="false" :dis-hover="true" >
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class='content-container'>
<#assign MDContent> <#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))>
<row style="margin-bottom:6px;">
<#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' style='max-width: 400px;margin-top:6px;' />
</#if>
<div class='pull-right'>
<@ibizindent blank=8>
<#if view.hasPSControl('toolbar')>
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</#if>
</@ibizindent>
</div>
</row>
</#if>
<#comment><!--结束:快速搜索或工具栏存在--></#comment> <#comment><!--结束:快速搜索或工具栏存在--></#comment>
<#if view.hasPSControl('searchform')> <#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code} ${P.getCtrlCode('searchform', 'CONTROL.html').code}
...@@ -35,6 +12,7 @@ ${P.getCtrlCode('list', 'CONTROL.html').code} ...@@ -35,6 +12,7 @@ ${P.getCtrlCode('list', 'CONTROL.html').code}
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl ../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude> </#ibizinclude>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card view-no-caption' :bordered="false" :dis-hover="true" >
<div class='content-container'>
<#assign MDContent> <#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))>
<row style='margin-bottom: 6px;'>
<#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' style='max-width: 400px;margin-top:6px;' />
</#if>
<div class='pull-right'>
<@ibizindent blank=16>
<#if view.hasPSControl('toolbar')>
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</#if>
</@ibizindent>
</div>
</row>
</#if>
<#comment><!--结束:快速搜索或工具栏存在--></#comment> <#comment><!--结束:快速搜索或工具栏存在--></#comment>
<#if view.hasPSControl('searchform')> <#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code} ${P.getCtrlCode('searchform', 'CONTROL.html').code}
...@@ -30,6 +12,7 @@ ${P.getCtrlCode('list', 'CONTROL.html').code} ...@@ -30,6 +12,7 @@ ${P.getCtrlCode('list', 'CONTROL.html').code}
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl ../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude> </#ibizinclude>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <#if view.hasPSControl('dataviewexpbar')>
<card class='view-card' :dis-hover="true" :bordered="false"> ${P.getCtrlCode('dataviewexpbar', 'CONTROL.html').code}
</#if>
<#ibizinclude> </#assign>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl <#ibizinclude>
</#ibizinclude> ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
<div class="content-container"> \ No newline at end of file
<#if view.hasPSControl('dataviewexpbar')>
${P.getCtrlCode('dataviewexpbar', 'CONTROL.html').code}
</#if>
</div>
</card>
</div>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :bordered="false" :dis-hover="true" >
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class='content-container'>
<#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))>
<row style="margin-bottom:6px;">
<#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' style='max-width: 400px;margin-top:6px;' />
</#if>
<div class='pull-right'>
<@ibizindent blank=8>
<#if view.hasPSControl('toolbar')>
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</#if>
</@ibizindent>
</div>
</row>
</#if>
<#comment><!--结束:快速搜索或工具栏存在--></#comment>
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#if view.hasPSControl('chart')>
${P.getCtrlCode('chart', 'CONTROL.html').code}
</#if>
</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl ../实体图表视图/VIEW.vue.ftl
</#ibizinclude> </#ibizinclude>
</div> \ No newline at end of file
</card>
</div>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :bordered="false" :dis-hover="true" >
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class='content-container'>
<#assign MDContent> <#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))>
<row style="margin-bottom:6px;">
<#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' style='max-width: 400px;margin-top:6px;' />
</#if>
<div class='pull-right'>
<@ibizindent blank=8>
<#if view.hasPSControl('toolbar')>
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</#if>
</@ibizindent>
</div>
</row>
</#if>
<#comment><!--结束:快速搜索或工具栏存在--></#comment>
<#if view.hasPSControl('searchform')> <#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code} ${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if> </#if>
...@@ -35,6 +11,7 @@ ${P.getCtrlCode('chart', 'CONTROL.html').code} ...@@ -35,6 +11,7 @@ ${P.getCtrlCode('chart', 'CONTROL.html').code}
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl ../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude> </#ibizinclude>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card' :dis-hover="true" :padding="0" :bordered="false">
<div class="content-container pickup-view"> <div class="content-container pickup-view">
<div class="translate-contant"> <div class="translate-contant">
<div class="center" :style="{width : !isShowButton ? '100%' : ''}"> <div class="center">
<#if view.hasPSControl('pickupviewpanel')> <#if view.hasPSControl('pickupviewpanel')>
<@ibizindent blank=20> <@ibizindent blank=20>
${P.getCtrlCode('pickupviewpanel', 'CONTROL.html').code}<#t> ${P.getCtrlCode('pickupviewpanel', 'CONTROL.html').code}<#t>
</@ibizindent> </@ibizindent>
</#if> </#if>
</div> </div>
<div v-if="isShowButton" class="translate-buttons"> <div class="translate-buttons">
<div class="buttons"> <div class="buttons">
<i-button type="primary" :title="this.containerModel.view_rightbtn.text" <i-button type="primary" :title="this.containerModel.view_rightbtn.text"
:disabled="this.containerModel.view_rightbtn.disabled" :disabled="this.containerModel.view_rightbtn.disabled"
...@@ -32,7 +30,7 @@ ...@@ -32,7 +30,7 @@
</i-button> </i-button>
</div> </div>
</div> </div>
<div v-if="isShowButton" class="right"> <div class="right">
<div class="mpicker-select"> <div class="mpicker-select">
<div v-for="(item, index) in viewSelections" :key="index" :class="item._select ? 'select' : ''" @click="selectionsClick(item)" @dblclick="selectionsDBLClick(item)"> <div v-for="(item, index) in viewSelections" :key="index" :class="item._select ? 'select' : ''" @click="selectionsClick(item)" @dblclick="selectionsDBLClick(item)">
<span>{{item.srfmajortext}}</span> <span>{{item.srfmajortext}}</span>
...@@ -40,7 +38,7 @@ ...@@ -40,7 +38,7 @@
</div> </div>
</div> </div>
</div> </div>
<card v-if="isShowButton" :dis-hover="true" :bordered="false" class="footer"> <card :dis-hover="true" :bordered="false" class="footer">
<row :style="{ textAlign: 'right' }"> <row :style="{ textAlign: 'right' }">
<i-button type="primary" :disabled="this.viewSelections.length > 0 ? false : true" @click="onClickOk">{{this.containerModel.view_okbtn.text}}</i-button> <i-button type="primary" :disabled="this.viewSelections.length > 0 ? false : true" @click="onClickOk">{{this.containerModel.view_okbtn.text}}</i-button>
&nbsp;&nbsp; &nbsp;&nbsp;
...@@ -48,5 +46,7 @@ ...@@ -48,5 +46,7 @@
</row> </row>
</card> </card>
</div> </div>
</card> </#assign>
</div> <#ibizinclude>
\ No newline at end of file ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <#assign MDContent>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false"> <#if view.hasPSControl('searchform')>
<@ibizindent blank=8> <@ibizindent blank=12>
${P.getCtrlCode('searchform', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
<#if view.hasPSControl('dataview')>
<@ibizindent blank=12>
${P.getCtrlCode('dataview', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_CAPTION.vue.ftl ../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude> </#ibizinclude>
</@ibizindent> </#assign>
<div class='content-container'> <#ibizinclude>
<#assign MDContent> ../@MACRO/VIEW_LAYOUT_BASE.ftl
<#comment><!--开始:快速搜索或工具栏存在--></#comment> </#ibizinclude>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))> \ No newline at end of file
<row style='margin-bottom: 6px;'>
<#if view.isEnableQuickSearch()>
<i-input placeholder='快速搜索框'<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show='!this.isExpandSearchForm '</#if></#if> v-model='query' search @on-search='onSearch' class='pull-left' style='max-width: 400px;margin-top:6px;' />
</#if>
<div class='pull-right'>
<@ibizindent blank=20>
<#if view.hasPSControl('toolbar')>
${P.getCtrlCode('toolbar', 'CONTROL.html').code}<#t>
</#if>
</@ibizindent>
</div>
</row>
</#if>
<#comment><!--结束:快速搜索或工具栏存在--></#comment>
<#if view.hasPSControl('searchform')>
<@ibizindent blank=12>
${P.getCtrlCode('searchform', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
<#if view.hasPSControl('dataview')>
<@ibizindent blank=12>
${P.getCtrlCode('dataview', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
</#assign>
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
</card>
</div>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card view-no-caption' :dis-hover="true" :bordered="false">
<div class='content-container'>
<#assign MDContent> <#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))>
<row style='margin-bottom: 6px;'>
<#if view.isEnableQuickSearch()>
<i-input placeholder='快速搜索框'<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show='!this.isExpandSearchForm'</#if></#if> v-model='query' search @on-search='onSearch' class='pull-left' style='max-width: 400px;margin-top:6px;' />
</#if>
<div class='pull-right'>
<@ibizindent blank=8>
<#if view.hasPSControl('toolbar')>
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</#if>
</@ibizindent>
</div>
</row>
</#if>
<#comment><!--结束:快速搜索或工具栏存在--></#comment>
<#if view.hasPSControl('searchform')> <#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code} ${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if> </#if>
...@@ -30,6 +11,7 @@ ${P.getCtrlCode('dataview', 'CONTROL.html').code} ...@@ -30,6 +11,7 @@ ${P.getCtrlCode('dataview', 'CONTROL.html').code}
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl ../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude> </#ibizinclude>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :padding="0" :bordered="false">
<div class="content-container pickup-view">
<#if view.hasPSControl('pickupviewpanel')> <#if view.hasPSControl('pickupviewpanel')>
<@ibizindent blank=12> <@ibizindent blank=12>
${P.getCtrlCode('pickupviewpanel', 'CONTROL.html').code}<#t> ${P.getCtrlCode('pickupviewpanel', 'CONTROL.html').code}<#t>
...@@ -14,6 +11,7 @@ ...@@ -14,6 +11,7 @@
<i-button @click="onClickCancel">{{this.containerModel.view_cancelbtn.text}}</i-button> <i-button @click="onClickCancel">{{this.containerModel.view_cancelbtn.text}}</i-button>
</row> </row>
</card> </card>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <#if view.hasPSControl('calendarexpbar')>
<card class='view-card' :dis-hover="true" :bordered="false"> ${P.getCtrlCode('calendarexpbar', 'CONTROL.html').code}
</#if>
<#ibizinclude> </#assign>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl <#ibizinclude>
</#ibizinclude> ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
<div class="content-container"> \ No newline at end of file
<#if view.hasPSControl('calendarexpbar')>
${P.getCtrlCode('calendarexpbar', 'CONTROL.html').code}
</#if>
</div>
</card>
</div>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <#if view.hasPSControl('treeexpbar')>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false"> <@ibizindent blank=12>
<@ibizindent blank=8> ${P.getCtrlCode('treeexpbar', 'CONTROL.html').code}<#t>
<#ibizinclude> </@ibizindent>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
</@ibizindent>
<#if view.hasPSControl('toolbar')>
<@ibizindent blank=8>
<p slot="extra">
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</p>
</@ibizindent>
</#if> </#if>
<div class='content-container'> </#assign>
<#-- BEGIN:视图顶部视图消息 --> <#ibizinclude>
<@ibizindent blank=12> ../@MACRO/VIEW_LAYOUT_BASE.ftl
<#ibizinclude> </#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl \ No newline at end of file
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<#if view.hasPSControl('treeexpbar')>
<@ibizindent blank=12>
${P.getCtrlCode('treeexpbar', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('toolbar')>
<@ibizindent blank=8>
<p slot="extra">
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</p>
</@ibizindent>
</#if>
<#assign MDContent> <#assign MDContent>
<#-- 搜索框: BEGIN -->
<#if (view.isEnableQuickSearch())>
<div class="search-contant">
<i-input search @on-change="($event) => { this.srfnodefilter = $event.target.value; }" @on-search="onSearch" class='pull-left'/>
</div>
</#if>
<#-- 搜索框: END -->
<#if view.hasPSControl('tree')> <#if view.hasPSControl('tree')>
<div class="tree-contant"> <div class="tree-contant">
${P.getCtrlCode('tree', 'CONTROL.html').code} ${P.getCtrlCode('tree', 'CONTROL.html').code}
...@@ -31,5 +10,7 @@ ${P.getCtrlCode('toolbar', 'CONTROL.html').code} ...@@ -31,5 +10,7 @@ ${P.getCtrlCode('toolbar', 'CONTROL.html').code}
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl ../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude> </#ibizinclude>
</card> </#assign>
</div> <#ibizinclude>
\ No newline at end of file ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <#assign MDContent>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false"> <#if view.hasPSControl('tree')>
<div class='content-container'> <div class="tree-contant">
<#assign MDContent> ${P.getCtrlCode('tree', 'CONTROL.html').code}
<#-- 搜索框: BEGIN --> </div>
<#if (view.isEnableQuickSearch())> </#if>
<div class="search-contant"> </#assign>
<i-input search @on-change="($event) => { this.srfnodefilter = $event.target.value; }" @on-search="onSearch" class='pull-left'/>
</div>
</#if>
<#-- 搜索框: END -->
<#if view.hasPSControl('tree')>
<div class="tree-contant">
${P.getCtrlCode('tree', 'CONTROL.html').code}
</div>
</#if>
</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl ../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude> </#ibizinclude>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :disHover="true" :padding="0" :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('toolbar')>
<#assign toolbarCtrl = view.getPSControl('toolbar')>
<@ibizindent blank=8>
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<div class="content-container">
<#if view.hasPSControl('form')> <#if view.hasPSControl('form')>
<@ibizindent blank=8> <@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code} ${P.getCtrlCode('form', 'CONTROL.html').code}
...@@ -29,6 +15,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code} ...@@ -29,6 +15,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#if> </#if>
</#list> </#list>
</#if> </#if>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card' :dis-hover="true" :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('toolbar')>
<@ibizindent blank=8>
<p slot="extra" v-show="Object.is(this.selection.id, 'form')">
${P.getCtrlCode('toolbar', 'CONTROL.html').code}
</p>
</@ibizindent>
</#if>
<div class="content-container edit-view2">
<#if view.hasPSControl('drbar')> <#if view.hasPSControl('drbar')>
<@ibizindent blank=8> <@ibizindent blank=8>
${P.getCtrlCode('drbar', 'CONTROL.html').code} ${P.getCtrlCode('drbar', 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
</#if> </#if>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <#if view.hasPSControl('gridexpbar')>
<card class='view-card' :dis-hover="true" :bordered="false"> <@ibizindent blank=8>
${P.getCtrlCode('gridexpbar', 'CONTROL.html').code}
<#ibizinclude> </@ibizindent>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl </#if>
</#ibizinclude> </#assign>
<#ibizinclude>
<div class="content-container"> ../@MACRO/VIEW_LAYOUT_BASE.ftl
<#if view.hasPSControl('gridexpbar')> </#ibizinclude>
${P.getCtrlCode('gridexpbar', 'CONTROL.html').code} \ No newline at end of file
</#if>
</div>
</card>
</div>
\ No newline at end of file
<#ibizinclude> <#ibizinclude>
../@MACRO/GRID.vue.ftl ../@MACRO/GRID.vue.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file \ No newline at end of file
<#ibizinclude> <#ibizinclude>
../@MACRO/GRID.vue.ftl ../@MACRO/GRID.vue.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file \ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <@ibizindent blank=8>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false"> <#if view.hasPSControl('tree')>
<#-- 不带数据信息标题 --> <div class="tree-contant">
<#if view.isShowCaptionBar()> ${P.getCtrlCode('tree', 'CONTROL.html').code}<#t>
<p v-if="isShowButton" slot='title'> </div>
<#if view.getPSSysImage()??> </#if>
<#assign viewimg = view.getPSSysImage()/> </@ibizindent>
<#if viewimg.getImagePath() != ""> </#assign>
<span class='caption-image'><i class='${viewimg.getCssClass()}'></i></span> <#ibizinclude>
<#else> ../@MACRO/VIEW_LAYOUT_BASE.ftl
<span class='caption-image'><img src='${viewimg.getImagePath()}'/></span> </#ibizinclude>
</#if> \ No newline at end of file
</#if>
<span class='caption-info'>{{$t(model.srfTitle)}}</span>
</p>
</#if>
<div class='content-container'>
<#-- 搜索框: BEGIN -->
<#if (view.isEnableQuickSearch())>
<div class="search-contant">
<i-input search @on-change="($event) => { this.srfnodefilter = $event.target.value; }" @on-search="onSearch" class='pull-left'/>
</div>
</#if>
<#-- 搜索框: END -->
<@ibizindent blank=16>
<#if view.hasPSControl('tree')>
<div class="tree-contant">
${P.getCtrlCode('tree', 'CONTROL.html').code}<#t>
</div>
</#if>
</@ibizindent>
</div>
</card>
</div>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card view-no-caption' :dis-hover="true" :bordered="false">
<div class='content-container pickup-grid-view'>
<@ibizindent blank=12> <@ibizindent blank=12>
<#if view.hasPSControl('searchform')> <#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}<#t> ${P.getCtrlCode('searchform', 'CONTROL.html').code}<#t>
...@@ -10,6 +7,7 @@ ...@@ -10,6 +7,7 @@
${P.getCtrlCode('grid', 'CONTROL.html').code}<#t> ${P.getCtrlCode('grid', 'CONTROL.html').code}<#t>
</#if> </#if>
</@ibizindent> </@ibizindent>
</div> </#assign>
</card> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
\ No newline at end of file </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <app-studioaction viewTitle="${view.getTitle()}" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' dis-hover :padding="0" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' dis-hover :padding="0" :bordered="false">
<@ibizindent blank=8> <@ibizindent blank=8>
<#ibizinclude> <#ibizinclude>
...@@ -21,4 +21,7 @@ ...@@ -21,4 +21,7 @@
</row> </row>
</card> </card>
</card> </card>
</div> </#assign>
\ No newline at end of file <#ibizinclude>
../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <#assign view_content>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card' dis-hover :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
<div class='content-container'>
<div class='view-top-messages'>
</div>
<@ibizindent blank=12> <@ibizindent blank=12>
<#if view.hasPSControl('dashboard')> <#if view.hasPSControl('dashboard')>
${P.getCtrlCode('dashboard', 'CONTROL.html').code} ${P.getCtrlCode('dashboard', 'CONTROL.html').code}
</#if> </#if>
</@ibizindent> </@ibizindent>
<div class='view-bottom-messages'> </#assign>
</div> <#ibizinclude>
</div> ../@MACRO/VIEW_LAYOUT_BASE.ftl
</card> </#ibizinclude>
</div> \ No newline at end of file
\ No newline at end of file
.app-container {
position: absolute;
width: 100vw;
height: 100vh;
top: 0;
left: 0;
right: 0;
bottom: 0;
.index_view.crm-app-layout {
.app-header-left {
height: 100%;
display: flex;
align-items: center;
>img {
margin: 0px 6px;
margin-top: 2px;
height: 32px;
}
>.app-name {
font-size: 18px;
font-weight: 900;
color: black;
height: 32px;
line-height: 32px;
white-space: nowrap;
font-family: AlibabaPuHuiTiB, "Alibaba PuHuiTi";
}
}
.app-header-right {
height: 100%;
}
.crm-app-content {
height: 100%;
width: 100%;
}
/*** BRGIN:滚动条样式 ***/
::-webkit-scrollbar {
background: transparent;
width: 4px;
height: 4px;
}
::-webkit-scrollbar-thumb {
border-radius: 0;
box-shadow: none;
border: 0;
background-color: #cecece;
}
::-webkit-scrollbar-track {
border-radius: 0;
box-shadow: none;
border: 0;
}
}
}
\ No newline at end of file
<app-layout className={{ index_view: true }} v-show={isIndexRoot}>
<template slot="headerLeft">
<div class="app-header-left">
<img class="logo" src="./assets/img/logo.png" />
<div class="app-name">{this.$t(this.model.srfCaption)}</div>
</div>
</template>
<template slot="headerRight">
<div class="app-header-right">
<app-header-menus />
</div>
</template>
<template slot="content">
<div class="crm-app-content">
<div class="inedx-app-menus">
${P.getCtrlCode('appmenu', 'CONTROL.html').code}
</div>
<div class="content">内容</div>
</div>
</template>
</app-layout>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#INDEXTOPNAV
\ No newline at end of file
<#ibizinclude> .app-container {
../@MACRO/DEFAULT.less.ftl position: absolute;
</#ibizinclude> width: 100vw;
height: 100vh;
top: 0;
left: 0;
right: 0;
bottom: 0;
.index_view{ .index_view.crm-app-layout {
width: 100%;
height: 100%; .app-header-left {
padding: 0; height: 100%;
margin: 0;
.index_header{
height:50px;
padding:0 20px;
display: flex;
align-items: center;
justify-content: space-between;
.page-logo{
display: flex;
align-items: center;
}
.header-left{
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between;
.el-menu.el-menu--horizontal{ >img {
border-bottom: none; margin: 0px 6px;
.el-submenu{ margin-top: 2px;
border-top: none; height: 32px;
} }
>.app-name {
font-size: 18px;
font-weight: 900;
color: black;
height: 32px;
line-height: 32px;
white-space: nowrap;
font-family: AlibabaPuHuiTiB, "Alibaba PuHuiTi";
} }
} }
> div {
line-height: 49px; .app-header-right {
height: 100%;
} }
}
.index_content{ .crm-app-content {
background-color:#fff; height: 100%;
height:calc(100vh - 50px); width: 100%;
overflow-x: hidden; display: flex;
overflow-y: hidden;
} >.inedx-app-menus {
>.ivu-layout { width: 240px;
>.ivu-layout { height: 100%;
height: calc(100vh - 50px); background-color: white;
flex-shrink: 0;
overflow-y: auto;
}
>.content {
flex-grow: 1;
}
} }
}
.ivu-layout .ivu-layout-sider .ivu-layout-sider-children .sider-top{
line-height: 58px;
text-align: right;
padding-right: 18px;
}
.ivu-layout .ivu-layout-sider .ivu-layout-sider-children .sider-top .ivu-icon{
font-size: 20px;
padding: 4px;
margin-top: -2px;
cursor: pointer;
}
}
/*** BRGIN:滚动条样式 ***/ /*** BRGIN:滚动条样式 ***/
::-webkit-scrollbar { ::-webkit-scrollbar {
background: transparent; background: transparent;
width: 4px; width: 4px;
height: 4px; height: 4px;
} }
::-webkit-scrollbar-thumb {
border-radius: 0; ::-webkit-scrollbar-thumb {
box-shadow: none; border-radius: 0;
border: 0; box-shadow: none;
background-color: #cecece; border: 0;
} background-color: #cecece;
::-webkit-scrollbar-track { }
border-radius: 0;
box-shadow: none; ::-webkit-scrollbar-track {
border: 0; border-radius: 0;
box-shadow: none;
border: 0;
}
}
} }
\ No newline at end of file
<#if view.isBlankMode()> <app-layout viewName="${view.getCodeName()?lower_case}" viewTitle="${view.getTitle()}" className={{ index_view: true }}>
<div class="index_view ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <template slot="headerLeft">
<app-keep-alive :routerList="getRouterList"> <div class="app-header-left">
<router-view :key="getRouterViewKey"></router-view> <img class="logo" src="./assets/img/logo.png" />
</app-keep-alive> <div class="app-name">{this.$t(this.model.srfCaption)}</div>
</div> </div>
<#else> </template>
<#if view.getMainMenuAlign()=="LEFT" || view.getMainMenuAlign()==""> <template slot="headerRight">
<div class="index_view ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <div class="app-header-right">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction> <app-header-menus menus={this.topMenus} on-menu-click={(e: any) => this.topMenuClick(e)}/>
<layout :class="themeClasses" :style="themeStyle"> </div>
<header class="index_header"> </template>
<div class="header-left" > <template slot="content">
<div class="page-logo"> <div class="crm-app-content">
<#if view.getAppIconPath() != ""> <div class="inedx-app-menus">
<img src="${view.getAppIconPath()}" height="32"> ${P.getCtrlCode('appmenu', 'CONTROL.html').code}
<#else>
<img src="../../../assets/img/logo.png" height="32" />
</#if>
<span style="display: inline-block;margin-left: 10px;font-size: 22px;">{{$t(model.srfCaption)}}</span>
</div>
</div> </div>
<div class="header-right" style="display: flex;align-items: center;justify-content: space-between;"> <div class="content" style="width: calc(100% - 240px)">
<app-header-menus /> <router-view></router-view>
<app-lang style='font-size: 15px;padding: 0 10px;'></app-lang>
<app-orgsector></app-orgsector>
<app-user></app-user>
<app-theme style="width:45px;display: flex;justify-content: center;"></app-theme>
</div> </div>
</header> </div>
<layout> </template>
<#if view.hasPSControl('appmenu')> </app-layout>
<sider :width="collapseChange ? 64 : 200" hide-trigger v-model="collapseChange"> \ No newline at end of file
<div class="sider-top">
<i class="ivu-icon ivu-icon-md-menu" @click="handleClick"></i>
</div>
${P.getCtrlCode('appmenu', 'CONTROL.html').code}
</sider>
<content class="index_content" :style="{'width':this.collapseChange ? 'calc(100vw - 64px)' : 'calc(100vw - 200px)' }">
<tab-page-exp></tab-page-exp>
<app-keep-alive :routerList="getRouterList">
<router-view :key="getRouterViewKey"></router-view>
</app-keep-alive>
</content>
<#else>
<content style="width: 100vw;height: calc(100vh - 50px);">
<tab-page-exp></tab-page-exp>
<app-keep-alive :routerList="getRouterList">
<router-view :key="getRouterViewKey"></router-view>
</app-keep-alive>
</content>
</#if>
</layout>
</layout>
</div>
<#else>
<div class="index_view <#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<layout :class="themeClasses" :style="themeStyle">
<header class="index_header" >
<div class="header-left">
<div class="page-logo">
<img src="../../../assets/img/logo.png" height="32" />
<span style="display: inline-block;margin-left: 10px;font-size: 22px;">{{$t(model.srfCaption)}}</span>
</div>
<div style="margin-left: 50px;">
${P.getCtrlCode('appmenu', 'CONTROL.html').code}
</div>
</div>
<div class="header-right" style="display: flex;align-items: center;justify-content: space-between;">
<app-header-menus />
<app-lang style='font-size: 15px;padding: 0 10px;'></app-lang>
<app-orgsector></app-orgsector>
<app-user></app-user>
<app-theme style="width:45px;display: flex;justify-content: center;"></app-theme>
</div>
</header>
<content style="height:calc(100vh - 50px);">
<router-view></router-view>
</content>
</layout>
</div>
</#if>
</#if>
...@@ -10,11 +10,9 @@ ...@@ -10,11 +10,9 @@
if(this.formDruipart){ if(this.formDruipart){
this.formDruipart.subscribe((res:any) =>{ this.formDruipart.subscribe((res:any) =>{
if(Object.is(res.action,'save')){ if(Object.is(res.action,'save')){
this.viewState.next({ tag:'grid', action: 'save', data: this.viewparams }); let opt ={data:res.data};
} Object.assign(opt,this.context);
if(Object.is(res.action,'load')){ this.viewState.next({ tag:'grid', action: 'save', data: opt });
const _this: any = this;
_this.engine.load(res.data,true);
} }
}); });
} }
...@@ -28,6 +26,7 @@ if(this.formDruipart){ ...@@ -28,6 +26,7 @@ if(this.formDruipart){
<#assign grid = view.getPSControl('grid')> <#assign grid = view.getPSControl('grid')>
</#if> </#if>
<#if grid??> <#if grid??>
/** /**
* 是否单选 * 是否单选
* *
...@@ -38,12 +37,24 @@ if(this.formDruipart){ ...@@ -38,12 +37,24 @@ if(this.formDruipart){
</#if> </#if>
/** /**
* 是否嵌入关系界面 * Vue声明周期
* *
* @type {boolean} * @memberof ViewBase
* @memberof ${srfclassname('${view.name}')}Base */
*/ public created() {
@Prop({default:false}) public isformDruipart?: boolean; super.created();
if(this.formDruipart){
this.formDruipart.subscribe((res:any) =>{
if(Object.is(res.action,'save')){
this.viewState.next({ tag:'grid', action: 'save', data: this.viewparams });
}
if(Object.is(res.action,'load')){
const _this: any = this;
_this.engine.load(res.data,true);
}
});
}
}
/** /**
* 界面关系通讯对象 * 界面关系通讯对象
...@@ -90,7 +101,7 @@ if(this.formDruipart){ ...@@ -90,7 +101,7 @@ if(this.formDruipart){
<#if grid??> <#if grid??>
const grid: any = this.$refs.${grid.name}; const grid: any = this.$refs.${grid.name};
if (grid) { if (grid) {
grid.load(this.context, true); grid.load(this.context);
} }
</#if> </#if>
} }
......
<script lang='tsx'> <script lang='tsx'>
import { Component } from 'vue-property-decorator'; import { Component } from 'vue-property-decorator';
import ${srfclassname('${view.name}')}Base from './${srffilepath2(view.name)}-base.vue'; import ${srfclassname(view.name)}Base from './${srffilepath2(view.name)}-base.vue';
<#if view.getPSControls()??> <#if view.getPSControls()??>
<#list view.getPSControls() as ctrl> <#list view.getPSControls() as ctrl>
<#if ctrl.getControlType?? && ctrl.getControlType() != 'TOOLBAR' && ctrl.getControlType() != 'CONTEXTMENU'> <#if ctrl.getControlType() != 'TOOLBAR' && ctrl.getControlType() != 'CONTEXTMENU'>
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??> <#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
import view_${ctrl.getName()} from '@widgets/${srffilepath2(ctrl.getPSAppDataEntity().getCodeName())}/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}.vue'; import view_${ctrl.getName()} from '@widgets/${srffilepath2(view.getPSAppDataEntity().getCodeName())}/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}.vue';
<#else> <#else>
import view_${ctrl.getName()} from '@widgets/app/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}.vue'; import view_${ctrl.getName()} from '@widgets/app/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}.vue';
</#if> </#if>
</#if> </#if>
</#list> </#list>
</#if> </#if>
/**
* ${view.getTitle()}
*
* @export
* @class ${srfclassname(view.name)}
* @extends {${srfclassname(view.name)}Base}
*/
@Component({ @Component({
components: { components: {
<#if view.getPSControls?? && view.getPSControls()??> <#if view.getPSControls()??>
<#list view.getPSControls() as ctrl> <#list view.getPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR"> <#if ctrl.getControlType() != "TOOLBAR">
view_${ctrl.getName()}, view_${ctrl.getName()},
...@@ -29,7 +37,5 @@ import view_${ctrl.getName()} from '@widgets/app/${srffilepath2(ctrl.getCodeName ...@@ -29,7 +37,5 @@ import view_${ctrl.getName()} from '@widgets/app/${srffilepath2(ctrl.getCodeName
}); });
}, },
}) })
export default class ${srfclassname('${view.name}')} extends ${srfclassname('${view.name}')}Base { export default class ${srfclassname(view.name)} extends ${srfclassname(view.name)}Base { }
}
</script> </script>
\ No newline at end of file
<#assign view_base_name>TabExpViewBase</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl ../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude> </#ibizinclude>
......
<#assign view_base_name>TabFormView9Base</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW-BASE.vue.ftl ../@MACRO/VIEW-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
<#assign view_base_name>ListExpViewBase</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl ../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude> </#ibizinclude>
...@@ -11,13 +12,6 @@ ...@@ -11,13 +12,6 @@
../@MACRO/VIEW_CONTENT-BASE.vue.ftl ../@MACRO/VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
/**
* 视图唯一标识
*
* @type {string}
* @memberof ${srfclassname('${view.name}')}
*/
public viewUID: string = '${srffilepath2(view.getPSAppModule().getCodeName())}-${srffilepath2(view.getCodeName())}';
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl ../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
......
<#assign view_base_name>ListViewBase</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/LIST_VIEW.vue.ftl ../@MACRO/LIST_VIEW.vue.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
<#assign view_base_name>DataViewExpViewBase</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/DATAVIEW_VIEW.vue.ftl ../@MACRO/DATAVIEW_VIEW.vue.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
<#assign view_base_name>WizardViewBase</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW-BASE.vue.ftl ../@MACRO/VIEW-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册