提交 a70f63ed 编写于 作者: liuleizhi's avatar liuleizhi 提交者: hebao1234

Revert "修复viewparams为字符串时处理逻辑异常问题"

This reverts commit 13fa3ba1.
上级 cae53daa
...@@ -22,6 +22,19 @@ ...@@ -22,6 +22,19 @@
</#if> </#if>
</#macro> </#macro>
<#-- 获取快速搜索栏提示 Placeholder -->
<#macro getSearchPlaceholder ctrl>
<#assign isdrawcComma = false />
<#if ctrl.getPSAppDataEntity?? && ctrl.getPSAppDataEntity()?? && ctrl.getPSAppDataEntity().getAllPSAppDEFields?? && ctrl.getPSAppDataEntity().getAllPSAppDEFields()??>
<#list ctrl.getPSAppDataEntity().getAllPSAppDEFields() as field>
<#if field.isEnableQuickSearch()>
<#if isdrawcComma>,<#else><#assign isdrawcComma = true /></#if><#t>
${field.getPSDEField().getLogicName()}<#t>
</#if>
</#list>
</#if>
</#macro>
<#-- 获取导航上下文 --> <#-- 获取导航上下文 -->
<#macro getNavigateContext currentItem> <#macro getNavigateContext currentItem>
{<#t> {<#t>
......
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<div class='tabviewpanel<#if ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>' style="height:100%;"> <div class='tabviewpanel<#if ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>' style="height:100%;">
<tabs :value="tabValue" :animated="false" class='tabexppanel' name='${ctrl.getCodeName()?lower_case}' @on-click="tabPanelClick"> <tabs :value="activiedTabViewPanel" :animated="false" class='tabexppanel' name='${ctrl.getCodeName()?lower_case}' @on-click="tabPanelClick">
<#list ctrl.getPSControls() as tabviewpanel> <#list ctrl.getPSControls() as tabviewpanel>
<tab-pane :index="${tabviewpanel_index}" name='${tabviewpanel.name}' tab='${ctrl.getCodeName()?lower_case}' class='<#if tabviewpanel.getPSSysCss?? && tabviewpanel.getPSSysCss()??>${tabviewpanel.getPSSysCss().getCssName()}</#if>' v-if="computedAuthorizedPanel('${tabviewpanel.name}')" <tab-pane :index="${tabviewpanel_index}" name='${tabviewpanel.name}' tab='${ctrl.getCodeName()?lower_case}' class='<#if tabviewpanel.getPSSysCss?? && tabviewpanel.getPSSysCss()??>${tabviewpanel.getPSSysCss().getCssName()}</#if>' v-if="authResourceObject['${tabviewpanel.name}'].visabled"
:label="(h) =>{ :label="(h) =>{
return h('div', [ return h('div', [
<#if tabviewpanel.getPSSysImage()??> <#if tabviewpanel.getPSSysImage()??>
...@@ -58,6 +58,14 @@ import { Environment } from '@/environments/environment'; ...@@ -58,6 +58,14 @@ import { Environment } from '@/environments/environment';
*/ */
public appAuthService: ${appde.getCodeName()}AuthService = new ${appde.getCodeName()}AuthService(); public appAuthService: ${appde.getCodeName()}AuthService = new ${appde.getCodeName()}AuthService();
/**
* 界面UI服务对象
*
* @type {${srfclassname('${appde.getCodeName()}')}UIService}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public appUIService:${srfclassname('${appde.getCodeName()}')}UIService = new ${srfclassname('${appde.getCodeName()}')}UIService(this.$store);
/** /**
* 是否初始化 * 是否初始化
* *
...@@ -120,13 +128,13 @@ import { Environment } from '@/environments/environment'; ...@@ -120,13 +128,13 @@ import { Environment } from '@/environments/environment';
public action:any = ''; public action:any = '';
/** /**
* 分页面板统一资源存储对象 * 分页面板权限标识存储对象
* *
* @public * @public
* @type {*} * @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public authResourceObject:any = {<#list ctrl.getPSControls() as tabviewpanel>'${tabviewpanel.name}':<#if tabviewpanel.getEmbeddedPSAppDEView()?? && tabviewpanel.getEmbeddedPSAppDEView().getAccessKey()??>'${tabviewpanel.getEmbeddedPSAppDEView().getAccessKey()}'<#else>null</#if><#if tabviewpanel_has_next>,</#if></#list>}; public authResourceObject:any = {<#list ctrl.getPSControls() as tabviewpanel>'${tabviewpanel.name}':{resourcetag:<#if tabviewpanel.getEmbeddedPSAppDEView()?? && tabviewpanel.getEmbeddedPSAppDEView().getAccessKey()??>'${tabviewpanel.getEmbeddedPSAppDEView().getAccessKey()}'<#else>null</#if><#if tabviewpanel.getPSDEOPPriv?? && tabviewpanel.getPSDEOPPriv()??>,actiontarget: 'SINGLEKEY',noprivdisplaymode:2,dataaccaction:'${tabviewpanel.getPSDEOPPriv().getName()}'</#if>,visabled: true,disabled: false}<#if tabviewpanel_has_next>,</#if></#list>};
/** /**
* 被激活的分页面板 * 被激活的分页面板
...@@ -137,39 +145,45 @@ import { Environment } from '@/environments/environment'; ...@@ -137,39 +145,45 @@ import { Environment } from '@/environments/environment';
public activiedTabViewPanel: string = '<#list ctrl.getPSControls() as tabviewpanel><#if tabviewpanel_index==0>${tabviewpanel.name}</#if></#list>'; public activiedTabViewPanel: string = '<#list ctrl.getPSControls() as tabviewpanel><#if tabviewpanel_index==0>${tabviewpanel.name}</#if></#list>';
/** /**
* 计算激活分页面板 * 计算分页面板权限
* *
* @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public computedActiviedPanel(){ public computedAuthPanel(data:any){
if(this.$store.getters['authresource/getEnablePermissionValid']){ if(!data || Object.keys(data).length === 0){
if(Object.keys(this.authResourceObject).length >0){ return;
let targetResult:Array<any> = []; }
Object.keys(this.authResourceObject).forEach((item:any) =>{ if(this.authResourceObject && Object.keys(this.authResourceObject).length >0){
if(this.computedAuthorizedPanel(item)) Object.keys(this.authResourceObject).forEach((key:string) =>{
targetResult.push(item); if(this.authResourceObject[key] && this.authResourceObject[key]['dataaccaction']){
}) let tempUIAction:any = Util.deepCopy(this.authResourceObject[key]);
if(targetResult.length >0){ let result: any[] = ViewTool.calcActionItemAuthState(data,[tempUIAction],this.appUIService);
this.activiedTabViewPanel = targetResult[0]; this.authResourceObject[key].visabled = this.computedPanelWithResource(key,tempUIAction.visabled);
this.tabPanelClick(targetResult[0]); this.authResourceObject[key].disabled = this.computedPanelWithResource(key,tempUIAction.disabled);
}
})
const keys:any = Object.keys(this.authResourceObject);
for(let i=0;i<keys.length;i++){
if(this.authResourceObject[keys[i]].visabled){
this.tabPanelClick(keys[i]);
return;
} }
} }
} }
} }
/** /**
* 计算分页面板是否显示 * 合入统一资源权限
* *
* @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public computedAuthorizedPanel(name:string){ public computedPanelWithResource(name:string,mainState:boolean){
if(!this.$store.getters['authresource/getEnablePermissionValid']) if(!this.$store.getters['authresource/getEnablePermissionValid'])
return true; return mainState === false?false:true;
if(!this.authResourceObject[name]) if(!this.authResourceObject[name])
return true; return mainState === false?false:true;
return this.appAuthService.getResourcePermission(this.authResourceObject[name]); const resourceAuth:boolean = this.appAuthService.getResourcePermission(this.authResourceObject[name]['resourcetag']);
return !resourceAuth?false:mainState?true:false;
} }
/** /**
...@@ -184,7 +198,6 @@ import { Environment } from '@/environments/environment'; ...@@ -184,7 +198,6 @@ import { Environment } from '@/environments/environment';
/** /**
* vue 生命周期 * vue 生命周期
* *
* @returns
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public created() { public created() {
...@@ -204,15 +217,18 @@ import { Environment } from '@/environments/environment'; ...@@ -204,15 +217,18 @@ import { Environment } from '@/environments/environment';
Object.assign(this.context,{srfparentdename:'${appDataEntity.getCodeName()}',srfparentkey:this.context.${appDataEntity.getCodeName()?lower_case}}) Object.assign(this.context,{srfparentdename:'${appDataEntity.getCodeName()}',srfparentkey:this.context.${appDataEntity.getCodeName()?lower_case}})
} }
</#if> </#if>
this.computedActiviedPanel();
if (this.viewState) { if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => { this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) { if (!Object.is(tag, this.name)) {
return; return;
} }
this.action = action; if(Object.is(action,'loadmodel')){
this.viewState.next({ tag: this.activiedTabViewPanel, action: action, data: data }); this.computedAuthPanel(data);
this.$forceUpdate(); }else{
this.action = action;
this.viewState.next({ tag: this.activiedTabViewPanel, action: action, data: data });
this.$forceUpdate();
}
}); });
} }
} }
...@@ -251,6 +267,7 @@ import { Environment } from '@/environments/environment'; ...@@ -251,6 +267,7 @@ import { Environment } from '@/environments/environment';
if (!$event) { if (!$event) {
return; return;
} }
this.isInit = [];
this.isInit[$event] = true; this.isInit[$event] = true;
if (!this.viewState) { if (!this.viewState) {
return; return;
......
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<div :class="['app-list',<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()>'${singleCss.getCssName()}',</#if>this.items.length > 0 ? '' : 'app-list-empty' ]"> <div :class="['app-list',<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()>'${singleCss.getCssName()}',</#if>this.items.length > 0 ? '' : 'app-list-empty' ]">
<div v-if="items.length > 0"> <div v-if="items.length > 0">
...@@ -37,7 +40,7 @@ ...@@ -37,7 +40,7 @@
</div> </div>
</div> </div>
<div v-else style="text-align: center;"> <div v-else style="text-align: center;">
{{ $t('app.commonWords.noData') }} {{ $t('<#if langbase??>${langbase}.nodata</#if>') }}
</div> </div>
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
...@@ -48,7 +51,7 @@ ...@@ -48,7 +51,7 @@
</template> </template>
</div> </div>
<div v-else> <div v-else>
{{ $t('app.commonWords.noData') }} {{ $t('<#if langbase??>${langbase}.nodata</#if>') }}
</div> </div>
<el-backtop target=".content-container .app-list"></el-backtop> <el-backtop target=".content-container .app-list"></el-backtop>
</div> </div>
...@@ -405,6 +408,7 @@ import CodeListService from "@/codelist/codelist-service"; ...@@ -405,6 +408,7 @@ import CodeListService from "@/codelist/codelist-service";
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public afterMounted () { public afterMounted () {
const loadMoreCallBack:any = this.throttle(this.loadMore,3000);
this.$el.addEventListener('scroll', ()=> { this.$el.addEventListener('scroll', ()=> {
if(this.$el.scrollHeight > this.$el.clientHeight) { if(this.$el.scrollHeight > this.$el.clientHeight) {
this.isScrollBar = true; this.isScrollBar = true;
...@@ -412,7 +416,7 @@ import CodeListService from "@/codelist/codelist-service"; ...@@ -412,7 +416,7 @@ import CodeListService from "@/codelist/codelist-service";
this.isScrollBar = false; this.isScrollBar = false;
} }
if( this.$el.scrollTop + this.$el.clientHeight >= this.$el.scrollHeight) { if( this.$el.scrollTop + this.$el.clientHeight >= this.$el.scrollHeight) {
this.loadMore(); loadMoreCallBack();
} }
}) })
} }
...@@ -437,8 +441,13 @@ import CodeListService from "@/codelist/codelist-service"; ...@@ -437,8 +441,13 @@ import CodeListService from "@/codelist/codelist-service";
if (!Object.is(this.name, tag)) { if (!Object.is(this.name, tag)) {
return; return;
} }
if (Object.is(action,'load') || Object.is(action,'refresh')) { if (Object.is(action,'load')) {
this.refresh(data) this.curPage = 1;
this.items = [];
this.load(data);
}
if (Object.is(action,'refresh')) {
this.refresh(data);
} }
}); });
} }
...@@ -486,8 +495,7 @@ import CodeListService from "@/codelist/codelist-service"; ...@@ -486,8 +495,7 @@ import CodeListService from "@/codelist/codelist-service";
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public loadMore(){ public loadMore(){
if(this.totalRecord>this.items.length) if(this.totalRecord>this.items.length){
{
this.curPage = ++this.curPage; this.curPage = ++this.curPage;
this.isAddBehind = true; this.isAddBehind = true;
this.load({}); this.load({});
...@@ -501,7 +509,7 @@ import CodeListService from "@/codelist/codelist-service"; ...@@ -501,7 +509,7 @@ import CodeListService from "@/codelist/codelist-service";
* @memberof Main * @memberof Main
*/ */
public refresh(args?: any) { public refresh(args?: any) {
this.curPage = 1; this.isAddBehind = true;
this.load(args); this.load(args);
} }
...@@ -548,13 +556,14 @@ import CodeListService from "@/codelist/codelist-service"; ...@@ -548,13 +556,14 @@ import CodeListService from "@/codelist/codelist-service";
if(!this.isAddBehind){ if(!this.isAddBehind){
this.items = []; this.items = [];
} }
if (Object.keys(data).length > 0) { if (data && data.length > 0) {
let datas = JSON.parse(JSON.stringify(data)); let datas = JSON.parse(JSON.stringify(data));
datas.map((item: any) => { datas.map((item: any) => {
Object.assign(item, { isselected: false }); Object.assign(item, { isselected: false });
}); });
this.totalRecord = response.total; this.totalRecord = response.total;
this.items.push(...datas); this.items.push(...datas);
this.items = this.arrayNonRepeatfy(this.items);
} }
this.isAddBehind = false; this.isAddBehind = false;
this.$emit('load', this.items); this.$emit('load', this.items);
...@@ -582,6 +591,44 @@ import CodeListService from "@/codelist/codelist-service"; ...@@ -582,6 +591,44 @@ import CodeListService from "@/codelist/codelist-service";
}); });
} }
/**
* 列表数据去重
*
* @param {Array<any>} [arr]
* @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public arrayNonRepeatfy(arr:Array<any>) {
let map = new Map();
let array = new Array();
for (let i = 0; i < arr.length; i++) {
map .set(arr[i].srfkey, arr[i]);
}
map.forEach((value:any, key:string, map:any) => {
array.push(value);
});
return array ;
}
/**
* 节流
*
* @param {Array<any>} [arr]
* @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public throttle(fn:any, wait:number){
let time = 0;
return () =>{
let now = Date.now()
let args = arguments;
if(now - time > wait){
fn.apply(this, args)
time = now;
}
}
}
/** /**
* 删除 * 删除
* *
......
...@@ -160,7 +160,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co ...@@ -160,7 +160,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
* @type {(string)} * @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public placeholder="<@getQuickSearchPlaceholder view />"; public placeholder="<@getQuickSearchPlaceholder ctrl />";
/** /**
* 搜索值 * 搜索值
......
...@@ -161,7 +161,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co ...@@ -161,7 +161,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
* @type {(string)} * @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public placeholder="<@getQuickSearchPlaceholder view />"; public placeholder="<@getQuickSearchPlaceholder ctrl />";
/** /**
* 搜素值 * 搜素值
......
...@@ -4,7 +4,7 @@ ${ctrl.render.code} ...@@ -4,7 +4,7 @@ ${ctrl.render.code}
<#else> <#else>
<layout class="app-wizard<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>"> <layout class="app-wizard<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>">
<#if ctrl.getPSDEWizard?? && ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardSteps?? && ctrl.getPSDEWizard().getPSDEWizardSteps()??> <#if ctrl.getPSDEWizard?? && ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardSteps?? && ctrl.getPSDEWizard().getPSDEWizardSteps()??>
<el-steps class="wizard-steps" :active="wizardForms.indexOf(activeForm)" finish-status="success"> <el-steps class="wizard-steps" :active="wizardForms.indexOf(activeForm)" finish-status="success" align-center>
<#list ctrl.getPSDEWizard().getPSDEWizardSteps() as step> <#list ctrl.getPSDEWizard().getPSDEWizardSteps() as step>
<el-step title="${step.getTitle()}"></el-step> <el-step title="${step.getTitle()}"></el-step>
</#list> </#list>
......
...@@ -2,18 +2,20 @@ ...@@ -2,18 +2,20 @@
${item.render.code} ${item.render.code}
<#else> <#else>
<app-rawitem <app-rawitem
:viewparams="viewparams"
:context="context"
contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>" contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>"
sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>" sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>"
contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>" contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>"
<#if item.getRawContent?? && item.getRawContent()??>
rawContent="${item.getRawContent()}"
</#if>
<#if item.getHtmlContent?? && item.getHtmlContent()??> <#if item.getHtmlContent?? && item.getHtmlContent()??>
htmlContent="${item.getHtmlContent()}" :htmlContent='`${item.getHtmlContent()}`'
</#if> </#if>
<#if item.getPSSysImage?? && item.getPSSysImage()??> <#if item.getPSSysImage?? && item.getPSSysImage()??>
<#assign img=item.getPSSysImage()> <#assign img=item.getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)> <#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
imageClass="${img.getCssClass()}"</#if></#if>> imageClass="${img.getCssClass()}"</#if></#if>>
<#if item.getContentType?? && item.getContentType() == 'RAW'>
${item.getRawContent()}
</#if>
</app-rawitem> </app-rawitem>
</#if> </#if>
\ No newline at end of file
...@@ -581,9 +581,17 @@ ${P.getLogicCode(singleFuncs,"LOGIC.vue").code} ...@@ -581,9 +581,17 @@ ${P.getLogicCode(singleFuncs,"LOGIC.vue").code}
item.items.map((singleItem:any) =>{ item.items.map((singleItem:any) =>{
if(!singleItem.hidden){ if(!singleItem.hidden){
item.hidden = false; item.hidden = false;
}else{
if(singleItem.items && singleItem.items.length >0){
singleItem.items.map((grandsonItem:any) =>{
if(!grandsonItem.hidden){
item.hidden = false;
}
})
}
} }
if(singleItem.items && singleItem.items.length >0){ if(item.items && item.items.length >0){
this.computeParentMenus(singleItem.items); this.computeParentMenus(item.items);
} }
}) })
} }
......
...@@ -298,7 +298,7 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -298,7 +298,7 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
*/ */
public createDefault(){ public createDefault(){
<#list ctrl.getAllPSDEFormDetails() as formdetail><#t> <#list ctrl.getAllPSDEFormDetails() as formdetail><#t>
<#if formdetail.getCreateDV?? && formdetail.getCreateDV()?? && formdetail.getCreateDV() !=""><#t> <#if (formdetail.getCreateDV?? || formdetail.getCreateDVT??) && (formdetail.getCreateDV()?? || formdetail.getCreateDVT()??) && (formdetail.getCreateDV() !="" || formdetail.getCreateDVT() != "")><#t>
if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}')) { if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}')) {
<#if !(formdetail.getCreateDVT() == '')><#t> <#if !(formdetail.getCreateDVT() == '')><#t>
<#-- 网页请求 --> <#-- 网页请求 -->
......
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<div class="app-data-chart<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>"> <div class="app-data-chart<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>">
<div v-if="isNoData" class="chart-no-data"><i class="el-icon-data-analysis"></i>{{$t('app.commonWords.noData')}}</div> <div v-show="isNoData" class="chart-no-data"><i class="el-icon-data-analysis"></i>{{$t('<#if langbase??>${langbase}.nodata</#if>')}}</div>
<div v-else class="app-charts" :id="chartId" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()};</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()}px<#else>100%</#if>;padding: 6px 0;"></div> <div v-show="!isNoData" class="app-charts" :id="chartId" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()};</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()}px<#else>100%</#if>;padding: 6px 0;"></div>
</div> </div>
</#if> </#if>
</template> </template>
...@@ -297,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char ...@@ -297,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
const parentdata: any = {}; const parentdata: any = {};
this.$emit('beforeload', parentdata); this.$emit('beforeload', parentdata);
Object.assign(arg, parentdata); Object.assign(arg, parentdata);
Object.assign(arg,{viewparams:this.viewparams,page:0,size:1000}); let tempViewParams:any = parentdata.viewparams?parentdata.viewparams:{};
Object.assign(tempViewParams,JSON.parse(JSON.stringify(this.viewparams)));
Object.assign(arg,{viewparams:tempViewParams});
Object.assign(arg,{page:0,size:1000});
<#if ctrl.getPSDEDataSet()??> <#if ctrl.getPSDEDataSet()??>
<#assign appDataSet = ctrl.getPSDEDataSet() /> <#assign appDataSet = ctrl.getPSDEDataSet() />
<#if appDataSet.getMajorSortDir()?? && appDataSet.getMajorSortPSDEField()??> <#if appDataSet.getMajorSortDir()?? && appDataSet.getMajorSortPSDEField()??>
......
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<div class="app-data-chart<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>"> <div class="app-data-chart<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>">
<div v-if="isNoData" class="chart-no-data"><i class="el-icon-data-analysis"></i>{{$t('app.commonWords.noData')}}</div> <div v-show="isNoData" class="chart-no-data"><i class="el-icon-data-analysis"></i>{{$t('<#if langbase??>${langbase}.nodata</#if>')}}</div>
<div v-else class="app-charts" :id="chartId" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()};</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()}px<#else>100%</#if>;padding: 6px 0;"></div> <div v-show="!isNoData" class="app-charts" :id="chartId" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()};</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()}px<#else>100%</#if>;padding: 6px 0;"></div>
</div> </div>
</#if> </#if>
</template> </template>
...@@ -297,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char ...@@ -297,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
const parentdata: any = {}; const parentdata: any = {};
this.$emit('beforeload', parentdata); this.$emit('beforeload', parentdata);
Object.assign(arg, parentdata); Object.assign(arg, parentdata);
Object.assign(arg,{viewparams:this.viewparams,page:0,size:1000}); let tempViewParams:any = parentdata.viewparams?parentdata.viewparams:{};
Object.assign(tempViewParams,JSON.parse(JSON.stringify(this.viewparams)));
Object.assign(arg,{viewparams:tempViewParams});
Object.assign(arg,{page:0,size:1000});
<#if ctrl.getPSDEDataSet()??> <#if ctrl.getPSDEDataSet()??>
<#assign appDataSet = ctrl.getPSDEDataSet() /> <#assign appDataSet = ctrl.getPSDEDataSet() />
<#if appDataSet.getMajorSortDir()?? && appDataSet.getMajorSortPSDEField()??> <#if appDataSet.getMajorSortDir()?? && appDataSet.getMajorSortPSDEField()??>
......
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<#if ctrl.render??><#t> <#if ctrl.render??><#t>
${ctrl.render.code} ${ctrl.render.code}
...@@ -85,13 +88,13 @@ ...@@ -85,13 +88,13 @@
</a> </a>
</div> </div>
<div v-else style="text-align: center;"> <div v-else style="text-align: center;">
{{ $t('app.commonWords.noData') }} {{ $t('<#if langbase??>${langbase}.nodata</#if>') }}
</div> </div>
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
</#if> </#if>
</row> </row>
<div v-else class="app-data-empty">{{ $t('app.commonWords.noData') }}</div> <div v-else class="app-data-empty">{{ $t('<#if langbase??>${langbase}.nodata</#if>') }}</div>
<el-backtop target=".content-container .app-data-view"></el-backtop> <el-backtop target=".content-container .app-data-view"></el-backtop>
</div> </div>
</#if> </#if>
......
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
* @type {(string)} * @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public placeholder="<@getQuickSearchPlaceholder view />"; public placeholder="<@getQuickSearchPlaceholder ctrl />";
/** /**
* 搜素值 * 搜素值
......
<#ibizinclude> <#ibizinclude>
../../@MACRO/LANG_FUN.ftl ../../@MACRO/LANG_FUN.ftl
</#ibizinclude> </#ibizinclude>
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
...@@ -24,36 +27,42 @@ ${ctrl.render.code} ...@@ -24,36 +27,42 @@ ${ctrl.render.code}
</#if> </#if>
<context-menu-container> <context-menu-container>
<#if ctrl.getCalendarStyle?? && ctrl.getCalendarStyle() == 'TIMELINE'> <#if ctrl.getCalendarStyle?? && ctrl.getCalendarStyle() == 'TIMELINE'>
<el-timeline> <template v-if="events.length >0">
<el-timeline-item <el-timeline>
v-for="(item, index) in events" <el-timeline-item
:key="item.title+index" v-for="(item, index) in events"
:color="item.color" :key="item.title+index"
:timestamp="item.start" :color="item.color"
placement="top"> :timestamp="item.start"
<context-menu :contextMenuStyle="{width: '100%'}" :data="item" :renderContent="renderContextMenu"> placement="top">
<el-card @click.native="onEventClick(item,true,$event)" :class="item.className"> <context-menu :contextMenuStyle="{width: '100%'}" :data="item" :renderContent="renderContextMenu">
<#if ctrl.getPSSysCalendarItems()?? > <el-card @click.native="onEventClick(item,true,$event)" :class="item.className">
<#list ctrl.getPSSysCalendarItems() as calendarItem> <#if ctrl.getPSSysCalendarItems()?? >
<div v<#if calendarItem_index != 0>-else</#if>-if="<#if calendarItem.getPSLayoutPanel()??>true<#else>false</#if> && item.itemType == '${calendarItem.getItemType()}'"> <#list ctrl.getPSSysCalendarItems() as calendarItem>
<#if calendarItem.getPSLayoutPanel()??> <div v<#if calendarItem_index != 0>-else</#if>-if="<#if calendarItem.getPSLayoutPanel()??>true<#else>false</#if> && item.itemType == '${calendarItem.getItemType()}'">
<#assign panel = calendarItem.getPSLayoutPanel()> <#if calendarItem.getPSLayoutPanel()??>
<@ibizindent blank=18> <#assign panel = calendarItem.getPSLayoutPanel()>
${P.getCtrlCode(panel, 'CONTROL.html').code} <@ibizindent blank=18>
</@ibizindent> ${P.getCtrlCode(panel, 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
</#list>
<div v-else>
<h4>{{item.title}}</h4>
<p>{{$t('app.calendar.from')}} {{item.start}} {{$t('app.calendar.to')}} {{item.end}}</p>
</div>
</#if> </#if>
</div> </el-card>
</#list> </context-menu>
<div v-else> </el-timeline-item>
<h4>{{item.title}}</h4> </el-timeline>
<p>{{$t('app.calendar.from')}} {{item.start}} {{$t('app.calendar.to')}} {{item.end}}</p> </template>
</div> <template v-else>
</#if> <span class="app-data-empty">{{ $t('<#if langbase??>${langbase}.nodata</#if>') }}</span>
</el-card> </template>
</context-menu>
</el-timeline-item>
</el-timeline>
<#else> <#else>
<template v-if="events.length >0">
<div class="event-legends"> <div class="event-legends">
<#if ctrl.getPSSysCalendarItems()??> <#if ctrl.getPSSysCalendarItems()??>
<#list ctrl.getPSSysCalendarItems() as calendarItem> <#list ctrl.getPSSysCalendarItems() as calendarItem>
...@@ -86,6 +95,10 @@ ${ctrl.render.code} ...@@ -86,6 +95,10 @@ ${ctrl.render.code}
<modal v-model="modalVisible" width="250px" :title="$t('app.calendar.dateSelectModalTitle')" class-name='date-select-modal' @on-ok="gotoDate"> <modal v-model="modalVisible" width="250px" :title="$t('app.calendar.dateSelectModalTitle')" class-name='date-select-modal' @on-ok="gotoDate">
<el-date-picker style="width: 200px;" v-model="selectedGotoDate" type="date"></el-date-picker> <el-date-picker style="width: 200px;" v-model="selectedGotoDate" type="date"></el-date-picker>
</modal> </modal>
</template>
<template v-else>
<span class="app-data-empty">{{ $t('<#if langbase??>${langbase}.nodata</#if>') }}</span>
</template>
</#if> </#if>
</context-menu-container> </context-menu-container>
</div> </div>
......
...@@ -12,6 +12,12 @@ ...@@ -12,6 +12,12 @@
.el-timeline{ .el-timeline{
padding-left: 2px; padding-left: 2px;
} }
.app-data-empty{
margin: 0 auto;
display: flex;
align-items: center;
justify-content: center;
}
.event-legends{ .event-legends{
width: 100%; width: 100%;
text-align: center; text-align: center;
......
...@@ -21,6 +21,9 @@ ...@@ -21,6 +21,9 @@
:highlight-current-row="isSingleSelect" :highlight-current-row="isSingleSelect"
@current-change="select" @current-change="select"
> >
<template slot="empty">
{{$t('<#if langbase??>${langbase}.nodata</#if>')}}
</template>
<#if ctrl.getPSDETreeColumns()??> <#if ctrl.getPSDETreeColumns()??>
<#list ctrl.getPSDETreeColumns() as column> <#list ctrl.getPSDETreeColumns() as column>
<el-table-column show-overflow-tooltip prop="${column.getName()?lower_case}" label="${column.getCaption()}"<#if column.getWidthUnit()!='STAR'> :width="${column.getWidth()?c}" <#else> :min-width="${column.getWidth()?c}" </#if> :align="'${column.getAlign()?lower_case}'"> <el-table-column show-overflow-tooltip prop="${column.getName()?lower_case}" label="${column.getCaption()}"<#if column.getWidthUnit()!='STAR'> :width="${column.getWidth()?c}" <#else> :min-width="${column.getWidth()?c}" </#if> :align="'${column.getAlign()?lower_case}'">
...@@ -282,7 +285,23 @@ ...@@ -282,7 +285,23 @@
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public created() { public created() {
this.load(); this.afterCreated();
}
/**
* 执行created后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterCreated() {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) {
return;
}
if (Object.is('load', action)) {
this.load(data);
}
});
} }
/** /**
...@@ -331,7 +350,7 @@ ...@@ -331,7 +350,7 @@
* 打开编辑数据 * 打开编辑数据
* *
* @returns * @returns
* @memberof TreeTableBase * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public opendata(args: any) { public opendata(args: any) {
if(this.selections.length === 0) { if(this.selections.length === 0) {
...@@ -352,6 +371,27 @@ ...@@ -352,6 +371,27 @@
</#if> </#if>
} }
/**
* vue 生命周期
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public destroyed() {
this.afterDestroy();
}
/**
* 执行destroyed后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterDestroy() {
if (this.viewStateEvent) {
this.viewStateEvent.unsubscribe();
}
}
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
......
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
...@@ -24,6 +27,7 @@ ...@@ -24,6 +27,7 @@
@check="onCheck" @check="onCheck"
@current-change="selectionChange" @current-change="selectionChange"
:filter-node-method="filterNode" :filter-node-method="filterNode"
:empty-text="$t('<#if langbase??>${langbase}.nodata</#if>')"
> >
<template slot-scope="{ node, data }"> <template slot-scope="{ node, data }">
<context-menu :ref='data.id' :isBlocked="true" :contextMenuStyle="{width: '100%'}" :data="node" :renderContent="renderContextMenu" @showContext="showContext(data,$event)"> <context-menu :ref='data.id' :isBlocked="true" :contextMenuStyle="{width: '100%'}" :data="node" :renderContent="renderContextMenu" @showContext="showContext(data,$event)">
...@@ -270,7 +274,7 @@ import UIService from '@/uiservice/ui-service'; ...@@ -270,7 +274,7 @@ import UIService from '@/uiservice/ui-service';
<#if childCtrl.getControlType() == "CONTEXTMENU"> <#if childCtrl.getControlType() == "CONTEXTMENU">
<#if childCtrl.getPSDEToolbarItems()??> <#if childCtrl.getPSDEToolbarItems()??>
<#list childCtrl.getPSDEToolbarItems() as item> <#list childCtrl.getPSDEToolbarItems() as item>
${childCtrl.getOwner().getNodeType()}_${item.name}: {name:'${item.name}',nodeOwner:'${childCtrl.getOwner().getNodeType()}',<#if item.getPSUIAction()??><#assign uiaction=item.getPSUIAction()>type: '${uiaction.getUIActionType()}', tag: '${uiaction.getUIActionTag()}'<#if (uiaction.getActionTarget()!="")>, actiontarget: '${uiaction.getActionTarget()}'</#if><#if uiaction.getNoPrivDisplayMode(view)??>, noprivdisplaymode:${uiaction.getNoPrivDisplayMode(view)}</#if><#if uiaction.getDataAccessAction()??>, dataaccaction:'${uiaction.getDataAccessAction()}'</#if>, visabled: true, disabled: false</#if>}, ${childCtrl.getOwner().getNodeType()}_${item.name}: {name:'${item.name}',nodeOwner:'${childCtrl.getOwner().getNodeType()}',<#if item.getPSUIAction?? && item.getPSUIAction()??><#assign uiaction=item.getPSUIAction()>type: '${uiaction.getUIActionType()}', tag: '${uiaction.getUIActionTag()}'<#if (uiaction.getActionTarget()!="")>, actiontarget: '${uiaction.getActionTarget()}'</#if><#if uiaction.getNoPrivDisplayMode(view)??>, noprivdisplaymode:${uiaction.getNoPrivDisplayMode(view)}</#if><#if uiaction.getDataAccessAction()??>, dataaccaction:'${uiaction.getDataAccessAction()}'</#if>, visabled: true, disabled: false</#if>},
</#list> </#list>
</#if> </#if>
</#if> </#if>
......
...@@ -135,7 +135,7 @@ ...@@ -135,7 +135,7 @@
* @type {(string)} * @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public placeholder="<@getQuickSearchPlaceholder view />"; public placeholder="<@getQuickSearchPlaceholder ctrl />";
/** /**
* 过滤值 * 过滤值
...@@ -409,7 +409,7 @@ ...@@ -409,7 +409,7 @@
public onDrViewDatasChange($event: any): void { public onDrViewDatasChange($event: any): void {
<#if ctrl.getPSDETree()??> <#if ctrl.getPSDETree()??>
<#assign tree = ctrl.getPSDETree()/> <#assign tree = ctrl.getPSDETree()/>
this.viewState.next({ tag: '${tree.name}', action: 'refresh_current' }); this.viewState.next({ tag: '${tree.name}', action: 'refresh_parent' });
</#if> </#if>
} }
......
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
* @type {(string)} * @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public placeholder="<@getQuickSearchPlaceholder view />"; public placeholder="<@getQuickSearchPlaceholder ctrl />";
/** /**
* 过滤值 * 过滤值
......
...@@ -16,12 +16,12 @@ ...@@ -16,12 +16,12 @@
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<layout class="app-wizard<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>"> <layout class="app-state-wizard<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>">
<#if ctrl.getPSDEWizard?? && ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardSteps?? && ctrl.getPSDEWizard().getPSDEWizardSteps()??> <#if ctrl.getPSDEWizard?? && ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardSteps?? && ctrl.getPSDEWizard().getPSDEWizardSteps()??>
<div class="view-steps"> <div class="view-steps">
<div class="background-box"></div> <div class="background-box"></div>
<div class="steps_icon" @click="handleClick('PRE')"><i class="el-icon-arrow-left"></i></div> <div class="steps_icon" @click="handleClick('PRE')"><i class="el-icon-arrow-left"></i></div>
<el-steps class="wizard-steps" :active="(wizardForms.indexOf(activeForm) + 1)" finish-status="success"> <el-steps class="wizard-steps" :active="(wizardForms.indexOf(activeForm) + 1)" finish-status="success" align-center>
<#list ctrl.getPSDEWizard().getPSDEWizardSteps() as step> <#list ctrl.getPSDEWizard().getPSDEWizardSteps() as step>
<el-step :class="{'app-active-step':activeForm==='<@getStepForm ctrlmodel=ctrl step=step />'?true:false}"> <el-step :class="{'app-active-step':activeForm==='<@getStepForm ctrlmodel=ctrl step=step />'?true:false}">
<template v-slot:title> <template v-slot:title>
...@@ -37,16 +37,16 @@ ...@@ -37,16 +37,16 @@
<#if ctrl.getPSDEEditForms()??> <#if ctrl.getPSDEEditForms()??>
<#list ctrl.getPSDEEditForms() as form> <#list ctrl.getPSDEEditForms() as form>
<#assign handler = form.getPSAjaxControlHandler() /> <#assign handler = form.getPSAjaxControlHandler() />
<el-popover v-model="stepVisiable['${form.getName()}']" ref="${form.getName()}_popover" popper-class="app-wizard-popover-container" placement="bottom-<#if form_has_next>start<#else>end</#if>" trigger="click"> <el-popover v-model="stepVisiable['${form.getName()}']" ref="${form.getName()}_popover" popper-class="app-state-wizard-popover-container" placement="bottom-<#if form_has_next>start<#else>end</#if>" trigger="click">
<div class="app-wizard-container"> <div class="app-state-wizard-container">
<div class="app-wizard-header"> <div class="app-state-wizard-header">
<div class="app-wizard-header-extra"> <div class="app-state-wizard-header-extra">
<Icon type="md-open" size="18" @click="handleOPen('${form.getName()}')"/> <Icon type="md-open" size="18" @click="handleOPen('${form.getName()}')"/>
<Icon type="md-close" size="18" @click="handleClose('${form.getName()}')"/> <Icon type="md-close" size="18" @click="handleClose('${form.getName()}')"/>
</div> </div>
</div> </div>
<div class="popover-title">${form.getLogicName()}</div> <div class="popover-title">${form.getLogicName()}</div>
<div class="app-wizard-content"> <div class="app-state-wizard-content">
<view_${form.getName()} <view_${form.getName()}
:key="'${form.name}'" :key="'${form.name}'"
:viewState='wizardState' :viewState='wizardState'
...@@ -64,14 +64,14 @@ ...@@ -64,14 +64,14 @@
ref='${form.name}'> ref='${form.name}'>
</view_${form.getName()}> </view_${form.getName()}>
</div> </div>
<div class="app-wizard-footer"> <div class="app-state-wizard-footer">
<i-button v-if="isVisiable('${form.name}','PREV')" @click="onClickPrev('${form.name}')" ><Icon type="ios-arrow-back"></Icon></i-button> <i-button v-if="isVisiable('${form.name}','PREV')" @click="onClickPrev('${form.name}')" ><Icon type="ios-arrow-back"></Icon></i-button>
<i-button v-if="isVisiable('${form.name}','NEXT')" @click="onClickNext('${form.name}')" type="primary" long>{{$t('app.wizardPanel.next')}}</i-button> <i-button v-if="isVisiable('${form.name}','NEXT')" @click="onClickNext('${form.name}')" type="primary" long>{{$t('app.wizardPanel.next')}}</i-button>
<i-button v-if="isVisiable('${form.name}','FINISH')" @click="onClickFinish('${form.name}')" type="primary" long>{{$t('app.wizardPanel.complete')}}</i-button> <i-button v-if="isVisiable('${form.name}','FINISH')" @click="onClickFinish('${form.name}')" type="primary" long>{{$t('app.wizardPanel.complete')}}</i-button>
</div> </div>
</div> </div>
</el-popover> </el-popover>
<drawer class="app-wizard-drawer" :closable="false" :value="drawerOpenStatus.isOpen && drawerOpenStatus.formName == '${form.name}'" <drawer class="app-state-wizard-drawer" :closable="false" :value="drawerOpenStatus.isOpen && drawerOpenStatus.formName == '${form.name}'"
:width="600" title="${form.getLogicName()}" @on-visible-change="onVisibleChange($event)"> :width="600" title="${form.getLogicName()}" @on-visible-change="onVisibleChange($event)">
<view_${form.getName()} <view_${form.getName()}
:key="'${form.name}'" :key="'${form.name}'"
......
.app-wizard { .app-state-wizard {
background: #fff; background: #fff;
height: 100%;
.view-steps{ .view-steps{
display: flex; display: flex;
padding: 0 20px; padding: 0 20px;
...@@ -73,30 +72,30 @@ ...@@ -73,30 +72,30 @@
border-top: 2px solid rgb(225, 225, 225); border-top: 2px solid rgb(225, 225, 225);
} }
} }
.app-wizard-popover-container{ .app-state-wizard-popover-container{
.app-wizard-container{ .app-state-wizard-container{
width: 100%; width: 100%;
.popover-title{ .popover-title{
position: absolute; position: absolute;
top: 14px; top: 14px;
left: 13px; left: 13px;
} }
.app-wizard-header{ .app-state-wizard-header{
width: 100%; width: 100%;
height: 30px; height: 30px;
line-height: 22px; line-height: 22px;
padding: 2px; padding: 2px;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
margin-bottom: 10px; margin-bottom: 10px;
.app-wizard-header-extra{ .app-state-wizard-header-extra{
float: right; float: right;
} }
} }
.app-wizard-content{ .app-state-wizard-content{
width: 100%; width: 100%;
padding: 4px 0px; padding: 4px 0px;
} }
.app-wizard-footer{ .app-state-wizard-footer{
display: flex; display: flex;
} }
} }
...@@ -104,7 +103,7 @@ ...@@ -104,7 +103,7 @@
.el-popper[x-placement^=bottom] { .el-popper[x-placement^=bottom] {
margin-top: 0px; margin-top: 0px;
} }
.app-wizard-drawer{ .app-state-wizard-drawer{
.app-form { .app-form {
height: calc(100% - 51px); height: calc(100% - 51px);
} }
......
<#ibizinclude> <#ibizinclude>
../../@MACRO/LANG_FUN.ftl ../../@MACRO/LANG_FUN.ftl
</#ibizinclude> </#ibizinclude>
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<gantt-elastic :class="ganttClass<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>" :tasks="tasks" :options="getOptions(this.locale)" :dynamic-style="dynamicStyle" @taskList-item-dblclick="taskClick" @task-item-expand="taskItemExpand"> <div class="app-gantt">
<gantt-elastic v-if="tasks.length >0" :class="ganttClass<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>" :tasks="tasks" :options="getOptions(this.locale)" :dynamic-style="dynamicStyle" @taskList-item-dblclick="taskClick" @task-item-expand="taskItemExpand">
</gantt-elastic> </gantt-elastic>
<div v-else class="app-data-empty">{{$t('<#if langbase??>${langbase}.nodata</#if>')}}</div>
</div>
</#if> </#if>
</template> </template>
<#assign import_block> <#assign import_block>
...@@ -356,8 +362,16 @@ GanttElastic, ...@@ -356,8 +362,16 @@ GanttElastic,
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public created() { public created() {
this.afterCreated();
}
/**
* 执行created后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterCreated() {
this.locale = this.$i18n.locale; this.locale = this.$i18n.locale;
this.load();
if(AppCenterService && AppCenterService.getMessageCenter()){ if(AppCenterService && AppCenterService.getMessageCenter()){
this.appStateEvent = AppCenterService.getMessageCenter().subscribe(({ name, action, data }) =>{ this.appStateEvent = AppCenterService.getMessageCenter().subscribe(({ name, action, data }) =>{
if(!Object.is(name,"${ctrl.getPSAppDataEntity().getCodeName()}")){ if(!Object.is(name,"${ctrl.getPSAppDataEntity().getCodeName()}")){
...@@ -368,7 +382,15 @@ GanttElastic, ...@@ -368,7 +382,15 @@ GanttElastic,
} }
}) })
} }
} this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) {
return;
}
if (Object.is('load', action)) {
this.load(data);
}
});
}
/** /**
* 点击事件 * 点击事件
...@@ -402,6 +424,9 @@ GanttElastic, ...@@ -402,6 +424,9 @@ GanttElastic,
if(this.appStateEvent){ if(this.appStateEvent){
this.appStateEvent.unsubscribe(); this.appStateEvent.unsubscribe();
} }
if(this.viewStateEvent){
this.viewStateEvent.unsubscribe();
}
<#if destroyed_block??> <#if destroyed_block??>
${destroyed_block} ${destroyed_block}
</#if> </#if>
......
.gantt { .app-gantt{
height: 100%; height: 100%;
.gantt-elastic__main-view-container { .gantt {
flex-grow: 1; height: 100%;
.gantt-elastic__main-view-container {
flex-grow: 1;
}
}
.app-data-empty{
height: 100%;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: center;
} }
} }
<#ibizinclude> <#ibizinclude>
......
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<div class="app-data-view-group<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>"> <div class="app-data-view-group<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>">
<template v-for="(group, index) of groups"> <template v-if="items.length > 0">
<#if ctrl.groupRender??> <template v-for="(group, index) of groups">
${ctrl.groupRender.code} <#if ctrl.groupRender??>
<#else> ${ctrl.groupRender.code}
<div :key="group + index" class="dataview-group-content" style="<#if ctrl.getGroupWidth() gt 0>width: ${ctrl.getGroupWidth()?c}px;<#else>flex-grow: 1;</#if>"> <#else>
<div class="dataview-group-header<#if ctrl.getGroupPSSysCss()??> ${ctrl.getGroupPSSysCss().getCssName()}</#if>"> <div :key="group + index" class="dataview-group-content" style="<#if ctrl.getGroupWidth() gt 0>width: ${ctrl.getGroupWidth()?c}px;<#else>flex-grow: 1;</#if>">
{{ getGroupText(group.name) }} <div class="dataview-group-header<#if ctrl.getGroupPSSysCss()??> ${ctrl.getGroupPSSysCss().getCssName()}</#if>">
<#if ctrl.getGroupPSUIActionGroup()??> {{ getGroupText(group.name) }}
<Poptip trigger="hover" content="content" placement="bottom-end" style="float: right;"> <#if ctrl.getGroupPSUIActionGroup()??>
<Icon type="md-more" /> <Poptip trigger="hover" content="content" placement="bottom-end" style="float: right;">
<div slot="content" class="group-action"> <Icon type="md-more" />
<#if ctrl.getGroupPSUIActionGroup().getPSUIActions()??> <div slot="content" class="group-action">
<#list ctrl.getGroupPSUIActionGroup().getPSUIActions() as action> <#if ctrl.getGroupPSUIActionGroup().getPSUIActions()??>
<div class="group-action-item"> <#list ctrl.getGroupPSUIActionGroup().getPSUIActions() as action>
<i-button long @click="uiAction('${action.getCodeName()}', $event)"> <div class="group-action-item">
<#if action.getPSSysImage()??> <i-button long @click="uiAction('${action.getCodeName()}', $event)">
<#if action.getPSSysImage().getImagePath()?length gt 0> <#if action.getPSSysImage()??>
<img src="${action.getPSSysImage().getImagePath()}"/> <#if action.getPSSysImage().getImagePath()?length gt 0>
<#else> <img src="${action.getPSSysImage().getImagePath()}"/>
<i class="${action.getPSSysImage().getCssClass()}"></i> <#else>
</#if> <i class="${action.getPSSysImage().getCssClass()}"></i>
</#if>
</#if>
${action.getCaption()}
</i-button>
</div>
</#list>
</#if> </#if>
${action.getCaption()}
</i-button>
</div> </div>
</#list> </Poptip>
</#if>
</div>
<draggable :list="group.items" group="${ctrl.name}" class="dataview-group-items" @change="onDragChange($event, group.name)">
<div v-for="(item, i) in group.items" :key="i" :class="{'dataview-group-item': true, 'is-select': item.isselected}" @click="handleClick(item)" @dblclick="handleDblClick(item)">
<#if ctrl.getItemPSLayoutPanel()??>
<#assign panel = ctrl.getItemPSLayoutPanel()>
<layout_${panel.getName()} name='${panel.name}' :inputData="item"></layout_${panel.getName()}>
<#elseif ctrl.itemRender??>
${ctrl.itemRender.code}
<#else>
{{ item.srfmajortext }}
</#if> </#if>
</div> </div>
</Poptip> </draggable>
</#if>
</div> </div>
<draggable :list="group.items" group="${ctrl.name}" class="dataview-group-items" @change="onDragChange($event, group.name)">
<div v-for="(item, i) in group.items" :key="i" :class="{'dataview-group-item': true, 'is-select': item.isselected}" @click="handleClick(item)" @dblclick="handleDblClick(item)">
<#if ctrl.getItemPSLayoutPanel()??>
<#assign panel = ctrl.getItemPSLayoutPanel()>
<layout_${panel.getName()} name='${panel.name}' :inputData="item"></layout_${panel.getName()}>
<#elseif ctrl.itemRender??>
${ctrl.itemRender.code}
<#else>
{{ item.srfmajortext }}
</#if>
</div>
</draggable>
</div>
</#if>
</template>
<#if ctrl.getGroupQuickPSDEToolbar()??>
<div class="quick-action">
<#if ctrl.getGroupQuickPSDEToolbar().getPSDEToolbarItems()??>
<#list ctrl.getGroupQuickPSDEToolbar().getPSDEToolbarItems() as toolbarItem>
<div class="quick-action-item" title="${toolbarItem.getCaption()}" @click="${ctrl.getGroupQuickPSDEToolbar().getName()}_click({tag: '${toolbarItem.getName()}'}, $event)">
<#if toolbarItem.getPSSysImage()??>
<#if toolbarItem.getPSSysImage().getImagePath()?length gt 0>
<img src="${toolbarItem.getPSSysImage().getImagePath()}"/>
<#else>
<i class="${toolbarItem.getPSSysImage().getCssClass()}"></i>
</#if> </#if>
<#else> </template>
<i class="el-icon-menu"></i> <#if ctrl.getGroupQuickPSDEToolbar()??>
<div class="quick-action">
<#if ctrl.getGroupQuickPSDEToolbar().getPSDEToolbarItems()??>
<#list ctrl.getGroupQuickPSDEToolbar().getPSDEToolbarItems() as toolbarItem>
<div class="quick-action-item" title="${toolbarItem.getCaption()}" @click="${ctrl.getGroupQuickPSDEToolbar().getName()}_click({tag: '${toolbarItem.getName()}'}, $event)">
<#if toolbarItem.getPSSysImage()??>
<#if toolbarItem.getPSSysImage().getImagePath()?length gt 0>
<img src="${toolbarItem.getPSSysImage().getImagePath()}"/>
<#else>
<i class="${toolbarItem.getPSSysImage().getCssClass()}"></i>
</#if>
<#else>
<i class="el-icon-menu"></i>
</#if>
</div>
</#list>
</#if> </#if>
</div> </div>
</#list>
</#if>
</div>
</#if> </#if>
</template>
<template v-else>
<span class="app-data-empty">{{ $t('<#if langbase??>${langbase}.nodata</#if>') }}</span>
</template>
</div> </div>
</#if> </#if>
</template> </template>
......
...@@ -52,6 +52,12 @@ ...@@ -52,6 +52,12 @@
border-top-width: 1px; border-top-width: 1px;
} }
} }
.app-data-empty{
margin: 0 auto;
display: flex;
align-items: center;
justify-content: center;
}
} }
<#ibizinclude> <#ibizinclude>
../@MACRO/CSS/DEFAULT.less.ftl ../@MACRO/CSS/DEFAULT.less.ftl
......
...@@ -8,7 +8,19 @@ ${item.render.code} ...@@ -8,7 +8,19 @@ ${item.render.code}
<@badge item> <@badge item>
<i-button type="primary" :disabled="detailsModel.${item.getName()}.disabled" @click="${item.getName()}_click($event)" class="app-form-button<#if item.getPSSysCss?? && item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" <i-button type="primary" :disabled="detailsModel.${item.getName()}.disabled" @click="${item.getName()}_click($event)" class="app-form-button<#if item.getPSSysCss?? && item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>"
style="<#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if><#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if>"> style="<#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if><#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if>">
<#if item.getPSSysImage()??><#assign img=item.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)><i class="${img.getCssClass()}" style="margin-right: 2px;"></i></#if></#if> <#if item.getPSSysImage()??>
<#assign img=item.getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
<i class="${img.getCssClass()}" style="margin-right: 2px;"></i>
</#if>
<#else>
<#if item.getPSUIAction?? && item.getPSUIAction()?? && item.getPSUIAction().getPSSysImage?? && item.getPSUIAction().getPSSysImage()??>
<#assign img=item.getPSUIAction().getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
<menu-icon :item="{iconcls: '${img.getCssClass()}'}" />
</#if>
</#if>
</#if>
<#if item.isShowCaption()><span ><#if item.getCaptionItemName()?? && item.getCaptionItemName()?length gt 0>{{data.${item.getCaptionItemName()}}}<#else><#if langbase??>{{$t('${langbase}.details.${item.name}')}}<#else>${item.getCaption()}</#if></#if></span></#if> <#if item.isShowCaption()><span ><#if item.getCaptionItemName()?? && item.getCaptionItemName()?length gt 0>{{data.${item.getCaptionItemName()}}}<#else><#if langbase??>{{$t('${langbase}.details.${item.name}')}}<#else>${item.getCaption()}</#if></#if></span></#if>
</i-button> </i-button>
</@badge> </@badge>
......
...@@ -2,18 +2,20 @@ ...@@ -2,18 +2,20 @@
${item.render.code} ${item.render.code}
<#else> <#else>
<app-rawitem <app-rawitem
:viewparams="viewparams"
:context="context"
contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>" contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>"
sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>" sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>"
contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>" contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>"
<#if item.getRawContent?? && item.getRawContent()??>
rawContent="${item.getRawContent()}"
</#if>
<#if item.getHtmlContent?? && item.getHtmlContent()??> <#if item.getHtmlContent?? && item.getHtmlContent()??>
htmlContent="${item.getHtmlContent()}" :htmlContent='`${item.getHtmlContent()}`'
</#if> </#if>
<#if item.getPSSysImage?? && item.getPSSysImage()??> <#if item.getPSSysImage?? && item.getPSSysImage()??>
<#assign img=item.getPSSysImage()> <#assign img=item.getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)> <#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
imageClass="${img.getCssClass()}"</#if></#if>> imageClass="${img.getCssClass()}"</#if></#if>>
<#if item.getContentType?? && item.getContentType() == 'RAW'>
${item.getRawContent()}
</#if>
</app-rawitem> </app-rawitem>
</#if> </#if>
\ No newline at end of file
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl ../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude> </#ibizinclude>
<i-form :model="this.data" class='app-form<#if ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if><#if ctrl.isInfoFormMode?? && ctrl.isInfoFormMode()> info-form-mode</#if>' ref='${ctrl.name}' id='${ctrl.getPSAppDataEntity().getCodeName()?lower_case}_${ctrl.getCodeName()?lower_case}' style="<#if ctrl.getFormWidth() gt 1>width: ${ctrl.getFormWidth()?c}px;</#if>"> <i-form :model="this.data" class='app-form<#if ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if><#if ctrl.isInfoFormMode?? && ctrl.isInfoFormMode()> info-form-mode</#if>' ref='${ctrl.name}' id='${ctrl.getPSAppDataEntity().getCodeName()?lower_case}_${ctrl.getCodeName()?lower_case}' style="<#if ctrl.getFormWidth() gt 1>width: ${ctrl.getFormWidth()?c}px;</#if>" @on-validate="formItemValidate">
<input style="display:none;" /> <input style="display:none;" />
<row > <row >
<#if ctrl.isNoTabHeader()> <#if ctrl.isNoTabHeader()>
......
...@@ -31,6 +31,15 @@ import { Environment } from '@/environments/environment'; ...@@ -31,6 +31,15 @@ import { Environment } from '@/environments/environment';
@Inject({from:'navModel',default: 'tab'}) @Inject({from:'navModel',default: 'tab'})
public navModel!:string; public navModel!:string;
/**
* 主键表单项名称
*
* @protected
* @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public formKeyItemName: string = '<#list ctrl.getPSDEFormItems() as formitem><#if formitem.getPSAppDEField?? && formitem.getPSAppDEField()??><#if !formitem.isHidden() && formitem.getPSAppDEField().isKeyField()>${formitem.getName()}</#if></#if></#list>';
/** /**
* 界面UI服务对象 * 界面UI服务对象
* *
...@@ -205,6 +214,35 @@ import { Environment } from '@/environments/environment'; ...@@ -205,6 +214,35 @@ import { Environment } from '@/environments/environment';
*/ */
public mixinData:any = {}; public mixinData:any = {};
/**
* 表单项校验错误提示信息
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public errorMessages: Array<any> = [];
/**
* 设置表单项错误提示信息
*
* @param {*} prop 表单项字段名
* @param {*} status 校验状态
* @param {*} error 错误信息
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public formItemValidate(prop: string,status: boolean, error: string){
error = error ? error : '';
if(this.errorMessages && this.errorMessages.length > 0){
const index = this.errorMessages.findIndex((errorMessage:any) => Object.is(errorMessage.prop,prop));
if(index != -1){
this.errorMessages[index].error = error;
}else{
this.errorMessages.push({prop: prop,error: error});
}
}else{
this.errorMessages.push({prop: prop,error: error});
}
}
/** /**
* 表单数据对象 * 表单数据对象
* *
...@@ -213,7 +251,7 @@ import { Environment } from '@/environments/environment'; ...@@ -213,7 +251,7 @@ import { Environment } from '@/environments/environment';
*/ */
public data: any = { public data: any = {
<#list ctrl.getAllPSDEFormDetails() as item> <#list ctrl.getAllPSDEFormDetails() as item>
<#if item.getDetailType()?? && (item.getDetailType() == "FORMITEM" || item.getDetailType() == "FORMPART")> <#if item.getDetailType?? && item.getDetailType()?? && (item.getDetailType() == "FORMITEM" || item.getDetailType() == "FORMPART")>
${item.getName()}: null, ${item.getName()}: null,
</#if> </#if>
</#list> </#list>
...@@ -252,6 +290,14 @@ import { Environment } from '@/environments/environment'; ...@@ -252,6 +290,14 @@ import { Environment } from '@/environments/environment';
*/ */
public saveState:any ; public saveState:any ;
/**
* 主信息属性映射表单项名称
*
* @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public majorMessageField: string = "<#list ctrl.getAllPSDEFormDetails() as item><#if item.getDetailType?? && item.getDetailType()?? && (item.getDetailType() == "FORMITEM") && !item.isHidden()><#if item.getPSAppDEField?? && item.getPSAppDEField()?? && item.getPSAppDEField().isMajorField()>${item.getName()}</#if></#if></#list>";
/** /**
* 值规则 * 值规则
* *
...@@ -261,7 +307,7 @@ import { Environment } from '@/environments/environment'; ...@@ -261,7 +307,7 @@ import { Environment } from '@/environments/environment';
public rules() :any { public rules() :any {
return { return {
<#list ctrl.getAllPSDEFormDetails() as formdetail> <#list ctrl.getAllPSDEFormDetails() as formdetail>
<#if formdetail.getDetailType?? && formdetail.getDetailType() == 'FORMITEM' && formdetail.getEditorType() != "HIDDEN"> <#if formdetail.getDetailType?? && formdetail.getDetailType() == 'FORMITEM' && formdetail.getEditorType() != "HIDDEN" && formdetail.isCompositeItem?? && !formdetail.isCompositeItem()>
${formdetail.getName()}: [ ${formdetail.getName()}: [
{ 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: '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' }, { 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' },
...@@ -278,7 +324,7 @@ import { Environment } from '@/environments/environment'; ...@@ -278,7 +324,7 @@ import { Environment } from '@/environments/environment';
</#if> </#if>
<#if ctrl.getPSDEFormItemVRs()??> <#if ctrl.getPSDEFormItemVRs()??>
<#list ctrl.getPSDEFormItemVRs() as fideValueRule> <#list ctrl.getPSDEFormItemVRs() as fideValueRule>
<#if fideValueRule.getPSDEFormItemName() == formdetail.getName()> <#if fideValueRule.getPSDEFormItemName()?lower_case == formdetail.getName()?lower_case >
<#-- 系统值规则 --> <#-- 系统值规则 -->
<#if fideValueRule.getPSSysValueRule()??> <#if fideValueRule.getPSSysValueRule()??>
<#assign valueRule = fideValueRule.getPSSysValueRule()/> <#assign valueRule = fideValueRule.getPSSysValueRule()/>
...@@ -293,14 +339,47 @@ import { Environment } from '@/environments/environment'; ...@@ -293,14 +339,47 @@ import { Environment } from '@/environments/environment';
<#-- 属性值规则 --> <#-- 属性值规则 -->
<#if fideValueRule.getCheckMode?? && fideValueRule.getCheckMode()?? && fideValueRule.getCheckMode() != 2 && fideValueRule.getPSDEFValueRule?? && fideValueRule.getPSDEFValueRule()??> <#if fideValueRule.getCheckMode?? && fideValueRule.getCheckMode()?? && fideValueRule.getCheckMode() != 2 && fideValueRule.getPSDEFValueRule?? && fideValueRule.getPSDEFValueRule()??>
<#assign deRule = fideValueRule.getPSDEFValueRule()/> <#assign deRule = fideValueRule.getPSDEFValueRule()/>
{validator:(rule:any, value:any)=>{return this.verifyDeRules("${fideValueRule.getPSDEFormItemName()}").isPast},message: this.verifyDeRules("${fideValueRule.getPSDEFormItemName()}").infoMessage, trigger: 'change' }, {validator:(rule:any, value:any)=>{return this.verifyDeRules("${fideValueRule.getPSDEFormItemName()?lower_case}").isPast},message: this.verifyDeRules("${fideValueRule.getPSDEFormItemName()?lower_case}").infoMessage, trigger: 'change' },
{validator:(rule:any, value:any)=>{return this.verifyDeRules("${fideValueRule.getPSDEFormItemName()}").isPast},message: this.verifyDeRules("${fideValueRule.getPSDEFormItemName()}").infoMessage, trigger: 'blur' }, {validator:(rule:any, value:any)=>{return this.verifyDeRules("${fideValueRule.getPSDEFormItemName()?lower_case}").isPast},message: this.verifyDeRules("${fideValueRule.getPSDEFormItemName()?lower_case}").infoMessage, trigger: 'blur' },
</#if> </#if>
</#if> </#if>
</#list> </#list>
</#if> </#if>
], ],
</#if> </#if>
<#-- 复合表单项 atart -->
<#if formdetail.isCompositeItem?? && formdetail.isCompositeItem() && formdetail.getEditorType() != "USERCONTROL">
${formdetail.getName()}: [
<#if formdetail.getPSDEFormItems?? && formdetail.getPSDEFormItems()??>
<#list formdetail.getPSDEFormItems() as childFormItem>
<#if ctrl.getPSDEFormItemVRs()??>
<#list ctrl.getPSDEFormItemVRs() as fideValueRule>
<#if childFormItem.getName()?lower_case == fideValueRule.getPSDEFormItemName()?lower_case>
<#-- 系统值规则 -->
<#if fideValueRule.getPSSysValueRule()??>
<#assign valueRule = fideValueRule.getPSSysValueRule()/>
<#if valueRule.getRuleType?? && valueRule.getRuleType()??>
<#if valueRule.getRuleType() == "REG">
{ <#if valueRule.getRegExCode?? && valueRule.getRegExCode()??>pattern: /${valueRule.getRegExCode()}/</#if><#if valueRule.getRuleInfo?? && valueRule.getRuleInfo()??>, message: '${valueRule.getRuleInfo()}'</#if>, trigger: 'change' },
<#elseif valueRule.getRuleType() == "SCRIPT">
{ <#if valueRule.getScriptCode?? && valueRule.getScriptCode()??>validator: (rule:any, value:any, callback:any) => { ${valueRule.getScriptCode()} }</#if><#if valueRule.getRuleInfo?? && valueRule.getRuleInfo()??>, message: '${valueRule.getRuleInfo()}'</#if>, trigger: 'change' },
</#if>
</#if>
</#if>
<#-- 属性值规则 -->
<#if fideValueRule.getCheckMode?? && fideValueRule.getCheckMode()?? && fideValueRule.getCheckMode() != 2 && fideValueRule.getPSDEFValueRule?? && fideValueRule.getPSDEFValueRule()??>
<#assign deRule = fideValueRule.getPSDEFValueRule()/>
{validator:(rule:any, value:any)=>{return this.verifyDeRules("${fideValueRule.getPSDEFormItemName()?lower_case}").isPast},message: this.verifyDeRules("${fideValueRule.getPSDEFormItemName()?lower_case}").infoMessage, trigger: 'change' },
{validator:(rule:any, value:any)=>{return this.verifyDeRules("${fideValueRule.getPSDEFormItemName()?lower_case}").isPast},message: this.verifyDeRules("${fideValueRule.getPSDEFormItemName()?lower_case}").infoMessage, trigger: 'blur' },
</#if>
</#if>
</#list>
</#if>
</#list>
</#if>
],
</#if>
<#-- 复合表单项 end -->
</#list> </#list>
} }
} }
...@@ -317,7 +396,7 @@ import { Environment } from '@/environments/environment'; ...@@ -317,7 +396,7 @@ import { Environment } from '@/environments/environment';
<#if fideValueRule.getCheckMode?? && fideValueRule.getCheckMode()?? && fideValueRule.getCheckMode() != 2 && fideValueRule.getPSDEFValueRule?? && fideValueRule.getPSDEFValueRule()??> <#if fideValueRule.getCheckMode?? && fideValueRule.getCheckMode()?? && fideValueRule.getCheckMode() != 2 && fideValueRule.getPSDEFValueRule?? && fideValueRule.getPSDEFValueRule()??>
<#assign deRule = fideValueRule.getPSDEFValueRule()/> <#assign deRule = fideValueRule.getPSDEFValueRule()/>
<#if fideValueRule.getPSDEFormItemName?? && fideValueRule.getPSDEFormItemName()??> <#if fideValueRule.getPSDEFormItemName?? && fideValueRule.getPSDEFormItemName()??>
${fideValueRule.getPSDEFormItemName()}:[ ${fideValueRule.getPSDEFormItemName()?lower_case}:[
<#if deRule.getPSDEFVRGroupCondition?? && deRule.getPSDEFVRGroupCondition()?? && deRule.getPSDEFVRGroupCondition().getPSDEFVRConditions?? && deRule.getPSDEFVRGroupCondition().getPSDEFVRConditions()??> <#if deRule.getPSDEFVRGroupCondition?? && deRule.getPSDEFVRGroupCondition()?? && deRule.getPSDEFVRGroupCondition().getPSDEFVRConditions?? && deRule.getPSDEFVRGroupCondition().getPSDEFVRConditions()??>
<#list deRule.getPSDEFVRGroupCondition().getPSDEFVRConditions() as condItem> <#list deRule.getPSDEFVRGroupCondition().getPSDEFVRConditions() as condItem>
<@getDeRule condItem /> <@getDeRule condItem />
...@@ -345,9 +424,9 @@ import { Environment } from '@/environments/environment'; ...@@ -345,9 +424,9 @@ import { Environment } from '@/environments/environment';
let startOp = (val:boolean)=>{ let startOp = (val:boolean)=>{
if(falg.isPast){ if(falg.isPast){
if(opValue){ if(opValue){
falg.isPast = falg && val; falg.isPast = falg.isPast && val;
}else{ }else{
falg.isPast = falg || val; falg.isPast = falg.isPast || val;
} }
}else{ }else{
falg.isPast = val; falg.isPast = val;
...@@ -356,6 +435,11 @@ import { Environment } from '@/environments/environment'; ...@@ -356,6 +435,11 @@ import { Environment } from '@/environments/environment';
for(let i=0;i<rule[name].length;i++){ for(let i=0;i<rule[name].length;i++){
let item:any = rule[name][i]; let item:any = rule[name][i];
let dataValue = item.deName?this.data[this.service.getItemNameByDeName(item.deName)]:""; let dataValue = item.deName?this.data[this.service.getItemNameByDeName(item.deName)]:"";
item.ruleInfo = item.ruleInfo ? item.ruleInfo : this.$t('app.formpage.valuecheckex');
if((dataValue === null || dataValue === undefined || dataValue === "") && (item.type != 'GROUP')){
startOp(true);
return falg;
}
// 常规规则 // 常规规则
if(item.type == 'SIMPLE'){ if(item.type == 'SIMPLE'){
startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.data,item.isKeyCond)); startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.data,item.isKeyCond));
...@@ -388,7 +472,7 @@ import { Environment } from '@/environments/environment'; ...@@ -388,7 +472,7 @@ import { Environment } from '@/environments/environment';
} }
// 分组 // 分组
if(item.type == 'GROUP'){ if(item.type == 'GROUP'){
falg = this.verifyDeRules('group',item) falg = this.verifyDeRules('group',item,item.condOP?item.condOP:"AND");
if(item.isNotMode){ if(item.isNotMode){
falg.isPast = !falg.isPast; falg.isPast = !falg.isPast;
} }
...@@ -858,12 +942,12 @@ import { Environment } from '@/environments/environment'; ...@@ -858,12 +942,12 @@ import { Environment } from '@/environments/environment';
const arg: any = { ...JSON.parse(JSON.stringify(this.data)) } ; const arg: any = { ...JSON.parse(JSON.stringify(this.data)) } ;
Object.assign(arg, { srfactionparam: result.datas }); Object.assign(arg, { srfactionparam: result.datas });
const details: string[] = [<#list itemUpdate.getPSDEFIUpdateDetails() as detail><#if detail_index gt 0>, </#if>'${detail.getPSDEFormDetailName()?lower_case}'</#list>]; const details: string[] = [<#list itemUpdate.getPSDEFIUpdateDetails() as detail><#if detail_index gt 0>, </#if>'${detail.getPSDEFormDetailName()?lower_case}'</#list>];
this.updateFormItems('${itemUpdate.codeName}', arg, details, ${itemUpdate.isShowBusyIndicator()?c}); this.updateFormItems('${itemUpdate.getPSAppDEMethod().getCodeName()}', arg, details, ${itemUpdate.isShowBusyIndicator()?c});
} }
}); });
<#else> <#else>
const details: string[] = [<#list itemUpdate.getPSDEFIUpdateDetails() as detail><#if detail_index gt 0>, </#if>'${detail.getPSDEFormDetailName()?lower_case}'</#list>]; const details: string[] = [<#list itemUpdate.getPSDEFIUpdateDetails() as detail><#if detail_index gt 0>, </#if>'${detail.getPSDEFormDetailName()?lower_case}'</#list>];
this.updateFormItems('${itemUpdate.codeName}', this.data, details, ${itemUpdate.isShowBusyIndicator()?c}); this.updateFormItems('${itemUpdate.getPSAppDEMethod().getCodeName()}', this.data, details, ${itemUpdate.isShowBusyIndicator()?c});
</#if> </#if>
} }
</#if> </#if>
...@@ -1151,6 +1235,7 @@ import { Environment } from '@/environments/environment'; ...@@ -1151,6 +1235,7 @@ import { Environment } from '@/environments/environment';
const arg: any = { ...opt }; const arg: any = { ...opt };
const data = this.getValues(); const data = this.getValues();
Object.assign(arg, data); Object.assign(arg, data);
Object.assign(arg,{srfmajortext:data[this.majorMessageField]});
const action: any = Object.is(data.srfuf, '1') ? this.updateAction : this.createAction; const action: any = Object.is(data.srfuf, '1') ? this.updateAction : this.createAction;
if(!action){ if(!action){
let actionName:any = Object.is(data.srfuf, '1')?"updateAction":"createAction"; let actionName:any = Object.is(data.srfuf, '1')?"updateAction":"createAction";
...@@ -1178,24 +1263,45 @@ import { Environment } from '@/environments/environment'; ...@@ -1178,24 +1263,45 @@ import { Environment } from '@/environments/environment';
}); });
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status && response.data) { if (response && response.status && response.data) {
if(response.data.errorKey && Object.is(response.data.errorKey,"versionCheck")){ if (response.data.errorKey) {
this.$Modal.confirm({ if(Object.is(response.data.errorKey, "versionCheck")) {
title: (this.$t('app.formpage.saveerror') as string), this.$Modal.confirm({
content: (this.$t('app.formpage.savecontent') as string), title: (this.$t('app.formpage.saveerror') as string),
onOk: () => { content: (this.$t('app.formpage.savecontent') as string),
this.refresh([]); onOk: () => {
}, this.refresh([]);
onCancel: () => { } },
}); onCancel: () => { }
}else{ });
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.data.message }); } else if(Object.is(response.data.errorKey, 'DupCheck')) {
let errorProp: string = response.data.message.match(/\[[a-zA-Z]*\]/)[0];
let name: string = this.service.getNameByProp(errorProp.substr(1, errorProp.length-2));
if(name) {
this.$Notice.error({
title: (this.$t('app.commonWords.createFailed') as string),
desc: this.detailsModel[name].caption + " : " + arg[name] + (this.$t('app.commonWords.isExist') as string) + '!',
});
} else {
this.$Notice.error({
title: (this.$t('app.commonWords.createFailed') as string),
desc: response.data.message?response.data.message:(this.$t('app.commonWords.sysException') as string),
})
}
}else if(Object.is(response.data.errorKey, 'DuplicateKeyException')){
this.$Notice.error({
title: (this.$t('app.commonWords.createFailed') as string),
desc: this.detailsModel[this.formKeyItemName].caption + " : " + arg[this.formKeyItemName] + (this.$t('app.commonWords.isExist') as string) + '!',
});
} else {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.data.message?response.data.message:(this.$t('app.commonWords.sysException') as string) });
}
} else {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.data.message?response.data.message:(this.$t('app.commonWords.sysException') as string) });
}
return;
} else {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.sysException') as string) });
} }
return;
}
if (!response || !response.status || !response.data) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.sysException') as string) });
return;
}
}); });
} }
...@@ -1212,13 +1318,22 @@ import { Environment } from '@/environments/environment'; ...@@ -1212,13 +1318,22 @@ import { Environment } from '@/environments/environment';
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
showResultInfo = showResultInfo === undefined ? true : false; showResultInfo = showResultInfo === undefined ? true : false;
if (!this.formValidateStatus()) { if (!this.formValidateStatus()) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.formpage.valuecheckex') as string) }); if(this.errorMessages && this.errorMessages.length > 0) {
let descMessage: string = '';
this.errorMessages.forEach((message: any) => {
descMessage = descMessage + '<p>' + message.error + '<p>';
})
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: descMessage });
} else {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.formpage.valuecheckex') as string) });
}
return; return;
} }
const arg: any = { ...opt }; const arg: any = { ...opt };
const data = this.getValues(); const data = this.getValues();
Object.assign(arg, this.context); Object.assign(arg, this.context);
Object.assign(arg, data); Object.assign(arg, data);
Object.assign(arg,{srfmajortext:data[this.majorMessageField]});
if (ifStateNext) { if (ifStateNext) {
<#assign drcounter = 0> <#assign drcounter = 0>
<#list ctrl.getAllPSDEFormDetails() as formdetail> <#list ctrl.getAllPSDEFormDetails() as formdetail>
...@@ -1269,27 +1384,43 @@ import { Environment } from '@/environments/environment'; ...@@ -1269,27 +1384,43 @@ import { Environment } from '@/environments/environment';
</#if> </#if>
resolve(response); resolve(response);
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status && response.data) { if (response && response.status && response.data) {
if(response.data.errorKey && Object.is(response.data.errorKey,"versionCheck")){ if (response.data.errorKey) {
this.$Modal.confirm({ if(Object.is(response.data.errorKey, "versionCheck")) {
title: (this.$t('app.formpage.saveerror') as string), this.$Modal.confirm({
content: (this.$t('app.formpage.savecontent') as string), title: (this.$t('app.formpage.saveerror') as string),
onOk: () => { content: (this.$t('app.formpage.savecontent') as string),
this.refresh([]); onOk: () => {
}, this.refresh([]);
onCancel: () => { } },
}); onCancel: () => { }
}else{ });
} else if(Object.is(response.data.errorKey, 'DupCheck')) {
let errorProp: string = response.data.message.match(/\[[a-zA-Z]*\]/)[0];
let name: string = this.service.getNameByProp(errorProp.substr(1, errorProp.length-2));
if(name) {
this.$Notice.error({
title: (this.$t('app.commonWords.createFailed') as string),
desc: this.detailsModel[name].caption + " : " + arg[name] + (this.$t('app.commonWords.isExist') as string) + '!',
});
} else {
this.$Notice.error({
title: (this.$t('app.commonWords.createFailed') as string),
desc: response.data.message,
})
}
} else {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.data.message });
}
} else {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.data.message }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.data.message });
reject(response); reject(response);
} }
return; return;
} } else {
if (!response || !response.status || !response.data) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.sysException') as string) }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.sysException') as string) });
reject(response); reject(response);
return; }
}
reject(response); reject(response);
}); });
}) })
...@@ -1710,7 +1841,7 @@ import { Environment } from '@/environments/environment'; ...@@ -1710,7 +1841,7 @@ import { Environment } from '@/environments/environment';
*/ */
public createDefault(){ public createDefault(){
<#list ctrl.getAllPSDEFormDetails() as formdetail><#t> <#list ctrl.getAllPSDEFormDetails() as formdetail><#t>
<#if formdetail.getCreateDV?? && formdetail.getCreateDV()?? && formdetail.getCreateDV() !=""><#t> <#if (formdetail.getCreateDV?? || formdetail.getCreateDVT??) && (formdetail.getCreateDV()?? || formdetail.getCreateDVT()??) && (formdetail.getCreateDV() !="" || formdetail.getCreateDVT() != "")><#t>
if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}')) { if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}')) {
<#if !(formdetail.getCreateDVT() == '')><#t> <#if !(formdetail.getCreateDVT() == '')><#t>
<#-- 网页请求 --> <#-- 网页请求 -->
...@@ -1751,7 +1882,7 @@ import { Environment } from '@/environments/environment'; ...@@ -1751,7 +1882,7 @@ import { Environment } from '@/environments/environment';
*/ */
public updateDefault(){ public updateDefault(){
<#list ctrl.getAllPSDEFormDetails() as formdetail><#t> <#list ctrl.getAllPSDEFormDetails() as formdetail><#t>
<#if formdetail.getUpdateDV?? && formdetail.getUpdateDV()?? && formdetail.getUpdateDV() != ""><#t> <#if (formdetail.getUpdateDV?? || formdetail.getUpdateDVT??) && (formdetail.getUpdateDV()?? || formdetail.getUpdateDVT()??) && (formdetail.getUpdateDV() != "" || formdetail.getUpdateDVT() != "")><#t>
if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}') && !this.data.${formdetail.getCodeName()?lower_case}) { if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}') && !this.data.${formdetail.getCodeName()?lower_case}) {
<#if !(formdetail.getUpdateDVT() == '')><#t> <#if !(formdetail.getUpdateDVT() == '')><#t>
<#-- 网页请求 --> <#-- 网页请求 -->
......
...@@ -127,7 +127,7 @@ ...@@ -127,7 +127,7 @@
</#if> </#if>
<template <#if (ctrl.isEnableRowEdit() && item.isEnableRowEdit())>v-if="!actualIsOpenEdit"</#if>> <template <#if (ctrl.isEnableRowEdit() && item.isEnableRowEdit())>v-if="!actualIsOpenEdit"</#if>>
<#if item.getPSDEUIAction?? && item.getPSDEUIAction()??> <#if item.getPSDEUIAction?? && item.getPSDEUIAction()??>
<a @click="uiAction(row, '${item.getPSDEUIAction().getUIActionTag()}', $event)"> <a v-show="row.${item.getPSDEUIAction().getUIActionTag()}.visabled" :disabled="row.${item.getPSDEUIAction().getUIActionTag()}.disabled" :style="{'display': 'block'}" @click="uiAction(row, '${item.getPSDEUIAction().getUIActionTag()}', $event)">
</#if> </#if>
<#if (item.render??)> <#if (item.render??)>
<#-- BEGIN:列绘制 --> <#-- BEGIN:列绘制 -->
...@@ -216,7 +216,7 @@ ...@@ -216,7 +216,7 @@
</app-column-link > </app-column-link >
<#else> <#else>
<#if item.getPSDEUIAction?? && item.getPSDEUIAction()??> <#if item.getPSDEUIAction?? && item.getPSDEUIAction()??>
<a @click="uiAction(row, '${item.getPSDEUIAction().getUIActionTag()}', $event)"> <a v-show="row.${item.getPSDEUIAction().getUIActionTag()}.visabled" :disabled="row.${item.getPSDEUIAction().getUIActionTag()}.disabled" :style="{'display': 'block'}" @click="uiAction(row, '${item.getPSDEUIAction().getUIActionTag()}', $event)">
</#if> </#if>
<#if item.getValueFormat()?? && item.getValueFormat() != "%1$s"> <#if item.getValueFormat()?? && item.getValueFormat() != "%1$s">
<app-format-data format="${item.getValueFormat()}" :data="row.${item.getName()?lower_case}"></app-format-data> <app-format-data format="${item.getValueFormat()}" :data="row.${item.getName()?lower_case}"></app-format-data>
......
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
...@@ -38,7 +41,7 @@ ${ctrl.render.code} ...@@ -38,7 +41,7 @@ ${ctrl.render.code}
@row-dblclick="rowDBLClick($event)" @row-dblclick="rowDBLClick($event)"
ref='multipleTable' :data="items" :show-header="!isHideHeader"> ref='multipleTable' :data="items" :show-header="!isHideHeader">
<template slot="empty"> <template slot="empty">
{{$t('app.gridpage.noData')}} {{$t('<#if langbase??>${langbase}.nodata</#if>')}}
<#if ctrl.getQuickPSDEToolbar?? && ctrl.getQuickPSDEToolbar()??> <#if ctrl.getQuickPSDEToolbar?? && ctrl.getQuickPSDEToolbar()??>
<span class="quick-toolbar"> <span class="quick-toolbar">
<#assign quickToolbar = ctrl.getQuickPSDEToolbar()/> <#assign quickToolbar = ctrl.getQuickPSDEToolbar()/>
...@@ -129,7 +132,20 @@ import { Environment } from '@/environments/environment'; ...@@ -129,7 +132,20 @@ import { Environment } from '@/environments/environment';
<#ibizinclude> <#ibizinclude>
../../@MACRO/LANG_FUN.ftl ../../@MACRO/LANG_FUN.ftl
</#ibizinclude> </#ibizinclude>
<#macro getMajorInfoColName ctrl>
<#compress>
<#if ctrl.getPSDEGridColumns?? && ctrl.getPSDEGridColumns()??>
<#list ctrl.getPSDEGridColumns() as gridColumn>
<#if gridColumn.getPSAppDEField?? && gridColumn.getPSAppDEField()??>
<#assign majorInfoField = gridColumn.getPSAppDEField() />
<#if majorInfoField.isMajorField()>
${gridColumn.getName()}
</#if>
</#if>
</#list>
</#if>
</#compress>
</#macro>
/** /**
* 代码表服务对象 * 代码表服务对象
* *
...@@ -138,6 +154,14 @@ import { Environment } from '@/environments/environment'; ...@@ -138,6 +154,14 @@ import { Environment } from '@/environments/environment';
*/ */
public codeListService:CodeListService = new CodeListService({ $store: this.$store }); public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 主信息表格列
*
* @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public majorInfoColName:string = "<@getMajorInfoColName ctrl/>";
/** /**
* 界面UI服务对象 * 界面UI服务对象
* *
...@@ -492,6 +516,14 @@ import { Environment } from '@/environments/environment'; ...@@ -492,6 +516,14 @@ import { Environment } from '@/environments/environment';
*/ */
public isDisplay:boolean = <#if ctrl.getAggMode() == "ALL">false<#else>true</#if>; public isDisplay:boolean = <#if ctrl.getAggMode() == "ALL">false<#else>true</#if>;
/**
* 表格行编辑项校验错误提示信息
*
* @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public errorMessages: Array<any> = [];
/** /**
* 部件刷新 * 部件刷新
* *
...@@ -541,6 +573,13 @@ import { Environment } from '@/environments/environment'; ...@@ -541,6 +573,13 @@ import { Environment } from '@/environments/environment';
isEnableRowEdit: false, isEnableRowEdit: false,
</#if> </#if>
<#-- END:是否支持行编辑 --> <#-- END:是否支持行编辑 -->
<#-- BEGIN:是否启用 -->
<#if column.getEnableCond?? && column.getEnableCond()??>
enableCond: ${column.getEnableCond()?c} ,
<#else>
enableCond: 3 ,
</#if>
<#-- END:是否启用 -->
}, },
</#list> </#list>
</#if> </#if>
...@@ -646,7 +685,7 @@ import { Environment } from '@/environments/environment'; ...@@ -646,7 +685,7 @@ import { Environment } from '@/environments/environment';
<#assign valueRule = fideValueRule.getPSSysValueRule()/> <#assign valueRule = fideValueRule.getPSSysValueRule()/>
<#if valueRule.getRuleType?? && valueRule.getRuleType()??> <#if valueRule.getRuleType?? && valueRule.getRuleType()??>
<#if valueRule.getRuleType() == "REG"> <#if valueRule.getRuleType() == "REG">
{ <#if valueRule.getRegExCode?? && valueRule.getRegExCode()??>pattern: /^${valueRule.getRegExCode()}$/</#if><#if valueRule.getRuleInfo?? && valueRule.getRuleInfo()??>, message: '${valueRule.getRuleInfo()}'</#if>, trigger: 'change' }, { <#if valueRule.getRegExCode?? && valueRule.getRegExCode()??>pattern: /${valueRule.getRegExCode()}/</#if><#if valueRule.getRuleInfo?? && valueRule.getRuleInfo()??>, message: '${valueRule.getRuleInfo()}'</#if>, trigger: 'change' },
<#elseif valueRule.getRuleType() == "SCRIPT"> <#elseif valueRule.getRuleType() == "SCRIPT">
{ <#if valueRule.getScriptCode?? && valueRule.getScriptCode()??>validator: (rule:any, value:any, callback:any) => { ${valueRule.getScriptCode()} }</#if><#if valueRule.getRuleInfo?? && valueRule.getRuleInfo()??>, message: '${valueRule.getRuleInfo()}'</#if>, trigger: 'change' }, { <#if valueRule.getScriptCode?? && valueRule.getScriptCode()??>validator: (rule:any, value:any, callback:any) => { ${valueRule.getScriptCode()} }</#if><#if valueRule.getRuleInfo?? && valueRule.getRuleInfo()??>, message: '${valueRule.getRuleInfo()}'</#if>, trigger: 'change' },
</#if> </#if>
...@@ -694,17 +733,21 @@ import { Environment } from '@/environments/environment'; ...@@ -694,17 +733,21 @@ import { Environment } from '@/environments/environment';
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public async validateAll(){ public async validateAll(){
this.errorMessages = [];
let validateState = true; let validateState = true;
let index = -1; let index = -1;
for(let item of this.items){ for (let item of this.items) {
index++; let tempMessage: string = '';
if(item.rowDataState === "create" || item.rowDataState === "update"){ index++;
for(let property of Object.keys(this.rules)){ if (item.rowDataState === "create" || item.rowDataState === "update") {
if(!await this.validate(property,item,index)){ for (let property of Object.keys(this.rules)) {
validateState = false; if (!await this.validate(property, item, index)) {
} validateState = false;
tempMessage = tempMessage + '<p>' + this.gridItemsModel[index][property].error + '<p>';
}
}
} }
} this.errorMessages.push(tempMessage);
} }
return validateState; return validateState;
} }
...@@ -835,7 +878,7 @@ import { Environment } from '@/environments/environment'; ...@@ -835,7 +878,7 @@ import { Environment } from '@/environments/environment';
} }
let dataInfo = ''; let dataInfo = '';
_datas.forEach((record: any, index: number) => { _datas.forEach((record: any, index: number) => {
let srfmajortext = record.${ctrl.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}; let srfmajortext = record.${ctrl.getPSAppDataEntity().getMajorPSAppDEField().getName()?lower_case};
if (index < 5) { if (index < 5) {
if (!Object.is(dataInfo, '')) { if (!Object.is(dataInfo, '')) {
dataInfo += '、'; dataInfo += '、';
...@@ -847,9 +890,9 @@ import { Environment } from '@/environments/environment'; ...@@ -847,9 +890,9 @@ import { Environment } from '@/environments/environment';
}); });
if (_datas.length < 5) { if (_datas.length < 5) {
dataInfo = dataInfo + ' '+(this.$t('app.gridpage.totle') as string) + _datas.length + (this.$t('app.gridpage.records') as string)+(this.$t('app.gridpage.data') as string); dataInfo = dataInfo + ' ' + (this.$t('app.gridpage.totle') as string) + _datas.length + (this.$t('app.gridpage.records') as string) + (this.$t('app.gridpage.data') as string);
} else { } else {
dataInfo = dataInfo + '...' + ' '+(this.$t('app.gridpage.totle') as string) + _datas.length + (this.$t('app.gridpage.desc2') as string); dataInfo = ' ... ' + (this.$t('app.gridpage.totle') as string) + _datas.length + (this.$t('app.gridpage.records') as string) + (this.$t('app.gridpage.data') as string);
} }
const removeData = () => { const removeData = () => {
...@@ -1098,37 +1141,60 @@ import { Environment } from '@/environments/environment'; ...@@ -1098,37 +1141,60 @@ import { Environment } from '@/environments/environment';
*/ */
public async formatExcelData(filterVal:any, jsonData:any) { public async formatExcelData(filterVal:any, jsonData:any) {
let codelistColumns:Array<any> = [ let codelistColumns:Array<any> = [
<#if hasDEExport> <#if ctrl.getPSDEDataExport()?? && ctrl.getPSDEDataExport().getPSDEDataExportItems()??>
<#assign exportItems = ctrl.getPSDEDataExport().getPSDEDataExportItems() /> <#list ctrl.getPSDEDataExport().getPSDEDataExportItems() as column>
<#else> <#if column.getPSCodeList?? && column.getPSCodeList()??>
<#assign exportItems = ctrl.getAllPSDEGridColumns() />
</#if>
<#if exportItems??>
<#list exportItems as column>
<#if (hasDEExport || (!column.isHideDefault() && column.getName() != '')) && column.getCodeList?? && column.getCodeList()?? && column.getCLConvertMode() == 'FRONT'>
<#assign codelist = column.getPSCodeList()> <#assign codelist = column.getPSCodeList()>
<#if codelist.getCodeListType() == 'STATIC' || codelist.getCodeListType() == 'DYNAMIC'> <#if codelist.getCodeListType() == 'STATIC' || codelist.getCodeListType() == 'DYNAMIC'>
{ {
name: '${column.getName()?lower_case}', name: '${column.getName()?lower_case}',
srfkey: '${codelist.codeName}', srfkey: '${codelist.codeName}',
codelistType : '${codelist.getCodeListType()}', codelistType : '${codelist.getCodeListType()}',
<#if codelist.getOrMode() == 'STR'> <#if codelist.getOrMode() == 'STR'>
textSeparator: '${codelist.textSeparator}', textSeparator: '${codelist.textSeparator}',
renderMode: 'string', renderMode: 'string',
valueSeparator: "${codelist.valueSeparator}", valueSeparator: "${codelist.valueSeparator}",
<#elseif codelist.getOrMode() == 'NUM'> <#elseif codelist.getOrMode() == 'NUM'>
renderMode: 'number', renderMode: 'number',
textSeparator: '${codelist.textSeparator}', textSeparator: '${codelist.textSeparator}',
valueSeparator: ',', valueSeparator: ',',
<#else> <#else>
renderMode: 'other', renderMode: 'other',
textSeparator: '、', textSeparator: '、',
valueSeparator: ',', valueSeparator: ',',
</#if> </#if>
}, },
</#if> </#if>
</#if> </#if>
</#list> </#list>
<#else>
<#if ctrl.getAllPSDEGridColumns()??>
<#list ctrl.getAllPSDEGridColumns() as column>
<#if (!column.isHideDefault() && column.getName() != '') && column.getPSCodeList?? && column.getPSCodeList()?? && column.getCLConvertMode() == 'FRONT'>
<#assign codelist = column.getPSCodeList()>
<#if codelist.getCodeListType() == 'STATIC' || codelist.getCodeListType() == 'DYNAMIC'>
{
name: '${column.getName()?lower_case}',
srfkey: '${codelist.codeName}',
codelistType : '${codelist.getCodeListType()}',
<#if codelist.getOrMode() == 'STR'>
textSeparator: '${codelist.textSeparator}',
renderMode: 'string',
valueSeparator: "${codelist.valueSeparator}",
<#elseif codelist.getOrMode() == 'NUM'>
renderMode: 'number',
textSeparator: '${codelist.textSeparator}',
valueSeparator: ',',
<#else>
renderMode: 'other',
textSeparator: '、',
valueSeparator: ',',
</#if>
},
</#if>
</#if>
</#list>
</#if>
</#if> </#if>
]; ];
let _this = this; let _this = this;
...@@ -1161,7 +1227,7 @@ import { Environment } from '@/environments/environment'; ...@@ -1161,7 +1227,7 @@ import { Environment } from '@/environments/environment';
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public getCodelistValue(items: any[], value: any, codelist: any,){ public getCodelistValue(items: any[], value: any, codelist: any,){
if(!value){ if(!value && value !== 0 && value !== false){
return this.$t('codelist.'+codelist.srfkey+'.empty'); return this.$t('codelist.'+codelist.srfkey+'.empty');
} }
if (items) { if (items) {
...@@ -1247,7 +1313,7 @@ import { Environment } from '@/environments/environment'; ...@@ -1247,7 +1313,7 @@ import { Environment } from '@/environments/environment';
return; return;
} }
if (Object.is('load', action)) { if (Object.is('load', action)) {
this.load(data); this.load(data,true);
} }
if (Object.is('remove', action)) { if (Object.is('remove', action)) {
this.remove(data); this.remove(data);
...@@ -1913,8 +1979,12 @@ import { Environment } from '@/environments/environment'; ...@@ -1913,8 +1979,12 @@ import { Environment } from '@/environments/environment';
} }
} }
} }
if(!await this.validateAll()){ if (!await this.validateAll()) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.rulesException') as string) }); if(this.errorMessages && this.errorMessages.length > 0) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: this.errorMessages[0] });
} else {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.rulesException') as string) });
}
return []; return [];
} }
let successItems:any = []; let successItems:any = [];
...@@ -1954,10 +2024,60 @@ import { Environment } from '@/environments/environment'; ...@@ -1954,10 +2024,60 @@ import { Environment } from '@/environments/environment';
if(errorItems.length === 0 && successItems.length >0 && !this.isformDruipart){ if(errorItems.length === 0 && successItems.length >0 && !this.isformDruipart){
this.$Notice.success({ title: '', desc: (this.$t('app.commonWords.saveSuccess') as string) }); this.$Notice.success({ title: '', desc: (this.$t('app.commonWords.saveSuccess') as string) });
}else{ }else{
errorItems.forEach((item:any,index:number)=>{ errorItems.forEach((item: any, index: number) => {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: errorMessage[index].data.message }); if(errorMessage[index] && errorMessage[index].data) {
console.error(errorMessage[index]); if(Object.is(errorMessage[index].data.errorKey, 'DupCheck')) {
}); let errorProp: string = errorMessage[index].data.message.match(/\[[a-zA-Z]*\]/)[0];
let name: string = errorProp ? this.service.getNameByProp(errorProp.substr(1, errorProp.length-2)) : '';
if(name) {
let desc: any = this.allColumns.find((column: any) =>{
return Object.is(column.name, name);
});
this.$Notice.error({
title: (this.$t('app.commonWords.createFailed') as string),
desc: (desc ? desc.label : '') + " : " + item[name] + (this.$t('app.commonWords.isExist') as string) + '!',
});
} else {
this.$Notice.error({
title: (this.$t('app.commonWords.createFailed') as string),
desc: errorMessage[index].data.message?errorMessage[index].data.message:(this.$t('app.commonWords.sysException') as string),
});
}
} else if(Object.is(errorMessage[index].data.errorKey, 'DuplicateKeyException')){
<#if ctrl.getAllPSDEGridColumns?? && ctrl.getAllPSDEGridColumns()??>
<#list ctrl.getAllPSDEGridColumns() as column>
<#if column.getPSAppDEField?? && column.getPSAppDEField()?? && column.getPSAppDEField().isKeyField() && appde.getKeyPSAppDEField()?? && appde.getKeyPSAppDEField().getCodeName() == column.getPSAppDEField().getCodeName()>
<#assign columnKeyName = column.getName()?lower_case >
</#if>
</#list>
</#if>
<#if columnKeyName??>
let name: string = this.service.getNameByProp("${columnKeyName}");
if(name){
let desc: any = this.allColumns.find((column: any) =>{
return Object.is(column.name, name);
});
this.$Notice.error({
title: (this.$t('app.commonWords.createFailed') as string),
desc: (desc ? desc.label : '') + " : " + item[name] + (this.$t('app.commonWords.isExist') as string) + '!',
});
}
<#else>
this.$Notice.error({
title: (this.$t('app.commonWords.saveFailed') as string),
desc: errorMessage[index].data.message?errorMessage[index].data.message:(this.$t('app.commonWords.sysException') as string),
});
</#if>
}else {
this.$Notice.error({
title: (this.$t('app.commonWords.saveFailed') as string),
desc: errorMessage[index].data.message?errorMessage[index].data.message:(this.$t('app.commonWords.sysException') as string),
});
}
} else {
this.$Notice.error({ title: (this.$t('app.commonWords.saveFailed') as string), desc: (item[this.majorInfoColName]?item[this.majorInfoColName]:"") + (this.$t('app.commonWords.saveFailed') as string) + '!' });
}
});
} }
return successItems; return successItems;
} }
...@@ -2067,9 +2187,20 @@ import { Environment } from '@/environments/environment'; ...@@ -2067,9 +2187,20 @@ import { Environment } from '@/environments/environment';
if (!mode || (mode && Object.is(mode, ''))) { if (!mode || (mode && Object.is(mode, ''))) {
return; return;
} }
<#if ctrl.getAllPSDEGridColumns?? && ctrl.getAllPSDEGridColumns()??>
<#list ctrl.getAllPSDEGridColumns() as column>
<#if column.getPSAppDEField?? && column.getPSAppDEField()?? && column.getPSAppDEField().isKeyField() && appde.getKeyPSAppDEField()?? && appde.getKeyPSAppDEField().getCodeName() == column.getPSAppDEField().getCodeName()>
<#assign columnKeyName = column.getName()?lower_case >
</#if>
</#list>
</#if>
let tempContext: any = this.$util.deepCopy(this.context);
<#if columnKeyName??>
Object.is(tempContext, { ${appde.getCodeName()?lower_case}: data.${columnKeyName} });
</#if>
const arg: any = JSON.parse(JSON.stringify(data)); const arg: any = JSON.parse(JSON.stringify(data));
Object.assign(arg,{viewparams:this.viewparams}); Object.assign(arg,{viewparams:this.viewparams});
const post: Promise<any> = this.service.frontLogic(mode,JSON.parse(JSON.stringify(this.context)),arg, showloading); const post: Promise<any> = this.service.frontLogic(mode,JSON.parse(JSON.stringify(tempContext)),arg, showloading);
post.then((response: any) => { post.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.gridpage.formitemFailed') as string) }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.gridpage.formitemFailed') as string) });
...@@ -2173,7 +2304,7 @@ import { Environment } from '@/environments/environment'; ...@@ -2173,7 +2304,7 @@ import { Environment } from '@/environments/environment';
*/ */
public createDefault(row: any){ public createDefault(row: any){
<#list ctrl.getPSDEGridEditItems() as editItem><#t> <#list ctrl.getPSDEGridEditItems() as editItem><#t>
<#if editItem.getCreateDV?? && editItem.getCreateDV()?? && editItem.getCreateDV() !=""><#t> <#if (editItem.getCreateDV?? || editItem.getCreateDVT??) && (editItem.getCreateDV()?? || editItem.getCreateDVT()??) && (editItem.getCreateDV() !="" || editItem.getCreateDVT() !="")><#t>
if (row.hasOwnProperty('${editItem.getCodeName()?lower_case}')) { if (row.hasOwnProperty('${editItem.getCodeName()?lower_case}')) {
<#if !(editItem.getCreateDVT() == '')><#t> <#if !(editItem.getCreateDVT() == '')><#t>
<#-- 网页请求 --> <#-- 网页请求 -->
...@@ -2215,7 +2346,7 @@ import { Environment } from '@/environments/environment'; ...@@ -2215,7 +2346,7 @@ import { Environment } from '@/environments/environment';
*/ */
public updateDefault(row: any){ public updateDefault(row: any){
<#list ctrl.getPSDEGridEditItems() as editItem><#t> <#list ctrl.getPSDEGridEditItems() as editItem><#t>
<#if editItem.getUpdateDV?? && editItem.getUpdateDV()?? && editItem.getUpdateDV() !=""><#t> <#if (editItem.getUpdateDV?? || editItem.getUpdateDVT??) && (editItem.getUpdateDV()?? || editItem.getUpdateDVT()??) && (editItem.getUpdateDV() !="" || editItem.getUpdateDVT() !="")><#t>
if (row.hasOwnProperty('${editItem.getCodeName()?lower_case}') && !row.${editItem.getCodeName()?lower_case} && row.hasUpdated) { if (row.hasOwnProperty('${editItem.getCodeName()?lower_case}') && !row.${editItem.getCodeName()?lower_case} && row.hasUpdated) {
<#if !(editItem.getUpdateDVT() == '')><#t> <#if !(editItem.getUpdateDVT() == '')><#t>
<#-- 网页请求 --> <#-- 网页请求 -->
...@@ -2293,15 +2424,19 @@ import { Environment } from '@/environments/environment'; ...@@ -2293,15 +2424,19 @@ import { Environment } from '@/environments/environment';
let startOp = (val:boolean)=>{ let startOp = (val:boolean)=>{
if(falg.isPast){ if(falg.isPast){
if(opValue){ if(opValue){
falg.isPast = falg && val; falg.isPast = falg.isPast && val;
}else{ }else{
falg.isPast = falg || val; falg.isPast = falg.isPast || val;
} }
}else{ }else{
falg.isPast = val; falg.isPast = val;
} }
} }
rule[name].forEach((item:any) => { rule[name].forEach((item:any) => {
if((value === null || value === undefined || value === "") && (item.type != 'GROUP')){
startOp(true);
return falg;
}
// 常规规则 // 常规规则
if(item.type == 'SIMPLE'){ if(item.type == 'SIMPLE'){
startOp(!this.$verify.checkFieldSimpleRule(value,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.curEditRowData,item.isKeyCond)); startOp(!this.$verify.checkFieldSimpleRule(value,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.curEditRowData,item.isKeyCond));
...@@ -2324,7 +2459,7 @@ import { Environment } from '@/environments/environment'; ...@@ -2324,7 +2459,7 @@ import { Environment } from '@/environments/environment';
} }
// 分组 // 分组
if(item.type == 'GROUP'){ if(item.type == 'GROUP'){
falg = this.verifyDeRules('group',item,"AND",value) falg = this.verifyDeRules('group',item,item.condOP?item.condOP:"AND",value)
if(item.isNotMode){ if(item.isNotMode){
falg.isPast = !falg.isPast; falg.isPast = !falg.isPast;
} }
...@@ -2378,6 +2513,24 @@ import { Environment } from '@/environments/environment'; ...@@ -2378,6 +2513,24 @@ import { Environment } from '@/environments/environment';
}) })
} }
/**
* 获取表格列禁用状态
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getColumnDisabled(data:any,name:string){
if(this.allColumns || Array.isArray(this.allColumns)){
const curColumn:any = this.allColumns.find((item:any) =>{
return item.name === name;
})
if(curColumn.hasOwnProperty('enableCond')){
return data.srfuf == 1 ? (curColumn.enableCond & 2) !== 2 : (curColumn.enableCond & 1) !== 1
}else{
return false;
}
}
}
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
......
...@@ -236,7 +236,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi ...@@ -236,7 +236,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi
result.then((response) => { result.then((response) => {
//处理返回数据,补充判断标识 //处理返回数据,补充判断标识
if(response.data){ if(response.data){
Object.assign(response.data,{srfuf:0}); Object.assign(response.data,{srfuf:'0'});
} }
resolve(response); resolve(response);
}).catch(response => { }).catch(response => {
...@@ -445,7 +445,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi ...@@ -445,7 +445,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi
requestData[item.prop] = context[item.name]; requestData[item.prop] = context[item.name];
} }
}else{ }else{
if(item && item.isEditable && item.prop && item.name && (data[item.name] || Object.is(data[item.name],0) || Object.is(data[item.name],"")) ){ if(item && item.isEditable && item.prop && item.name && data.hasOwnProperty(item.name)){
requestData[item.prop] = data[item.name]; requestData[item.prop] = data[item.name];
} }
} }
......
...@@ -168,7 +168,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co ...@@ -168,7 +168,7 @@ import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/co
* @type {(string)} * @type {(string)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public placeholder="<@getQuickSearchPlaceholder view />"; public placeholder="<@getQuickSearchPlaceholder ctrl />";
/** /**
* 搜素值 * 搜素值
......
...@@ -12,6 +12,9 @@ ...@@ -12,6 +12,9 @@
<#ibizinclude> <#ibizinclude>
../@MACRO/View_Pos_Body_Msgs.vue.ftl ../@MACRO/View_Pos_Body_Msgs.vue.ftl
</#ibizinclude> </#ibizinclude>
<#if view.hasPSControl('statewizardpanel')>
${P.getCtrlCode('statewizardpanel', 'CONTROL.html').code}
</#if>
<#if view.hasPSControl('tabexppanel')> <#if view.hasPSControl('tabexppanel')>
${P.getCtrlCode('tabexppanel', 'CONTROL.html').code} ${P.getCtrlCode('tabexppanel', 'CONTROL.html').code}
</#if> </#if>
......
...@@ -16,8 +16,19 @@ ...@@ -16,8 +16,19 @@
<div class='content-container'> <div class='content-container'>
<#assign MDContent> <#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment> <#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))> <#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar') || view.isEnableQuickGroup() || view.getQuickPSDESearchForm()??)>
<row style="margin-bottom:6px;"> <row style="margin-bottom:6px;">
<#if view.isEnableQuickGroup()>
<div class="quick-group-container">
<app-quick-group :items="quickGroupModel" <#if appCounter??>:counterService="${appCounter.getCodeName()?lower_case}counterservice"</#if> @valuechange="quickGroupValueChange"></app-quick-group>
</div>
</#if>
<#if view.getQuickPSDESearchForm()??>
<div class="quick-search-container">
<#assign quickSearchForm = view.getQuickPSDESearchForm() />
${P.getCtrlCode(quickSearchForm, 'CONTROL.html').code}
</div>
</#if>
<#if view.isEnableQuickSearch()> <#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;' /> <i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;' />
</#if> </#if>
......
...@@ -17,8 +17,19 @@ ...@@ -17,8 +17,19 @@
<div class='content-container'> <div class='content-container'>
<#assign MDContent> <#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment> <#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))> <#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar') || view.isEnableQuickGroup() || view.getQuickPSDESearchForm()??)>
<row style="margin-bottom:6px;"> <row style="margin-bottom:6px;">
<#if view.isEnableQuickGroup()>
<div class="quick-group-container">
<app-quick-group :items="quickGroupModel" <#if appCounter??>:counterService="${appCounter.getCodeName()?lower_case}counterservice"</#if> @valuechange="quickGroupValueChange"></app-quick-group>
</div>
</#if>
<#if view.getQuickPSDESearchForm()??>
<div class="quick-search-container">
<#assign quickSearchForm = view.getQuickPSDESearchForm() />
${P.getCtrlCode(quickSearchForm, 'CONTROL.html').code}
</div>
</#if>
<#if view.isEnableQuickSearch()> <#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;' /> <i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;' />
</#if> </#if>
......
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
.pickup-view {
>.translate-contant {
overflow: auto;
flex-grow: 1;
display: flex;
justify-content: flex-end;
height: calc(100% - 64px);
.translate-buttons {
width: 80px;
display: flex;
align-items: center;
text-align: center;
button {
margin-bottom: 5px;
}
}
.left, .right {
width: 300px;
}
.right {
border: 1px solid #e9e9e9;
.mpicker-select {
font-family: helvetica, sans-serif;
font-size: 16px;
text-align: justify;
word-spacing: -3.8pt;
line-height: 1.6;
font-weight: bold;
word-spacing: 10px;
height: 100%;
overflow: auto;
}
.mpicker-select > div {
padding: 3px 10px;
font-size: 14px;
color: rgba(0, 0, 0, 0.85);
font-weight: initial;
cursor: pointer;
min-height: 28px;
border: 1px solid #e9e9e9;
margin: 4px 4px;
transition: all .3s;
}
.mpicker-select > div:hover {
background: #ecf6fd;
}
.mpicker-select > .select{
color: #108ee9;
background: #ecf6fd;
}
}
.center{
width: calc(100% - 380px);
.pickupviewpanel {
width: 100%;
height: 100%;
}
}
}
>.footer {
height: 64px;
}
}
\ 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:视图内容区视图消息 -->
<div class="translate-contant">
<div class="center" :style="{width : !isShowButton ? '100%' : ''}">
<#if view.hasPSControl('pickupviewpanel')>
<@ibizindent blank=20>
${P.getCtrlCode('pickupviewpanel', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
</div>
<div v-if="isShowButton" class="translate-buttons">
<div class="buttons">
<i-button type="primary" :title="this.containerModel.view_rightbtn.text"
:disabled="this.containerModel.view_rightbtn.disabled"
@click="onCLickRight">
<i class="el-icon-arrow-right"></i>
</i-button>
<i-button type="primary" :title="this.containerModel.view_leftbtn.text"
:disabled="this.containerModel.view_leftbtn.disabled"
@click="onCLickLeft">
<i class="el-icon-arrow-left"></i>
</i-button>
<i-button type="primary" :title="this.containerModel.view_allrightbtn.text"
@click="onCLickAllRight">
<i class="el-icon-d-arrow-right"></i>
</i-button>
<i-button type="primary" :title="this.containerModel.view_allleftbtn.text"
@click="onCLickAllLeft">
<i class="el-icon-d-arrow-left"></i>
</i-button>
</div>
</div>
<div v-if="isShowButton" class="right">
<div class="mpicker-select">
<div v-for="(item, index) in viewSelections" :key="index" :class="item._select ? 'select' : ''" @click="selectionsClick(item)" @dblclick="selectionsDBLClick(item)">
<span>{{item.srfmajortext}}</span>
</div>
</div>
</div>
</div>
<card v-if="isShowButton" :dis-hover="true" :bordered="false" class="footer">
<row :style="{ textAlign: 'right' }">
<i-button type="primary" :disabled="this.viewSelections.length > 0 ? false : true" @click="onClickOk">{{this.containerModel.view_okbtn.text}}</i-button>
&nbsp;&nbsp;
<i-button @click="onClickCancel">{{this.containerModel.view_cancelbtn.text}}</i-button>
</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
CTRLTYPE=VIEWLAYOUTPANEL#APPDEMPICKUPVIEW2
\ No newline at end of file
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
<div class="app-redirect-view ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
</div>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEWFSTARTVIEW
\ 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>"> <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> <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"> <card class='view-card view-no-caption <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :dis-hover="true" :padding="0" :bordered="false">
<#-- BEGIN:视图顶部视图消息 --> <#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=8> <@ibizindent blank=8>
<#ibizinclude> <#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl ../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude> </#ibizinclude>
</@ibizindent> </@ibizindent>
<#-- END:视图顶部视图消息 --> <#-- END:视图顶部视图消息 -->
<div class="content-container pickup-view"> <div class="content-container pickup-view">
<#-- BEGIN:视图内容区视图消息 --> <#-- BEGIN:视图内容区视图消息 -->
<@ibizindent blank=8> <@ibizindent blank=8>
...@@ -45,29 +45,29 @@ ...@@ -45,29 +45,29 @@
<i class="el-icon-d-arrow-left"></i> <i class="el-icon-d-arrow-left"></i>
</i-button> </i-button>
</div> </div>
</div> </div>
<div v-if="isShowButton" class="right"> <div v-if="isShowButton" class="right">
<div class="mpicker-select"> <div class="mpicker-select">
<div v-for="(item, index) in viewSelections" :key="index" :class="item._select ? 'select' : ''" @click="selectionsClick(item)" @dblclick="selectionsDBLClick(item)"> <div v-for="(item, index) in viewSelections" :key="index" :class="item._select ? 'select' : ''" @click="selectionsClick(item)" @dblclick="selectionsDBLClick(item)">
<span>{{item.srfmajortext}}</span> <span>{{item.srfmajortext}}</span>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> <card v-if="isShowButton" :dis-hover="true" :bordered="false" class="footer">
<card v-if="isShowButton" :dis-hover="true" :bordered="false" class="footer"> <row :style="{ textAlign: 'right' }">
<row :style="{ textAlign: 'right' }"> <i-button type="primary" :disabled="this.viewSelections.length > 0 ? false : true" @click="onClickOk">{{this.containerModel.view_okbtn.text}}</i-button>
<i-button type="primary" :disabled="this.viewSelections.length > 0 ? false : true" @click="onClickOk">{{this.containerModel.view_okbtn.text}}</i-button> &nbsp;&nbsp;
&nbsp;&nbsp; <i-button @click="onClickCancel">{{this.containerModel.view_cancelbtn.text}}</i-button>
<i-button @click="onClickCancel">{{this.containerModel.view_cancelbtn.text}}</i-button> </row>
</row> </card>
</card>
</div> </div>
<#-- BEGIN:视图底部视图消息 --> <#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8> <@ibizindent blank=8>
<#ibizinclude> <#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl ../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude> </#ibizinclude>
</@ibizindent> </@ibizindent>
<#-- END:视图底部视图消息 --> <#-- END:视图底部视图消息 -->
</card> </card>
</div> </div>
\ No newline at end of file
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
.pickup-view {
>.pickupviewpanel {
flex-grow: 1;
display: flex;
justify-content: flex-end;
height: calc(100% - 64px);
}
>.footer {
height: 64px;
}
}
\ 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:视图内容区视图消息 -->
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEPICKUPVIEW2
\ No newline at end of file
.view-card {
>.ivu-card-extra {
top: 5px;
right: 0px;
}
}
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
<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">
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/VIEW_CAPTION_DATAINFO.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#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('treeexpbar')>
<@ibizindent blank=12>
${P.getCtrlCode('treeexpbar', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
</div>
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</card>
</div>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDETREEEXPVIEW2
\ No newline at end of file
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/GRID.vue.ftl
</#ibizinclude>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEGRIDVIEW2
\ No newline at end of file
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
.${srffilepath2(view.getCodeName())}{
display: block;
}
\ 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> <#if view.getViewStyle() != 'DEFAULT'>${view.getViewStyle()}</#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 :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
<div class='content-container'>
<div class='view-top-messages'>
</div>
<div class='view-bottom-messages'>
</div>
</div>
</card>
</div>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPPANELVIEW
\ No newline at end of file
...@@ -155,19 +155,21 @@ ...@@ -155,19 +155,21 @@
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<app-rawitem <app-rawitem
:viewparams="viewparams"
:context="context"
contentStyle="<#if ctrl.getPSSysCss()??>${ctrl.getPSSysCss().getCssName()}</#if>" contentStyle="<#if ctrl.getPSSysCss()??>${ctrl.getPSSysCss().getCssName()}</#if>"
sizeStyle="<#if ctrl.getRawItemHeight() gt 0>height: ${ctrl.getRawItemHeight()?c}px;</#if><#if ctrl.getRawItemWidth() gt 0>width: ${ctrl.getRawItemWidth()?c}px;</#if>" sizeStyle="<#if ctrl.getRawItemHeight() gt 0>height: ${ctrl.getRawItemHeight()?c}px;</#if><#if ctrl.getRawItemWidth() gt 0>width: ${ctrl.getRawItemWidth()?c}px;</#if>"
contentType="<#if ctrl.getContentType?? && ctrl.getContentType()??>${ctrl.getContentType()}</#if>" contentType="<#if ctrl.getContentType?? && ctrl.getContentType()??>${ctrl.getContentType()}</#if>"
<#if ctrl.getRawContent?? && ctrl.getRawContent()??>
rawContent="${ctrl.getRawContent()}"
</#if>
<#if ctrl.getHtmlContent?? && ctrl.getHtmlContent()??> <#if ctrl.getHtmlContent?? && ctrl.getHtmlContent()??>
htmlContent="${ctrl.getHtmlContent()}" :htmlContent='`${ctrl.getHtmlContent()}`'
</#if> </#if>
<#if ctrl.getPSSysImage?? && ctrl.getPSSysImage()??> <#if ctrl.getPSSysImage?? && ctrl.getPSSysImage()??>
<#assign img=ctrl.getPSSysImage()> <#assign img=ctrl.getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)> <#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
imageClass="${img.getCssClass()}"</#if></#if>> imageClass="${img.getCssClass()}"</#if></#if>>
<#if ctrl.getContentType?? && ctrl.getContentType() == 'RAW'>
${ctrl.getRawContent()}
</#if>
</app-rawitem> </app-rawitem>
</#if> </#if>
</div> </div>
......
...@@ -3,20 +3,21 @@ ...@@ -3,20 +3,21 @@
${item.render.code} ${item.render.code}
<#else> <#else>
<app-rawitem <app-rawitem
:viewparams="viewparams"
:context="context"
contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>" contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>"
sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>" sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>"
contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>" contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>"
caption="<#if item.getCaption?? && item.getCaption()??>${item.getCaption()}</#if>"
<#if item.getRawContent?? && item.getRawContent()??>
rawContent="${item.getRawContent()}"
</#if>
<#if item.getHtmlContent?? && item.getHtmlContent()??> <#if item.getHtmlContent?? && item.getHtmlContent()??>
htmlContent="${item.getHtmlContent()}" :htmlContent='`${item.getHtmlContent()}`'
</#if> </#if>
<#if item.getPSSysImage?? && item.getPSSysImage()??> <#if item.getPSSysImage?? && item.getPSSysImage()??>
<#assign img=item.getPSSysImage()> <#assign img=item.getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)> <#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
imageClass="${img.getCssClass()}"</#if></#if>> imageClass="${img.getCssClass()}"</#if></#if>>
<#if item.getContentType?? && item.getContentType() == 'RAW'>
${item.getRawContent()}
</#if>
</app-rawitem> </app-rawitem>
</#if> </#if>
</#assign> </#assign>
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import { PanelDetailModel,PanelRawitemModel,PanelTabPanelModel,PanelTabPageModel,PanelFieldModel,PanelContainerModel,PanelControlModel,PanelUserControlModel,PanelButtonModel } from '@/model/panel-detail'; import { PanelDetailModel,PanelRawitemModel,PanelTabPanelModel,PanelTabPageModel,PanelFieldModel,PanelContainerModel,PanelControlModel,PanelUserControlModel,PanelButtonModel } from '@/model/panel-detail';
import ${srfclassname('${ctrl.codeName}')}Model from './${srffilepath2(ctrl.codeName)}-${ctrl.getControlType()?lower_case}-model'; import ${srfclassname('${ctrl.codeName}')}Model from './${srffilepath2(ctrl.codeName)}-${ctrl.getControlType()?lower_case}-model';
import CodeListService from "@/codelist/codelist-service"; import CodeListService from "@/codelist/codelist-service";
import UIService from '@/uiservice/ui-service';
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
...@@ -89,6 +90,14 @@ import CodeListService from "@/codelist/codelist-service"; ...@@ -89,6 +90,14 @@ import CodeListService from "@/codelist/codelist-service";
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public appUIService:${srfclassname('${appde.getCodeName()}')}UIService = new ${srfclassname('${appde.getCodeName()}')}UIService(this.$store); public appUIService:${srfclassname('${appde.getCodeName()}')}UIService = new ${srfclassname('${appde.getCodeName()}')}UIService(this.$store);
<#else>
/**
* 界面UI服务对象
*
* @type {UIService}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public appUIService:UIService = new UIService(this.$store);
</#if> </#if>
/** /**
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box <input-box
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
v-model="row[column.property]" v-model="row[column.property]"
style="${item.getEditorCssStyle()}" style="${item.getEditorCssStyle()}"
type="text" type="text"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box <input-box
v-model="data.${editor.getName()?lower_case}" v-model="data.${editor.getName()?lower_case}"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-rich-text-editor :formState="formState" :value="data.${editor.name}" @change="(val) =>{this.data.${editor.name} =val}" :disabled="detailsModel.${editor.name}.disabled" :data="JSON.stringify(this.data)" name="${editor.name}" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' <#if editor.getEditorHeight() gt 0> height={${editor.getEditorHeight()?c}}</#if> style="${editor.getEditorCssStyle()}"></app-rich-text-editor> <app-rich-text-editor :formState="formState" :value="data.${editor.name}" @change="(val) =>{this.data.${editor.name} =val}" :disabled="detailsModel.${editor.name}.disabled" :data="JSON.stringify(this.data)" name="${editor.name}" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' <#if editor.getEditorHeight() gt 0> height={${editor.getEditorHeight()?c}}</#if> style="${editor.getEditorCssStyle()}"></app-rich-text-editor>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-rich-text-editor :formState="formState" :value="data.${editor.name}" @change="(val) =>{this.data.${editor.name} =val;panelEditItemChange(data, '${editor.name?lower_case}', val)}" :disabled="detailsModel.${item.getCodeName()}.disabled" :data="JSON.stringify(this.data)" name="${editor.name}" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' <#if editor.getEditorHeight() gt 0> height={${editor.getEditorHeight()?c}}</#if> style="${editor.getEditorCssStyle()}"></app-rich-text-editor> <app-rich-text-editor :formState="formState" :value="data.${editor.name}" @change="(val) =>{this.data.${editor.name} =val;panelEditItemChange(data, '${editor.name?lower_case}', val)}" :disabled="detailsModel.${item.getCodeName()}.disabled" :data="JSON.stringify(this.data)" name="${editor.name}" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' <#if editor.getEditorHeight() gt 0> height={${editor.getEditorHeight()?c}}</#if> style="${editor.getEditorCssStyle()}"></app-rich-text-editor>
</#if> </#if>
\ No newline at end of file
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<dropdown-list <dropdown-list
v-model="row[column.property]" v-model="row[column.property]"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:data="row" :data="row"
:context="context" :context="context"
:viewparams="viewparams" :viewparams="viewparams"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<dropdown-list <dropdown-list
v-model="data.${editor.name}" v-model="data.${editor.name}"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<dropdown-list <dropdown-list
v-model="row[column.property]" v-model="row[column.property]"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:data="row" :data="row"
:context="context" :context="context"
:viewparams="viewparams" :viewparams="viewparams"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<dropdown-list <dropdown-list
v-model="data.${editor.name?lower_case}" v-model="data.${editor.name?lower_case}"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<dropdown-list <dropdown-list
v-model="data.${editor.name}" v-model="data.${editor.name}"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<dropdown-list <dropdown-list
v-model="row[column.property]" v-model="row[column.property]"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
style="${item.getEditorCssStyle()}width: 100px;" style="${item.getEditorCssStyle()}width: 100px;"
:data="row" :data="row"
:context="context" :context="context"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<dropdown-list <dropdown-list
v-model="data.${editor.name?lower_case}" v-model="data.${editor.name?lower_case}"
......
<dropdown-list-mpicker <dropdown-list-mpicker
v-model="row[column.property]" v-model="row[column.property]"
:itemParam="<#if item.getEditorParam('ITEMPARAM','') != ''>${item.getEditorParam('ITEMPARAM','')}<#else>{}</#if>" :itemParam="<#if item.getEditorParam('ITEMPARAM','') != ''>${item.getEditorParam('ITEMPARAM','')}<#else>{}</#if>"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
<#if item.getPSCodeList()??> <#if item.getPSCodeList()??>
<#assign codelist=editor.getPSCodeList()> <#assign codelist=editor.getPSCodeList()>
tag='${codelist.codeName}' tag='${codelist.codeName}'
......
<dropdown-list-mpicker <dropdown-list-mpicker
v-model="row[column.property]" v-model="row[column.property]"
:itemParam="<#if item.getEditorParam('ITEMPARAM','') != ''>${item.getEditorParam('ITEMPARAM','')}<#else>{}</#if>" :itemParam="<#if item.getEditorParam('ITEMPARAM','') != ''>${item.getEditorParam('ITEMPARAM','')}<#else>{}</#if>"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
<#if item.getPSCodeList()??> <#if item.getPSCodeList()??>
<#assign codelist=editor.getPSCodeList()> <#assign codelist=editor.getPSCodeList()>
tag='${codelist.codeName}' tag='${codelist.codeName}'
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<dropdown-list-mpicker <dropdown-list-mpicker
v-model="data.${editor.name}" v-model="data.${editor.name}"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<dropdown-list-mpicker <dropdown-list-mpicker
v-model="row[column.property]" v-model="row[column.property]"
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
:viewparams="viewparams" :viewparams="viewparams"
:localContext =<@getNavigateContext editor /> :localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor /> :localParam =<@getNavigateParams editor />
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
<#if item.getPSCodeList()??> <#if item.getPSCodeList()??>
<#assign codelist=editor.getPSCodeList()> <#assign codelist=editor.getPSCodeList()>
tag='${codelist.codeName}' tag='${codelist.codeName}'
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<dropdown-list-mpicker <dropdown-list-mpicker
v-model="data.${editor.name?lower_case}" v-model="data.${editor.name?lower_case}"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-code-editor :code="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" @change="(val) =>{this.data.${editor.name} =val}" codetype="javascript" ></app-code-editor> <app-code-editor :code="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" @change="(val) =>{this.data.${editor.name} =val}" codetype="javascript" ></app-code-editor>
</#if> </#if>
\ No newline at end of file
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-radio-group <app-radio-group
v-model="data.${editor.name}" v-model="data.${editor.name}"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-radio-group <app-radio-group
v-model="row[column.property]" v-model="row[column.property]"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name="${item.name}" name="${item.name}"
:data="row" :data="row"
:context="context" :context="context"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-radio-group <app-radio-group
v-model="data.${editor.name?lower_case}" v-model="data.${editor.name?lower_case}"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-image-upload :multiple="true" :formState="formState" :ignorefieldvaluechange="ignorefieldvaluechange" @formitemvaluechange="onFormItemValueChange" :data="JSON.stringify(this.data)" name='${editor.name}' :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' style="${editor.getEditorCssStyle()}overflow: auto;"></app-image-upload> <app-image-upload :multiple="true" :formState="formState" :ignorefieldvaluechange="ignorefieldvaluechange" @formitemvaluechange="onFormItemValueChange" :data="JSON.stringify(this.data)" name='${editor.name}' :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' style="${editor.getEditorCssStyle()}overflow: auto;"></app-image-upload>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-file-upload <app-file-upload
:formState="viewState" :formState="viewState"
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
:data="JSON.stringify(row)" :data="JSON.stringify(row)"
:name='column.property' :name='column.property'
:value="row[column.property]" :value="row[column.property]"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:rowPreview="true" :rowPreview="true"
:imageOnly="true" :imageOnly="true"
:uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>'
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-file-upload <app-file-upload
:formState="viewState" :formState="viewState"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-image-upload :multiple="false" :formState="formState" :ignorefieldvaluechange="ignorefieldvaluechange" @formitemvaluechange="onFormItemValueChange" :data="JSON.stringify(this.data)" name='${editor.name}' :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' ></app-image-upload> <app-image-upload :multiple="false" :formState="formState" :ignorefieldvaluechange="ignorefieldvaluechange" @formitemvaluechange="onFormItemValueChange" :data="JSON.stringify(this.data)" name='${editor.name}' :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' ></app-image-upload>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-file-upload <app-file-upload
:formState="viewState" :formState="viewState"
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
:data="JSON.stringify(row)" :data="JSON.stringify(row)"
:name='column.property' :name='column.property'
:value="row[column.property]" :value="row[column.property]"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:rowPreview="true" :rowPreview="true"
:imageOnly="true" :imageOnly="true"
:uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>'
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-file-upload <app-file-upload
:formState="viewState" :formState="viewState"
......
<#if item.render??>
${item.render.code}
<#else>
<app-image-romate :formState="formState" :ignorefieldvaluechange="ignorefieldvaluechange" @formitemvaluechange="onFormItemValueChange" :data="this.data" name='${editor.name}' :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></app-image-romate>
</#if>
\ No newline at end of file
EDITORTYPE=PICTURE#ROMATE
\ No newline at end of file
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
<app-mpicker <app-mpicker
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
<app-mpicker <app-mpicker
:activeData="row" :activeData="row"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:curvalue="row[column.property]" :curvalue="row[column.property]"
:name="column.property" :name="column.property"
:context="context" :context="context"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
<app-mpicker <app-mpicker
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
<app-mpicker <app-mpicker
:activeData="row" :activeData="row"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:curvalue="row[column.property]" :curvalue="row[column.property]"
:name="column.property" :name="column.property"
:context="context" :context="context"
......
<div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type"> <div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type">
<textarea class="ivu-input" :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" v-model="row[column.property]" style="${item.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></textarea> <textarea class="ivu-input" :disabled="getColumnDisabled(row,column.property)" v-model="row[column.property]" style="${item.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></textarea>
</div> </div>
\ No newline at end of file
<div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type"> <div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type">
<textarea class="ivu-input" :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" v-model="row[column.property]" style="${item.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></textarea> <textarea class="ivu-input" :disabled="getColumnDisabled(row,column.property)" v-model="row[column.property]" style="${item.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></textarea>
</div> </div>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box v-model="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" type='textarea' style="${editor.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if>></input-box> <input-box v-model="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" type='textarea' style="${editor.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if>></input-box>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type"> <div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type">
<textarea class="ivu-input" :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" v-model="row[column.property]" style="${item.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></textarea> <textarea class="ivu-input" :disabled="getColumnDisabled(row,column.property)" v-model="row[column.property]" style="${item.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></textarea>
</div> </div>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type"> <div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type">
<textarea <textarea
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box v-model="data.${editor.name}" :textareaId="this.$util.createUUID()" :disabled="detailsModel.${editor.name}.disabled" type='textarea' textareaStyle="${editor.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if>></input-box> <input-box v-model="data.${editor.name}" :textareaId="this.$util.createUUID()" :disabled="detailsModel.${editor.name}.disabled" type='textarea' textareaStyle="${editor.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if>></input-box>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type"> <div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type">
<textarea class="ivu-input" rows="10" :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" v-model="row[column.property]" style="${item.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></textarea> <textarea class="ivu-input" rows="10" :disabled="getColumnDisabled(row,column.property)" v-model="row[column.property]" style="${item.getEditorCssStyle()}" <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></textarea>
</div> </div>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type"> <div class="ivu-input-wrapper ivu-input-wrapper-default ivu-input-type">
<textarea <textarea
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<i-input type="password" v-model="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></i-input> <i-input type="password" v-model="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></i-input>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box type="password" :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" v-model="row[column.property]" style="${item.getEditorCssStyle()}" @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></input-box> <input-box type="password" :disabled="getColumnDisabled(row,column.property)" v-model="row[column.property]" style="${item.getEditorCssStyle()}" @change="($event)=>{gridEditItemChange(row, column.property, $event, $index)}"></input-box>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box <input-box
type="password" type="password"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-switch name='${editor.name}' :value="this.data.${editor.name}" @change="($event)=>{this.data.${editor.name} = $event} " :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></app-switch> <app-switch name='${editor.name}' :value="this.data.${editor.name}" @change="($event)=>{this.data.${editor.name} = $event} " :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></app-switch>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-switch name='${editor.name}' :value="row[column.property]" @change="($event)=>{row[column.property] = $event;gridEditItemChange(row, column.property, $event, $index)} " :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" style="${item.getEditorCssStyle()}"></app-switch> <app-switch name='${editor.name}' :value="row[column.property]" @change="($event)=>{row[column.property] = $event;gridEditItemChange(row, column.property, $event, $index)} " :disabled="getColumnDisabled(row,column.property)" style="${item.getEditorCssStyle()}"></app-switch>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-switch <app-switch
name='${editor.name?lower_case}' name='${editor.name?lower_case}'
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box <input-box
v-model="data.${editor.name}" v-model="data.${editor.name}"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box <input-box
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
v-model="row[column.property]" v-model="row[column.property]"
<#if item.getUnitName?? && item.getUnitName()??> <#if item.getUnitName?? && item.getUnitName()??>
unit="${item.getUnitName()}" unit="${item.getUnitName()}"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box <input-box
type="number" type="number"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
:viewparams="viewparams" :viewparams="viewparams"
:localContext =<@getNavigateContext editor /> :localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor /> :localParam =<@getNavigateParams editor />
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
<#if editor.getEditorParam("PICKUPDATA", "") != "">pickUpData="${editor.getEditorParam("PICKUPDATA", "")}"</#if> <#if editor.getEditorParam("PICKUPDATA", "") != "">pickUpData="${editor.getEditorParam("PICKUPDATA", "")}"</#if>
<#-- 自填模式文本属性、值属性start --> <#-- 自填模式文本属性、值属性start -->
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
:viewparams="viewparams" :viewparams="viewparams"
:localContext =<@getNavigateContext editor /> :localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor /> :localParam =<@getNavigateParams editor />
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
<#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??> <#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??>
deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}' deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}'
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<#if editor.getPickupPSAppView().getViewType() == 'DEMPICKUPVIEW'> <#if editor.getPickupPSAppView().getViewType() == 'DEMPICKUPVIEW'>
:isSingleSelect="false" :isSingleSelect="false"
</#if> </#if>
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
<#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??> <#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??>
deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}' deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}'
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-picker <app-picker
:formState="formState" :formState="formState"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-picker <app-picker
:formState="viewState" :formState="viewState"
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
:viewparams="viewparams" :viewparams="viewparams"
:localContext =<@getNavigateContext editor /> :localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor /> :localParam =<@getNavigateParams editor />
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
<#if editor.getEditorParam("PICKUPDATA", "") != "">pickUpData="${editor.getEditorParam("PICKUPDATA", "")}"</#if> <#if editor.getEditorParam("PICKUPDATA", "") != "">pickUpData="${editor.getEditorParam("PICKUPDATA", "")}"</#if>
<#-- 自填模式文本属性、值属性start --> <#-- 自填模式文本属性、值属性start -->
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if item.getRefPickupPSAppView()??> <#if item.getRefPickupPSAppView()??>
<#assign pickupview = item.getRefPickupPSAppView()> <#assign pickupview = item.getRefPickupPSAppView()>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if item.getRefPickupPSAppView()??> <#if item.getRefPickupPSAppView()??>
<#assign pickupview = item.getRefPickupPSAppView()> <#assign pickupview = item.getRefPickupPSAppView()>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
:viewparams="viewparams" :viewparams="viewparams"
:localContext =<@getNavigateContext editor /> :localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor /> :localParam =<@getNavigateParams editor />
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
<#-- 自填模式文本属性、值属性start --> <#-- 自填模式文本属性、值属性start -->
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??> <#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
:viewparams="viewparams" :viewparams="viewparams"
:localContext =<@getNavigateContext editor /> :localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor /> :localParam =<@getNavigateParams editor />
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
<#-- 自填模式文本属性、值属性start --> <#-- 自填模式文本属性、值属性start -->
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??> <#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
:viewparams="viewparams" :viewparams="viewparams"
:localContext =<@getNavigateContext editor /> :localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor /> :localParam =<@getNavigateParams editor />
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
<#-- 自填模式文本属性、值属性start --> <#-- 自填模式文本属性、值属性start -->
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??> <#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??> <#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??> <#if editor.getPickupPSAppView()??>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
:data="JSON.stringify(row)" :data="JSON.stringify(row)"
:context="context" :context="context"
:viewparams="viewparams" :viewparams="viewparams"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:ignorefieldvaluechange="false" :ignorefieldvaluechange="false"
:value="row[column.property]" :value="row[column.property]"
<#if item.getPlaceHolder()??> <#if item.getPlaceHolder()??>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
:itemParams='<#if editor.getItemParamJO?? && editor.getItemParamJO()??>${editor.getItemParamJO()}</#if>' :itemParams='<#if editor.getItemParamJO?? && editor.getItemParamJO()??>${editor.getItemParamJO()}</#if>'
:localContext =<@getNavigateContext editor /> :localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor /> :localParam =<@getNavigateParams editor />
:disabled="detailsModel.${editor.name}.disabled" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??> <#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??> <#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-picker <app-picker
:formState="formState" :formState="formState"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-picker <app-picker
:formState="viewState" :formState="viewState"
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
:viewparams="viewparams" :viewparams="viewparams"
:localContext =<@getNavigateContext editor /> :localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor /> :localParam =<@getNavigateParams editor />
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
<#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??> <#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??>
deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}' deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}'
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-file-upload :formState="formState" :ignorefieldvaluechange="ignorefieldvaluechange" @formitemvaluechange="onFormItemValueChange" :data="JSON.stringify(this.data)" name='${editor.name}' :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' style="${editor.getEditorCssStyle()}overflow: auto;"></app-file-upload> <app-file-upload :formState="formState" :ignorefieldvaluechange="ignorefieldvaluechange" @formitemvaluechange="onFormItemValueChange" :data="JSON.stringify(this.data)" name='${editor.name}' :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' style="${editor.getEditorCssStyle()}overflow: auto;"></app-file-upload>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-file-upload <app-file-upload
:formState="viewState" :formState="viewState"
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
:data="JSON.stringify(row)" :data="JSON.stringify(row)"
:name='column.property' :name='column.property'
:value="row[column.property]" :value="row[column.property]"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:rowPreview="true" :rowPreview="true"
:uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>'
:exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>'
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-file-upload <app-file-upload
:formState="viewState" :formState="viewState"
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
:data="JSON.stringify(row)" :data="JSON.stringify(row)"
:name='column.property' :name='column.property'
:value="row[column.property]" :value="row[column.property]"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:rowPreview="true" :rowPreview="true"
:uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>' :uploadparams='<#if editor.getEditorParam('uploadparams','') != ''>${editor.getEditorParam('uploadparams','')}<#else>{}</#if>'
:exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>' :exportparams='<#if editor.getEditorParam('exportparams','') != ''>${editor.getEditorParam('exportparams','')}<#else>{}</#if>'
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<input-box <input-box
v-model="data.${editor.name}" v-model="data.${editor.name}"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<date-picker type="datetime" :transfer="true" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择时间..." :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { this.data.${editor.name} = val1 }"></date-picker> <date-picker type="datetime" :transfer="true" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择时间..." :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { this.data.${editor.name} = val1 }"></date-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<date-picker type="datetime" :transfer="true" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择时间..." :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :value="row[column.property]" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { row[column.property] = val1; gridEditItemChange(row, column.property, val1, $index)}"></date-picker> <date-picker type="datetime" :transfer="true" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择时间..." :disabled="getColumnDisabled(row,column.property)" :value="row[column.property]" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { row[column.property] = val1; gridEditItemChange(row, column.property, val1, $index)}"></date-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<date-picker <date-picker
type="datetime" type="datetime"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<date-picker type="date" :transfer="true" format="yyyy-MM-dd" placeholder="请选择时间..." :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" style="min-width: 150px;${editor.getEditorCssStyle()} <#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { this.data.${editor.name} = val1 }"></date-picker> <date-picker type="date" :transfer="true" format="yyyy-MM-dd" placeholder="请选择时间..." :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" style="min-width: 150px;${editor.getEditorCssStyle()} <#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { this.data.${editor.name} = val1 }"></date-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<date-picker type="date" :transfer="true" format="yyyy-MM-dd" placeholder="请选择时间..." :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :value="row[column.property]" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { row[column.property] = val1; gridEditItemChange(row, column.property, val1, $index)}"></date-picker> <date-picker type="date" :transfer="true" format="yyyy-MM-dd" placeholder="请选择时间..." :disabled="getColumnDisabled(row,column.property)" :value="row[column.property]" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { row[column.property] = val1; gridEditItemChange(row, column.property, val1, $index)}"></date-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<date-picker <date-picker
type="date" type="date"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="mm" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker> <time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="mm" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="row[column.property]" :transfer="true" format="mm" placeholder="请选择时间..." :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker> <time-picker :value="row[column.property]" :transfer="true" format="mm" placeholder="请选择时间..." :disabled="getColumnDisabled(row,column.property)" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker <time-picker
:transfer="true" :transfer="true"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="HH" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker> <time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="HH" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="row[column.property]" :transfer="true" format="HH" placeholder="请选择时间..." :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker> <time-picker :value="row[column.property]" :transfer="true" format="HH" placeholder="请选择时间..." :disabled="getColumnDisabled(row,column.property)" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker <time-picker
:transfer="true" :transfer="true"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<date-picker type="date" :transfer="true" format="yyyy-MM-dd" placeholder="请选择时间..." :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { this.data.${editor.name} = val1 }"></date-picker> <date-picker type="date" :transfer="true" format="yyyy-MM-dd" placeholder="请选择时间..." :value="data.${editor.name}" :disabled="detailsModel.${editor.name}.disabled" style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { this.data.${editor.name} = val1 }"></date-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<date-picker type="date" :transfer="true" format="yyyy-MM-dd" placeholder="请选择时间..." :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :value="row[column.property]" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { row[column.property] = val1; gridEditItemChange(row, column.property, val1, $index)}"></date-picker> <date-picker type="date" :transfer="true" format="yyyy-MM-dd" placeholder="请选择时间..." :disabled="getColumnDisabled(row,column.property)" :value="row[column.property]" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val1, val2) => { row[column.property] = val1; gridEditItemChange(row, column.property, val1, $index)}"></date-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<date-picker <date-picker
type="date" type="date"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="HH:mm:ss" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker> <time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="HH:mm:ss" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="row[column.property]" :transfer="true" format="HH:mm:ss" placeholder="请选择时间..." :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker> <time-picker :value="row[column.property]" :transfer="true" format="HH:mm:ss" placeholder="请选择时间..." :disabled="getColumnDisabled(row,column.property)" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker <time-picker
:transfer="true" :transfer="true"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="HH:mm" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker> <time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="HH:mm" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="row[column.property]" :transfer="true" format="HH:mm" placeholder="请选择时间..." :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker> <time-picker :value="row[column.property]" :transfer="true" format="HH:mm" placeholder="请选择时间..." :disabled="getColumnDisabled(row,column.property)" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker <time-picker
:transfer="true" :transfer="true"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="ss" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker> <time-picker :value="data.${editor.name}" :transfer="true" :disabled="detailsModel.${editor.name}.disabled" format="ss" placeholder="请选择时间..." style="min-width: 150px; ${editor.getEditorCssStyle()}<#if editor.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => {this.data.${editor.name} = val}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker :value="row[column.property]" :transfer="true" format="ss" placeholder="请选择时间..." :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker> <time-picker :value="row[column.property]" :transfer="true" format="ss" placeholder="请选择时间..." :disabled="getColumnDisabled(row,column.property)" style="${item.getEditorCssStyle()}<#if item.getEditorParam('width','') == 'auto'>width:100%;</#if>" @on-change="(val) => { row[column.property] = val; gridEditItemChange(row, column.property, val, $index)}"></time-picker>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<time-picker <time-picker
:transfer="true" :transfer="true"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<app-span <#t>
name='${editor.name}' <#t>
:value="data.${editor.name}" <#t>
editorType="ADDRESSPICKUP"
<#-- 值格式化 start -->
<#-- @author ljy -->
<#-- @update 2020.7.13 18:08 -->
<#if item.getPSEditor()?? && item.getPSEditor().getPSEditorContainer()?? && item.getPSEditor().getPSEditorContainer().getPSAppDEField?? && item.getPSEditor().getPSEditorContainer().getPSAppDEField()?? && item.getPSEditor().getPSEditorContainer().getPSAppDEField().getPSDEField()?? && item.getPSEditor().getPSEditorContainer().getPSAppDEField().getPSDEField().getDataType()??>
dataType="${item.getPSEditor().getPSEditorContainer().getPSAppDEField().getPSDEField().getDataType()}" <#t>
<#if item.getUnitName()!="">
unitName="${item.getUnitName()}" <#t>
</#if>
</#if>
<#if item.getPSEditor()?? && item.getPSEditor().getPSEditorContainer()?? && item.getPSEditor().getPSEditorContainer().getPSDEFUIMode()?? && item.getPSEditor().getPSEditorContainer().getPSDEFUIMode().getPSDEFFormItem().getValueFormat()?? && item.getPSEditor().getPSEditorContainer().getPSDEFUIMode().getPSDEFFormItem().getValueFormat()!= "%1$s">
valueFormat="${item.getPSEditor().getPSEditorContainer().getPSDEFUIMode().getPSDEFFormItem().getValueFormat()}" <#t>
</#if>
<#-- 值格式化 end -->
<#-- 数值精度 start -->
<#-- @author mos -->
<#-- @update 2020.7.16 -->
<#if item.getPSEditor()?? && item.getPSEditor().getPSEditorContainer()?? && item.getPSEditor().getPSEditorContainer().getPSAppDEField?? && item.getPSEditor().getPSEditorContainer().getPSAppDEField()?? && item.getPSEditor().getPSEditorContainer().getPSAppDEField().getPSDEField()?? && item.getPSEditor().getPSEditorContainer().getPSAppDEField().getPSDEField().getPrecision??>
<#if item.getPSEditor().getPSEditorContainer().getPSAppDEField().getPSDEField().getDataType() == 'FLOAT' && item.getPSEditor().getPSEditorContainer().getPSAppDEField().getPSDEField().getPrecision() == 0>
:precision="2"
<#else>
:precision="${item.getPSEditor().getPSEditorContainer().getPSAppDEField().getPSDEField().getPrecision()?c}"
</#if>
</#if>
<#-- 数值精度 end -->
<#if item.getPSCodeList?? && item.getPSCodeList()??>
<#assign codelist=item.getPSCodeList() />
tag='${codelist.codeName}' <#t>
codelistType='${codelist.getCodeListType()}' <#t>
<#if codelist.getOrMode?? && codelist.getOrMode()?has_content>
renderMode="${codelist.getOrMode()}" <#t>
</#if>
<#if codelist.valueSeparator?has_content>
valueSeparator="${codelist.valueSeparator}" <#t>
</#if>
<#if codelist.textSeparator?has_content>
textSeparator="${codelist.textSeparator}" <#t>
</#if>
</#if>
:data="data" <#t>
:context="context" <#t>
:viewparams="viewparams" <#t>
:localContext =<@getNavigateContext editor /> <#t>
:localParam =<@getNavigateParams editor /> <#t>
style="${editor.getEditorCssStyle()}"><#t>
</app-span><#lt>
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<app-span <#t>
name='${editor.name}' <#t>
:value="row[column.property]" <#t>
editorType="ADDRESSPICKUP"
<#if item.getPSCodeList?? && item.getPSCodeList()??>
<#assign codelist=item.getPSCodeList() />
tag='${codelist.codeName}' <#t>
codelistType='${codelist.getCodeListType()}' <#t>
<#if codelist.getOrMode?? && codelist.getOrMode()?has_content>
renderMode="${codelist.getOrMode()}" <#t>
</#if>
<#if codelist.valueSeparator?has_content>
valueSeparator="${codelist.valueSeparator}" <#t>
</#if>
<#if codelist.textSeparator?has_content>
textSeparator="${codelist.textSeparator}" <#t>
</#if>
</#if>
:data="row" <#t>
:context="context" <#t>
:viewparams="viewparams" <#t>
:localContext =<@getNavigateContext editor /> <#t>
:localParam =<@getNavigateParams editor /> <#t>
style="${editor.getEditorCssStyle()}"><#t>
</app-span><#lt>
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<app-span <#t>
:value="data.${editor.name?lower_case}" <#t>
name="${editor.name?lower_case}" <#t>
editorType="ADDRESSPICKUP"
:data="data" <#t>
:context="context" <#t>
:viewparams="viewparams" <#t>
:localContext =<@getNavigateContext editor /> <#t>
:localParam =<@getNavigateParams editor /> <#t>
<#if item.getPSCodeList?? && item.getPSCodeList()??>
<#assign codelist=item.getPSCodeList()>
tag='${codelist.codeName}' <#t>
codelistType='${codelist.getCodeListType()}' <#t>
</#if>
style="${item.getEditorCssStyle()}"> <#t>
</app-span> <#lt>
EDITORTYPE=SPAN#ADDRESSPICKUP
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<i-input v-model="data.${editor.name}" readonly disabled style="${editor.getEditorCssStyle()}"></i-input> <i-input v-model="data.${editor.name}" readonly disabled style="${editor.getEditorCssStyle()}"></i-input>
</#if> </#if>
\ No newline at end of file
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-span <#t> <app-span <#t>
name='${editor.name}' <#t> name='${editor.name}' <#t>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-span <#t> <app-span <#t>
name='${editor.name}' <#t> name='${editor.name}' <#t>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-span <#t> <app-span <#t>
:value="data.${editor.name?lower_case}" <#t> :value="data.${editor.name?lower_case}" <#t>
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-stepper name='${editor.name}' :value="this.data.${editor.name}" @change="onFormItemValueChange" :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></app-stepper> <app-stepper name='${editor.name}' :value="this.data.${editor.name}" @change="onFormItemValueChange" :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></app-stepper>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-stepper name='${editor.name}' :value="row[column.property]" @change="($event)=>{onGridItemValueChange(row,$event,$index)} " :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" style="${item.getEditorCssStyle()}"></app-stepper> <app-stepper name='${editor.name}' :value="row[column.property]" @change="($event)=>{onGridItemValueChange(row,$event,$index)} " :disabled="getColumnDisabled(row,column.property)" style="${item.getEditorCssStyle()}"></app-stepper>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-stepper <app-stepper
name='${editor.name}' name='${editor.name}'
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-slider name='${editor.name}' :value="this.data.${editor.name}" @change="onFormItemValueChange" :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></app-slider> <app-slider name='${editor.name}' :value="this.data.${editor.name}" @change="onFormItemValueChange" :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></app-slider>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-slider name='${editor.name}' :value="row[column.property]" @change="($event)=>{onGridItemValueChange(row,$event,$index)} " :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" style="${item.getEditorCssStyle()}"></app-slider> <app-slider name='${editor.name}' :value="row[column.property]" @change="($event)=>{onGridItemValueChange(row,$event,$index)} " :disabled="getColumnDisabled(row,column.property)" style="${item.getEditorCssStyle()}"></app-slider>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-slider <app-slider
name='${editor.name?lower_case}' name='${editor.name?lower_case}'
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<div style="${editor.getEditorCssStyle()}">{{data.${editor.name}}}</div> <div style="${editor.getEditorCssStyle()}">{{data.${editor.name}}}</div>
</#if> </#if>
\ No newline at end of file
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-autocomplete <app-autocomplete
:data="data" :data="data"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-autocomplete <app-autocomplete
:data="row" :data="row"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
name='${editor.name}' name='${editor.name}'
:context="context" :context="context"
:viewparams="viewparams" :viewparams="viewparams"
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-rate name='${editor.name}' :value="this.data.${editor.name}" @change="($event)=>{this.data.${editor.name} = $event} " :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></app-rate> <app-rate name='${editor.name}' :value="this.data.${editor.name}" @change="($event)=>{this.data.${editor.name} = $event} " :disabled="detailsModel.${editor.name}.disabled" style="${editor.getEditorCssStyle()}"></app-rate>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-rate name='${item.name}' :value="row[column.property]" @change="($event)=>{row[column.property] = $event; gridEditItemChange(row, column.property, $event, $index)} " :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" style="${item.getEditorCssStyle()}"></app-rate> <app-rate name='${item.name}' :value="row[column.property]" @change="($event)=>{row[column.property] = $event; gridEditItemChange(row, column.property, $event, $index)} " :disabled="getColumnDisabled(row,column.property)" style="${item.getEditorCssStyle()}"></app-rate>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-rate <app-rate
name='${editor.name?lower_case}' name='${editor.name?lower_case}'
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<div style="${editor.getEditorCssStyle()}"> <div style="${editor.getEditorCssStyle()}">
<app-checkbox :value="this.data.${editor.name}" @change="($event)=>{this.data.${editor.name} = $event} " :disabled="detailsModel.${editor.name}.disabled"></app-checkbox> <app-checkbox :value="this.data.${editor.name}" @change="($event)=>{this.data.${editor.name} = $event} " :disabled="detailsModel.${editor.name}.disabled"></app-checkbox>
......
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<div style="${item.getEditorCssStyle()}"> <div style="${item.getEditorCssStyle()}">
<app-checkbox :value="row[column.property]" @change="($event)=>{row[column.property] = $event;gridEditItemChange(row, column.property, $event, $index)} " :disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1"></app-checkbox> <app-checkbox :value="row[column.property]" @change="($event)=>{row[column.property] = $event;gridEditItemChange(row, column.property, $event, $index)} " :disabled="getColumnDisabled(row,column.property)"></app-checkbox>
</div> </div>
</#if> </#if>
\ No newline at end of file
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<div style="${item.getEditorCssStyle()}"> <div style="${item.getEditorCssStyle()}">
<app-checkbox :value="data.${editor.name?lower_case}" @change="($event)=>{data.${editor.name?lower_case} = $event;panelEditItemChange(data, '${editor.name?lower_case}', $event)} " :disabled="detailsModel.${item.getCodeName()}.disabled"></app-checkbox> <app-checkbox :value="data.${editor.name?lower_case}" @change="($event)=>{data.${editor.name?lower_case} = $event;panelEditItemChange(data, '${editor.name?lower_case}', $event)} " :disabled="detailsModel.${item.getCodeName()}.disabled"></app-checkbox>
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-checkbox-list <app-checkbox-list
v-model="data.${editor.name}" v-model="data.${editor.name}"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-checkbox-list <app-checkbox-list
v-model="row[column.property]" v-model="row[column.property]"
:disabled="row.srfuf === 1 ? (${item.getEnableCond()?c} & 2) !== 2 : (${item.getEnableCond()?c} & 1) !== 1" :disabled="getColumnDisabled(row,column.property)"
:data="row" :data="row"
:context="context" :context="context"
:viewparams="viewparams" :viewparams="viewparams"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude> <#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??> <#if editor?? && editor.render??>
${item.render.code} ${editor.render.code}
<#else> <#else>
<app-checkbox-list <app-checkbox-list
v-model="data.${editor.name?lower_case}" v-model="data.${editor.name?lower_case}"
......
...@@ -83,10 +83,6 @@ ${front_block} ...@@ -83,10 +83,6 @@ ${front_block}
<#-- BEGIN: 前台处理模式:打开HTML --> <#-- BEGIN: 前台处理模式:打开HTML -->
<#if item.getFrontProcessType() == 'OPENHTMLPAGE'> <#if item.getFrontProcessType() == 'OPENHTMLPAGE'>
<#-- 打开独立程序弹出 --> <#-- 打开独立程序弹出 -->
<#if item.isCloseEditView()>
<#-- 关闭编辑视图 -->
actionContext.closeView(null);
</#if>
const openPopupApp = (url: string) => { const openPopupApp = (url: string) => {
window.open(url, '_blank'); window.open(url, '_blank');
return null; return null;
...@@ -171,10 +167,6 @@ ${front_block} ...@@ -171,10 +167,6 @@ ${front_block}
</#if> </#if>
</#if> </#if>
<#-- END:准备参数 --> <#-- END:准备参数 -->
<#-- 关闭编辑视图 -->
<#if item.isCloseEditView()>
actionContext.closeView(null);
</#if>
<#-- BEGIN: 打开重定向视图 --> <#-- BEGIN: 打开重定向视图 -->
<#if dataview.isRedirectView()> <#if dataview.isRedirectView()>
<#-- BEGIN: 打开顶级分页视图 --> <#-- BEGIN: 打开顶级分页视图 -->
...@@ -389,6 +381,11 @@ ${front_block} ...@@ -389,6 +381,11 @@ ${front_block}
} }
</#if> </#if>
<#-- END 是否重新加载数据 --> <#-- END 是否重新加载数据 -->
<#-- BEGIN关闭编辑视图 -->
<#if item.isCloseEditView()>
actionContext.closeView(null);
</#if>
<#-- END关闭编辑视图 -->
<#-- BEGIN 后续界面行为 --> <#-- BEGIN 后续界面行为 -->
<#if item.getNextPSUIAction?? && item.getNextPSUIAction()??> <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
<#assign nextPSUIAction = item.getNextPSUIAction()/> <#assign nextPSUIAction = item.getNextPSUIAction()/>
...@@ -422,6 +419,11 @@ ${front_block} ...@@ -422,6 +419,11 @@ ${front_block}
xData.refresh(args); xData.refresh(args);
} }
</#if> </#if>
<#-- BEGIN关闭编辑视图 -->
<#if item.isCloseEditView()>
_this.closeView(null);
</#if>
<#-- END关闭编辑视图 -->
<#-- 后续界面行为 --> <#-- 后续界面行为 -->
<#if item.getNextPSUIAction?? && item.getNextPSUIAction()??> <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
<#assign nextPSUIAction = item.getNextPSUIAction()/> <#assign nextPSUIAction = item.getNextPSUIAction()/>
...@@ -465,6 +467,11 @@ ${front_block} ...@@ -465,6 +467,11 @@ ${front_block}
xData.refresh(args); xData.refresh(args);
} }
</#if> </#if>
<#-- BEGIN关闭编辑视图 -->
<#if item.isCloseEditView()>
_this.closeView(null);
</#if>
<#-- END关闭编辑视图 -->
<#-- 后续界面行为 --> <#-- 后续界面行为 -->
<#if item.getNextPSUIAction?? && item.getNextPSUIAction()??> <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
<#assign nextPSUIAction = item.getNextPSUIAction()/> <#assign nextPSUIAction = item.getNextPSUIAction()/>
...@@ -509,6 +516,10 @@ ${front_block} ...@@ -509,6 +516,10 @@ ${front_block}
xData.refresh(args); xData.refresh(args);
} }
</#if> </#if>
<#-- BEGIN关闭编辑视图 -->
<#if item.isCloseEditView()>
_this.closeView(null);
</#if>
<#-- 后续界面行为 --> <#-- 后续界面行为 -->
<#if item.getNextPSUIAction?? && item.getNextPSUIAction()??> <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
<#assign nextPSUIAction = item.getNextPSUIAction()/> <#assign nextPSUIAction = item.getNextPSUIAction()/>
...@@ -551,6 +562,10 @@ ${front_block} ...@@ -551,6 +562,10 @@ ${front_block}
if (xData && xData.refresh && xData.refresh instanceof Function) { if (xData && xData.refresh && xData.refresh instanceof Function) {
xData.refresh(args); xData.refresh(args);
} }
<#-- 关闭编辑视图 -->
<#if item.isCloseEditView()>
actionContext.closeView(null);
</#if>
<#-- 后续界面行为 --> <#-- 后续界面行为 -->
<#if item.getNextPSUIAction?? && item.getNextPSUIAction()??> <#if item.getNextPSUIAction?? && item.getNextPSUIAction()??>
<#assign nextPSUIAction = item.getNextPSUIAction()/> <#assign nextPSUIAction = item.getNextPSUIAction()/>
......
...@@ -100,12 +100,13 @@ ${backend_block} ...@@ -100,12 +100,13 @@ ${backend_block}
actionContext.$Notice.error({ title: '错误', desc: response.message }); actionContext.$Notice.error({ title: '错误', desc: response.message });
return; return;
} }
<#if item.isShowBusyIndicator()>
<#if item.getSuccessMsg?? && item.getSuccessMsg()??> <#if item.getSuccessMsg?? && item.getSuccessMsg()??>
actionContext.$Notice.success({ title: '成功', desc: '${item.getSuccessMsg()}' }); actionContext.$Notice.success({ title: '成功', desc: '${item.getSuccessMsg()}' });
<#else> <#else>
actionContext.$Notice.success({ title: '成功', desc: '${item.getCaption()}成功!' }); actionContext.$Notice.success({ title: '成功', desc: '${item.getCaption()}成功!' });
</#if> </#if>
</#if>
const _this: any = actionContext; const _this: any = actionContext;
<#-- 是否重新加载数据 --> <#-- 是否重新加载数据 -->
<#if item.isReloadData?? && item.isReloadData()> <#if item.isReloadData?? && item.isReloadData()>
...@@ -141,11 +142,12 @@ ${backend_block} ...@@ -141,11 +142,12 @@ ${backend_block}
</#if> </#if>
return response; return response;
}).catch((response: any) => { }).catch((response: any) => {
if (!response || !response.status || !response.data) { if (response && response.status && response.data) {
actionContext.$Notice.error({ title: '错误', desc: '系统异常!' }); actionContext.$Notice.error({ title: (actionContext.$t('app.commonWords.wrong') as string), desc: response.data.message });
return; return;
} }
if (response.status === 401) { if (!response || !response.status || !response.data) {
actionContext.$Notice.error({ title: (actionContext.$t('app.commonWords.wrong') as string), desc: (actionContext.$t('app.commonWords.sysException') as string) });
return; return;
} }
return response; return response;
......
...@@ -345,7 +345,7 @@ ...@@ -345,7 +345,7 @@
}); });
if(_this.portletState){ if(_this.portletState){
_this.portletStateEvent = _this.portletState.subscribe((res:any) =>{ _this.portletStateEvent = _this.portletState.subscribe((res:any) =>{
if(!Object.is(res.name,'calendar-view9')){ if(!Object.is(res.name,'${view.getName()}')){
return; return;
} }
if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){ if(Object.is(res.action,'refresh') && _this.refresh && _this.refresh instanceof Function){
......
...@@ -175,11 +175,11 @@ export default class ${srfclassname('${view.name}')}Base extends Vue { ...@@ -175,11 +175,11 @@ export default class ${srfclassname('${view.name}')}Base extends Vue {
@Watch('viewparam',{immediate: true, deep: true}) @Watch('viewparam',{immediate: true, deep: true})
onParamData(newVal: any, oldVal: any) { onParamData(newVal: any, oldVal: any) {
if(newVal){ if(newVal){
for(let key in this.viewparams){ this.viewparams = {};
delete this.viewparams[key]; if(typeof newVal == 'string') {
}
if(typeof this.viewparams == 'string') {
Object.assign(this.viewparams, JSON.parse(this.viewparam)); Object.assign(this.viewparams, JSON.parse(this.viewparam));
}else{
this.viewparams = Util.deepCopy(this.viewparam);
} }
<#if watch_viewparam_block??>${watch_viewparam_block}</#if> <#if watch_viewparam_block??>${watch_viewparam_block}</#if>
} }
...@@ -195,11 +195,11 @@ export default class ${srfclassname('${view.name}')}Base extends Vue { ...@@ -195,11 +195,11 @@ export default class ${srfclassname('${view.name}')}Base extends Vue {
@Watch('viewdata') @Watch('viewdata')
onViewData(newVal: any, oldVal: any) { onViewData(newVal: any, oldVal: any) {
const _this: any = this; const _this: any = this;
<#if viewdata_block??>${viewdata_block}</#if>
if (!Object.is(newVal, oldVal) && _this.engine) { if (!Object.is(newVal, oldVal) && _this.engine) {
this.$nextTick(()=>{ this.$nextTick(()=>{
_this.parseViewParam(); _this.parseViewParam();
_this.engine.load(); _this.engine.load();
<#if viewdata_block??>${viewdata_block}</#if>
}); });
} else if(!Object.is(newVal, oldVal) && _this.refresh && _this.refresh instanceof Function) { } else if(!Object.is(newVal, oldVal) && _this.refresh && _this.refresh instanceof Function) {
_this.refresh(); _this.refresh();
......
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
return; return;
} }
const { data: _data } = response; const { data: _data } = response;
this.engine.computeToolbarState(false,_data);
this.viewState.next({ tag: 'tabexppanel', action: 'loadmodel', data: _data});
if (_data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case}) { if (_data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case}) {
Object.assign(this.model, { dataInfo: _data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case} }); Object.assign(this.model, { dataInfo: _data.${appDataEntity.getMajorPSAppDEField().getCodeName()?lower_case} });
if(this.$tabPageExp){ if(this.$tabPageExp){
......
...@@ -8,6 +8,19 @@ ...@@ -8,6 +8,19 @@
}); });
} }
</#assign> </#assign>
<#assign import_block>
import CodeListService from "@/codelist/codelist-service";
<#if view.getPSSysCounterRef?? && view.getPSSysCounterRef()?? && view.getPSSysCounterRef().getPSAppCounter()??>
<#assign appCounter = view.getPSSysCounterRef().getPSAppCounter() />
import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/counter/${srffilepath2(appCounter.getCodeName())}/${srffilepath2(appCounter.getCodeName())}-counter';
</#if>
</#assign>
<#assign mounted_block>
<#if view.isEnableQuickGroup()>_this.loadQuickGroupModel();</#if>
</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl ../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude> </#ibizinclude>
...@@ -52,6 +65,125 @@ ...@@ -52,6 +65,125 @@
*/ */
public isExpandSearchForm: boolean = ${view.isExpandSearchForm()?c}; public isExpandSearchForm: boolean = ${view.isExpandSearchForm()?c};
<#if view.isEnableQuickGroup()>
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof ${srfclassname('${view.name}')}Base
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 快速分组数据对象
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickGroupData:any;
/**
* 快速分组是否有抛值
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public isEmitQuickGroupValue:boolean = false;
/**
* 快速分组模型
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickGroupModel:Array<any> = [];
/**
* 加载快速分组模型
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public loadQuickGroupModel(){
<#if view.getQuickGroupPSCodeList()??>
<#assign codelist=view.getQuickGroupPSCodeList() />
let quickGroupCodeList:any = {tag:'${codelist.codeName}',codelistType:'${codelist.getCodeListType()}'};
if(quickGroupCodeList.tag && Object.is(quickGroupCodeList.codelistType,"STATIC")){
const codelist = this.$store.getters.getCodeList(quickGroupCodeList.tag);
if (codelist) {
this.quickGroupModel = [...this.handleDynamicData(JSON.parse(JSON.stringify(codelist.items)))];
} else {
<#noparse>console.log(`----${quickGroupCodeList.tag}----代码表不存在`);</#noparse>
}
}else if(quickGroupCodeList.tag && Object.is(quickGroupCodeList.codelistType,"DYNAMIC")){
this.codeListService.getItems(quickGroupCodeList.tag,{},{}).then((res:any) => {
this.quickGroupModel = res;
}).catch((error:any) => {
<#noparse>console.log(`----${quickGroupCodeList.tag}----代码表不存在`);</#noparse>
});
}
</#if>
}
/**
* 处理快速分组模型动态数据部分(%xxx%)
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public handleDynamicData(inputArray:Array<any>){
if(inputArray.length >0){
inputArray.forEach((item:any) =>{
if(item.data && Object.keys(item.data).length >0){
Object.keys(item.data).forEach((name:any) =>{
let value: any = item.data[name];
if (value && typeof(value)=='string' && value.startsWith('%') && value.endsWith('%')) {
const key = (value.substring(1, value.length - 1)).toLowerCase();
if (this.context[key]) {
value = this.context[key];
} else if(this.viewparams[key]){
value = this.viewparams[key];
}
}
item.data[name] = value;
})
}
})
}
return inputArray;
}
/**
* 快速分组值变化
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickGroupValueChange($event:any){
if($event){
this.quickGroupData = $event.data;
if(this.isEmitQuickGroupValue){
this.onSearch($event);
}
}
this.isEmitQuickGroupValue = true;
}
</#if>
<#if view.getQuickPSDESearchForm()??>
/**
* 快速搜索栏数据对象
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickFormData:any;
/**
* 快速搜索栏值变化
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickFormValueChange($event:any){
this.quickFormData = $event;
this.onSearch($event);
}
</#if>
/** /**
* 快速搜索 * 快速搜索
* *
......
...@@ -2,6 +2,18 @@ ...@@ -2,6 +2,18 @@
../@MACRO/LAYOUTPANEL_VIEW.template.ftl ../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude> </#ibizinclude>
<#assign import_block>
import CodeListService from "@/codelist/codelist-service";
<#if view.getPSSysCounterRef?? && view.getPSSysCounterRef()?? && view.getPSSysCounterRef().getPSAppCounter()??>
<#assign appCounter = view.getPSSysCounterRef().getPSAppCounter() />
import ${srfclassname('${appCounter.getCodeName()}')}CounterService from '@/counter/${srffilepath2(appCounter.getCodeName())}/${srffilepath2(appCounter.getCodeName())}-counter';
</#if>
</#assign>
<#assign mounted_block>
<#if view.isEnableQuickGroup()>_this.loadQuickGroupModel();</#if>
</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_HEADER-BASE.vue.ftl ../@MACRO/VIEW_HEADER-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
...@@ -26,6 +38,125 @@ ...@@ -26,6 +38,125 @@
*/ */
public isExpandSearchForm: boolean = ${view.isExpandSearchForm()?c}; public isExpandSearchForm: boolean = ${view.isExpandSearchForm()?c};
<#if view.isEnableQuickGroup()>
/**
* 代码表服务对象
*
* @type {CodeListService}
* @memberof ${srfclassname('${view.name}')}Base
*/
public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 快速分组数据对象
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickGroupData:any;
/**
* 快速分组是否有抛值
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public isEmitQuickGroupValue:boolean = false;
/**
* 快速分组模型
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickGroupModel:Array<any> = [];
/**
* 加载快速分组模型
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public loadQuickGroupModel(){
<#if view.getQuickGroupPSCodeList()??>
<#assign codelist=view.getQuickGroupPSCodeList() />
let quickGroupCodeList:any = {tag:'${codelist.codeName}',codelistType:'${codelist.getCodeListType()}'};
if(quickGroupCodeList.tag && Object.is(quickGroupCodeList.codelistType,"STATIC")){
const codelist = this.$store.getters.getCodeList(quickGroupCodeList.tag);
if (codelist) {
this.quickGroupModel = [...this.handleDynamicData(JSON.parse(JSON.stringify(codelist.items)))];
} else {
<#noparse>console.log(`----${quickGroupCodeList.tag}----代码表不存在`);</#noparse>
}
}else if(quickGroupCodeList.tag && Object.is(quickGroupCodeList.codelistType,"DYNAMIC")){
this.codeListService.getItems(quickGroupCodeList.tag,{},{}).then((res:any) => {
this.quickGroupModel = res;
}).catch((error:any) => {
<#noparse>console.log(`----${quickGroupCodeList.tag}----代码表不存在`);</#noparse>
});
}
</#if>
}
/**
* 处理快速分组模型动态数据部分(%xxx%)
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public handleDynamicData(inputArray:Array<any>){
if(inputArray.length >0){
inputArray.forEach((item:any) =>{
if(item.data && Object.keys(item.data).length >0){
Object.keys(item.data).forEach((name:any) =>{
let value: any = item.data[name];
if (value && typeof(value)=='string' && value.startsWith('%') && value.endsWith('%')) {
const key = (value.substring(1, value.length - 1)).toLowerCase();
if (this.context[key]) {
value = this.context[key];
} else if(this.viewparams[key]){
value = this.viewparams[key];
}
}
item.data[name] = value;
})
}
})
}
return inputArray;
}
/**
* 快速分组值变化
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickGroupValueChange($event:any){
if($event){
this.quickGroupData = $event.data;
if(this.isEmitQuickGroupValue){
this.onSearch($event);
}
}
this.isEmitQuickGroupValue = true;
}
</#if>
<#if view.getQuickPSDESearchForm()??>
/**
* 快速搜索栏数据对象
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickFormData:any;
/**
* 快速搜索栏值变化
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public quickFormValueChange($event:any){
this.quickFormData = $event;
this.onSearch($event);
}
</#if>
/** /**
* 快速搜索 * 快速搜索
* *
......
...@@ -32,7 +32,8 @@ ...@@ -32,7 +32,8 @@
</#assign> </#assign>
<#assign viewdata_block> <#assign viewdata_block>
if(!Object.is(newVal, oldVal) ){ if(!Object.is(newVal, oldVal) ){
_this.parseViewParam(); _this.parseViewParam();
return;
} }
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
......
<#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW-BASE.style.ftl
</#ibizinclude>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEMPICKUPVIEW2
\ No newline at end of file
<#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW-BASE.style.ftl
</#ibizinclude>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEWFSTARTVIEW
\ No newline at end of file
<#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW-BASE.style.ftl
</#ibizinclude>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEPICKUPVIEW2
\ No newline at end of file
<#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude>
/**
* 视图唯一标识
*
* @type {string}
* @memberof ${srfclassname('${view.name}')}Base
*/
public viewUID: string = '${srffilepath2(view.getPSAppModule().getCodeName())}-${srffilepath2(view.getCodeName())}';
<#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW-BASE.style.ftl
</#ibizinclude>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDETREEEXPVIEW2
\ No newline at end of file
<#assign mounted_block>
if(this.isLoadDefault){
this.viewState.next({ tag:'gantt', action: 'load', data: this.viewparams });
}
</#assign>
<#assign self_content>
/**
* 视图默认加载
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public isLoadDefault:boolean = <#if view.isLoadDefault?? && !view.isLoadDefault()>false<#else>true</#if>;
</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl ../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude> </#ibizinclude>
......
<#assign mounted_block>
if(this.isLoadDefault){
this.viewState.next({ tag:'gantt', action: 'load', data: this.viewparams });
}
</#assign>
<#assign self_content>
/**
* 视图默认加载
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public isLoadDefault:boolean = <#if view.isLoadDefault?? && !view.isLoadDefault()>false<#else>true</#if>;
</#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl ../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude> </#ibizinclude>
......
<#ibizinclude>
../@MACRO/GRID_VIEW-BASE.vue.ftl
</#ibizinclude>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEGRIDVIEW2
\ No newline at end of file
<#ibizinclude>
../@MACRO/LAYOUTPANEL_VIEW.template.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_CONTENT-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW_BOTTOM-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/VIEW-BASE.style.ftl
</#ibizinclude>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPPANELVIEW
\ No newline at end of file
...@@ -46,7 +46,6 @@ export default { ...@@ -46,7 +46,6 @@ export default {
show: "Show", show: "Show",
records: "records", records: "records",
totle: "totle", totle: "totle",
noData: "No data",
valueVail: "Value cannot be empty", valueVail: "Value cannot be empty",
group:"Group", group:"Group",
other:"Other", other:"Other",
......
...@@ -46,7 +46,6 @@ export default { ...@@ -46,7 +46,6 @@ export default {
show: "显示", show: "显示",
records: "条", records: "条",
totle: "共", totle: "共",
noData: "无数据",
valueVail: "值不能为空", valueVail: "值不能为空",
group:"分组", group:"分组",
other:"其他", other:"其他",
......
...@@ -3,6 +3,7 @@ TARGET=PSAPPDATAENTITY ...@@ -3,6 +3,7 @@ TARGET=PSAPPDATAENTITY
</#ibiztemplate> </#ibiztemplate>
<#ibizinclude>../../../@MACRO/FUNC.ts</#ibizinclude> <#ibizinclude>../../../@MACRO/FUNC.ts</#ibizinclude>
<#assign langrestype = 'EN'/> <#assign langrestype = 'EN'/>
<#assign emptyText = 'No data.'>
export default { export default {
<#-- 实体属性输出 --> <#-- 实体属性输出 -->
...@@ -26,7 +27,7 @@ export default { ...@@ -26,7 +27,7 @@ export default {
</#if> </#if>
<#-- 实体部件输出 --> <#-- 实体部件输出 -->
<#if item.getPSControls()??> <#if item.getPSControls()??>
<#assign ctrltypes = ['FORM', 'GRID', 'SEARCHFORM', 'TOOLBAR', 'TREEVIEW']> <#assign ctrltypes = ['FORM', 'GRID','LIST', 'DATAVIEW', 'CHART', 'KANBAN', 'GANTT', 'TREEGRIDEX', 'SEARCHFORM', 'TOOLBAR', 'TREEVIEW', 'CALENDAR']>
<#list ctrltypes as ctrltype> <#list ctrltypes as ctrltype>
<#list item.getPSControls() as ctrl> <#list item.getPSControls() as ctrl>
<#if ctrl.getControlType() == ctrltype> <#if ctrl.getControlType() == ctrltype>
...@@ -39,6 +40,9 @@ export default { ...@@ -39,6 +40,9 @@ export default {
</#list> </#list>
}, },
</#if> </#if>
<#if ctrl.getControlType() == 'LIST' || ctrl.getControlType() == 'DATAVIEW' || ctrl.getControlType() == 'CHART'|| ctrl.getControlType() == 'KANBAN'|| ctrl.getControlType() == 'GANTT' || ctrl.getControlType() == 'TREEGRIDEX' || ctrl.getControlType() == 'CALENDAR' || ctrl.getControlType() == 'TREEVIEW'>
nodata:"<@getEmptyTextLanguage ctrl langrestype emptyText/>",
</#if>
<#if ctrl.getControlType() == 'GRID'> <#if ctrl.getControlType() == 'GRID'>
columns: { columns: {
<#if ctrl.getAllPSDEGridColumns()??> <#if ctrl.getAllPSDEGridColumns()??>
...@@ -47,6 +51,7 @@ export default { ...@@ -47,6 +51,7 @@ export default {
</#list> </#list>
</#if> </#if>
}, },
nodata:"<@getEmptyTextLanguage ctrl langrestype emptyText/>",
<#if ctrl.getPSDEDataExport?? && ctrl.getPSDEDataExport()?? > <#if ctrl.getPSDEDataExport?? && ctrl.getPSDEDataExport()?? >
exportColumns: { exportColumns: {
<#if ctrl.getPSDEDataExport().getPSDEDataExportItems()??> <#if ctrl.getPSDEDataExport().getPSDEDataExportItems()??>
......
...@@ -3,6 +3,7 @@ TARGET=PSAPPDATAENTITY ...@@ -3,6 +3,7 @@ TARGET=PSAPPDATAENTITY
</#ibiztemplate> </#ibiztemplate>
<#ibizinclude>../../../@MACRO/FUNC.ts</#ibizinclude> <#ibizinclude>../../../@MACRO/FUNC.ts</#ibizinclude>
<#assign langrestype = 'ZH_CN'/> <#assign langrestype = 'ZH_CN'/>
<#assign emptyText = '暂无数据'>
export default { export default {
<#-- 实体属性输出 --> <#-- 实体属性输出 -->
<#if item.getAllPSAppDEFields()??> <#if item.getAllPSAppDEFields()??>
...@@ -25,7 +26,7 @@ export default { ...@@ -25,7 +26,7 @@ export default {
</#if> </#if>
<#-- 实体部件输出 --> <#-- 实体部件输出 -->
<#if item.getPSControls()??> <#if item.getPSControls()??>
<#assign ctrltypes = ['FORM', 'GRID', 'SEARCHFORM', 'TOOLBAR', 'TREEVIEW', 'TREEGRIDEX']> <#assign ctrltypes = ['FORM', 'GRID', 'LIST', 'DATAVIEW', 'CHART','KANBAN', 'GANTT', 'TREEGRIDEX', 'SEARCHFORM', 'TOOLBAR', 'TREEVIEW', 'TREEGRIDEX', 'CALENDAR']>
<#list ctrltypes as ctrltype> <#list ctrltypes as ctrltype>
<#list item.getPSControls() as ctrl> <#list item.getPSControls() as ctrl>
<#if ctrl.getControlType() == ctrltype> <#if ctrl.getControlType() == ctrltype>
...@@ -38,6 +39,9 @@ export default { ...@@ -38,6 +39,9 @@ export default {
</#list> </#list>
}, },
</#if> </#if>
<#if ctrl.getControlType() == 'LIST' || ctrl.getControlType() == 'DATAVIEW' || ctrl.getControlType() == 'CHART' || ctrl.getControlType() == 'KANBAN'|| ctrl.getControlType() == 'GANTT' || ctrl.getControlType() == 'TREEGRIDEX' || ctrl.getControlType() == 'CALENDAR' || ctrl.getControlType() == 'TREEVIEW'>
nodata:"<@getEmptyTextLanguage ctrl langrestype emptyText/>",
</#if>
<#if ctrl.getControlType() == 'GRID'> <#if ctrl.getControlType() == 'GRID'>
columns: { columns: {
<#if ctrl.getAllPSDEGridColumns()??> <#if ctrl.getAllPSDEGridColumns()??>
...@@ -46,6 +50,7 @@ export default { ...@@ -46,6 +50,7 @@ export default {
</#list> </#list>
</#if> </#if>
}, },
nodata:"<@getEmptyTextLanguage ctrl langrestype emptyText/>",
<#if ctrl.getPSDEDataExport?? && ctrl.getPSDEDataExport()?? > <#if ctrl.getPSDEDataExport?? && ctrl.getPSDEDataExport()?? >
exportColumns: { exportColumns: {
<#if ctrl.getPSDEDataExport().getPSDEDataExportItems()??> <#if ctrl.getPSDEDataExport().getPSDEDataExportItems()??>
......
...@@ -78,7 +78,9 @@ const mock = MockAdapter.getInstance(); ...@@ -78,7 +78,9 @@ const mock = MockAdapter.getInstance();
const mockDatas: Array<any> = [ const mockDatas: Array<any> = [
<#if de.getAllPSDESampleDatas?? && de.getAllPSDESampleDatas()??> <#if de.getAllPSDESampleDatas?? && de.getAllPSDESampleDatas()??>
<#list de.getAllPSDESampleDatas() as data> <#list de.getAllPSDESampleDatas() as data>
${data.getDataJO().toString()}<#if data_has_next>,</#if> <#if data.getJOString?? && data.getJOString()??>
${data.getJOString()}<#if data_has_next>,</#if>
</#if>
</#list> </#list>
</#if> </#if>
]; ];
......
...@@ -62,6 +62,13 @@ export default class ${srfclassname('${item.getCodeName()}')}UIServiceBase exten ...@@ -62,6 +62,13 @@ export default class ${srfclassname('${item.getCodeName()}')}UIServiceBase exten
*/ */
public isEnableWorkflow:boolean = false; public isEnableWorkflow:boolean = false;
/**
* 是否支持实体主状态
*
* @memberof ${srfclassname('${item.getCodeName()}')}UIServiceBase
*/
public isEnableDEMainState:boolean = ${item.getPSDataEntity().isEnableDEMainState()?c};
/** /**
* 当前UI服务对应的数据服务对象 * 当前UI服务对应的数据服务对象
* *
......
## v7.0.0-alpha.21 [2020-10-31]
### Bug修复
修复视图类型门户部件通知嵌入视图刷新问题
修复表格行编辑传值无效和设置表格行编辑禁用无效问题
修复表格列触发行为权限控制无效问题
修复表格导出代码表转化问题
修复行编辑时合并行主键到上下文中
修复多表单编辑视图(部件视图)临时模式异常问题
修复修复表单值规则异常问题
### 功能新增及优化
#### 模板
新增导航类部件快速搜索栏提示
新增分页导航面板主状态逻辑
新增图片预览(可旋转)控件
新增多数据部件无值显示内容适配
新增分页导航视图工具栏权限状态逻辑
新增适配界面行为中显示处理
新增支持是否支持实体主状态属性
优化列表加载、刷新逻辑
优化直接内容项组件
优化甘特图部件和树表格部件加载逻辑
优化后台界面行为异常处理逻辑
优化分页导航面板切换分页刷新逻辑
优化树导航视图树节点刷新逻辑
优化表单更新项传入调用方法名称
优化行编辑值校验错误信息提示
#### 基础文件
新增图片预览(可旋转)控件
新增计算分页导航视图工具栏权限状态逻辑
新增支持是否支持实体主状态逻辑
新增切换组织部门功能
优化数据选择下拉控件(下拉列表宽度和编辑器宽度保持一致)
优化直接内容项组件
修复数据选择无值抛出null
修复登录完成user存储到localStorage
修复表格值为0不显示问题
## v7.0.0-alpha.20 [2020-10-18] ## v7.0.0-alpha.20 [2020-10-18]
### Bug修复 ### Bug修复
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册