提交 189348a6 编写于 作者: tony001's avatar tony001

Merge branch 'dev'

...@@ -8,7 +8,7 @@ ${item.render.code} ...@@ -8,7 +8,7 @@ ${item.render.code}
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.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()>
......
...@@ -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>
<#-- 网页请求 --> <#-- 网页请求 -->
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
${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('<#if langbase??>${langbase}.nodata</#if>')}}</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>
...@@ -300,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char ...@@ -300,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()??>
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
${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('<#if langbase??>${langbase}.nodata</#if>')}}</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>
...@@ -300,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char ...@@ -300,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()??>
......
...@@ -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>
......
...@@ -8,7 +8,7 @@ ${item.render.code} ...@@ -8,7 +8,7 @@ ${item.render.code}
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.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()>
......
<#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' },
...@@ -301,6 +347,39 @@ import { Environment } from '@/environments/environment'; ...@@ -301,6 +347,39 @@ import { Environment } from '@/environments/environment';
</#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>
} }
} }
...@@ -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;
} }
...@@ -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>
<#-- 网页请求 --> <#-- 网页请求 -->
......
...@@ -132,7 +132,20 @@ import { Environment } from '@/environments/environment'; ...@@ -132,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>
/** /**
* 代码表服务对象 * 代码表服务对象
* *
...@@ -141,6 +154,14 @@ import { Environment } from '@/environments/environment'; ...@@ -141,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服务对象
* *
...@@ -715,16 +736,18 @@ import { Environment } from '@/environments/environment'; ...@@ -715,16 +736,18 @@ import { Environment } from '@/environments/environment';
this.errorMessages = []; 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)) {
this.errorMessages.push(this.gridItemsModel[index][property].error); validateState = false;
} tempMessage = tempMessage + '<p>' + this.gridItemsModel[index][property].error + '<p>';
}
}
} }
} this.errorMessages.push(tempMessage);
} }
return validateState; return validateState;
} }
...@@ -855,7 +878,7 @@ import { Environment } from '@/environments/environment'; ...@@ -855,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 += '、';
...@@ -867,9 +890,9 @@ import { Environment } from '@/environments/environment'; ...@@ -867,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 = () => {
...@@ -1290,7 +1313,7 @@ import { Environment } from '@/environments/environment'; ...@@ -1290,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);
...@@ -1958,11 +1981,7 @@ import { Environment } from '@/environments/environment'; ...@@ -1958,11 +1981,7 @@ import { Environment } from '@/environments/environment';
} }
if (!await this.validateAll()) { if (!await this.validateAll()) {
if(this.errorMessages && this.errorMessages.length > 0) { if(this.errorMessages && this.errorMessages.length > 0) {
let descMessage: string = ''; this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: this.errorMessages[0] });
this.errorMessages.forEach((message: any) => {
descMessage = descMessage + '<p>' + message + '<p>';
})
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: descMessage });
} else { } else {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.rulesException') as string) }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.rulesException') as string) });
} }
...@@ -2005,10 +2024,60 @@ import { Environment } from '@/environments/environment'; ...@@ -2005,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;
} }
...@@ -2235,7 +2304,7 @@ import { Environment } from '@/environments/environment'; ...@@ -2235,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>
<#-- 网页请求 --> <#-- 网页请求 -->
...@@ -2277,7 +2346,7 @@ import { Environment } from '@/environments/environment'; ...@@ -2277,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>
<#-- 网页请求 --> <#-- 网页请求 -->
...@@ -2355,15 +2424,19 @@ import { Environment } from '@/environments/environment'; ...@@ -2355,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));
...@@ -2386,7 +2459,7 @@ import { Environment } from '@/environments/environment'; ...@@ -2386,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;
} }
......
...@@ -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>
......
...@@ -16,7 +16,51 @@ ...@@ -16,7 +16,51 @@
</#ibizinclude> </#ibizinclude>
</@ibizindent> </@ibizindent>
<#-- END:视图内容区视图消息 --> <#-- 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> </div>
<#-- BEGIN:视图底部视图消息 --> <#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=8> <@ibizindent blank=8>
......
...@@ -161,7 +161,7 @@ ...@@ -161,7 +161,7 @@
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.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()>
......
...@@ -9,7 +9,7 @@ ${item.render.code} ...@@ -9,7 +9,7 @@ ${item.render.code}
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.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()>
......
<#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
...@@ -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()/>
......
...@@ -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>
} }
......
...@@ -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>
/** /**
* 快速搜索 * 快速搜索
* *
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册