Quellcode durchsuchen

方案编辑/新增增加总线刷新列表

祁鹏飞 vor 1 Woche
Ursprung
Commit
eb10eba07d

+ 20 - 0
src/views/quoteConfig/project/eventBus.js

@@ -0,0 +1,20 @@
+// 定义总线容器
+const bus = ref({});
+
+// 触发事件(发送数据)
+export const emitEvent = (eventName, data) => {
+  // 若有监听该事件的回调,执行并传递数据
+  bus.value[eventName]?.(data);
+};
+
+// 监听事件(接收数据)
+export const onEvent = (eventName, callback) => {
+  // 注册回调函数
+  bus.value[eventName] = callback;
+};
+
+// 取消监听(避免内存泄漏)
+export const offEvent = (eventName) => {
+  // 删除事件回调
+  delete bus.value[eventName];
+};

+ 4 - 2
src/views/quoteConfig/project/modules/projectAdd.vue

@@ -28,7 +28,7 @@
             <el-form-item label="险种类型" prop="productId">
               <el-radio-group :disabled="isEdit" v-model="projectAddFrom.productId" @change="initProduct">
                 <el-radio-button v-for="item in insuranceType" :key="item.value" :value="item.value">{{ item.label
-                  }}</el-radio-button>
+                }}</el-radio-button>
               </el-radio-group>
             </el-form-item>
 
@@ -85,7 +85,7 @@
                         <el-table-column label="名称" prop="productName">
                           <template #default="scope">
                             <el-button link type="primary" @click="getJYXDetail(scope.row)">{{ scope.row.productName
-                            }}</el-button>
+                              }}</el-button>
                           </template>
                         </el-table-column>
                         <!-- 客户端状态(仅自选方案显示) -->
@@ -229,6 +229,7 @@ import rule from '../../../../components/ruleConditionContainer/index.vue'
 import detail from '../../../../layouts/components/JYXDetail/index.vue'
 import ruleSelect from '../../../../layouts/components/ruleSelect/index.vue'
 import Detail from "@/views/representative/detail.vue";
+import { emitEvent } from '../eventBus.js';
 // 导入Vue 3组合式API
 import { ref, onMounted, onBeforeMount, nextTick } from 'vue'
 
@@ -893,6 +894,7 @@ const save = async (ProjectAddRef: FormInstance | undefined) => {
             message: res.msg,
             type: 'success'
           })
+          emitEvent('sendData',);
           myRouter.push({
             path: '/quoteConfig/agreement/project',
             query: {

+ 10 - 1
src/views/quoteConfig/project/project.vue

@@ -171,6 +171,7 @@
 import api from '@/api'
 import { ElMessage, ElMessageBox } from "element-plus";
 import { useRouter, useRoute } from 'vue-router'
+import { onEvent, offEvent } from './eventBus.js';
 
 const myRouter = useRouter()
 const muRoute = useRoute()
@@ -361,8 +362,16 @@ onMounted(() => {
   // initData()
   initCompany()
   initType()
-})
+  // 监听事件,接收数据
+  onEvent('sendData', () => {
+    initData()
+  });
+});
 
+onUnmounted(() => {
+  // 组件销毁时取消监听,避免内存泄漏
+  offEvent('sendData');
+});
 </script>
 
 <style scoped lang="scss">