提交 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 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'>
${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'>
${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>
${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>
\ 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 -->
<#assign content>
:showBusyIndicator="${ctrl.isShowBusyIndicator()?c}"
v-model="collapseChange"
:mode="mode"
:selectTheme="selectTheme"
:isDefaultPage="isDefaultPage"
:defPSAppView="defPSAppView"
</#assign>
<#ibizinclude>
../@MACRO/HTML/DEFAULT.html.ftl
</#ibizinclude>
\ No newline at end of file
<view_${ctrl.getName()}
viewState={this.viewState}
viewparams={this.viewparams}
context={this.context}
showBusyIndicator={${ctrl.isShowBusyIndicator()?c}}
on-menus-change={(menus: any[]) => this.appMenusChange(menus)}
name="${ctrl.name}"
ref="${ctrl.name}"
/>
\ No newline at end of file
/*** BRGIN:菜单样式 ***/
.app-app-menu {
overflow-y: auto;
overflow-x: hidden;
height: calc(100% - 58px);
.ivu-divider{
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
height: 100%;
width: 100%;
}
\ No newline at end of file
<#ibizinclude>
../@MACRO/CONTROL/CONTROL.vue.ftl
</#ibizinclude>
\ No newline at end of file
<script lang='ts'>
import { Component } from 'vue-property-decorator';
import { VueLifeCycleProcessing } from '@/crm-core';
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 @@
}
}
.el-table__body-wrapper{
height: calc(100% - 43px) !important;
height: calc(100% - 60px) !important;
}
.el-table__empty-block{
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>">
<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">
<#assign view_content>
<#if view.getPSControls()??>
<#list view.getPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
......@@ -24,6 +10,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#if>
</#list>
</#if>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#ibizinclude>
./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>">
<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.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
<#if P.getCtrlCode(ctrl, 'CONTROL.html')??>
<#assign view_content>
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
<#if P.getCtrlCode(ctrl, 'CONTROL.html')??>
<@ibizindent blank=12>
${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
</#if>
</#list>
</#if>
</div>
</card>
</div>
\ No newline at end of file
</#if>
</#if>
</#list>
</#if>
</#assign>
<#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>">
<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:视图顶部视图消息 -->
<#assign view_content>
<#if view.hasPSControl('form')>
<@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code}
</@ibizindent>
</#if>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
</#assign>
<#ibizinclude>
./View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
./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>">
<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">
<#assign view_content>
<#if view.hasPSControl('drtab')>
<@ibizindent blank=8>
${P.getCtrlCode('drtab', 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
</card>
</div>
</#assign>
<#ibizinclude>
./VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
\ No newline at end of file
<#assign MDContent><#t>
<#if view.getViewType() == "DEGRIDVIEW9">
<#assign view_content>
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#if view.hasPSControl('grid')>
${P.getCtrlCode('grid', 'CONTROL.html').code}
</#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>
<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>' :dis-hover="true" :bordered="false">
<@ibizindent blank=8>
<#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
<#ibizinclude>
./VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
\ 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>">
<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">
<#assign view_content>
<@ibizindent blank=12>
<#if view.hasPSControl('wizardpanel')>
${P.getCtrlCode('wizardpanel', 'CONTROL.html').code}
</#if>
</@ibizindent>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#ibizinclude>
./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>'>
<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>
<#assign view_content>
<#if view.hasPSControl('tabexppanel')>
${P.getCtrlCode('tabexppanel', 'CONTROL.html').code}
</#if>
<div class='content-container'>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('tabexppanel')>
${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
</#assign>
<#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>">
<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>
<div class="content-container">
<#if view.hasPSControl('listexpbar')>
${P.getCtrlCode('listexpbar', 'CONTROL.html').code}
</#if>
</div>
</card>
</div>
\ No newline at end of file
<#assign view_content>
<#if view.hasPSControl('listexpbar')>
${P.getCtrlCode('listexpbar', 'CONTROL.html').code}
</#if>
</#assign>
<#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>'>
<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 view_content>
<#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}
......@@ -35,6 +12,7 @@ ${P.getCtrlCode('list', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>'>
<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 view_content>
<#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>
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
......@@ -30,6 +12,7 @@ ${P.getCtrlCode('list', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>">
<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>
<div class="content-container">
<#if view.hasPSControl('dataviewexpbar')>
${P.getCtrlCode('dataviewexpbar', 'CONTROL.html').code}
</#if>
</div>
</card>
</div>
\ No newline at end of file
<#assign view_content>
<#if view.hasPSControl('dataviewexpbar')>
${P.getCtrlCode('dataviewexpbar', 'CONTROL.html').code}
</#if>
</#assign>
<#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>'>
<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>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
</card>
</div>
\ No newline at end of file
../实体图表视图/VIEW.vue.ftl
</#ibizinclude>
\ 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 view_content>
<#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>
......@@ -35,6 +11,7 @@ ${P.getCtrlCode('chart', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card' :dis-hover="true" :padding="0" :bordered="false">
<#assign view_content>
<div class="content-container pickup-view">
<div class="translate-contant">
<div class="center" :style="{width : !isShowButton ? '100%' : ''}">
<div class="center">
<#if view.hasPSControl('pickupviewpanel')>
<@ibizindent blank=20>
${P.getCtrlCode('pickupviewpanel', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
</div>
<div v-if="isShowButton" class="translate-buttons">
<div class="translate-buttons">
<div class="buttons">
<i-button type="primary" :title="this.containerModel.view_rightbtn.text"
:disabled="this.containerModel.view_rightbtn.disabled"
......@@ -32,7 +30,7 @@
</i-button>
</div>
</div>
<div v-if="isShowButton" class="right">
<div class="right">
<div class="mpicker-select">
<div v-for="(item, index) in viewSelections" :key="index" :class="item._select ? 'select' : ''" @click="selectionsClick(item)" @dblclick="selectionsDBLClick(item)">
<span>{{item.srfmajortext}}</span>
......@@ -40,7 +38,7 @@
</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' }">
<i-button type="primary" :disabled="this.viewSelections.length > 0 ? false : true" @click="onClickOk">{{this.containerModel.view_okbtn.text}}</i-button>
&nbsp;&nbsp;
......@@ -48,5 +46,7 @@
</row>
</card>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>'>
<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">
<@ibizindent blank=8>
<#assign view_content>
<#assign MDContent>
<#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_CAPTION.vue.ftl
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</@ibizindent>
<div class='content-container'>
<#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=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
</#assign>
<#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>'>
<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 view_content>
<#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')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
......@@ -30,6 +11,7 @@ ${P.getCtrlCode('dataview', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>">
<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">
<#assign view_content>
<#if view.hasPSControl('pickupviewpanel')>
<@ibizindent blank=12>
${P.getCtrlCode('pickupviewpanel', 'CONTROL.html').code}<#t>
......@@ -14,6 +11,7 @@
<i-button @click="onClickCancel">{{this.containerModel.view_cancelbtn.text}}</i-button>
</row>
</card>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>">
<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>
<div class="content-container">
<#if view.hasPSControl('calendarexpbar')>
${P.getCtrlCode('calendarexpbar', 'CONTROL.html').code}
</#if>
</div>
</card>
</div>
\ No newline at end of file
<#assign view_content>
<#if view.hasPSControl('calendarexpbar')>
${P.getCtrlCode('calendarexpbar', 'CONTROL.html').code}
</#if>
</#assign>
<#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>'>
<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">
<@ibizindent blank=8>
<#ibizinclude>
../@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>
<#assign view_content>
<#if view.hasPSControl('treeexpbar')>
<@ibizindent blank=12>
${P.getCtrlCode('treeexpbar', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#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
</#assign>
<#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>'>
<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 view_content>
<#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')>
<div class="tree-contant">
${P.getCtrlCode('tree', 'CONTROL.html').code}
......@@ -31,5 +10,7 @@ ${P.getCtrlCode('toolbar', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>'>
<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">
<div class='content-container'>
<#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')>
<div class="tree-contant">
${P.getCtrlCode('tree', 'CONTROL.html').code}
</div>
</#if>
</#assign>
<#assign view_content>
<#assign MDContent>
<#if view.hasPSControl('tree')>
<div class="tree-contant">
${P.getCtrlCode('tree', 'CONTROL.html').code}
</div>
</#if>
</#assign>
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>">
<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">
<#assign view_content>
<#if view.hasPSControl('form')>
<@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code}
......@@ -29,6 +15,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#if>
</#list>
</#if>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>">
<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">
<#assign view_content>
<#if view.hasPSControl('drbar')>
<@ibizindent blank=8>
${P.getCtrlCode('drbar', 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>">
<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>
<div class="content-container">
<#if view.hasPSControl('gridexpbar')>
${P.getCtrlCode('gridexpbar', 'CONTROL.html').code}
</#if>
</div>
</card>
</div>
\ No newline at end of file
<#assign view_content>
<#if view.hasPSControl('gridexpbar')>
<@ibizindent blank=8>
${P.getCtrlCode('gridexpbar', 'CONTROL.html').code}
</@ibizindent>
</#if>
</#assign>
<#ibizinclude>
../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/GRID.vue.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/GRID.vue.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/GRID.vue.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/GRID.vue.ftl
</#ibizinclude>
\ 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>' :dis-hover="true" :bordered="false">
<#-- 不带数据信息标题 -->
<#if view.isShowCaptionBar()>
<p v-if="isShowButton" slot='title'>
<#if view.getPSSysImage()??>
<#assign viewimg = view.getPSSysImage()/>
<#if viewimg.getImagePath() != "">
<span class='caption-image'><i class='${viewimg.getCssClass()}'></i></span>
<#else>
<span class='caption-image'><img src='${viewimg.getImagePath()}'/></span>
</#if>
</#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
<#assign view_content>
<@ibizindent blank=8>
<#if view.hasPSControl('tree')>
<div class="tree-contant">
${P.getCtrlCode('tree', 'CONTROL.html').code}<#t>
</div>
</#if>
</@ibizindent>
</#assign>
<#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>'>
<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'>
<#assign view_content>
<@ibizindent blank=12>
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}<#t>
......@@ -10,6 +7,7 @@
${P.getCtrlCode('grid', 'CONTROL.html').code}<#t>
</#if>
</@ibizindent>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>">
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<#assign view_content>
<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">
<@ibizindent blank=8>
<#ibizinclude>
......@@ -21,4 +21,7 @@
</row>
</card>
</card>
</div>
\ No newline at end of file
</#assign>
<#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>'>
<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>
<#assign view_content>
<@ibizindent blank=12>
<#if view.hasPSControl('dashboard')>
${P.getCtrlCode('dashboard', 'CONTROL.html').code}
</#if>
</@ibizindent>
<div class='view-bottom-messages'>
</div>
</div>
</card>
</div>
\ No newline at end of file
</#assign>
<#ibizinclude>
../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude>
\ 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>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
.app-container {
position: absolute;
width: 100vw;
height: 100vh;
top: 0;
left: 0;
right: 0;
bottom: 0;
.index_view{
width: 100%;
height: 100%;
padding: 0;
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{
.index_view.crm-app-layout {
.app-header-left {
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.el-menu.el-menu--horizontal{
border-bottom: none;
.el-submenu{
border-top: none;
}
>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";
}
}
> div {
line-height: 49px;
.app-header-right {
height: 100%;
}
}
.index_content{
background-color:#fff;
height:calc(100vh - 50px);
overflow-x: hidden;
overflow-y: hidden;
}
>.ivu-layout {
>.ivu-layout {
height: calc(100vh - 50px);
.crm-app-content {
height: 100%;
width: 100%;
display: flex;
>.inedx-app-menus {
width: 240px;
height: 100%;
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:滚动条样式 ***/
::-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;
/*** 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
<#if view.isBlankMode()>
<div class="index_view ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<app-keep-alive :routerList="getRouterList">
<router-view :key="getRouterViewKey"></router-view>
</app-keep-alive>
</div>
<#else>
<#if view.getMainMenuAlign()=="LEFT" || view.getMainMenuAlign()=="">
<div class="index_view ${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>
<layout :class="themeClasses" :style="themeStyle">
<header class="index_header">
<div class="header-left" >
<div class="page-logo">
<#if view.getAppIconPath() != "">
<img src="${view.getAppIconPath()}" height="32">
<#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>
<app-layout viewName="${view.getCodeName()?lower_case}" viewTitle="${view.getTitle()}" className={{ index_view: true }}>
<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 menus={this.topMenus} on-menu-click={(e: any) => this.topMenuClick(e)}/>
</div>
</template>
<template slot="content">
<div class="crm-app-content">
<div class="inedx-app-menus">
${P.getCtrlCode('appmenu', 'CONTROL.html').code}
</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 class="content" style="width: calc(100% - 240px)">
<router-view></router-view>
</div>
</header>
<layout>
<#if view.hasPSControl('appmenu')>
<sider :width="collapseChange ? 64 : 200" hide-trigger v-model="collapseChange">
<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>
</div>
</template>
</app-layout>
\ No newline at end of file
......@@ -10,11 +10,9 @@
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);
let opt ={data:res.data};
Object.assign(opt,this.context);
this.viewState.next({ tag:'grid', action: 'save', data: opt });
}
});
}
......@@ -28,6 +26,7 @@ if(this.formDruipart){
<#assign grid = view.getPSControl('grid')>
</#if>
<#if grid??>
/**
* 是否单选
*
......@@ -38,12 +37,24 @@ if(this.formDruipart){
</#if>
/**
* 是否嵌入关系界面
*
* @type {boolean}
* @memberof ${srfclassname('${view.name}')}Base
*/
@Prop({default:false}) public isformDruipart?: boolean;
* Vue声明周期
*
* @memberof ViewBase
*/
public created() {
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){
<#if grid??>
const grid: any = this.$refs.${grid.name};
if (grid) {
grid.load(this.context, true);
grid.load(this.context);
}
</#if>
}
......
<script lang='tsx'>
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()??>
<#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()??>
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>
import view_${ctrl.getName()} from '@widgets/app/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}/${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}.vue';
</#if>
</#if>
</#list>
</#if>
/**
* ${view.getTitle()}
*
* @export
* @class ${srfclassname(view.name)}
* @extends {${srfclassname(view.name)}Base}
*/
@Component({
components: {
<#if view.getPSControls?? && view.getPSControls()??>
<#if view.getPSControls()??>
<#list view.getPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
view_${ctrl.getName()},
......@@ -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>
\ No newline at end of file
<#assign view_base_name>TabExpViewBase</#assign>
<#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>
......
<#assign view_base_name>TabFormView9Base</#assign>
<#ibizinclude>
../@MACRO/VIEW-BASE.vue.ftl
</#ibizinclude>
</#ibizinclude>
\ No newline at end of file
<#assign view_base_name>ListExpViewBase</#assign>
<#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>
......@@ -11,13 +12,6 @@
../@MACRO/VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude>
/**
* 视图唯一标识
*
* @type {string}
* @memberof ${srfclassname('${view.name}')}
*/
public viewUID: string = '${srffilepath2(view.getPSAppModule().getCodeName())}-${srffilepath2(view.getCodeName())}';
<#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
......
<#assign view_base_name>ListViewBase</#assign>
<#ibizinclude>
../@MACRO/LIST_VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
<#assign view_base_name>DataViewExpViewBase</#assign>
<#ibizinclude>
../@MACRO/DATAVIEW_VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
<#assign view_base_name>WizardViewBase</#assign>
<#ibizinclude>
../@MACRO/VIEW-BASE.vue.ftl
</#ibizinclude>
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册