diff --git a/data-room-ui/packages/js/utils/eventBus.js b/data-room-ui/packages/js/utils/eventBus.js index f104926e..ecbab2f4 100644 --- a/data-room-ui/packages/js/utils/eventBus.js +++ b/data-room-ui/packages/js/utils/eventBus.js @@ -1,26 +1,34 @@ -import Vue from 'vue' -export const EventBus = new Vue() +import Vue from 'vue'; -export function dataInit (_this) { +// 创建全局唯一的 EventBus 实例 +export const EventBus = new Vue(); + +// 创建唯一的事件处理函数 +function dataInitHandler(_this, formData, bindComponents) { + bindComponents?.forEach(com => { + const maps = com.maps; + const filterList = maps?.map(param => ({ + column: param.targetField, + operator: param.queryRule, + value: formData[param.sourceField], + })); + + _this.$nextTick(() => { + if (_this.$refs[com.componentKey] && _this.$refs[com.componentKey].dataInit) { + _this.$refs[com.componentKey].dataInit(filterList); + } + }); + }); +} + +// 注册事件监听器 +export function dataInit(_this) { EventBus.$on('dataInit', (formData, bindComponents) => { - // eslint-disable-next-line no-unused-expressions - bindComponents?.forEach(com => { - const maps = com.maps - const filterList = maps?.map(param => ({ - column: param.targetField, - operator: param.queryRule, - value: formData[param.sourceField] - })) - _this.$nextTick(() => { - if (_this.$refs[com.componentKey]) { - if (_this.$refs[com.componentKey].dataInit) { - _this.$refs[com.componentKey].dataInit(filterList) - } - } - }) - }) - }) + // 在回调中调用处理函数并传递组件实例 + dataInitHandler(_this, formData, bindComponents); + }); } -export function destroyedEvent () { - EventBus.$off('dataInit') + +export function destroyedEvent() { + EventBus.$off('dataInit', dataInitHandler); }