import { IDrbarStore } from '@/core/interface/widgets/store'; import { DrbarActionType, IDrbarAbility, IDrbarController, IDrbarControllerParams, IDrbarModel, INavigateParam, IParam, } from '../../interface'; import { DECtrlController } from './de-ctrl-controller'; import { computedNavData } from '@/core'; /** * 数据关系分页栏控制器 * * @export * @class DrbarController * @extends {WidgetsController} * @implements {IDrbarController} * @template T */ export class DrbarController extends DECtrlController implements IDrbarController { /** * Creates an instance of DrbarController. * @param {IDrbarControllerParams} params * @memberof DrbarController */ public constructor( params: IDrbarControllerParams ) { super(params); this.ctrlInit(params); } /** * 处理部件初始化 * * @protected * @param {IDrbarControllerParams} params * @memberof GridController */ protected processCtrlInit( params: IDrbarControllerParams ) { super.processCtrlInit(params); const model = this.getModel(); Object.assign(this.store, { ctrlItems: model.ctrlItems, }); } /** * @description 处理选中 * @param {IParam} item * @memberof DrbarController */ public handleSelectChange(item: IParam) { const param: INavigateParam[] = [ { data: item, navViewName: item.appViewName, navData: { context: item.localContext, viewParams: item.localParam, }, }, ]; this.emit('selectionChange', param); } /** * @description 处理表单数据更改 * @param {IParam} data * @memberof DrbarController */ public handleFormChange(data: IParam) { if (data && Object.is(data.srfuf, '1')) { this.model.ctrlItems.forEach((item: any) => { // 取消禁用 item.disabled = false; // 设置导航参数 if (item.localContext) { item.localContext = computedNavData( data, this.store.context, this.store.viewParams, item.localContext ); } if (item.localParam) { item.localParam = computedNavData( data, this.store.context, this.store.viewParams, item.localParam ); } }); } else { this.model.ctrlItems.forEach((item: any) => { item.disabled = true; }); } } /** * @description 获取能力 * @return {*} {IDrbarAbility} * @memberof DrbarController */ public getAbility(): IDrbarAbility { return { ...super.getAbility(), handleFormChange: this.handleFormChange.bind(this), }; } }