提交 0ae90f83 编写于 作者: tony001's avatar tony001

Merge remote-tracking branch 'local/master' into dev --- fix5

上级 ebedb723
...@@ -76,6 +76,7 @@ ...@@ -76,6 +76,7 @@
</template> </template>
<#assign import_block> <#assign import_block>
import CodeListService from "@service/app/codelist-service"; import CodeListService from "@service/app/codelist-service";
import { FormItemModel } from '@/model/form-detail';
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
...@@ -85,15 +86,46 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -85,15 +86,46 @@ import CodeListService from "@service/app/codelist-service";
* 代码表服务对象 * 代码表服务对象
* *
* @type {CodeListService} * @type {CodeListService}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public codeListService:CodeListService = new CodeListService({ $store: this.$store }); public codeListService:CodeListService = new CodeListService({ $store: this.$store });
/**
* 界面UI服务对象
*
* @type {${srfclassname('${appde.getCodeName()}')}UIService}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public appUIService:${srfclassname('${appde.getCodeName()}')}UIService = new ${srfclassname('${appde.getCodeName()}')}UIService(this.$store);
/**
* 界面行为模型
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public ActionModel:any ={
<#if ctrl.getPSUIActions()??>
<#list ctrl.getPSUIActions() as item>
${item.getUIActionTag()}: { name: '${item.getUIActionTag()}',disabled: false, visabled: true,noprivdisplaymode:<#if item.getNoPrivDisplayMode(view)??>${item.getNoPrivDisplayMode(view)}</#if>,dataaccaction: '<#if item.getDataAccessAction()??>${item.getDataAccessAction()}</#if>', target: '${item.getActionTarget()}'}<#if item_has_next>,</#if>
</#list>
</#if>
};
/**
* 应用状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public appStateEvent: Subscription | undefined;
/** /**
* 获取多项数据 * 获取多项数据
* *
* @returns {any[]} * @returns {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public getDatas(): any[] { public getDatas(): any[] {
return this.selections; return this.selections;
...@@ -103,7 +135,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -103,7 +135,7 @@ import CodeListService from "@service/app/codelist-service";
* 获取单项树 * 获取单项树
* *
* @returns {*} * @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public getData(): any { public getData(): any {
return this.selections[0]; return this.selections[0];
...@@ -116,195 +148,172 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -116,195 +148,172 @@ import CodeListService from "@service/app/codelist-service";
* 打开新建数据视图 * 打开新建数据视图
* *
* @type {any} * @type {any}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected newdata: any; @Prop() public newdata: any;
</#if> </#if>
<#if logic.getPFLogicCodeType() == 'APP_OPENDATA'> <#if logic.getPFLogicCodeType() == 'APP_OPENDATA'>
/** /**
* 打开编辑数据视图 * 打开编辑数据视图
* *
* @type {any} * @type {any}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected opendata: any; @Prop() public opendata: any;
</#if> </#if>
</#list> </#list>
</#if> </#if>
/**
* 界面UI服务对象
*
* @type {${srfclassname('${appde.getCodeName()}')}UIService}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public appUIService:${srfclassname('${appde.getCodeName()}')}UIService = new ${srfclassname('${appde.getCodeName()}')}UIService(this.$store);
/**
* 界面行为模型
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public ActionModel:any ={
<#if ctrl.getPSUIActions()??>
<#list ctrl.getPSUIActions() as item>
${item.getUIActionTag()}: { name: '${item.getUIActionTag()}',disabled: false, visabled: true,noprivdisplaymode:<#if item.getNoPrivDisplayMode(view)??>${item.getNoPrivDisplayMode(view)}</#if>,dataaccaction: '<#if item.getDataAccessAction()??>${item.getDataAccessAction()}</#if>', target: '${item.getActionTarget()}'}<#if item_has_next>,</#if>
</#list>
</#if>
};
/** /**
* 显示处理提示 * 显示处理提示
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop({ default: true }) protected showBusyIndicator?: boolean; @Prop({ default: true }) public showBusyIndicator?: boolean;
/** /**
* 部件行为--update * 部件行为--update
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected updateAction!: string; @Prop() public updateAction!: string;
/** /**
* 部件行为--fetch * 部件行为--fetch
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected fetchAction!: string; @Prop() public fetchAction!: string;
/** /**
* 部件行为--remove * 部件行为--remove
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected removeAction!: string; @Prop() public removeAction!: string;
/** /**
* 部件行为--load * 部件行为--load
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected loadAction!: string; @Prop() public loadAction!: string;
/** /**
* 部件行为--loaddraft * 部件行为--loaddraft
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected loaddraftAction!: string; @Prop() public loaddraftAction!: string;
/** /**
* 部件行为--create * 部件行为--create
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected createAction!: string; @Prop() public createAction!: string;
/** /**
* 当前页 * 当前页
* *
* @type {number} * @type {number}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected curPage: number = 1; public curPage: number = 1;
/** /**
* 数据 * 数据
* *
* @type {any[]} * @type {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected items: any[] = []; public items: any[] = [];
/** /**
* 是否支持分页 * 是否支持分页
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected isEnablePagingBar: boolean = ${ctrl.isEnablePagingBar()?c}; public isEnablePagingBar: boolean = ${ctrl.isEnablePagingBar()?c};
/** /**
* 是否禁用排序 * 是否禁用排序
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected isNoSort: boolean = ${ctrl.isNoSort()?c}; public isNoSort: boolean = ${ctrl.isNoSort()?c};
/** /**
* 排序方向 * 排序方向
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected minorSortDir: string = '<#if ctrl.getMinorSortDir()??>${ctrl.getMinorSortDir()}</#if>'; public minorSortDir: string = '<#if ctrl.getMinorSortDir()??>${ctrl.getMinorSortDir()}</#if>';
/** /**
* 排序字段 * 排序字段
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected minorSortPSDEF: string = '<#if ctrl.getMinorSortPSDEF()??>${ctrl.getMinorSortPSDEF().getCodeName()?lower_case}</#if>'; public minorSortPSDEF: string = '<#if ctrl.getMinorSortPSDEF()??>${ctrl.getMinorSortPSDEF().getCodeName()?lower_case}</#if>';
/** /**
* 分页条数 * 分页条数
* *
* @type {number} * @type {number}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected limit: number = ${ctrl.getPagingSize()?c}; public limit: number = ${ctrl.getPagingSize()?c};
/** /**
* 是否显示标题 * 是否显示标题
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected isHideHeader: boolean = ${ctrl.isHideHeader()?c}; public isHideHeader: boolean = ${ctrl.isHideHeader()?c};
/** /**
* 是否默认选中第一条数据 * 是否默认选中第一条数据
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop({ default: false }) protected isSelectFirstDefault!: boolean; @Prop({ default: false }) public isSelectFirstDefault!: boolean;
/** /**
* 是否单选 * 是否单选
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected isSingleSelect?: boolean; @Prop() public isSingleSelect?: boolean;
/** /**
* 选中数据字符串 * 选中数据字符串
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() protected selectedData?: string; @Prop() public selectedData?: string;
/** /**
* 选中值变化 * 选中值变化
* *
* @param {*} newVal * @param {*} newVal
* @param {*} oldVal * @param {*} oldVal
* @memberof MainTree * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Watch('selectedData') @Watch('selectedData')
public onValueChange(newVal: any, oldVal: any) { public onValueChange(newVal: any, oldVal: any) {
...@@ -325,20 +334,6 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -325,20 +334,6 @@ import CodeListService from "@service/app/codelist-service";
} }
} }
/**
* 获取表格行模型
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getGridRowModel(){
return {
<#list ctrl.getPSDEGridEditItems() as edititem>
${edititem.getName()}: new FormItemModel(),
</#list>
}
}
/** /**
* 表格行数据默认激活模式 * 表格行数据默认激活模式
* 0 不激活 * 0 不激活
...@@ -346,33 +341,40 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -346,33 +341,40 @@ import CodeListService from "@service/app/codelist-service";
* 2 双击激活 * 2 双击激活
* *
* @type {(number | 0 | 1 | 2)} * @type {(number | 0 | 1 | 2)}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop({default: 2}) protected gridRowActiveMode!: number; @Prop({default: 2}) public gridRowActiveMode!: number;
/** /**
* 是否开启行编辑 * 是否开启行编辑
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop({default: false}) protected isOpenEdit!: boolean; @Prop({default: false}) public isOpenEdit!: boolean;
/** /**
* 实际是否开启行编辑 * 实际是否开启行编辑
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected actualIsOpenEdit: boolean = this.isOpenEdit; public actualIsOpenEdit: boolean = this.isOpenEdit;
/** /**
* 总条数 * 总条数
* *
* @type {number} * @type {number}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected totalrow: number = 0; public totalrow: number = 0;
/**
* 表格更新默认值项
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public defaultUpdateItems:Array<any> =[<#list ctrl.getPSDEGridEditItems() as editItem><#if editItem.getUpdateDV?? && editItem.getUpdateDV()?? && !(editItem.getUpdateDV() == '')>'${editItem.getCodeName()?lower_case}'</#if><#if editItem_has_next>,</#if></#list>];
/** /**
* 选中行数据 * 选中行数据
...@@ -380,7 +382,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -380,7 +382,7 @@ import CodeListService from "@service/app/codelist-service";
* @type {any[]} * @type {any[]}
* @memberof Main * @memberof Main
*/ */
protected selections: any[] = []; public selections: any[] = [];
/** /**
* 拦截行选中 * 拦截行选中
...@@ -388,41 +390,51 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -388,41 +390,51 @@ import CodeListService from "@service/app/codelist-service";
* @type {boolean} * @type {boolean}
* @memberof Main * @memberof Main
*/ */
protected stopRowClick: boolean = false; public stopRowClick: boolean = false;
<#if ctrl.getAggMode() == "ALL"> <#if ctrl.getAggMode() == "ALL">
/** /**
* 表格聚合行为 * 表格聚合行为
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected aggAction:string ='<#if ctrl.getAggPSDEAction()??>${ctrl.getAggPSDEAction().getCodeName()}</#if>'; public aggAction:string ='<#if ctrl.getAggPSDEAction()??>${ctrl.getAggPSDEAction().getCodeName()}</#if>';
/** /**
* 远程数据 * 远程数据
* *
* @type {any} * @type {any}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected remoteData:any = {}; public remoteData:any = {};
</#if>
<#if ctrl.getQuickPSDEToolbar?? && ctrl.getQuickPSDEToolbar()??>
<#assign quickToolbar = ctrl.getQuickPSDEToolbar()/>
${P.getCtrlCode(quickToolbar, 'CONTROL.vue').code}
</#if>
<#if ctrl.getBatchPSDEToolbar?? && ctrl.getBatchPSDEToolbar()??>
<#assign batchToolbar = ctrl.getBatchPSDEToolbar()/>
${P.getCtrlCode(batchToolbar, 'CONTROL.vue').code}
</#if> </#if>
/** /**
* 表格是否显示 * 表格是否显示
* *
* @type {boolean} * @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected isDisplay:boolean = <#if ctrl.getAggMode() == "ALL">false<#else>true</#if>; public isDisplay:boolean = <#if ctrl.getAggMode() == "ALL">false<#else>true</#if>;
/** /**
* 部件刷新 * 部件刷新
* *
* @param {any[]} args * @param {any[]} args
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected refresh(args: any[]): void { public refresh(args: any[]): void {
this.load(); this.load();
} }
...@@ -440,41 +452,84 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -440,41 +452,84 @@ import CodeListService from "@service/app/codelist-service";
* @type {boolean} * @type {boolean}
* @memberof AppEmbedPicker * @memberof AppEmbedPicker
*/ */
protected isDragendCol: boolean = <#if app.getPSApplicationUI()??>${app.getPSApplicationUI().getPFStyleParam('EL-TABLE.ISDRAGENDCOL',false)?c}<#else>false</#if>; public isDragendCol: boolean = <#if app.getPSApplicationUI()??>${app.getPSApplicationUI().getPFStyleParam('EL-TABLE.ISDRAGENDCOL',false)?c}<#else>false</#if>;
<#-- public isDragendCol: boolean = true; -->
/** /**
* 所有列成员 * 所有列成员
* *
* @type {any[]} * @type {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected allColumns: any[] = [ public allColumns: any[] = [
<#if ctrl.getAllPSDEGridColumns()??> <#if ctrl.getAllPSDEGridColumns()??>
<#list ctrl.getAllPSDEGridColumns() as column> <#list ctrl.getAllPSDEGridColumns() as column>
{ {
name: '${column.getName()?lower_case}', name: '${column.getName()?lower_case}',
label: '${column.getCaption()}', label: '${column.getCaption()}',
langtag: '<#if langbase??>${langbase}.columns.${column.getName()?lower_case}</#if>', langtag: '<#if langbase??>${langbase}.columns.${column.getName()?lower_case}</#if>',
show: <#if column.isHideDefault()>false<#else>true</#if>, show: <#if column.isHideDefault()>false<#else>true</#if>,
util: '${column.getWidthUnit()}' util: '${column.getWidthUnit()}',
<#-- BEGIN:是否支持行编辑 -->
<#if ctrl.isEnableRowEdit() && column.isEnableRowEdit()>
isEnableRowEdit: true,
<#else>
isEnableRowEdit: false,
</#if>
<#-- END:是否支持行编辑 -->
}, },
</#list> </#list>
</#if> </#if>
] ]
/**
* 表格模型集合
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public gridItemsModel: any[] = [];
/**
* 获取界面行为权限状态
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getActionState(data:any){
let targetData:any = this.transformData(data);
let tempActionModel:any = JSON.parse(JSON.stringify(this.ActionModel));
ViewTool.calcActionItemAuthState(targetData,tempActionModel,this.appUIService);
return tempActionModel;
}
/**
* 获取表格行模型
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getGridRowModel(){
return {
<#list ctrl.getPSDEGridEditItems() as edititem>
${edititem.getName()}: new FormItemModel(),
</#list>
}
}
/** /**
* 属性值规则 * 属性值规则
* *
* @type {*} * @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected rules: any = { public rules: any = {
<#list ctrl.getPSDEGridEditItems() as edititem> <#list ctrl.getPSDEGridEditItems() as edititem>
${edititem.getName()}: [ ${edititem.getName()}: [
{ required: <#if edititem.isAllowEmpty()>false<#else>true</#if>, validator: (rule:any, value:any, callback:any) => { return (rule.required && (value === null || value === undefined || value === "")) ? false : true;}, message: <#if edititem.getCaption?? && edititem.getCaption()??>'${edititem.getCaption()} 值不能为空'<#else>'值不能为空'</#if>, trigger: 'change' }, { required: <#if edititem.isAllowEmpty()>false<#else>true</#if>, validator: (rule:any, value:any, callback:any) => { return (rule.required && (value === null || value === undefined || value === "")) ? false : true;}, message: <#if edititem.getCaption?? && edititem.getCaption()??>'${edititem.getCaption()} 值不能为空'<#else>'值不能为空'</#if>, trigger: 'change' },
{ required: <#if edititem.isAllowEmpty()>false<#else>true</#if>, validator: (rule:any, value:any, callback:any) => { return (rule.required && (value === null || value === undefined || value === "")) ? false : true;}, message: <#if edititem.getCaption?? && edititem.getCaption()??>'${edititem.getCaption()} 值不能为空'<#else>'值不能为空'</#if>, trigger: 'blur' }, { required: <#if edititem.isAllowEmpty()>false<#else>true</#if>, validator: (rule:any, value:any, callback:any) => { return (rule.required && (value === null || value === undefined || value === "")) ? false : true;}, message: <#if edititem.getCaption?? && edititem.getCaption()??>'${edititem.getCaption()} 值不能为空'<#else>'值不能为空'</#if>, trigger: 'blur' },
<#if ctrl.getPSGEIDEFValueRules?? && ctrl.getPSGEIDEFValueRules()??> <#if ctrl.getPSDEGridEditItemVRs?? && ctrl.getPSDEGridEditItemVRs()??>
<#list ctrl.getPSGEIDEFValueRules() as fideValueRule> <#list ctrl.getPSDEGridEditItemVRs() as fideValueRule>
<#if fideValueRule.getPSDEGridEditItemName() == edititem.getName()>
<#if fideValueRule.getPSSysValueRule()??> <#if fideValueRule.getPSSysValueRule()??>
<#assign valueRule = fideValueRule.getPSSysValueRule()/> <#assign valueRule = fideValueRule.getPSSysValueRule()/>
<#if valueRule.getRuleType?? && valueRule.getRuleType()??> <#if valueRule.getRuleType?? && valueRule.getRuleType()??>
...@@ -485,12 +540,57 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -485,12 +540,57 @@ import CodeListService from "@service/app/codelist-service";
</#if> </#if>
</#if> </#if>
</#if> </#if>
</#if>
</#list> </#list>
</#if> </#if>
], ],
</#list> </#list>
} }
/**
* 表格行编辑项校验
*
* @param {string} property 属性名
* @param {*} data 行数据
* @param {number} rowIndex 行索引
* @returns Promise<any>
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public validate(property:string, data:any, rowIndex:number):Promise<any>{
return new Promise((resolve, reject) => {
this.$util.validateItem(property,data,this.rules).then(()=>{
this.gridItemsModel[rowIndex][property].setError(null);
resolve(true);
}).catch(({ errors, fields }) => {
this.gridItemsModel[rowIndex][property].setError(errors[0].message);
resolve(false);
});
});
}
/**
* 校验所有修改过的编辑项
*
* @returns Promise<any>
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public async validateAll(){
let validateState = true;
let index = -1;
for(let item of this.items){
index++;
if(item.rowDataState === "create" || item.rowDataState === "update"){
for(let property of Object.keys(this.rules)){
if(!await this.validate(property,item,index)){
validateState = false;
}
}
}
}
return validateState;
}
/** /**
* 表格数据加载 * 表格数据加载
* *
...@@ -573,44 +673,25 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -573,44 +673,25 @@ import CodeListService from "@service/app/codelist-service";
}); });
} }
/**
* 表格模型集合
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public gridItemsModel: any[] = [];
/**
* 获取界面行为权限状态
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getActionState(data:any){
let targetData:any = this.transformData(data);
let tempActionModel:any = JSON.parse(JSON.stringify(this.ActionModel));
ViewTool.calcActionItemAuthState(targetData,tempActionModel,this.appUIService);
return tempActionModel;
}
/** /**
* 删除 * 删除
* *
* @param {any[]} datas * @param {any[]} datas
* @returns {Promise<any>} * @returns {Promise<any>}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected async remove(datas: any[]): Promise<any> { public async remove(datas: any[]): Promise<any> {
if(!this.removeAction){ if(!this.removeAction){
this.$Notice.error({ title: '错误', desc: '${view.getName()}视图表格removeAction参数未配置' }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: '${view.getName()}'+(this.$t('app.gridpage.notConfig.removeAction') as string) });
return; return;
} }
let _datas:any[] = []; let _datas:any[] = [];
datas.forEach((record: any, index: number) => { datas.forEach((record: any, index: number) => {
if (!record.srfkey) { if (Object.is(record.srfuf,"0")) {
this.items.some((val: any, num: number) =>{ this.items.some((val: any, num: number) =>{
if(JSON.stringify(val) == JSON.stringify(record)){ if(JSON.stringify(val) == JSON.stringify(record)){
this.items.splice(num,1); this.items.splice(num,1);
this.gridItemsModel.splice(num,1);
return true; return true;
} }
}); });
...@@ -635,9 +716,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -635,9 +716,9 @@ import CodeListService from "@service/app/codelist-service";
}); });
if (_datas.length < 5) { if (_datas.length < 5) {
dataInfo = dataInfo + ' 共' + _datas.length + '条数据'; 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 + '...' + ' 共' + _datas.length + '条数据'; dataInfo = dataInfo + '...' + ' '+(this.$t('app.gridpage.totle') as string) + _datas.length + (this.$t('app.gridpage.desc2') as string);
} }
const removeData = () => { const removeData = () => {
...@@ -652,10 +733,10 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -652,10 +733,10 @@ import CodeListService from "@service/app/codelist-service";
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
post.then((response: any) => { post.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
this.$Notice.error({ title: '', desc: '删除数据失败,' + response.info }); this.$Notice.error({ title: '', desc: (this.$t('app.gridpage.delDataFail') as string)+',' + response.info });
return; return;
} else { } else {
this.$Notice.success({ title: '', desc: '删除成功!' }); this.$Notice.success({ title: '', desc: (this.$t('app.gridpage.delSuccess') as string) });
} }
//删除items中已删除的项 //删除items中已删除的项
console.log(this.items); console.log(this.items);
...@@ -663,6 +744,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -663,6 +744,7 @@ import CodeListService from "@service/app/codelist-service";
this.items.some((item:any,index:number)=>{ this.items.some((item:any,index:number)=>{
if(Object.is(item.srfkey,data.srfkey)){ if(Object.is(item.srfkey,data.srfkey)){
this.items.splice(index,1); this.items.splice(index,1);
this.gridItemsModel.splice(index,1);
return true; return true;
} }
}); });
...@@ -676,7 +758,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -676,7 +758,7 @@ import CodeListService from "@service/app/codelist-service";
return; return;
} }
if (!response || !response.status || !response.data) { if (!response || !response.status || !response.data) {
this.$Notice.error({ title: '错误', desc: '系统异常' }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.sysException') as string) });
reject(response); reject(response);
return; return;
} }
...@@ -687,8 +769,8 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -687,8 +769,8 @@ import CodeListService from "@service/app/codelist-service";
dataInfo = dataInfo.replace(/[null]/g, '').replace(/[undefined]/g, ''); dataInfo = dataInfo.replace(/[null]/g, '').replace(/[undefined]/g, '');
this.$Modal.confirm({ this.$Modal.confirm({
title: '警告', title: (this.$t('app.commonWords.warning') as string),
content: '确认要删除 ' + dataInfo + ',删除操作将不可恢复?', content: (this.$t('app.gridpage.confirmDel') as string)+' ' + dataInfo + ','+(this.$t('app.gridpage.notRecoverable') as string),
onOk: () => { onOk: () => {
removeData(); removeData();
}, },
...@@ -702,17 +784,17 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -702,17 +784,17 @@ import CodeListService from "@service/app/codelist-service";
* 批量添加 * 批量添加
* *
* @param {*} [arg={}] * @param {*} [arg={}]
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected addBatch(arg: any = {}): void { public addBatch(arg: any = {}): void {
if(!this.fetchAction){ if(!this.fetchAction){
this.$Notice.error({ title: '错误', desc: '${view.getName()}视图表格fetchAction参数未配置' }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: '${view.getName()}'+(this.$t('app.gridpage.notConfig.fetchAction') as string) });
return; return;
} }
if(!arg){ if(!arg){
arg = {}; arg = {};
} }
console.error("批量添加未实现"); console.error((this.$t('app.gridpage.notBatch') as string));
<#-- const post: Promise<any> = this.$http.post(this.fetchAction, arg, this.showBusyIndicator); <#-- const post: Promise<any> = this.$http.post(this.fetchAction, arg, this.showBusyIndicator);
post.then((response: any) => { post.then((response: any) => {
if (response.ret !== 200) { if (response.ret !== 200) {
...@@ -733,7 +815,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -733,7 +815,7 @@ import CodeListService from "@service/app/codelist-service";
* 数据导入 * 数据导入
* *
* @param {*} data * @param {*} data
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public importExcel(data:any ={}):void{ public importExcel(data:any ={}):void{
//导入excel //导入excel
...@@ -753,12 +835,12 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -753,12 +835,12 @@ import CodeListService from "@service/app/codelist-service";
</#if> </#if>
} }
if(Object.keys(importDataModel).length == 0){ if(Object.keys(importDataModel).length == 0){
this.$Notice.warning({ title: '警告', desc: '请配置数据导入项' }); this.$Notice.warning({ 'title': (this.$t("app.utilview.warning") as string), 'desc': (this.$t("app.utilview.info") as string) });
return; return;
} }
const view:any ={ const view:any ={
viewname: 'app-data-upload', viewname: 'app-data-upload',
title: '导入数据', title: this.$t("app.utilview.importview"),
width: 900, width: 900,
height: 700 height: 700
} }
...@@ -777,9 +859,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -777,9 +859,9 @@ import CodeListService from "@service/app/codelist-service";
* 所有导出列成员 * 所有导出列成员
* *
* @type {any[]} * @type {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected allExportColumns: any[] = [ public allExportColumns: any[] = [
<#if ctrl.getPSDEDataExport().getPSDEDataExportItems()??> <#if ctrl.getPSDEDataExport().getPSDEDataExportItems()??>
<#list ctrl.getPSDEDataExport().getPSDEDataExportItems() as column> <#list ctrl.getPSDEDataExport().getPSDEDataExportItems() as column>
{ {
...@@ -798,9 +880,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -798,9 +880,9 @@ import CodeListService from "@service/app/codelist-service";
* 数据导出 * 数据导出
* *
* @param {*} data * @param {*} data
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected exportExcel(data: any = {}): void { public exportExcel(data: any = {}): void {
// 导出Excel // 导出Excel
const doExport = async (_data:any) => { const doExport = async (_data:any) => {
const tHeader: Array<any> = []; const tHeader: Array<any> = [];
...@@ -818,7 +900,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -818,7 +900,7 @@ import CodeListService from "@service/app/codelist-service";
excel.export_json_to_excel({ excel.export_json_to_excel({
header: tHeader, //表头 必填 header: tHeader, //表头 必填
data, //具体数据 必填 data, //具体数据 必填
filename: "${ctrl.getPSAppDataEntity().getLogicName()}表", //非必填 filename: "${ctrl.getPSAppDataEntity().getLogicName()}"+(this.$t('app.gridpage.grid') as string), //非必填
autoWidth: true, //非必填 autoWidth: true, //非必填
bookType: "xlsx" //非必填 bookType: "xlsx" //非必填
}); });
...@@ -858,7 +940,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -858,7 +940,7 @@ import CodeListService from "@service/app/codelist-service";
</#if> </#if>
post.then((response: any) => { post.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
this.$Notice.error({ title: '', desc: '数据导出失败,' + response.info }); this.$Notice.error({ title: '', desc: (this.$t('app.gridpage.exportFail') as string)+',' + response.info });
return; return;
} }
try { try {
...@@ -870,7 +952,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -870,7 +952,7 @@ import CodeListService from "@service/app/codelist-service";
if (response && response.status === 401) { if (response && response.status === 401) {
return; return;
} }
this.$Notice.error({ title: '', desc: '数据导出失败' }); this.$Notice.error({ title: '', desc: (this.$t('app.gridpage.exportFail') as string) });
}); });
} }
...@@ -881,7 +963,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -881,7 +963,7 @@ import CodeListService from "@service/app/codelist-service";
* @param {*} filterVal * @param {*} filterVal
* @param {*} jsonData * @param {*} jsonData
* @returns {[]} * @returns {[]}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public async formatExcelData(filterVal:any, jsonData:any) { public async formatExcelData(filterVal:any, jsonData:any) {
let codelistColumns:Array<any> = [ let codelistColumns:Array<any> = [
...@@ -906,11 +988,11 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -906,11 +988,11 @@ import CodeListService from "@service/app/codelist-service";
<#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>
...@@ -937,16 +1019,17 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -937,16 +1019,17 @@ import CodeListService from "@service/app/codelist-service";
return jsonData.map((v:any) => filterVal.map((j:any) => v[j])) return jsonData.map((v:any) => filterVal.map((j:any) => v[j]))
} }
/** /**
* 解析代码表和vlaue,设置items * 解析代码表和vlaue,设置items
* *
* @private * @public
* @param {any[]} items 代码表数据 * @param {any[]} items 代码表数据
* @param {*} value * @param {*} value
* @returns {*} * @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
private getCodelistValue(items: any[], value: any, codelist: any,){ public getCodelistValue(items: any[], value: any, codelist: any,){
if(!value){ if(!value){
return this.$t('codelist.'+codelist.srfkey+'.empty'); return this.$t('codelist.'+codelist.srfkey+'.empty');
} }
...@@ -993,13 +1076,13 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -993,13 +1076,13 @@ import CodeListService from "@service/app/codelist-service";
/** /**
* 获取代码项 * 获取代码项
* *
* @private * @public
* @param {any[]} items * @param {any[]} items
* @param {*} value * @param {*} value
* @returns {*} * @returns {*}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
private getItem(items: any[], value: any, codelist: any): any { public getItem(items: any[], value: any, codelist: any): any {
const arr: Array<any> = items.filter(item => {return item.value == value}); const arr: Array<any> = items.filter(item => {return item.value == value});
if (arr.length !== 1) { if (arr.length !== 1) {
return undefined; return undefined;
...@@ -1014,18 +1097,18 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1014,18 +1097,18 @@ import CodeListService from "@service/app/codelist-service";
/** /**
* 生命周期 * 生命周期
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected created(): void { public created(): void {
this.afterCreated(); this.afterCreated();
} }
/** /**
* 执行created后的逻辑 * 执行created后的逻辑
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected afterCreated(){ public afterCreated(){
this.setColState(); this.setColState();
if (this.viewState) { if (this.viewState) {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => { this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
...@@ -1043,26 +1126,39 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1043,26 +1126,39 @@ import CodeListService from "@service/app/codelist-service";
} }
}); });
} }
if(AppCenterService && AppCenterService.getMessageCenter()){
this.appStateEvent = AppCenterService.getMessageCenter().subscribe(({ name, action, data }) =>{
if(!Object.is(name,"${ctrl.getPSAppDataEntity().getCodeName()}")){
return;
}
if(Object.is(action,'appRefresh')){
this.refresh([data]);
}
})
}
} }
/** /**
* vue 生命周期 * vue 生命周期
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected destroyed() { public destroyed() {
this.afterDestroy(); this.afterDestroy();
} }
/** /**
* 执行destroyed后的逻辑 * 执行destroyed后的逻辑
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected afterDestroy() { public afterDestroy() {
if (this.viewStateEvent) { if (this.viewStateEvent) {
this.viewStateEvent.unsubscribe(); this.viewStateEvent.unsubscribe();
} }
if(this.appStateEvent){
this.appStateEvent.unsubscribe();
}
<#if destroyed_block??> <#if destroyed_block??>
${destroyed_block} ${destroyed_block}
</#if> </#if>
...@@ -1072,9 +1168,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1072,9 +1168,9 @@ import CodeListService from "@service/app/codelist-service";
* 获取选中行胡数据 * 获取选中行胡数据
* *
* @returns {any[]} * @returns {any[]}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected getSelection(): any[] { public getSelection(): any[] {
return this.selections; return this.selections;
} }
...@@ -1083,9 +1179,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1083,9 +1179,9 @@ import CodeListService from "@service/app/codelist-service";
* *
* @param {*} $event * @param {*} $event
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected rowDBLClick($event: any): void { public rowDBLClick($event: any): void {
if (!$event || this.actualIsOpenEdit || Object.is(this.gridRowActiveMode,0)) { if (!$event || this.actualIsOpenEdit || Object.is(this.gridRowActiveMode,0)) {
return; return;
} }
...@@ -1107,9 +1203,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1107,9 +1203,9 @@ import CodeListService from "@service/app/codelist-service";
* *
* @param {*} $event * @param {*} $event
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected select($event: any): void { public select($event: any): void {
if (!$event) { if (!$event) {
return; return;
} }
...@@ -1122,9 +1218,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1122,9 +1218,9 @@ import CodeListService from "@service/app/codelist-service";
* 复选框数据全部选中 * 复选框数据全部选中
* *
* @param {*} $event * @param {*} $event
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected selectAll($event: any): void { public selectAll($event: any): void {
if (!$event) { if (!$event) {
return; return;
} }
...@@ -1139,9 +1235,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1139,9 +1235,9 @@ import CodeListService from "@service/app/codelist-service";
* *
* @param {*} $event * @param {*} $event
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected rowClick($event: any, ifAlways: boolean = false): void { public rowClick($event: any, ifAlways: boolean = false): void {
if (!ifAlways && (!$event || this.actualIsOpenEdit)) { if (!ifAlways && (!$event || this.actualIsOpenEdit)) {
return; return;
} }
...@@ -1154,7 +1250,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1154,7 +1250,7 @@ import CodeListService from "@service/app/codelist-service";
} }
// 已选中则删除,没选中则添加 // 已选中则删除,没选中则添加
let selectIndex = this.selections.findIndex((item:any)=>{ let selectIndex = this.selections.findIndex((item:any)=>{
return Object.is(item.${ctrl.getPSDataEntity().getName()?lower_case},$event.${ctrl.getPSDataEntity().getName()?lower_case}); return Object.is(item.${ctrl.getPSAppDataEntity().getName()?lower_case},$event.${ctrl.getPSAppDataEntity().getName()?lower_case});
}); });
if (Object.is(selectIndex,-1)){ if (Object.is(selectIndex,-1)){
this.selections.push(JSON.parse(JSON.stringify($event))); this.selections.push(JSON.parse(JSON.stringify($event)));
...@@ -1181,9 +1277,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1181,9 +1277,9 @@ import CodeListService from "@service/app/codelist-service";
* *
* @param {*} $event * @param {*} $event
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected pageOnChange($event: any): void { public pageOnChange($event: any): void {
if (!$event) { if (!$event) {
return; return;
} }
...@@ -1199,9 +1295,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1199,9 +1295,9 @@ import CodeListService from "@service/app/codelist-service";
* *
* @param {*} $event * @param {*} $event
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected onPageSizeChange($event: any): void { public onPageSizeChange($event: any): void {
if (!$event) { if (!$event) {
return; return;
} }
...@@ -1217,9 +1313,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1217,9 +1313,9 @@ import CodeListService from "@service/app/codelist-service";
/** /**
* 分页刷新 * 分页刷新
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected pageRefresh(): void { public pageRefresh(): void {
this.load({}); this.load({});
} }
...@@ -1227,9 +1323,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1227,9 +1323,9 @@ import CodeListService from "@service/app/codelist-service";
* 排序变化 * 排序变化
* *
* @param {{ column: any, prop: any, order: any }} { column, prop, order } * @param {{ column: any, prop: any, order: any }} { column, prop, order }
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected onSortChange({ column, prop, order }: { column: any, prop: any, order: any }): void { public onSortChange({ column, prop, order }: { column: any, prop: any, order: any }): void {
const dir = Object.is(order, 'ascending') ? 'asc' : Object.is(order, 'descending') ? 'desc' : ''; const dir = Object.is(order, 'ascending') ? 'asc' : Object.is(order, 'descending') ? 'desc' : '';
if (Object.is(dir, this.minorSortDir) && Object.is(this.minorSortPSDEF, prop)) { if (Object.is(dir, this.minorSortDir) && Object.is(this.minorSortPSDEF, prop)) {
return; return;
...@@ -1244,9 +1340,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1244,9 +1340,9 @@ import CodeListService from "@service/app/codelist-service";
* *
* @param {{ row: any, rowIndex: any }} { row, rowIndex } * @param {{ row: any, rowIndex: any }} { row, rowIndex }
* @returns {string} * @returns {string}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected onRowClassName({ row, rowIndex }: { row: any, rowIndex: any }): string { public onRowClassName({ row, rowIndex }: { row: any, rowIndex: any }): string {
const index = this.selections.findIndex((select: any) => Object.is(select.srfkey, row.srfkey)); const index = this.selections.findIndex((select: any) => Object.is(select.srfkey, row.srfkey));
return index !== -1 ? 'grid-row-select' : ''; return index !== -1 ? 'grid-row-select' : '';
} }
...@@ -1256,15 +1352,15 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1256,15 +1352,15 @@ import CodeListService from "@service/app/codelist-service";
* 合计行绘制 * 合计行绘制
* *
* @param {any} param * @param {any} param
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected getSummaries(param:any){ public getSummaries(param:any){
<#if ctrl.getAggMode() == "PAGE"> <#if ctrl.getAggMode() == "PAGE">
const { columns, data } = param; const { columns, data } = param;
const sums:Array<any> = []; const sums:Array<any> = [];
columns.forEach((column:any, index:number) => { columns.forEach((column:any, index:number) => {
if (index === 0) { if (index === 0) {
sums[index] = '合计'; sums[index] = (this.$t('app.gridpage.sum') as string);
return; return;
} }
if(index === (columns.length - 1)){ if(index === (columns.length - 1)){
...@@ -1344,7 +1440,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1344,7 +1440,7 @@ import CodeListService from "@service/app/codelist-service";
const sums:Array<any> = []; const sums:Array<any> = [];
columns.forEach((column:any, index:number) => { columns.forEach((column:any, index:number) => {
if (index === 0) { if (index === 0) {
sums[index] = '合计'; sums[index] = (this.$t('app.gridpage.sum') as string);
return; return;
}else if(index === (columns.length - 1)){ }else if(index === (columns.length - 1)){
sums[index] = ''; sums[index] = '';
...@@ -1382,13 +1478,13 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1382,13 +1478,13 @@ import CodeListService from "@service/app/codelist-service";
/** /**
* 远程获取合计行数据 * 远程获取合计行数据
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected getAggData(){ public getAggData(){
this.service.getAggData(this.aggAction,JSON.parse(JSON.stringify(this.context)),this.showBusyIndicator).then((response:any) =>{ this.service.getAggData(this.aggAction,JSON.parse(JSON.stringify(this.context)),this.showBusyIndicator).then((response:any) =>{
if (!response.status || response.status !== 200) { if (!response.status || response.status !== 200) {
if (response.errorMessage) { if (response.errorMessage) {
this.$Notice.error({ title: '错误', desc: response.errorMessage }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.errorMessage });
} }
return; return;
} }
...@@ -1400,7 +1496,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1400,7 +1496,7 @@ import CodeListService from "@service/app/codelist-service";
} }
this.remoteData = {}; this.remoteData = {};
this.isDisplay = true; this.isDisplay = true;
this.$Notice.error({ title: '错误', desc: response.errorMessage }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.errorMessage });
}) })
} }
</#if> </#if>
...@@ -1411,10 +1507,11 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1411,10 +1507,11 @@ import CodeListService from "@service/app/codelist-service";
* @param {*} row * @param {*} row
* @param {*} tag * @param {*} tag
* @param {*} $event * @param {*} $event
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public uiAction(row: any, tag: any, $event: any) { public uiAction(row: any, tag: any, $event: any) {
// this.rowClick(row, true); // this.rowClick(row, true);
$event.stopPropagation();
<#if ctrl.getPSAppViewLogics()??> <#if ctrl.getPSAppViewLogics()??>
<#list ctrl.getPSAppViewLogics() as logic> <#list ctrl.getPSAppViewLogics() as logic>
<#if logic.getPSAppViewUIAction().getPSUIAction()??> <#if logic.getPSAppViewUIAction().getPSUIAction()??>
...@@ -1430,10 +1527,10 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1430,10 +1527,10 @@ import CodeListService from "@service/app/codelist-service";
/** /**
* 设置列状态 * 设置列状态
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected setColState() { public setColState() {
const _data: any = localStorage.getItem('${ctrl.getPSDataEntity().getName()?lower_case}_${ctrl.getCodeName()?lower_case}_${ctrl.name}'); const _data: any = localStorage.getItem('${ctrl.getPSAppDataEntity().getName()?lower_case}_${ctrl.getCodeName()?lower_case}_${ctrl.name}');
if (_data) { if (_data) {
let columns = JSON.parse(_data); let columns = JSON.parse(_data);
columns.forEach((col: any) => { columns.forEach((col: any) => {
...@@ -1448,10 +1545,10 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1448,10 +1545,10 @@ import CodeListService from "@service/app/codelist-service";
/** /**
* 列变化 * 列变化
* *
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected onColChange() { public onColChange() {
localStorage.setItem('${ctrl.getPSDataEntity().getName()?lower_case}_${ctrl.getCodeName()?lower_case}_${ctrl.name}', JSON.stringify(this.allColumns)); localStorage.setItem('${ctrl.getPSAppDataEntity().getName()?lower_case}_${ctrl.getCodeName()?lower_case}_${ctrl.name}', JSON.stringify(this.allColumns));
} }
/** /**
...@@ -1459,67 +1556,101 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1459,67 +1556,101 @@ import CodeListService from "@service/app/codelist-service";
* *
* @param {string} name * @param {string} name
* @returns {boolean} * @returns {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected getColumnState(name: string): boolean { public getColumnState(name: string): boolean {
let column = this.allColumns.find((col: any) => let column = this.allColumns.find((col: any) =>
Object.is(name, col.name) Object.is(name, col.name)
); );
return column.show ? true : false; return column.show ? true : false;
} }
/**
* 表格列是否自适应布局
*
* @readonly
* @type {boolean}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
get adaptiveState(): boolean {
return !this.allColumns.find((column: any) => column.show && Object.is(column.util, 'STAR'));
}
/** /**
* 保存 * 保存
* *
* @param {*} $event * @param {*} $event
* @returns {void} * @returns {Promise<any>}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected async save(args: any[], params?: any, $event?: any, xData?: any) { public async save(args: any[], params?: any, $event?: any, xData?: any){
let _this = this; let _this = this;
let promises:any = []; if(_this.items && _this.items.length >0){
_this.items.forEach((item:any)=>{ for (const item of _this.items) {
if(!item.rowDataState){ if(Object.is(item.rowDataState, 'update')){
return; _this.updateDefault(item);
} else if(Object.is(item.rowDataState, 'create')){ }
if(!this.createAction){
this.$Notice.error({ title: '错误', desc: '${view.getName()}视图表格createAction参数未配置' });
return;
} }
}
if(!await this.validateAll()){
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.rulesException') as string) });
return [];
}
let successItems:any = [];
let errorItems:any = [];
let errorMessage:any = [];
for (const item of _this.items) {
try {
if(Object.is(item.rowDataState, 'create')){
if(!this.createAction){
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: '${view.getName()}'+(this.$t('app.gridpage.notConfig.createAction') as string) });
}else{
Object.assign(item,{viewparams:this.viewparams}); Object.assign(item,{viewparams:this.viewparams});
promises.push(this.service.add(this.createAction, JSON.parse(JSON.stringify(this.context)),item, this.showBusyIndicator)); let response = await this.service.add(this.createAction, JSON.parse(JSON.stringify(this.context)),item, this.showBusyIndicator);
successItems.push(JSON.parse(JSON.stringify(response.data)));
}
}else if(Object.is(item.rowDataState, 'update')){ }else if(Object.is(item.rowDataState, 'update')){
if(!this.updateAction){ if(!this.updateAction){
this.$Notice.error({ title: '错误', desc: '${view.getName()}视图表格updateAction参数未配置' }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: '${view.getName()}'+(this.$t('app.gridpage.notConfig.updateAction') as string) });
return; }else{
}
Object.assign(item,{viewparams:this.viewparams}); Object.assign(item,{viewparams:this.viewparams});
<#if de??> <#if de??>
if(item.${appde.getCodeName()?lower_case}){ if(item.${appde.getCodeName()?lower_case}){
Object.assign(this.context,{${appde.getCodeName()?lower_case}:item.${appde.getCodeName()?lower_case}}) Object.assign(this.context,{${appde.getCodeName()?lower_case}:item.${appde.getCodeName()?lower_case}});
} }
</#if> </#if>
promises.push(this.service.add(this.updateAction,JSON.parse(JSON.stringify(this.context)),item, this.showBusyIndicator)); let response = await this.service.update(this.updateAction,JSON.parse(JSON.stringify(this.context)),item, this.showBusyIndicator);
successItems.push(JSON.parse(JSON.stringify(response.data)));
} }
}); }
Promise.all(promises).then((response: any) => { } catch (error) {
this.$emit('save', response); errorItems.push(JSON.parse(JSON.stringify(item)));
}).catch((response: any) => { errorMessage.push(error);
this.$Notice.error({ title: '错误', desc: '系统异常' }); }
}
this.$emit('save', successItems);
this.refresh([]);
if(errorItems.length === 0){
this.$Notice.success({ title: '', desc: (this.$t('app.commonWords.saveSuccess') as string) });
}else{
errorItems.forEach((item:any,index:number)=>{
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: errorMessage[index].data.message });
console.error(errorMessage[index]);
}); });
} }
return successItems;
}
<#if ctrl.isEnableRowEdit()>
/** /**
* 新建行 * 新建行
* *
* @param {*} $event * @param {*} $event
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected newRow(args: any[], params?: any, $event?: any, xData?: any): void { public newRow(args: any[], params?: any, $event?: any, xData?: any): void {
if(!this.loaddraftAction){ if(!this.loaddraftAction){
this.$Notice.error({ title: '错误', desc: '${view.getName()}视图表格loaddraftAction参数未配置' }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: '${view.getName()}'+(this.$t('app.gridpage.notConfig.loaddraftAction') as string) });
return; return;
} }
let _this = this; let _this = this;
...@@ -1528,19 +1659,21 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1528,19 +1659,21 @@ import CodeListService from "@service/app/codelist-service";
post.then((response: any) => { post.then((response: any) => {
if (!response.status || response.status !== 200) { if (!response.status || response.status !== 200) {
if (response.errorMessage) { if (response.errorMessage) {
this.$Notice.error({ title: '错误', desc: response.errorMessage }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.errorMessage });
} }
return; return;
} }
const data = response.data; const data = response.data;
this.createDefault(data);
data.rowDataState = "create"; data.rowDataState = "create";
_this.items.push(data); _this.items.push(data);
_this.gridItemsModel.push(_this.getGridRowModel());
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status === 401) { if (response && response.status === 401) {
return; return;
} }
if (!response || !response.status || !response.data) { if (!response || !response.status || !response.data) {
this.$Notice.error({ title: '错误', desc: '系统异常' }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.sysException') as string) });
return; return;
} }
}); });
...@@ -1552,7 +1685,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1552,7 +1685,7 @@ import CodeListService from "@service/app/codelist-service";
* @param row 行数据 * @param row 行数据
* @param {{ name: string, value: any }} $event * @param {{ name: string, value: any }} $event
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public onGridItemValueChange(row: any,$event: { name: string, value: any },rowIndex: number): void { public onGridItemValueChange(row: any,$event: { name: string, value: any },rowIndex: number): void {
if (!$event) { if (!$event) {
...@@ -1568,15 +1701,21 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1568,15 +1701,21 @@ import CodeListService from "@service/app/codelist-service";
/** /**
* 表格编辑项值变化 * 表格编辑项值变化
* *
* @private * @public
* @param row 行数据 * @param row 行数据
* @param property 列编辑项名 * @param property 列编辑项名
* @param row 列编辑项值 * @param row 列编辑项值
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public gridEditItemChange(row: any, property: string, value: any, rowIndex: number){ public gridEditItemChange(row: any, property: string, value: any, rowIndex: number){
row.rowDataState = row.rowDataState ? row.rowDataState : "update" ; row.rowDataState = row.rowDataState ? row.rowDataState : "update" ;
if(Object.is(row.rowDataState,"update")){
if(!value && this.defaultUpdateItems.includes(property)){
row.hasUpdated = true;
}
}
this.validate(property,row,rowIndex);
<#if ctrl.getPSDEGridEditItems()??> <#if ctrl.getPSDEGridEditItems()??>
<#list ctrl.getPSDEGridEditItems() as editItem> <#list ctrl.getPSDEGridEditItems() as editItem>
<#if editItem.getPSDEGridEditItemUpdate()??> <#if editItem.getPSDEGridEditItemUpdate()??>
...@@ -1598,9 +1737,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1598,9 +1737,9 @@ import CodeListService from "@service/app/codelist-service";
* @param {string[]} updateDetails 更新项 * @param {string[]} updateDetails 更新项
* @param {boolean} [showloading] 是否显示加载状态 * @param {boolean} [showloading] 是否显示加载状态
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected updateGridEditItem(mode: string, data: any = {}, updateDetails: string[], showloading?: boolean): void { public updateGridEditItem(mode: string, data: any = {}, updateDetails: string[], showloading?: boolean): void {
if (!mode || (mode && Object.is(mode, ''))) { if (!mode || (mode && Object.is(mode, ''))) {
return; return;
} }
...@@ -1609,7 +1748,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1609,7 +1748,7 @@ import CodeListService from "@service/app/codelist-service";
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(this.context)),arg, showloading);
post.then((response: any) => { post.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
this.$Notice.error({ title: '错误', desc: '表单项更新失败' }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.gridpage.formitemFailed') as string) });
return; return;
} }
const _data: any = response.data; const _data: any = response.data;
...@@ -1627,26 +1766,124 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -1627,26 +1766,124 @@ import CodeListService from "@service/app/codelist-service";
return; return;
} }
if (!response || !response.status || !response.data) { if (!response || !response.status || !response.data) {
this.$Notice.error({ title: '错误', desc: '系统异常' }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: (this.$t('app.commonWords.sysException') as string) });
return; return;
} }
}); });
} }
</#if>
/** /**
* 获取对应行class * 获取对应行class
* *
* @param {*} $args row 行数据,rowIndex 行索引 * @param {*} $args row 行数据,rowIndex 行索引
* @returns {void} * @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
protected getRowClassName(args:{row: any,rowIndex: number}){ public getRowClassName(args:{row: any,rowIndex: number}){
let isSelected = this.selections.some((item:any)=>{ let isSelected = this.selections.some((item:any)=>{
return Object.is(item.${appde.getCodeName()?lower_case},args.row.${appde.getCodeName()?lower_case}); return Object.is(item.${appde.getCodeName()?lower_case},args.row.${appde.getCodeName()?lower_case});
}); });
return isSelected ? "grid-selected-row" : ""; return isSelected ? "grid-selected-row" : "";
} }
/**
* 获取对应列class
*
* @param {*} $args row 行数据,column 列数据,rowIndex 行索引,列索引
* @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public getCellClassName(args:{row: any, column: any, rowIndex: number, columnIndex:number}){
if(args.column.property){
let col = this.allColumns.find((item:any)=>{
return Object.is(args.column.property,item.name);
})
if(col !== undefined){
if(col.isEnableRowEdit && this.actualIsOpenEdit ){
return 'edit-cell';
}
}
}
return 'info-cell';
}
/**
* 新建默认值
* @param {*} row 行数据
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public createDefault(row: any){
<#list ctrl.getPSDEGridEditItems() as editItem><#t>
<#if editItem.getCreateDV?? && editItem.getCreateDV()??><#t>
<#if !(editItem.getCreateDV() == '') || editItem.getCreateDVT() == 'CURTIME'><#t>
if (row.hasOwnProperty('${editItem.getCodeName()?lower_case}')) {
<#-- 网页请求 -->
<#if editItem.getCreateDVT() == 'CONTEXT'>
row['${editItem.getCodeName()?lower_case}'] = this.viewparams['${editItem.getCreateDV()}'];
<#-- 用户全局对象 -->
<#elseif editItem.getCreateDVT() == 'SESSION'>
row['${editItem.getCodeName()?lower_case}'] = this.context['${editItem.getCreateDV()}'];
<#-- 当前应用数据 -->
<#elseif editItem.getCreateDVT() == 'APPDATA'>
row['${editItem.getCodeName()?lower_case}'] = this.context['${editItem.getCreateDV()}'];
<#-- 当前操作用户(名称) -->
<#elseif editItem.getCreateDVT() == 'OPERATORNAME'>
row['${editItem.getCodeName()?lower_case}'] = this.context['srfusername'];
<#-- 当前操作用户(编号) -->
<#elseif editItem.getCreateDVT() == 'OPERATOR'>
row['${editItem.getCodeName()?lower_case}'] = this.context['srfuserid'];
<#-- 当前时间 -->
<#elseif editItem.getCreateDVT() == 'CURTIME'>
row['${editItem.getCodeName()?lower_case}'] = this.$util.dateFormat(new Date());
<#else>
<#-- 默认值 -->
<#assign datatype=srfjavatype(editItem.getPSAppDEField().getStdDataType())>
row['${editItem.getCodeName()?lower_case}'] = <#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>${editItem.getCreateDV()}<#else>'${editItem.getCreateDV()}'</#if>;
</#if>
}
</#if>
</#if>
</#list>
}
/**
* 更新默认值
* @param {*} row 行数据
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public updateDefault(row: any){
<#list ctrl.getPSDEGridEditItems() as editItem><#t>
<#if editItem.getUpdateDV?? && editItem.getUpdateDV()??><#t>
<#if !(editItem.getUpdateDV() == '') || editItem.getUpdateDVT() == 'CURTIME'><#t>
if (row.hasOwnProperty('${editItem.getCodeName()?lower_case}') && !row.${editItem.getCodeName()?lower_case} && !row.hasUpdated) {
<#-- 网页请求 -->
<#if editItem.getUpdateDVT() == 'CONTEXT'>
row['${editItem.getCodeName()?lower_case}'] = this.viewparams['${editItem.getUpdateDV()}'];
<#-- 用户全局对象 -->
<#elseif editItem.getUpdateDVT() == 'SESSION'>
row['${editItem.getCodeName()?lower_case}'] = this.context['${editItem.getUpdateDV()}'];
<#-- 当前应用数据 -->
<#elseif editItem.getUpdateDVT() == 'APPDATA'>
row['${editItem.getCodeName()?lower_case}'] = this.context['${editItem.getUpdateDV()}'];
<#-- 当前操作用户(名称) -->
<#elseif editItem.getUpdateDVT() == 'OPERATORNAME'>
row['${editItem.getCodeName()?lower_case}'] = this.context['srfusername'];
<#-- 当前操作用户(编号) -->
<#elseif editItem.getUpdateDVT() == 'OPERATOR'>
row['${editItem.getCodeName()?lower_case}'] = this.context['srfuserid'];
<#-- 当前时间 -->
<#elseif editItem.getUpdateDVT() == 'CURTIME'>
row['${editItem.getCodeName()?lower_case}'] = this.$util.dateFormat(new Date());
<#else>
<#-- 默认值 -->
<#assign datatype=srfjavatype(editItem.getPSAppDEField().getStdDataType())>
row['${editItem.getCodeName()?lower_case}'] = <#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>${editItem.getUpdateDV()}<#else>'${editItem.getUpdateDV()}'</#if>;
</#if>
}
</#if>
</#if>
</#list>
}
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册