提交 7f637496 编写于 作者: ibiz4j's avatar ibiz4j

合并分支 'dev' 到 'master'

Dev

查看合并请求 !14
......@@ -234,3 +234,7 @@ ${P.getLogicCode(uiAction, "LOGIC.vue").code}
})
}
}
<#if ctrl.render?? && ctrl.render.code2??>
${ctrl.render.code2}
</#if>
......@@ -3,7 +3,7 @@ import { Vue, Component, Prop, Provide, Emit, Watch, Model,Inject } from 'vue-pr
import { CreateElement } from 'vue';
import { Subject, Subscription } from 'rxjs';
import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util } from '@/utils';
import { UIActionTool,Util, ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
<#if ctrl.getPSAppCounterRefs?? && ctrl.getPSAppCounterRefs()??>
<#list ctrl.getPSAppCounterRefs() as singleCounterRef>
......@@ -227,3 +227,7 @@ ${P.getLogicCode(uiAction, "LOGIC.vue").code}
})
}
}
<#if ctrl.render?? && ctrl.render.code2??>
${ctrl.render.code2}
</#if>
......@@ -31,6 +31,14 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi
</#if>
</#list>
/**
* 远端数据
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
private remoteCopyData:any = {};
/**
* 处理数据
*
......@@ -287,6 +295,7 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi
result = this.appEntityService.Get(Context,Data, isloading);
}
result.then((response) => {
this.setRemoteCopyData(response);
this.handleResponse(action, response);
resolve(response);
}).catch(response => {
......@@ -323,6 +332,7 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi
result = this.appEntityService.GetDraft(Context,Data, isloading);
}
result.then((response) => {
this.setRemoteCopyData(response);
<#if ctrl.getControlType() != 'SEARCHFORM'>
response.data.${appde.getKeyPSAppDEField().getCodeName()?lower_case} = PrimaryKey;
</#if>
......@@ -459,7 +469,26 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi
return item;
}
/**
* 设置远端数据
*
* @param result 远端请求结果
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public setRemoteCopyData(result:any){
if (result && result.status === 200) {
this.remoteCopyData = Util.deepCopy(result.data);
}
}
/**
* 获取远端数据
*
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public getRemoteCopyData(){
return this.remoteCopyData;
}
<#ibizinclude>
./SERVICE_BOTTOM.ts.ftl
</#ibizinclude>
\ No newline at end of file
......@@ -9,7 +9,7 @@
}
>.ivu-tabs-content {
height: calc(100% - 36px);
padding: 0px !important;
padding: 4px !important;
.ivu-tabs-tabpane {
height: 100%;
}
......
......@@ -437,7 +437,7 @@ import CodeListService from "@/codelist/codelist-service";
if (!Object.is(this.name, tag)) {
return;
}
if (Object.is(action,'load')) {
if (Object.is(action,'load') || Object.is(action,'refresh')) {
this.refresh(data)
}
});
......@@ -497,13 +497,13 @@ import CodeListService from "@/codelist/codelist-service";
/**
* 刷新
*
* @param {*} [opt={}]
* @param {*} [args={}]
* @memberof Main
*/
public refresh(opt: any = {}) {
public refresh(args?: any) {
this.curPage = 1;
this.items = [];
this.load(opt);
this.load(args);
}
/**
......@@ -559,8 +559,18 @@ import CodeListService from "@/codelist/codelist-service";
}
this.isAddBehind = false;
this.$emit('load', this.items);
//在导航视图中,如已有选中数据,则右侧展开已选中数据的视图,如无选中数据则默认选中第一条
if(this.isSelectFirstDefault){
this.handleClick(this.items[0]);
if(this.selections && this.selections.length > 0){
this.selections.forEach((select: any)=>{
const index = this.items.findIndex((item:any) => Object.is(item.srfkey,select.srfkey));
if(index != -1){
this.handleClick(this.items[index]);
}
})
}else{
this.handleClick(this.items[0]);
}
}
<#if ctrl.isEnableGroup?? && ctrl.isEnableGroup()>
this.group();
......
......@@ -22,6 +22,7 @@
<div class='search-container'>
<i-input :search="true"
@on-change="($event) => { this.searchText = $event.target.value; }"
:placeholder="placeholder"
@on-search="onSearch">
</i-input>
</div>
......@@ -153,7 +154,16 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
public ctrlHeight: number = <#if ctrl.getHeight()??>${ctrl.getHeight()?c}<#else>0</#if>;
/**
* 搜素值
* 可搜索字段名称
*
*
* @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public placeholder="<@getQuickSearchPlaceholder view />";
/**
* 搜索值
*
* @public
* @type {(string)}
......@@ -474,7 +484,22 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
${destroyed_block}
</#if>
}
/**
* 刷新
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(args?: any): void {
<#if ctrl.getXDataPSControl?? && ctrl.getXDataPSControl()??>
<#assign dataControl = ctrl.getXDataPSControl() />
const refs: any = this.$refs;
if (refs && refs.${dataControl.name}) {
refs.${dataControl.name}.refresh();
}
</#if>
}
/**
* ${ctrl.name}的选中数据事件
*
......@@ -484,6 +509,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
let tempContext:any = {};
let tempViewParam:any = {};
if (args.length === 0) {
this.calcToolbarItemState(true);
return ;
}
const arg:any = args[0];
......@@ -514,6 +540,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
}
this.selection = {};
Object.assign(this.selection, { view: { viewname: this.navViewName },context:tempContext,viewparam:tempViewParam});
this.calcToolbarItemState(false);
this.$forceUpdate();
}
......@@ -523,9 +550,38 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public ${ctrl.name}_load(args:any, tag?: string, $event2?: any){
this.calcToolbarItemState(true);
this.$emit('load',args);
}
/**
* 设置导航区工具栏禁用状态
*
* @param {boolean} state
* @return {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public calcToolbarItemState(state: boolean) {
let _this: any = this;
const models:any = _this.${ctrl.getCodeName()?lower_case}_toolbarModels;
if (models) {
for (const key in models) {
if (!models.hasOwnProperty(key)) {
return;
}
const _item = models[key];
if (_item.uiaction && (Object.is(_item.uiaction.target, 'SINGLEKEY') || Object.is(_item.uiaction.target, 'MULTIKEY'))) {
_item.disabled = state;
}
_item.visabled = true;
if (_item.noprivdisplaymode && _item.noprivdisplaymode === 6) {
_item.visabled = false;
}
}
this.calcNavigationToolbarState();
}
}
/**
* 计算导航工具栏权限状态
*
......@@ -534,16 +590,14 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
public calcNavigationToolbarState(){
let _this: any = this;
// 界面行为
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
<#if ctrl.getCodeName?? && ctrl.getCodeName()??>
<#assign ModelsName>${ctrl.getCodeName()?lower_case}_toolbarModels</#assign>
if(_this.${ModelsName}){
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
ViewTool.calcActionItemAuthState({},_this.${ModelsName},curUIService);
}
</#if>
</#if>
}
}
/**
......
......@@ -22,6 +22,7 @@
<div class='search-container'>
<i-input :search="true"
@on-change="($event) => { this.searchText = $event.target.value; }"
:placeholder="placeholder"
@on-search="onSearch">
</i-input>
</div>
......@@ -153,6 +154,15 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
*/
public ctrlHeight: number = <#if ctrl.getHeight()??>${ctrl.getHeight()?c}<#else>0</#if>;
/**
* 可搜索字段名称
*
*
* @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public placeholder="<@getQuickSearchPlaceholder view />";
/**
* 搜素值
*
......@@ -476,6 +486,21 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
</#if>
}
/**
* 刷新
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(args?: any): void {
<#if ctrl.getXDataPSControl?? && ctrl.getXDataPSControl()??>
<#assign dataControl = ctrl.getXDataPSControl() />
const refs: any = this.$refs;
if (refs && refs.${dataControl.name}) {
refs.${dataControl.name}.refresh();
}
</#if>
}
/**
* 卡片视图导航选中
*
......@@ -489,6 +514,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
let tempContext:any = {};
let tempViewParam:any = {};
if (args.length === 0) {
this.calcToolbarItemState(true);
return ;
}
const arg:any = args[0];
......@@ -519,6 +545,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
}
this.selection = {};
Object.assign(this.selection, { view: { viewname: this.navViewName },context:tempContext,viewparam:tempViewParam});
this.calcToolbarItemState(false);
this.$forceUpdate();
}
......@@ -532,9 +559,38 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public ${ctrl.name}_load(args: any[], tag?: string, $event2?: any): void {
this.calcToolbarItemState(true);
this.$emit('load',args);
}
/**
* 设置导航区工具栏禁用状态
*
* @param {boolean} state
* @return {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public calcToolbarItemState(state: boolean) {
let _this: any = this;
const models:any = _this.${ctrl.getCodeName()?lower_case}_toolbarModels;
if (models) {
for (const key in models) {
if (!models.hasOwnProperty(key)) {
return;
}
const _item = models[key];
if (_item.uiaction && (Object.is(_item.uiaction.target, 'SINGLEKEY') || Object.is(_item.uiaction.target, 'MULTIKEY'))) {
_item.disabled = state;
}
_item.visabled = true;
if (_item.noprivdisplaymode && _item.noprivdisplaymode === 6) {
_item.visabled = false;
}
}
this.calcNavigationToolbarState();
}
}
/**
* 计算导航工具栏权限状态
*
......@@ -543,16 +599,14 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
public calcNavigationToolbarState(){
let _this: any = this;
// 界面行为
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
<#if ctrl.getCodeName?? && ctrl.getCodeName()??>
<#assign ModelsName>${ctrl.getCodeName()?lower_case}_toolbarModels</#assign>
if(_this.${ModelsName}){
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
ViewTool.calcActionItemAuthState({},_this.${ModelsName},curUIService);
}
</#if>
</#if>
}
}
/**
......
......@@ -35,9 +35,9 @@ ${ctrl.render.code}
</#if>
</i-content>
<footer class="app-wizard-footer">
<i-button :disabled="isDisabled('PREV')" @click="onClickPrev()" type="primary">{{$t('app.wizardPanel.back')}}</i-button>
<i-button :disabled="isDisabled('NEXT')" @click="onClickNext()" type="primary">{{$t('app.wizardPanel.next')}}</i-button>
<i-button :disabled="isDisabled('FINISH')" @click="onClickFinish()" type="primary">{{$t('app.wizardPanel.complete')}}</i-button>
<i-button v-show="!isHidden('PREV')" @click="onClickPrev()" type="primary">{{$t('app.wizardPanel.back')}}</i-button>
<i-button v-show="!isHidden('NEXT')" @click="onClickNext()" type="primary">{{$t('app.wizardPanel.next')}}</i-button>
<i-button v-show="!isHidden('FINISH')" @click="onClickFinish()" type="primary">{{$t('app.wizardPanel.complete')}}</i-button>
</footer>
</layout>
</#if>
......@@ -302,6 +302,7 @@ ${ctrl.render.code}
const data = response.data;
this.$Notice.success({ title: this.$t('app.commonWords.success') as string, desc: this.$t('app.commonWords.startsuccess') as string });
this.$emit("finish", data);
AppCenterService.notifyMessage({name:"${ctrl.getPSAppDataEntity().getCodeName()}",action:'appRefresh',data:data});
}
}).catch((response: any) => {
if (response && response.status === 401) {
......@@ -447,12 +448,12 @@ ${ctrl.render.code}
}
/**
* 是否禁用
* 是否隐藏
*
* @param {string} type
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public isDisabled(type: string) {
public isHidden(type: string) {
const actions: Array<string> = this.stepActions[this.activeForm].actions;
if(actions && actions.indexOf(type) < 0) {
return true;
......
......@@ -7,6 +7,9 @@
<#else>
<#assign ModelsName = 'toolBarModels' />
</#if>
<#if item.render??>
${item.render.code}
<#else>
<#assign deuiaction=item.getPSUIAction()>
<#if item.getTooltip()?? && item.getTooltip() != ''>
<tooltip :transfer="true" :max-width="600">
......@@ -46,4 +49,5 @@
</#if>
</#if>
</#if>
</#if>
......@@ -7,6 +7,9 @@
<#else>
<#assign ModelsName = 'toolBarModels' />
</#if>
<#if item.render??>
${item.render.code}
<#else>
<dropdown v-show="${ModelsName}.${item.name}.visabled" trigger='click'>
<#if item.getTooltip()?? && item.getTooltip() != ''>
<tooltip :transfer="true" :max-width="600">
......@@ -37,4 +40,5 @@
</#list>
</dropdown-menu>
</#if>
</dropdown>
\ No newline at end of file
</dropdown>
</#if>
\ No newline at end of file
<span class='seperator'>|</span>
\ No newline at end of file
<#if item.render??>
${item.render.code}
<#else>
<span class='seperator'>|</span>
</#if>
\ No newline at end of file
......@@ -4,6 +4,9 @@
<#assign ModelsName = 'toolBarModels' />
</#if>
<div class='toolbar-container'>
<#if ctrl.render??>
${ctrl.render.code}
<#else>
<#if (view.getPSWorkflow?? && view.getPSWorkflow()??) && (view.isWFIAMode?? && view.isWFIAMode()) && (view.getWFStepValue?? && view.getWFStepValue() == "") && (view.getViewType?? && (view.getViewType() == 'DEWFEDITVIEW3' || view.getViewType() == 'DEWFEDITVIEW'))><#t>
<template v-for="item in containerModel.wflinks">
<tooltip :transfer="true" :max-width="600">
......@@ -21,4 +24,5 @@
</@ibizindent>
</#list>
</#if>
</#if>
</div>
\ No newline at end of file
......@@ -298,9 +298,9 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
*/
public createDefault(){
<#list ctrl.getAllPSDEFormDetails() as formdetail><#t>
<#if formdetail.getCreateDV?? && formdetail.getCreateDV()??><#t>
<#if !(formdetail.getCreateDV() == '') || formdetail.getCreateDVT() == 'CURTIME'><#t>
<#if formdetail.getCreateDV?? && formdetail.getCreateDV()?? && formdetail.getCreateDV() !=""><#t>
if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}')) {
<#if !(formdetail.getCreateDVT() == '')><#t>
<#-- 网页请求 -->
<#if formdetail.getCreateDVT() == 'CONTEXT'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.viewparams['${formdetail.getCreateDV()}'];
......@@ -319,13 +319,16 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
<#-- 当前时间 -->
<#elseif formdetail.getCreateDVT() == 'CURTIME'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.$util.dateFormat(new Date());
<#else>
<#-- 默认值 -->
<#assign datatype=srfjavatype(formdetail.getStdDataType())>
this.data['${formdetail.getCodeName()?lower_case}'] = <#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>${formdetail.getCreateDV()}<#else>'${formdetail.getCreateDV()}'</#if>;
<#-- 数据对象属性 -->
<#elseif formdetail.getCreateDVT() == 'PARAM'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.service.getRemoteCopyData().${formdetail.getCreateDV()}?this.service.getRemoteCopyData().${formdetail.getCreateDV()}:null;
</#if>
<#else>
<#-- 默认值 -->
<#assign datatype=srfjavatype(formdetail.getStdDataType())>
this.data['${formdetail.getCodeName()?lower_case}'] = <#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>${formdetail.getCreateDV()}<#else>'${formdetail.getCreateDV()}'</#if>;
</#if>
}
</#if>
</#if>
</#list>
}
......
......@@ -158,6 +158,15 @@
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public created(): void {
this.afterCreated();
}
/**
* 执行created后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterCreated(){
if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) {
......@@ -181,6 +190,15 @@
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public destroyed() {
this.afterDestroy();
}
/**
* 执行destroyed后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterDestroy() {
if (this.viewStateEvent) {
this.viewStateEvent.unsubscribe();
}
......
......@@ -79,6 +79,9 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
if (Object.is('load', action)) {
this.load(data);
}
if (Object.is('refresh', action)) {
this.refresh(data);
}
});
}
}
......@@ -175,6 +178,13 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
*/
public chartBaseOPtion:any = {<#if ctrl.getBaseOptionJOString()??>${ctrl.getBaseOptionJOString()}</#if>};
/**
* 图表绘制最终参数
*
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public chartRenderOption:any = {};
/**
* 初始化图表所需参数
*
......@@ -268,11 +278,11 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
/**
* 刷新
*
* @param {*} [opt={}]
* @param {*} [args={}]
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public refresh(opt: any = {}) {
this.load(opt);
public refresh(args?: any) {
this.load(args);
}
/**
......@@ -318,7 +328,7 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
this.myChart = echarts.init(element);
}
let _chartOption = this.handleChartOPtion(codelist);
console.log(_chartOption);
this.chartRenderOption = {..._chartOption};
this.myChart.setOption(_chartOption);
this.myChart.resize();
}
......
......@@ -79,6 +79,9 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
if (Object.is('load', action)) {
this.load(data);
}
if (Object.is('refresh', action)) {
this.refresh(data);
}
});
}
}
......@@ -175,6 +178,13 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
*/
public chartBaseOPtion:any = {<#if ctrl.getBaseOptionJOString()??>${ctrl.getBaseOptionJOString()}</#if>};
/**
* 图表绘制最终参数
*
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public chartRenderOption:any = {};
/**
* 初始化图表所需参数
*
......@@ -268,11 +278,11 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
/**
* 刷新
*
* @param {*} [opt={}]
* @param {*} [args={}]
* @memberof ${srfclassname('${ctrl.name}')}Base
*/
public refresh(opt: any = {}) {
this.load(opt);
public refresh(args?: any) {
this.load(args);
}
/**
......@@ -318,7 +328,7 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
this.myChart = echarts.init(element);
}
let _chartOption = this.handleChartOPtion(codelist);
console.log(_chartOption);
this.chartRenderOption = {..._chartOption};
this.myChart.setOption(_chartOption);
this.myChart.resize();
}
......
......@@ -548,12 +548,12 @@ import CodeListService from "@/codelist/codelist-service";
/**
* 刷新
*
* @param {*} [opt={}]
* @param {*} [args={}]
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(opt: any = {}) {
public refresh(args?: any) {
this.curPage = 1;
this.load(opt, true);
this.load(args, true);
}
/**
......@@ -638,8 +638,18 @@ import CodeListService from "@/codelist/codelist-service";
}
this.isAddBehind = false;
this.$emit('load', this.items);
//在导航视图中,如已有选中数据,则右侧展开已选中数据的视图,如无选中数据则默认选中第一条
if(this.isSelectFirstDefault){
this.handleClick(this.items[0]);
if(this.selections && this.selections.length > 0){
this.selections.forEach((select: any)=>{
const index = this.items.findIndex((item:any) => Object.is(item.srfkey,select.srfkey));
if(index != -1){
this.handleClick(this.items[index]);
}
})
}else{
this.handleClick(this.items[0]);
}
}
<#if ctrl.isEnableGroup?? && ctrl.isEnableGroup()>
this.group();
......
......@@ -14,6 +14,7 @@
<div class='search-container'>
<i-input :search="true"
@on-change="($event) => { this.searchText = $event.target.value; }"
:placeholder="placeholder"
@on-search="onSearch">
</i-input>
</div>
......@@ -126,6 +127,15 @@
*/
public ctrlHeight: number = <#if ctrl.getHeight()??>${ctrl.getHeight()?c}<#else>0</#if>;
/**
* 可搜索字段名称
*
*
* @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public placeholder="<@getQuickSearchPlaceholder view />";
/**
* 搜素值
*
......@@ -357,7 +367,22 @@
${destroyed_block}
</#if>
}
/**
* 刷新
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(args?: any): void {
<#if ctrl.getXDataPSControl?? && ctrl.getXDataPSControl()??>
<#assign dataControl = ctrl.getXDataPSControl() />
const refs: any = this.$refs;
if (refs && refs.${dataControl.name}) {
refs.${dataControl.name}.refresh();
}
</#if>
}
/**
* ${ctrl.name}的选中数据事件
*
......@@ -367,6 +392,7 @@
let tempContext:any = {};
let tempViewParam:any = {};
if (args.length === 0) {
this.calcToolbarItemState(true);
return ;
}
const arg:any = args[0];
......@@ -402,6 +428,7 @@
}
this.selection = {};
Object.assign(this.selection, { view: { viewname: this.navViewName[arg.itemType] }, context:tempContext,viewparam:tempViewParam });
this.calcToolbarItemState(false);
this.$emit('selectionchange',args);
this.$forceUpdate();
}
......@@ -412,9 +439,38 @@
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public ${ctrl.name}_load(args:any, tag?: string, $event2?: any){
this.calcToolbarItemState(true);
this.$emit('load',args);
}
/**
* 设置导航区工具栏禁用状态
*
* @param {boolean} state
* @return {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public calcToolbarItemState(state: boolean) {
let _this: any = this;
const models:any = _this.${ctrl.getCodeName()?lower_case}_toolbarModels;
if (models) {
for (const key in models) {
if (!models.hasOwnProperty(key)) {
return;
}
const _item = models[key];
if (_item.uiaction && (Object.is(_item.uiaction.target, 'SINGLEKEY') || Object.is(_item.uiaction.target, 'MULTIKEY'))) {
_item.disabled = state;
}
_item.visabled = true;
if (_item.noprivdisplaymode && _item.noprivdisplaymode === 6) {
_item.visabled = false;
}
}
this.calcNavigationToolbarState();
}
}
/**
* 计算导航工具栏权限状态
*
......@@ -423,16 +479,14 @@
public calcNavigationToolbarState(){
let _this: any = this;
// 界面行为
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
<#if ctrl.getCodeName?? && ctrl.getCodeName()??>
<#assign ModelsName>${ctrl.getCodeName()?lower_case}_toolbarModels</#assign>
if(_this.${ModelsName}){
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
ViewTool.calcActionItemAuthState({},_this.${ModelsName},curUIService);
}
</#if>
</#if>
}
}
/**
......
......@@ -640,7 +640,7 @@ FullCalendar,
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh() {
public refresh(args?:any) {
if(Object.is(this.calendarType,"TIMELINE")){
this.searchEvents();
} else {
......
......@@ -241,7 +241,7 @@
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh() {
public refresh(args?:any) {
this.load();
}
......
......@@ -556,10 +556,10 @@ import UIService from '@/uiservice/ui-service';
/**
* 刷新功能
*
* @param {any[]} args
* @param {any} args
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(args: any[]): void {
public refresh(args?: any): void {
this.refresh_all();
<#-- if (Object.keys(this.currentselectedNode).length === 0) {
return;
......@@ -648,10 +648,15 @@ import UIService from '@/uiservice/ui-service';
return;
}
let defaultData: any;
// 导航中选中第一条配置的默认选中,没有选中第一条
//在导航视图中,如已有选中数据,则右侧展开已选中数据的视图,如无选中数据则默认选中第一条
if(this.isSelectFirstDefault){
if(this.isSingleSelect){
let index = items.findIndex((item: any) => item.selected);
let index: number = -1;
if(this.selectedNodes && this.selectedNodes.length > 0){
this.selectedNodes.forEach((select: any) => {
index = items.findIndex((item: any) => Object.is(select.srfkey,item.srfkey));
});
}
if(index === -1) {
if(isRoot){
index = 0;
......
......@@ -21,6 +21,7 @@
<div class='search-content'>
<i-input :search="true"
@on-change="($event) => { this.srfnodefilter = $event.target.value; }"
:placeholder="placeholder"
@on-search="onSearch">
</i-input>
</div>
......@@ -56,6 +57,10 @@
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/FUNC/MACRO.ftl
</#ibizinclude>
<#if view.getPSAppViewLogics?? && view.getPSAppViewLogics()??>
<#list view.getPSAppViewLogics() as logic>
<#if logic.getPFLogicCodeType() == 'APP_NEWDATA'>
......@@ -123,6 +128,15 @@
*/
public ctrlWidth:number = <#if ctrl.getWidth()??>${ctrl.getWidth()?c}<#else>0</#if>;
/**
* 可搜索字段名称
*
*
* @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public placeholder="<@getQuickSearchPlaceholder view />";
/**
* 过滤值
*
......@@ -208,15 +222,18 @@
*/
public ${ctrl.name}_selectionchange(args: any [], tag?: string, $event2?: any): void {
if (args.length === 0) {
this.calcToolbarItemState(true);
return ;
}
const arg:any = args[0];
if (!arg.id) {
this.calcToolbarItemState(true);
return;
}
const nodetype = arg.id.split(';')[0];
const refview = this.getExpItemView({ nodetype: nodetype });
if (!refview) {
this.calcToolbarItemState(true);
return;
}
let tempViewparam:any = {};
......@@ -260,6 +277,7 @@
this.selection = {};
Object.assign(this.selection, { view: { viewname: refview.viewname } });
Object.assign(this.selection,{'viewparam':tempViewparam,'context':tempContext});
this.calcToolbarItemState(false);
this.$forceUpdate();
}
......@@ -273,6 +291,7 @@
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public ${ctrl.name}_load(args: any[], tag?: string, $event2?: any): void {
this.calcToolbarItemState(true);
this.$emit('load',args);
}
......@@ -414,6 +433,34 @@
this.$emit('load', $event);
}
/**
* 设置导航区工具栏禁用状态
*
* @param {boolean} state
* @return {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public calcToolbarItemState(state: boolean) {
let _this: any = this;
const models:any = _this.${ctrl.getCodeName()?lower_case}_toolbarModels;
if (models) {
for (const key in models) {
if (!models.hasOwnProperty(key)) {
return;
}
const _item = models[key];
if (_item.uiaction && (Object.is(_item.uiaction.target, 'SINGLEKEY') || Object.is(_item.uiaction.target, 'MULTIKEY'))) {
_item.disabled = state;
}
_item.visabled = true;
if (_item.noprivdisplaymode && _item.noprivdisplaymode === 6) {
_item.visabled = false;
}
}
this.calcNavigationToolbarState();
}
}
/**
* 计算导航工具栏权限状态
*
......@@ -422,16 +469,14 @@
public calcNavigationToolbarState(){
let _this: any = this;
// 界面行为
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
<#if ctrl.getCodeName?? && ctrl.getCodeName()??>
<#assign ModelsName>${ctrl.getCodeName()?lower_case}_toolbarModels</#assign>
if(_this.${ModelsName}){
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
ViewTool.calcActionItemAuthState({},_this.${ModelsName},curUIService);
}
</#if>
</#if>
}
}
<#if ctrl.getPSControls()??>
......
......@@ -13,6 +13,7 @@
<div class='search-content'>
<i-input :search="true"
@on-change="($event: any) => { this.srffilter = $event.target.value; }"
:placeholder="placeholder"
@on-search="onSearch">
</i-input>
</div>
......@@ -51,6 +52,10 @@
</template>
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/FUNC/MACRO.ftl
</#ibizinclude>
/**
......@@ -82,6 +87,14 @@
*/
public selection: any = {};
/**
* 可搜索字段名称
*
*
* @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public placeholder="<@getQuickSearchPlaceholder view />";
/**
* 过滤值
......
......@@ -315,7 +315,7 @@ GanttElastic,
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh() {
public refresh(args?: any) {
this.load();
}
......
......@@ -165,6 +165,29 @@ draggable,
*/
@Prop() public isSingleSelect?: boolean;
<#if view.getPSAppViewLogics?? && view.getPSAppViewLogics()??>
<#list view.getPSAppViewLogics() as logic>
<#if logic.getPFLogicCodeType() == 'APP_NEWDATA'>
/**
* 打开新建数据视图
*
* @type {any}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
@Prop() public newdata: any;
</#if>
<#if logic.getPFLogicCodeType() == 'APP_OPENDATA'>
/**
* 打开编辑数据视图
*
* @type {any}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
@Prop() public opendata: any;
</#if>
</#list>
</#if>
/**
* 数据
*
......@@ -346,9 +369,9 @@ draggable,
* @param {*} [opt={}]
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(opt: any = {}) {
public refresh(args?: any) {
this.curPage = 1;
this.load(opt, true);
this.load(args, true);
}
/**
......
......@@ -9,6 +9,16 @@
<#if view.getViewType() == 'DEDATAVIEWEXPVIEW'>
:isSelectFirstDefault="true"
</#if>
<#if view.getPSAppViewLogics?? && view.getPSAppViewLogics()??>
<#list view.getPSAppViewLogics() as logic>
<#if logic.getPFLogicCodeType() == 'APP_NEWDATA'>
:newdata="newdata"
</#if>
<#if logic.getPFLogicCodeType() == 'APP_OPENDATA'>
:opendata="opendata"
</#if>
</#list>
</#if>
</#assign>
<#ibizinclude>
../@MACRO/HTML/DEFAULT.html.ftl
......
......@@ -261,10 +261,8 @@ import { Environment } from '@/environments/environment';
public rules() :any {
return {
<#list ctrl.getAllPSDEFormDetails() as formdetail>
<#if formdetail.getDetailType?? && formdetail.getDetailType() == 'FORMITEM'>
<#if formdetail.getDetailType?? && formdetail.getDetailType() == 'FORMITEM' && formdetail.getEditorType() != "HIDDEN">
${formdetail.getName()}: [
{ type: '<#assign datatype=srfjavatype(formdetail.getStdDataType())><#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>number<#else>string</#if>', message: '${formdetail.getCaption()} 值必须为<#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>数值<#else>字符串</#if>类型', trigger: 'change' },
{ type: '<#assign datatype=srfjavatype(formdetail.getStdDataType())><#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>number<#else>string</#if>', message: '${formdetail.getCaption()} 值必须为<#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>数值<#else>字符串</#if>类型', trigger: 'blur' },
{ required: this.detailsModel.${formdetail.getName()}.required, type: '<#assign datatype=srfjavatype(formdetail.getStdDataType())><#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>number<#else>string</#if>', message: '${formdetail.getCaption()} 值不能为空', trigger: 'change' },
{ required: this.detailsModel.${formdetail.getName()}.required, type: '<#assign datatype=srfjavatype(formdetail.getStdDataType())><#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>number<#else>string</#if>', message: '${formdetail.getCaption()} 值不能为空', trigger: 'blur' },
<#if formdetail.getEditorType?? && formdetail.getEditorType()?? && formdetail.isAllowEmpty?? && formdetail.isAllowEmpty()??>
......@@ -355,32 +353,38 @@ import { Environment } from '@/environments/environment';
falg.isPast = val;
}
}
rule[name].forEach((item:any) => {
for(let i=0;i<rule[name].length;i++){
let item:any = rule[name][i];
let dataValue = item.deName?this.data[this.service.getItemNameByDeName(item.deName)]:"";
// 常规规则
if(item.type == 'SIMPLE'){
startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.data,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
if(!falg.isPast) return falg;
}
// 数值范围
if(item.type == 'VALUERANGE2'){
startOp( !this.$verify.checkFieldValueRangeRule(dataValue,item.minValue,item.isIncludeMinValue,item.maxValue,item.isIncludeMaxValue,item.ruleInfo,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
if(!falg.isPast) return falg;
}
// 正则式
if (item.type == "REGEX") {
startOp(!this.$verify.checkFieldRegExRule(dataValue,item.regExCode,item.ruleInfo,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
if(!falg.isPast) return falg;
}
// 长度
if (item.type == "STRINGLENGTH") {
startOp(!this.$verify.checkFieldStringLengthRule(dataValue,item.minValue,item.isIncludeMinValue,item.maxValue,item.isIncludeMaxValue,item.ruleInfo,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
if(!falg.isPast) return falg;
}
// 系统值规则
if(item.type == "SYSVALUERULE") {
startOp(!this.$verify.checkFieldSysValueRule(dataValue,item.sysRule.regExCode,item.ruleInfo,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
if(!falg.isPast) return falg;
}
// 分组
if(item.type == 'GROUP'){
......@@ -388,9 +392,9 @@ import { Environment } from '@/environments/environment';
if(item.isNotMode){
falg.isPast = !falg.isPast;
}
}
});
if(!falg.isPast) return falg;
}
}
if(!falg.hasOwnProperty("isPast")){
falg.isPast = true;
}
......@@ -1000,12 +1004,12 @@ import { Environment } from '@/environments/environment';
/**
* 部件刷新
*
* @param {any[]} args
* @param {any} args
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(args: any[]): void {
public refresh(args?: any): void {
let arg: any = {};
Object.assign(arg,args[0]);
Object.assign(arg,args?args[0]:{});
if (this.data.srfkey && !Object.is(this.data.srfkey, '')) {
Object.assign(arg, { srfkey: this.data.srfkey });
this.load(arg);
......@@ -1706,9 +1710,9 @@ import { Environment } from '@/environments/environment';
*/
public createDefault(){
<#list ctrl.getAllPSDEFormDetails() as formdetail><#t>
<#if formdetail.getCreateDV?? && formdetail.getCreateDV()??><#t>
<#if !(formdetail.getCreateDV() == '') || formdetail.getCreateDVT() == 'CURTIME'><#t>
<#if formdetail.getCreateDV?? && formdetail.getCreateDV()?? && formdetail.getCreateDV() !=""><#t>
if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}')) {
<#if !(formdetail.getCreateDVT() == '')><#t>
<#-- 网页请求 -->
<#if formdetail.getCreateDVT() == 'CONTEXT'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.viewparams['${formdetail.getCreateDV()}'];
......@@ -1727,13 +1731,16 @@ import { Environment } from '@/environments/environment';
<#-- 当前时间 -->
<#elseif formdetail.getCreateDVT() == 'CURTIME'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.$util.dateFormat(new Date());
<#else>
<#-- 数据对象属性 -->
<#elseif formdetail.getCreateDVT() == 'PARAM'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.service.getRemoteCopyData().${formdetail.getCreateDV()}?this.service.getRemoteCopyData().${formdetail.getCreateDV()}:null;
</#if>
<#else>
<#-- 默认值 -->
<#assign datatype=srfjavatype(formdetail.getStdDataType())>
this.data['${formdetail.getCodeName()?lower_case}'] = <#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>${formdetail.getCreateDV()}<#else>'${formdetail.getCreateDV()}'</#if>;
</#if>
}
</#if>
}
</#if>
</#list>
}
......@@ -1744,9 +1751,9 @@ import { Environment } from '@/environments/environment';
*/
public updateDefault(){
<#list ctrl.getAllPSDEFormDetails() as formdetail><#t>
<#if formdetail.getUpdateDV?? && formdetail.getUpdateDV()??><#t>
<#if !(formdetail.getUpdateDVT() == '')><#t>
<#if formdetail.getUpdateDV?? && formdetail.getUpdateDV()?? && formdetail.getUpdateDV() != ""><#t>
if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}') && !this.data.${formdetail.getCodeName()?lower_case}) {
<#if !(formdetail.getUpdateDVT() == '')><#t>
<#-- 网页请求 -->
<#if formdetail.getUpdateDVT() == 'CONTEXT'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.viewparams['${formdetail.getUpdateDV()}'];
......@@ -1762,6 +1769,13 @@ import { Environment } from '@/environments/environment';
<#-- 当前操作用户(编号) -->
<#elseif formdetail.getUpdateDVT() == 'OPERATOR'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.context['srfuserid'];
<#-- 当前时间 -->
<#elseif formdetail.getUpdateDVT() == 'CURTIME'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.$util.dateFormat(new Date());
<#-- 数据对象属性 -->
<#elseif formdetail.getUpdateDVT() == 'PARAM'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.service.getRemoteCopyData().${formdetail.getUpdateDV()}?this.service.getRemoteCopyData().${formdetail.getUpdateDV()}:null;
</#if>
<#else>
<#-- 默认值 -->
<#assign datatype=srfjavatype(formdetail.getStdDataType())>
......@@ -1769,7 +1783,6 @@ import { Environment } from '@/environments/environment';
</#if>
}
</#if>
</#if>
</#list>
}
......
......@@ -495,10 +495,10 @@ import { Environment } from '@/environments/environment';
/**
* 部件刷新
*
* @param {any[]} args
* @param {any} args
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(args: any[]): void {
public refresh(args?: any): void {
this.load();
}
......@@ -752,7 +752,7 @@ import { Environment } from '@/environments/environment';
this.totalrow = response.total;
this.items = JSON.parse(JSON.stringify(data));
// 清空selections,gridItemsModel
this.selections = [];
//this.selections = [];
this.gridItemsModel = [];
this.items.forEach(()=>{this.gridItemsModel.push(this.getGridRowModel())});
this.items.forEach((item:any)=>{
......@@ -762,8 +762,18 @@ import { Environment } from '@/environments/environment';
// 设置默认选中
let _this = this;
setTimeout(() => {
//在导航视图中,如已有选中数据,则右侧展开已选中数据的视图,如无选中数据则默认选中第一条
if(_this.isSelectFirstDefault){
_this.rowClick(_this.items[0]);
if(_this.selections && _this.selections.length > 0){
_this.selections.forEach((select: any)=>{
const index = _this.items.findIndex((item:any) => Object.is(item.srfkey,select.srfkey));
if(index != -1){
_this.rowClick(_this.items[index]);
}
})
}else{
_this.rowClick(this.items[0]);
}
}
if(_this.selectedData){
const refs: any = _this.$refs;
......@@ -2036,7 +2046,7 @@ import { Environment } from '@/environments/environment';
<#assign itemUpdate=editItem.getPSDEGridEditItemUpdate()/>
if(Object.is(property, '${editItem.name}')){
const details: string[] = [<#list itemUpdate.getPSDEGEIUpdateDetails() as detail><#if detail_index gt 0>, </#if>'${detail.getPSDEGridColumnName()?lower_case}'</#list>];
this.updateGridEditItem('${itemUpdate.codeName}', row, details, ${itemUpdate.isShowBusyIndicator()?c});
this.updateGridEditItem('${itemUpdate.getPSAppDEMethod().getCodeName()}', row, details, ${itemUpdate.isShowBusyIndicator()?c});
}
</#if>
</#list>
......@@ -2163,9 +2173,9 @@ import { Environment } from '@/environments/environment';
*/
public createDefault(row: any){
<#list ctrl.getPSDEGridEditItems() as editItem><#t>
<#if editItem.getCreateDV?? && editItem.getCreateDV()??><#t>
<#if !(editItem.getCreateDV() == '') || editItem.getCreateDVT() == 'CURTIME'><#t>
<#if editItem.getCreateDV?? && editItem.getCreateDV()?? && editItem.getCreateDV() !=""><#t>
if (row.hasOwnProperty('${editItem.getCodeName()?lower_case}')) {
<#if !(editItem.getCreateDVT() == '')><#t>
<#-- 网页请求 -->
<#if editItem.getCreateDVT() == 'CONTEXT'>
row['${editItem.getCodeName()?lower_case}'] = this.viewparams['${editItem.getCreateDV()}'];
......@@ -2184,13 +2194,16 @@ import { Environment } from '@/environments/environment';
<#-- 当前时间 -->
<#elseif editItem.getCreateDVT() == 'CURTIME'>
row['${editItem.getCodeName()?lower_case}'] = this.$util.dateFormat(new Date());
<#else>
<#-- 数据对象属性 -->
<#elseif editItem.getCreateDVT() == 'PARAM'>
row['${editItem.getCodeName()?lower_case}'] = this.computeDefaultValueWithParam("CREATE","${editItem.getCreateDV()}",row);
</#if>
<#else>
<#-- 默认值 -->
<#assign datatype=srfjavatype(editItem.getPSAppDEField().getStdDataType())>
row['${editItem.getCodeName()?lower_case}'] = <#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>${editItem.getCreateDV()}<#else>'${editItem.getCreateDV()}'</#if>;
</#if>
}
</#if>
}
</#if>
</#list>
}
......@@ -2202,9 +2215,9 @@ import { Environment } from '@/environments/environment';
*/
public updateDefault(row: any){
<#list ctrl.getPSDEGridEditItems() as editItem><#t>
<#if editItem.getUpdateDV?? && editItem.getUpdateDV()??><#t>
<#if !(editItem.getUpdateDV() == '') || editItem.getUpdateDVT() == 'CURTIME'><#t>
if (row.hasOwnProperty('${editItem.getCodeName()?lower_case}') && !row.${editItem.getCodeName()?lower_case} && !row.hasUpdated) {
<#if editItem.getUpdateDV?? && editItem.getUpdateDV()?? && editItem.getUpdateDV() !=""><#t>
if (row.hasOwnProperty('${editItem.getCodeName()?lower_case}') && !row.${editItem.getCodeName()?lower_case} && row.hasUpdated) {
<#if !(editItem.getUpdateDVT() == '')><#t>
<#-- 网页请求 -->
<#if editItem.getUpdateDVT() == 'CONTEXT'>
row['${editItem.getCodeName()?lower_case}'] = this.viewparams['${editItem.getUpdateDV()}'];
......@@ -2223,17 +2236,47 @@ import { Environment } from '@/environments/environment';
<#-- 当前时间 -->
<#elseif editItem.getUpdateDVT() == 'CURTIME'>
row['${editItem.getCodeName()?lower_case}'] = this.$util.dateFormat(new Date());
<#else>
<#-- 默认值 -->
<#-- 数据对象属性 -->
<#elseif editItem.getUpdateDVT() == 'PARAM'>
row['${editItem.getCodeName()?lower_case}'] = this.computeDefaultValueWithParam("UPDATE","${editItem.getUpdateDV()}",row);
</#if>
<#else>
<#-- 默认值 -->
<#assign datatype=srfjavatype(editItem.getPSAppDEField().getStdDataType())>
row['${editItem.getCodeName()?lower_case}'] = <#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>${editItem.getUpdateDV()}<#else>'${editItem.getUpdateDV()}'</#if>;
</#if>
}
</#if>
}
</#if>
</#list>
}
/**
* 计算数据对象类型的默认值
* @param {string} action 行为
* @param {string} param 默认值参数
* @param {*} data 当前行数据
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public computeDefaultValueWithParam(action:string,param:string,data:any){
if(Object.is(action,"UPDATE")){
const nativeData:any = this.service.getCopynativeData();
if(nativeData && (nativeData instanceof Array) && nativeData.length >0){
let targetData:any = nativeData.find((item:any) =>{
return item.${appde.getKeyPSAppDEField().getCodeName()?lower_case} === data.srfkey;
})
if(targetData){
return targetData[param]?targetData[param]:null;
}else{
return null;
}
}else{
return null;
}
}else{
return this.service.getRemoteCopyData()[param]?this.service.getRemoteCopyData()[param]:null;
}
}
/**
* 校验属性值规则
*
......
......@@ -24,7 +24,15 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public copynativeData:any;
private copynativeData:any;
/**
* 远端数据
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
private remoteCopyData:any = {};
<#list ctrl.getPSDEGridEditItems() as deItem>
<#if deItem.getPSEditor()?? && deItem.getPSEditor().getPSAppDataEntity?? && deItem.getPSEditor().getPSAppDataEntity()??>
......@@ -259,7 +267,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi
result =_appEntityService.FetchDefault(Context,Data, isloading);
}
result.then((response) => {
this.copynativeData = Util.deepCopy(response.data);
this.setCopynativeData(response.data);
this.handleResponse(action, response);
resolve(response);
}).catch(response => {
......@@ -343,6 +351,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi
response.data.${appde.getKeyPSAppDEField().getCodeName()?lower_case} = Util.createUUID();
</#if>
}
this.setRemoteCopyData(response);
this.handleResponse(action, response, true);
resolve(response);
}).catch(response => {
......@@ -540,7 +549,46 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi
});
});
}
/**
* 设置远端数据
*
* @param result 远端请求结果
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public setRemoteCopyData(result:any){
if (result && result.status === 200) {
this.remoteCopyData = Util.deepCopy(result.data);
}
}
/**
* 获取远端数据
*
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public getRemoteCopyData(){
return this.remoteCopyData;
}
/**
* 设置备份原生数据
*
* @param data 远端请求结果
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public setCopynativeData(data:any){
this.copynativeData = Util.deepCopy(data);
}
/**
* 获取备份原生数据
*
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public getCopynativeData(){
return this.copynativeData;
}
<#ibizinclude>
../@MACRO/SERVICE/SERVICE_BOTTOM.ts.ftl
</#ibizinclude>
\ No newline at end of file
......@@ -22,6 +22,7 @@
<div class='search-container'>
<i-input :search="true"
@on-change="($event) => { this.searchText = $event.target.value; }"
:placeholder="placeholder"
@on-search="onSearch">
</i-input>
</div>
......@@ -160,6 +161,15 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
*/
public selection: any = {};
/**
* 可搜索字段名称
*
*
* @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public placeholder="<@getQuickSearchPlaceholder view />";
/**
* 搜素值
*
......@@ -481,6 +491,21 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
}
/**
* 刷新
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(args?: any): void {
<#if ctrl.getXDataPSControl?? && ctrl.getXDataPSControl()??>
<#assign dataControl = ctrl.getXDataPSControl() />
const refs: any = this.$refs;
if (refs && refs.${dataControl.name}) {
refs.${dataControl.name}.refresh();
}
</#if>
}
/**
* ${ctrl.name}的选中数据事件
*
......@@ -490,6 +515,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
let tempContext:any = {};
let tempViewParam:any = {};
if (args.length === 0) {
this.calcToolbarItemState(true);
return ;
}
const arg:any = args[0];
......@@ -520,6 +546,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
}
this.selection = {};
Object.assign(this.selection, { view: { viewname: this.navViewName }, context:tempContext,viewparam:tempViewParam });
this.calcToolbarItemState(false);
this.$forceUpdate();
}
......@@ -529,9 +556,38 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public ${ctrl.name}_load(args:any, tag?: string, $event2?: any){
this.calcToolbarItemState(true);
this.$emit('load',args);
}
/**
* 设置导航区工具栏禁用状态
*
* @param {boolean} state
* @return {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public calcToolbarItemState(state: boolean) {
let _this: any = this;
const models:any = _this.${ctrl.getCodeName()?lower_case}_toolbarModels;
if (models) {
for (const key in models) {
if (!models.hasOwnProperty(key)) {
return;
}
const _item = models[key];
if (_item.uiaction && (Object.is(_item.uiaction.target, 'SINGLEKEY') || Object.is(_item.uiaction.target, 'MULTIKEY'))) {
_item.disabled = state;
}
_item.visabled = true;
if (_item.noprivdisplaymode && _item.noprivdisplaymode === 6) {
_item.visabled = false;
}
}
this.calcNavigationToolbarState();
}
}
/**
* 计算导航工具栏权限状态
*
......@@ -540,16 +596,14 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
public calcNavigationToolbarState(){
let _this: any = this;
// 界面行为
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
<#if ctrl.getCodeName?? && ctrl.getCodeName()??>
<#assign ModelsName>${ctrl.getCodeName()?lower_case}_toolbarModels</#assign>
if(_this.${ModelsName}){
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()??>
<#assign curAppEntity = ctrl.getPSAppDataEntity() />
const curUIService:${srfclassname('${curAppEntity.getCodeName()}')}UIService = new ${srfclassname('${curAppEntity.getCodeName()}')}UIService();
ViewTool.calcActionItemAuthState({},_this.${ModelsName},curUIService);
}
</#if>
</#if>
}
}
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
......
......@@ -12,7 +12,6 @@
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -20,6 +19,14 @@ ${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.getPSControls()??>
<#list view.getPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
......@@ -31,6 +38,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#if>
</#list>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -38,6 +46,5 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -12,7 +12,6 @@
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -20,6 +19,14 @@ ${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
......@@ -31,6 +38,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#if>
</#list>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -38,6 +46,5 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -6,7 +6,6 @@
./VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -14,11 +13,20 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('form')>
<@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -26,6 +34,5 @@ ${P.getCtrlCode('form', 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -14,7 +14,6 @@
./VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -22,11 +21,20 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('drtab')>
<@ibizindent blank=8>
${P.getCtrlCode('drtab', 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -34,6 +42,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
......@@ -10,6 +10,13 @@ ${P.getCtrlCode('searchbar', 'CONTROL.html').code}
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('grid')>
${P.getCtrlCode('grid', 'CONTROL.html').code}
</#if>
......@@ -48,6 +55,13 @@ ${P.getCtrlCode('searchbar', 'CONTROL.html').code}
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('grid')>
${P.getCtrlCode('grid', 'CONTROL.html').code}
</#if>
......@@ -61,14 +75,14 @@ ${P.getCtrlCode('grid', 'CONTROL.html').code}
./VIEW_CAPTION.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
./View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
./View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<#-- BEGIN:视图内容 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -76,6 +90,7 @@ ${P.getCtrlCode('grid', 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容 -->
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -83,6 +98,5 @@ ${P.getCtrlCode('grid', 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
<div class='view-body-messages'>
<#if view.getPSViewMsgGroup()??>
<#assign viewMsgGroup = view.getPSViewMsgGroup()/>
<#compress>
<#if viewMsgGroup.getCodeName()??>
<app-alert-group position='BODY' :context="context" :viewparam="viewparams" infoGroup='${viewMsgGroup.getCodeName()}' viewname='${view.getCodeName()?lower_case}'></app-alert-group>
<#else>
<app-alert-group position='BODY' :context="context" :viewparam="viewparams" infoGroup='${viewMsgGroup.getName()}' viewname='${view.getCodeName()?lower_case}'></app-alert-group>
</#if>
</#compress>
</#if>
</div>
\ No newline at end of file
......@@ -3,9 +3,9 @@
<#assign viewMsgGroup = view.getPSViewMsgGroup()/>
<#compress>
<#if viewMsgGroup.getCodeName()??>
<app-alert-group position='BOTTOM' infoGroup='${viewMsgGroup.getCodeName()}'></app-alert-group>
<app-alert-group position='BOTTOM' :context="context" :viewparam="viewparams" infoGroup='${viewMsgGroup.getCodeName()}' viewname='${view.getCodeName()?lower_case}'></app-alert-group>
<#else>
<app-alert-group position='BOTTOM' infoGroup='${viewMsgGroup.getName()}'></app-alert-group>
<app-alert-group position='BOTTOM' :context="context" :viewparam="viewparams" infoGroup='${viewMsgGroup.getName()}' viewname='${view.getCodeName()?lower_case}'></app-alert-group>
</#if>
</#compress>
</#if>
......
......@@ -3,9 +3,9 @@
<#assign viewMsgGroup = view.getPSViewMsgGroup()/>
<#compress>
<#if viewMsgGroup.getCodeName()??>
<app-alert-group position='TOP' infoGroup='${viewMsgGroup.getCodeName()}'></app-alert-group>
<app-alert-group position='TOP' :context="context" :viewparam="viewparams" infoGroup='${viewMsgGroup.getCodeName()}' viewname='${view.getCodeName()?lower_case}'></app-alert-group>
<#else>
<app-alert-group position='TOP' infoGroup='${viewMsgGroup.getName()}'></app-alert-group>
<app-alert-group position='TOP' :context="context" :viewparam="viewparams" infoGroup='${viewMsgGroup.getName()}' viewname='${view.getCodeName()?lower_case}'></app-alert-group>
</#if>
</#compress>
</#if>
......
......@@ -6,7 +6,6 @@
./VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -14,6 +13,14 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
./View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<@ibizindent blank=12>
<#if view.hasPSControl('wizardpanel')>
${P.getCtrlCode('wizardpanel', 'CONTROL.html').code}
......@@ -22,6 +29,7 @@ ${P.getCtrlCode('wizardpanel', 'CONTROL.html').code}
${P.getCtrlCode('statewizardpanel', 'CONTROL.html').code}
</#if>
</@ibizindent>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -29,6 +37,5 @@ ${P.getCtrlCode('statewizardpanel', 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -5,16 +5,19 @@
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class='content-container'>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
<div class='content-container'>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
<#if view.hasPSControl('tabexppanel')>
${P.getCtrlCode('tabexppanel', 'CONTROL.html').code}
</#if>
</div>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</div>
</card>
</div>
\ No newline at end of file
......@@ -4,7 +4,6 @@
.detabsearchview{
.toolbars-container{
margin-bottom: 6px;
overflow:hidden;
.tab-panel-group{
float: right;
.el-radio-button__inner{
......
......@@ -31,10 +31,31 @@
</el-radio-group>
</#if>
</div>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('tabexppanel')>
${P.getCtrlCode('tabexppanel', 'CONTROL.html').code}
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
\ No newline at end of file
......@@ -6,7 +6,6 @@
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -14,16 +13,24 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('listexpbar')>
${P.getCtrlCode('listexpbar', 'CONTROL.html').code}
</#if>
<#-- BEGIN:视图底部视图消息 -->
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -7,7 +7,6 @@
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -15,6 +14,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#if view.getPSSysCounterRef?? && view.getPSSysCounterRef()?? && view.getPSSysCounterRef().getPSAppCounter()??>
<#assign appCounter = view.getPSSysCounterRef().getPSAppCounter() />
......@@ -49,6 +49,13 @@
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('list')>
${P.getCtrlCode('list', 'CONTROL.html').code}
</#if>
......@@ -57,6 +64,7 @@ ${P.getCtrlCode('list', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -64,6 +72,5 @@ ${P.getCtrlCode('list', 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -3,7 +3,6 @@
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if> <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :bordered="false" :dis-hover="true" >
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -11,6 +10,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#if view.getPSSysCounterRef?? && view.getPSSysCounterRef()?? && view.getPSSysCounterRef().getPSAppCounter()??>
<#assign appCounter = view.getPSSysCounterRef().getPSAppCounter() />
......@@ -45,6 +45,13 @@
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('list')>
${P.getCtrlCode('list', 'CONTROL.html').code}
</#if>
......@@ -53,6 +60,7 @@ ${P.getCtrlCode('list', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -60,6 +68,5 @@ ${P.getCtrlCode('list', 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -6,7 +6,6 @@
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -14,9 +13,18 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('dataviewexpbar')>
${P.getCtrlCode('dataviewexpbar', 'CONTROL.html').code}
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -24,6 +32,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -6,7 +6,13 @@
<#ibizinclude>
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment>
......@@ -28,6 +34,13 @@ ${P.getCtrlCode('toolbar', 'CONTROL.html').code}
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('chart')>
${P.getCtrlCode('chart', 'CONTROL.html').code}
</#if>
......@@ -37,5 +50,12 @@ ${P.getCtrlCode('chart', 'CONTROL.html').code}
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
\ No newline at end of file
......@@ -7,7 +7,6 @@
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -15,6 +14,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))>
......@@ -35,6 +35,13 @@ ${P.getCtrlCode('toolbar', 'CONTROL.html').code}
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('chart')>
${P.getCtrlCode('chart', 'CONTROL.html').code}
</#if>
......@@ -43,6 +50,7 @@ ${P.getCtrlCode('chart', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -50,6 +58,5 @@ ${P.getCtrlCode('chart', 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
<div class="view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card view-no-caption <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :dis-hover="true" :padding="0" :bordered="false">
<div class="content-container pickup-view">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -9,6 +8,14 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container pickup-view">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<div class="translate-contant">
<div class="center" :style="{width : !isShowButton ? '100%' : ''}">
<#if view.hasPSControl('pickupviewpanel')>
......@@ -54,6 +61,7 @@
<i-button @click="onClickCancel">{{this.containerModel.view_cancelbtn.text}}</i-button>
</row>
</card>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -61,6 +69,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -12,7 +12,6 @@
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -20,6 +19,14 @@ ${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.getPSControls()??>
<#list view.getPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
......@@ -31,6 +38,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#if>
</#list>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -38,6 +46,5 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
......@@ -12,7 +12,6 @@
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -20,6 +19,14 @@ ${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.getPSControls()??>
<#list view.getPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
......@@ -31,6 +38,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#if>
</#list>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -38,6 +46,5 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
......@@ -7,7 +7,6 @@
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
</@ibizindent>
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -15,6 +14,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#-- BEGIN:快速搜索框或工具栏或支持快速分组搜索或快速搜索表单部件存在 -->
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar') || view.isEnableQuickGroup() || view.getQuickPSDESearchForm()??)>
......@@ -48,6 +48,13 @@
${P.getCtrlCode('searchform', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('dataview')>
<@ibizindent blank=12>
${P.getCtrlCode('dataview', 'CONTROL.html').code}<#t>
......@@ -57,6 +64,7 @@
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -64,6 +72,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -2,7 +2,6 @@
<div class='view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card <#if !view.isShowCaptionBar()> view-no-caption</#if> <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :dis-hover="true" :bordered="false">
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -10,6 +9,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#-- BEGIN:快速搜索框或工具栏或支持快速分组搜索或快速搜索表单部件存在 -->
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar') || view.isEnableQuickGroup() || view.getQuickPSDESearchForm()??)>
......@@ -43,6 +43,13 @@
${P.getCtrlCode('searchform', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('dataview')>
<@ibizindent blank=12>
${P.getCtrlCode('dataview', 'CONTROL.html').code}<#t>
......@@ -53,6 +60,7 @@
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -60,6 +68,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
<div class="view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card view-no-caption <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :dis-hover="true" :padding="0" :bordered="false">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container pickup-view">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('pickupviewpanel')>
<@ibizindent blank=12>
${P.getCtrlCode('pickupviewpanel', 'CONTROL.html').code}<#t>
......@@ -15,5 +29,12 @@
</row>
</card>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
\ No newline at end of file
......@@ -7,7 +7,21 @@
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
......@@ -20,5 +34,12 @@
</#list>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
\ No newline at end of file
......@@ -6,7 +6,6 @@
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -14,9 +13,18 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('calendarexpbar')>
${P.getCtrlCode('calendarexpbar', 'CONTROL.html').code}
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -24,6 +32,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -7,7 +7,6 @@
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -15,6 +14,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#if view.getPSSysCounterRef?? && view.getPSSysCounterRef()?? && view.getPSSysCounterRef().getPSAppCounter()??>
<#assign appCounter = view.getPSSysCounterRef().getPSAppCounter() />
......@@ -49,6 +49,13 @@
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('calendar')>
${P.getCtrlCode('calendar', 'CONTROL.html').code}
</#if>
......@@ -57,6 +64,7 @@ ${P.getCtrlCode('calendar', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -64,6 +72,5 @@ ${P.getCtrlCode('calendar', 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -3,7 +3,6 @@
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card view-no-caption <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :bordered="false" :dis-hover="true" >
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -11,6 +10,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#if view.getPSSysCounterRef?? && view.getPSSysCounterRef()?? && view.getPSSysCounterRef().getPSAppCounter()??>
<#assign appCounter = view.getPSSysCounterRef().getPSAppCounter() />
......@@ -45,6 +45,13 @@
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('calendar')>
${P.getCtrlCode('calendar', 'CONTROL.html').code}
</#if>
......@@ -53,6 +60,7 @@ ${P.getCtrlCode('calendar', 'CONTROL.html').code}
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -60,6 +68,5 @@ ${P.getCtrlCode('calendar', 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -7,7 +7,6 @@
</#ibizinclude>
</@ibizindent>
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -15,11 +14,20 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('treeexpbar')>
<@ibizindent blank=12>
${P.getCtrlCode('treeexpbar', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -27,6 +35,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -19,6 +19,13 @@
</div>
</#if>
<#-- END:快速搜索或工具栏存在 -->
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('treegridex')>
${P.getCtrlCode('treegridex', 'CONTROL.html').code}
</#if>
......@@ -31,7 +38,6 @@
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
</@ibizindent>
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -39,6 +45,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#-- BEGIN:视图内容 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -46,6 +53,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容 -->
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
......@@ -53,6 +61,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -5,7 +5,6 @@
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -13,6 +12,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#assign MDContent>
<#-- 搜索框: BEGIN -->
<#if (view.isEnableQuickSearch())>
......@@ -21,6 +21,13 @@
</div>
</#if>
<#-- 搜索框: END -->
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('tree')>
<div class="tree-contant">
${P.getCtrlCode('tree', 'CONTROL.html').code}
......@@ -31,6 +38,7 @@
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -38,6 +46,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -2,7 +2,6 @@
<div class='view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card <#if !view.isShowCaptionBar()> view-no-caption</#if> <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :dis-hover="true" :bordered="false">
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -10,6 +9,7 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#-- 搜索框: BEGIN -->
<#if (view.isEnableQuickSearch())>
......@@ -18,6 +18,13 @@
</div>
</#if>
<#-- 搜索框: END -->
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('tree')>
<div class="tree-contant">
${P.getCtrlCode('tree', 'CONTROL.html').code}
......@@ -28,6 +35,7 @@
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -35,6 +43,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -7,6 +7,13 @@
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container'>
<#assign MDContent>
<#-- BEGIN:快速搜索框或工具栏或支持快速分组搜索或快速搜索表单部件存在 -->
......@@ -41,6 +48,13 @@
${P.getCtrlCode('searchform', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('kanban')>
<@ibizindent blank=12>
${P.getCtrlCode('kanban', 'CONTROL.html').code}<#t>
......@@ -51,5 +65,12 @@
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
\ No newline at end of file
......@@ -12,7 +12,6 @@
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -20,6 +19,14 @@ ${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('form')>
<@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code}
......@@ -36,6 +43,7 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#if>
</#list>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -43,6 +51,5 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -19,6 +19,13 @@
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container edit-view2">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('drbar')>
<@ibizindent blank=8>
${P.getCtrlCode('drbar', 'CONTROL.html').code}
......
......@@ -7,7 +7,21 @@
${P.getCtrlCode(toolbarCtrl, 'CONTROL.html').code}
</@ibizindent>
</#if>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as ctrl>
<#if ctrl.getControlType() != "TOOLBAR">
......@@ -20,5 +34,12 @@
</#list>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
\ No newline at end of file
......@@ -6,7 +6,6 @@
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
<div class="content-container">
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -14,9 +13,18 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class="content-container">
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('gridexpbar')>
${P.getCtrlCode('gridexpbar', 'CONTROL.html').code}
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -24,6 +32,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
<div class='view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'>
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card view-no-caption <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :dis-hover="true" :bordered="false">
<div class='content-container pickup-grid-view'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -9,14 +8,23 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<div class='content-container pickup-grid-view'>
<@ibizindent blank=12>
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}<#t>
</#if>
<#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容区视图消息 -->
<#if view.hasPSControl('grid')>
${P.getCtrlCode('grid', 'CONTROL.html').code}<#t>
</#if>
</@ibizindent>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
......@@ -24,6 +32,5 @@
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
......@@ -8,7 +8,12 @@
<#if !uiactiondetail.isShowCaption()>
<tooltip :transfer="true" :max-width="600">
</#if>
<a @click="uiAction('${uiactiondetail.getName()?lower_case}', $event)">
<#if uiactiondetail.getPSUIAction?? && uiactiondetail.getPSUIAction()?? && uiactiondetail.getPSUIAction().getCodeName?? && uiactiondetail.getPSUIAction().getCodeName()??>
<#assign uiactionname = uiactiondetail.getPSUIAction().getCodeName()?lower_case />
<#else>
<#assign uiactionname = uiactiondetail.getName()?lower_case />
</#if>
<a @click="uiAction('${uiactiondetail.getName()?lower_case}', $event)" v-show="uiactionModel['${uiactionname}'].visabled" :disabled="uiactionModel['${uiactionname}'].disabled">
<#if uiactiondetail.getPSUIAction()??>
<#if uiactiondetail.isShowIcon()>
<#if uiactiondetail.getPSUIAction().getPSSysImage()??>
......@@ -54,7 +59,7 @@
</#if>
<div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
<#assign refview = ctrl.getPortletPSAppView()><#t>
<${srffilepath2(refview.getCodeName())} :viewdata="JSON.stringify(context)" :viewDefaultUsage="false" ></${srffilepath2(refview.getCodeName())}>
<${srffilepath2(refview.getCodeName())} :portletState="viewState" :viewdata="JSON.stringify(context)" :viewDefaultUsage="false" ></${srffilepath2(refview.getCodeName())}>
</div>
<#-- 菜单 -->
<#elseif ctrl.getPortletType() == 'APPMENU'><#t>
......@@ -193,6 +198,7 @@
</div>
</template>
<#assign import_block>
import UIService from '@/uiservice/ui-service';
import { Environment } from '@/environments/environment';
</#assign>
<#ibizinclude>
......@@ -215,6 +221,14 @@ import { Environment } from '@/environments/environment';
*/
@Prop() public width?: number;
/**
* 门户部件类型
*
* @type {number}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public portletType: string = '<#if ctrl.getPortletType?? && ctrl.getPortletType()??>${ctrl.getPortletType()?lower_case}</#if>';
/**
* 视图默认使用
*
......@@ -274,6 +288,28 @@ import { Environment } from '@/environments/environment';
}
</#if>
/**
* 界面行为模型数据
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public uiactionModel: any = {
<#if ctrl.getPSUIActionGroup?? && ctrl.getPSUIActionGroup()?? && ctrl.getPSUIActionGroup().getPSUIActionGroupDetails()??>
<#assign UIActionDetails=ctrl.getPSUIActionGroup().getPSUIActionGroupDetails() />
<#list UIActionDetails as uiactiondetail>
<#if uiactiondetail.getPSUIAction()??>
<#assign uiaction = uiactiondetail.getPSUIAction() />
<#if uiaction.getCodeName?? && uiaction.getCodeName()??>
<#assign uiactionname = uiaction.getCodeName()?lower_case />
<#else>
<#assign uiactionname = uiactiondetail.getName()?lower_case />
</#if>
${uiactionname}: {name: '${uiactionname}', actiontarget: '${uiaction.getActionTarget()}', <#if uiactiondetail.isShowCaption()>caption: '<#if uiactiondetail.caption??>${uiactiondetail.caption}</#if>',</#if> disabled: false, type: '<#if uiactiondetail.getDetailType?? && uiactiondetail.getDetailType()??>${uiactiondetail.getDetailType()}</#if>', visabled: true, noprivdisplaymode: <#if uiaction.getNoPrivDisplayMode(view)??>${uiaction.getNoPrivDisplayMode(view)}</#if>, dataaccaction: '<#if uiaction.getDataAccessAction()??>${uiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${uiaction.getUIActionTag()}', target: '${uiaction.getActionTarget()}' } },
</#if>
</#list>
</#if>
}
<#if ctrl.getPortletType?? && ctrl.getPortletType()?? && ctrl.getPortletType() == "TOOLBAR" >
<#assign toolbar = ctrl.getContentPSControl()/>
${P.getCtrlCode(toolbar, 'CONTROL.vue').code}
......@@ -329,6 +365,20 @@ import { Environment } from '@/environments/environment';
}
}
/**
* 刷新
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(args?: any) {
<#if ctrl.getPortletType?? && ctrl.getPortletType()?? && ctrl.getPortletType() == "VIEW">
this.viewState.next({ tag: '${ctrl.getPortletPSAppView().getName()}', action: 'refresh', data: args });
</#if>
<#if ctrl.getPortletType?? && ctrl.getPortletType()?? && (ctrl.getPortletType() == "CHART" || ctrl.getPortletType() == "LIST")>
this.viewState.next({ tag: '${ctrl.getContentPSControl().getName()}', action: 'refresh', data: args });
</#if>
}
/**
* vue 生命周期
*
......@@ -346,6 +396,9 @@ import { Environment } from '@/environments/environment';
public afterCreated(){
if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if(Object.is(tag, "all-portlet") && Object.is(action,'loadmodel')){
this.calcUIActionAuthState(data);
}
if (!Object.is(tag, this.name)) {
return;
}
......@@ -398,6 +451,23 @@ import { Environment } from '@/environments/environment';
</#if>
</#if>
/**
* 计算界面行为权限
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public calcUIActionAuthState(data:any = {}) {
// 如果是操作栏,不计算权限
if(this.portletType && Object.is('actionbar', this.portletType)) {
return;
}
let _this: any = this;
let uiservice: any = _this.appUIService ? _this.appUIService : new UIService(_this.$store);
if(_this.uiactionModel){
ViewTool.calcActionItemAuthState(data,_this.uiactionModel,uiservice);
}
}
<#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude>
......
......@@ -238,12 +238,12 @@ import CodeListService from "@/codelist/codelist-service";
/**
* 刷新
*
* @param {*} [opt={}]
* @param {*} [args={}]
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public refresh(opt: any = {}) {
public refresh(args: any = {}) {
if (this.parentRef.refresh && this.parentRef.refresh instanceof Function) {
this.parentRef.refresh(opt);
this.parentRef.refresh(args);
}
}
......
<#if item.render??>
${item.render.code}
<#else>
</#if>
\ No newline at end of file
......@@ -70,6 +70,23 @@
*/
public serviceStateEvent: Subscription | undefined;
/**
* 门户部件状态对象
*
* @type {*}
* @memberof ${srfclassname('${view.name}')}Base
*/
@Prop() public portletState?: any;
/**
* 门户部件状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof ${srfclassname('${view.name}')}Base
*/
public portletStateEvent: Subscription | undefined;
/**
* 应用上下文
*
......@@ -326,6 +343,16 @@
});
}
});
if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){
return;
}
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
_this.refresh();
}
})
}
<#if created_block??>${created_block}</#if>
}
......@@ -483,6 +510,9 @@ ${P.getLogicCode(uiAction, "LOGIC.vue").code}
}
})
}
if(this.portletStateEvent){
this.portletStateEvent.unsubscribe();
}
}
</#if>
</#if>
......
......@@ -231,6 +231,21 @@ export default class ${srfclassname('${view.name}')}Base extends Vue {
</#if>
};
<#if view.getXDataPSControl?? && view.getXDataPSControl()??>
<#assign dataControl = view.getXDataPSControl()/>
/**
* 视图刷新
*
* @param {*} args
* @memberof ${srfclassname('${view.name}')}Base
*/
public refresh(args?: any): void {
const refs: any = this.$refs;
if (refs && refs.${dataControl.name}) {
refs.${dataControl.name}.refresh();
}
}
</#if>
/**
* 计数器刷新
*
......
......@@ -16,7 +16,7 @@ this.$forceUpdate();
return;
}
const { data: _data } = response;
this.viewState.next({ tag: 'app-actionbar', action: 'loadmodel', data:_data});
this.viewState.next({ tag: 'all-portlet', action: 'loadmodel', data:_data});
if (_data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case}) {
Object.assign(this.model, { dataInfo: _data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case} });
if(this.$tabPageExp){
......
......@@ -26,7 +26,7 @@ this.$forceUpdate();
return;
}
const { data: _data } = response;
this.viewState.next({ tag: 'app-actionbar', action: 'loadmodel', data:_data});
this.viewState.next({ tag: 'all-portlet', action: 'loadmodel', data:_data});
if (_data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case}) {
Object.assign(this.model, { dataInfo: _data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case} });
if(this.$tabPageExp){
......
......@@ -26,7 +26,7 @@ this.$forceUpdate();
return;
}
const { data: _data } = response;
this.viewState.next({ tag: 'app-actionbar', action: 'loadmodel', data:_data});
this.viewState.next({ tag: 'all-portlet', action: 'loadmodel', data:_data});
if (_data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case}) {
Object.assign(this.model, { dataInfo: _data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case} });
if(this.$tabPageExp){
......
......@@ -51,19 +51,6 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
}
}
/**
* 视图刷新
*
* @param {*} $event
* @memberof ${srfclassname('${view.name}')}Base
*/
public refresh(): void {
const refs: any = this.$refs;
if (refs.calendar) {
refs.calendar.refresh();
}
}
/**
* calendar 的 beforeload 事件
*
......
......@@ -21,6 +21,16 @@
* @memberof ${srfclassname('${view.name}')}Base
*/
public isDefaultPage: boolean = ${view.isDefaultPage()?c};
/**
* 加载数据
*
* @type {boolean}
* @memberof ${srfclassname('${view.name}')}Base
*/
public loadModel() {
this.viewState.next({ tag: 'all-portlet', action: 'loadmodel', data: {}});
}
<#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
......
......@@ -21,6 +21,16 @@
* @memberof ${srfclassname('${view.name}')}Base
*/
public isDefaultPage: boolean = ${view.isDefaultPage()?c};
/**
* 加载数据
*
* @type {boolean}
* @memberof ${srfclassname('${view.name}')}Base
*/
public loadModel() {
this.viewState.next({ tag: 'all-portlet', action: 'loadmodel', data: {}});
}
<#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
......
......@@ -2,6 +2,8 @@
TARGET=PSSYSAPP
</#ibiztemplate>
import store from '@/store';
import { Environment } from '@/environments/environment';
/**
* 实体权限服务
*
......@@ -125,7 +127,13 @@ export default class AuthService {
if(!this.$store.getters['authresource/getEnablePermissionValid']) {
return true;
}
return this.$store.getters['authresource/getAuthMenu'](item);
if(Object.is(Environment.menuPermissionMode,"RT")){
return this.$store.getters['authresource/getAuthMenuWithRT'](item);
}else if(Object.is(Environment.menuPermissionMode,"RESOURCE")){
return this.$store.getters['authresource/getAuthMenuWithResource'](item);
}else{
return this.$store.getters['authresource/getAuthMenu'](item);
}
}
/**
......
......@@ -28,6 +28,8 @@ export const Environment = {
devMode: true,
// 是否开启权限认证
enablePermissionValid:false,
// 菜单权限模式,可选值:RT(RT模式),RESOURCE(资源模式),MINIX(混合模式),默认MINIX
menuPermissionMode:"MINIX",
// 项目模板地址
ProjectUrl: "http://demo.ibizlab.cn/ibizr7pfstdtempl/ibizvuer7",
// 打开目标工具,可选参数:sln、mos
......
......@@ -115,10 +115,15 @@ export default class ${srfclassname('${item.getCodeName()}')}MessageServiceBase
/**
* 转化消息模板标题和内容
*
* @target {*} target 返回目标数据
* @param {*} context 应用上下文
* @param {*} viewparam 视图参数
* @param {*} item 源数据
*
* @memberof ${srfclassname('${item.getCodeName()}')}MessageServiceBase
*/
public translateMessageTemp(target:any,item?:any){
public translateMessageTemp(target:any,context:any,viewparam:any,item?:any){
if(this.hasMessageTemp && Object.is(this.messageType,"HTML")){
Object.assign(target,{title:`<#if item.getPSSysMsgTempl()?? && item.getPSSysMsgTempl().getSubject()??>${item.getPSSysMsgTempl().getSubject()}</#if>`});
Object.assign(target,{content:`<#if item.getPSSysMsgTempl()?? && item.getPSSysMsgTempl().getContent()??>${item.getPSSysMsgTempl().getContent()}</#if>`});
......@@ -134,10 +139,11 @@ export default class ${srfclassname('${item.getCodeName()}')}MessageServiceBase
/**
* 获取远程数据
*
* @param {*} context
* @param {*} data
* @param {boolean} [isloading]
* @param {*} context 应用上下文
* @param {*} data 视图参数
* @param {boolean} [isloading] 加载状态
* @returns {Promise<any>}
*
* @memberof ${srfclassname('${item.getCodeName()}')}MessageServiceBase
*/
public getItems(context: any={}, data: any={}, isloading?: boolean): Promise<any> {
......@@ -150,7 +156,7 @@ export default class ${srfclassname('${item.getCodeName()}')}MessageServiceBase
promise.then((response: any) => {
if (response && response.status === 200) {
const data = response.data;
resolve(this.doItems(data));
resolve(this.doItems(data,tempContext,tempData));
} else {
resolve([]);
}
......@@ -166,12 +172,14 @@ export default class ${srfclassname('${item.getCodeName()}')}MessageServiceBase
/**
* 处理数据
*
* @public
* @param {any[]} items
* @param {any[]} items 源数据
* @param {*} context 应用上下文
* @param {*} data 视图参数
* @returns {any[]}
*
* @memberof ${srfclassname('${item.getCodeName()}')}MessageServiceBase
*/
public doItems(items: any[]): any[] {
public doItems(items: any[],context:any,viewparam:any): any[] {
let _items: any[] = [];
items.forEach((item: any) => {
let itemdata:any = {
......@@ -188,7 +196,7 @@ export default class ${srfclassname('${item.getCodeName()}')}MessageServiceBase
dynamicMode:"DYNAMIC",
messageType:"<#if item.getPSSysMsgTempl()?? && item.getPSSysMsgTempl().getContentType()??>${item.getPSSysMsgTempl().getContentType()}<#else>TEXT</#if>"
};
this.translateMessageTemp(itemdata,item);
this.translateMessageTemp(itemdata,context,viewparam,item);
_items.push(itemdata);
});
return _items;
......
......@@ -346,7 +346,7 @@ ${P.getLogicCode(appdeUIAction, "LOGIC.vue").code}
this.mainStateFields.forEach((singleMainField:any) =>{
if(!(singleMainField in curData)){
<#noparse>console.warn(`当前数据对象不包含属性${singleMainField},可能会发生错误`);</#noparse>
<#noparse>console.warn(`当前数据对象不包含属性「${singleMainField}」,根据「${singleMainField}」属性进行的主状态计算默认为空值`);</#noparse>
}
})
for (let i = 0; i <= 1; i++) {
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册