import { IPSAppView, IPSDEGrid, IPSDERBase, IPSGridExpBar } from '@ibizstudio/runtime'; import { GridExpBarControlInterface } from '@ibizstudio/runtime'; import { ExpBarControlBase } from './expbar-control-base'; /** * 表格导航部件基类 * * @export * @class GridExpControlBase * @extends {MDControlBase} */ export class GridExpBarControlBase extends ExpBarControlBase implements GridExpBarControlInterface { /** * 表格导航模型对象 * * @memberof GridExpBarControlBase */ declare controlInstance: IPSGridExpBar; /** * 数据部件 * * @memberof GridExpBarControlBase */ protected declare $xDataControl: IPSDEGrid; /** * 处理数据部件参数 * * @memberof GridExpBarControlBase */ async handleXDataCtrlOptions() { const navPSAppView: IPSAppView = (await this.$xDataControl?.getNavPSAppView()?.fill()) as IPSAppView; if (navPSAppView) { this.navViewName = navPSAppView.modelPath; } this.navFilter = this.$xDataControl?.navFilter ? this.$xDataControl.navFilter : ''; this.navPSDer = (this.$xDataControl?.getNavPSDER?.() as IPSDERBase) ? 'n_' + (this.$xDataControl.getNavPSDER() as IPSDERBase).minorCodeName?.toLowerCase() + '_eq' : ''; } /** * 处理快速分组模型动态数据部分(%xxx%) * * * @param {Array} inputArray 代码表数组 * @return {*} * @memberof GridExpBarControlBase */ handleDynamicData(inputArray: Array) { 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 GridExpBarControlBase */ onSearch() { if (this.Environment && this.Environment.isPreviewMode) { return; } let grid: any = (this.$refs[`${this.xDataControlName?.toLowerCase()}`] as any).ctrl; if (grid) { grid.load({ query: this.searchText }); } } }