当前位置: 首页 > article >正文

检查w-form-select 组件是否正确透传了 visible-change 事件

文章目录

      • 1. 下拉框的组件
      • 2. 点击下拉框时的逻辑
        • (1)`handleVisibleChange` 方法
        • (2)`getIdentifies` 方法
      • 3. 选择关联识别点时的逻辑
        • (1)`onRelatedChange` 方法
      • 4. 相关 UI 更新
      • 5. 总结

在这段代码中,点击“关联识别点”下拉框时,会触发一系列逻辑。以下是详细的逻辑分析:


  • 点击关联识别点下拉框没有发送请求,应该检查 w-form-select 组件是否正确透传了 visible-change 事件。
        <el-select
          v-else
          v-model="val"
          :multiple="multiple"
          filterable
          clearable
          :placeholder="placeholder || label || tip"
          :allow-create="allowCreate"
          :default-first-option="defaultFirstOption"
          :style="inputWidth ? `width: ${inputWidth};` : `width: 100%;`"
          @input="value => $emit('input', value)"
          @change="value => $emit('change', value)"
          @visible-change="value => $emit('visible-change', value)"
        >

1. 下拉框的组件

“关联识别点”下拉框使用的是 w-form-select 组件,其定义如下:

<w-form-select
  v-model="form.relatedIds"
  label="关联识别点"
  label-width="120px"
  :operate-type="operateType"
  :list="identifies"
  option-label="id"
  option-value="id"
  :multiple="true"
  input-width="100%"
  @visible-change="handleVisibleChange"
  @change="onRelatedChange"
/>
  • v-model="form.relatedIds":绑定到 form.relatedIds,用于存储选择的关联识别点 ID。
  • :list="identifies":下拉框的选项数据来自 identifies 数组。
  • @visible-change="handleVisibleChange":当下拉框显示或隐藏时触发 handleVisibleChange 方法。
  • @change="onRelatedChange":当选择的值发生变化时触发 onRelatedChange 方法。

2. 点击下拉框时的逻辑

当点击“关联识别点”下拉框时,会触发以下逻辑:

(1)handleVisibleChange 方法
private handleVisibleChange(visible: boolean) {
  console.log('handleVisibleChange triggered', visible);
  if (visible) {
    console.log('calling getIdentifies with form.type:', this.form.type);
    this.getIdentifies();
  }
}
  • 作用:当下拉框显示时(visibletrue),调用 getIdentifies 方法加载关联识别点数据。
  • 触发时机:每次点击下拉框时都会触发。
(2)getIdentifies 方法
private async getIdentifies() {
  const res: any = await qlistAll({
    type: this.form.type,
    page: 0,
    size: 3000
  });
  if (res?.data) {
    this.identifies = res.data.filter((item: any) => item.id !== this.form.id); // 过滤掉当前编辑的项
    // 如果有已选择的关联识别点,更新描述
    if (this.form.relatedIds && this.form.relatedIds.length > 0) {
      const lastSelectedId = this.form.relatedIds[this.form.relatedIds.length - 1];
      const selectedItem = this.identifies.find((item: any) => item.id === lastSelectedId);
      this.relatedDescription = selectedItem ? selectedItem.description : '';
    }
  }
}
  • 作用:从后端获取关联识别点数据,并更新 identifies 数组。
  • 过滤逻辑:过滤掉当前编辑的识别点(item.id !== this.form.id),避免选择自身。
  • 更新描述:如果已有选择的关联识别点,更新 relatedDescription 显示描述。

3. 选择关联识别点时的逻辑

当从下拉框中选择一个或多个关联识别点时,会触发以下逻辑:

(1)onRelatedChange 方法
private onRelatedChange(value: any) {
  if (value && value.length > 0) {
    // 获取最后选择的识别点
    const lastSelectedId = value[value.length - 1];
    const selectedItem = this.identifies.find((item: any) => item.id === lastSelectedId);
    this.relatedDescription = selectedItem ? selectedItem.description : '';
  } else {
    this.relatedDescription = '';
  }
}
  • 作用:当选择的值发生变化时,更新 relatedDescription 显示最后一个选择的识别点的描述。
  • 逻辑
    • 如果选择了识别点(value.length > 0),获取最后一个选择的识别点 ID,并从 identifies 数组中查找对应的描述。
    • 如果没有选择识别点(value.length === 0),清空 relatedDescription

4. 相关 UI 更新

  • 关联识别点描述
    • 当选择关联识别点时,relatedDescription 会更新,并显示在 w-form-textarea 组件中。
    • 代码如下:
      <w-form-textarea
        v-model="relatedDescription"
        label="识别点描述"
        label-width="120px"
        :operate-type="'view'"
        input-width="100%"
        :disabled="true"
        :auto-size="{ minRows: 2, maxRows: 4 }"
        class="description-textarea"
      />
      

5. 总结

  • 点击下拉框时
    1. 触发 handleVisibleChange 方法。
    2. 调用 getIdentifies 方法,从后端加载关联识别点数据。
    3. 更新 identifies 数组,并过滤掉当前编辑的识别点。
  • 选择关联识别点时
    1. 触发 onRelatedChange 方法。
    2. 更新 relatedDescription,显示最后一个选择的识别点的描述。
  • UI 更新
    • 关联识别点描述会实时显示在文本框中。

在这里插入图片描述


http://www.kler.cn/a/512440.html

相关文章:

  • 抽奖系统(4——活动模块)
  • Fabric区块链网络搭建:保姆级图文详解
  • MySQL面试题2025 每日20道【其四】
  • 【Leetcode 热题 100】45. 跳跃游戏 II
  • 深度学习常见术语解释
  • 云原生作业(四)
  • 0基础跟德姆(dom)一起学AI 自然语言处理18-解码器部分实现
  • 阳振坤:AI 大模型的基础是数据,AI越发达,数据库价值越大
  • 基于SpringBoot的健身房管理系统【源码+文档+部署讲解】
  • 百度飞桨基与UIE结合Doccano的微调来训练自己的数据格式以满足复杂生产环境的数据识别的需要
  • 你了解什么是股指期货贴水套利吗?
  • 网络编程 | UDP组播通信
  • 【useReducer Hook】集中式管理组件复杂状态
  • CSS笔记基础篇02——浮动、标准流、定位、CSS精灵、字体图标
  • 实测点云标注工具
  • linux 安装mysql5.6
  • OpenCV相机标定与3D重建(63)校正图像的畸变函数undistort()的使用
  • Linux高级--3.3.1 C++ spdlog 开源异步日志方案
  • Kotlin Bytedeco OpenCV 图像图像50 仿射变换 图像缩放
  • 实现二叉树_堆
  • 【Mac】ComfyUI 部署
  • 算法题目总结-链表
  • 【Maui】视图界面与数据模型绑定
  • django应急物资管理系统
  • 基于FPGA的BPSK+costas环实现,包含testbench,分析不同信噪比对costas环性能影响
  • 英文隐私政策翻译