m0_60877809 2022-08-17 17:14 采纳率: 72.7%
浏览 138
已结题

ant desgin vue 的表格多选的disabled的问题

页面分两部分 上面是一些单选的盒子 下面是表格 表格中有多选框 选择上面的盒子的时候 会去循环下面的盒子 如果过上面盒子的某个字段跟下面列表每行的字段一样 则列表的这行的多选框 要置灰


<a-table
          v-if="tableShow"
          ref="table"
          :columns="enterColumns"
          :data-source="this.selectArr || []"
          :row-selection="rowSelection2"
          bordered
          :pagination="false"
          :rowKey="
            (record, index) => {
              record.consumerId
            }
          "
        >
          <template slot="apiName" slot-scope="apiName, item">
            <a href="javascript:void(0)" @click="onDetail(item)">{{ apiName }}</a>
          </template>
          <template slot="consumerName" slot-scope="consumerName, record">
            <div v-for="(item, index) in consumerName" :key="index">
              <a-button
                size="small"
                :class="record.chooseIndex !== null && index == record.chooseIndex ? 'abtnClass-blue' : 'abtnClass'"
              >{{ item }}
              </a-button>
            </div>
          </template>
          <template slot="action" slot-scope="record">
            <a @click="onDel(record)">删除</a>
          </template>
          <template slot="select" slot-scope="record">
            <a-checkbox @change="selectChange(e)" :default-checked="false" />
          </template>
          <template slot="apiStatus" slot-scope="apiStatus">
            <span :class="apiStatus == '已下线' ? 'redSpan' : 'bottomSpan'">{{ apiStatus }}</span>
          </template>
        </a-table>

 rowSelection2 () {
      const { selectedRowKeys2 } = this
      return {
        selectedRowKeys2,
        onChange: this.onSelectChange2,
        hideDefaultSelections: true,

        onSelection: this.onSelection,
        // getCheckboxProps: this.getCheckboxProps
        getCheckboxProps: (record) => ({
          props: {
            disabled: record.chooseIndex !== null && record.chooseIndex !== undefined // Column configuration not to be checked
          }
        })
      }
    }



   // 当我选择上面的盒子触发的事件   这里就是拿字段跟下面列表每行的字段来做对比 然后做一个chooseIndex的标识 来判断是否置灰
    chooseAppBox (item, index) {
      this.applyCallShow = true
      // 应用id
      this.chooseArr = item.consumerId.toString()
      // 应用名称
      this.appName = item.consumerName

      // Vue.set(item, 'newData', hour)
      for (let i = 0; i < this.selectArr.length; i++) {
        if (this.selectArr[i].consumerId) {
          if (this.selectArr[i].consumerId.indexOf(this.chooseArr) !== -1) {
            console.log('存在,索引是:', this.selectArr[i].consumerId.indexOf(this.chooseArr))
            this.selectArr[i].chooseIndex = this.selectArr[i].consumerId.indexOf(this.chooseArr)
          } else {
            console.log('不存在')
            this.selectArr[i].chooseIndex = null
          }
        } else {
          console.log('不存在')
          this.selectArr[i].chooseIndex = null
        }
      }

      console.log('列表的数据', this.selectArr)
      console.log('选中的数据', this.selectArr2)
      // this.tableShow = false
      // this.$nextTick(function () {
      //   this.tableShow = true
      // })
      // 调用验证申请
      // if (this.chooseArr !== '' || this.chooseArr !== undefined) {
      //   this.verifyBasket()
      // }
    },

当我选择上面的盒子触发的事件 这里就是拿字段跟下面列表每行的字段来做对比 然后做一个chooseIndex的标识 来判断是否置灰 在这个方法里面 有看到用这个nexttick来做 这个是可以达到效果的 但是有bug 相当于我刷新了表格 有标识的多选框是置灰了 但是我之前选中的其他没有标识的多选框也会一并取消勾选了 有什么好的解决方法

  • 写回答

2条回答 默认 最新

  • 崽崽的谷雨 2022-08-17 17:28
    关注

    保存一下 之前选中的其他没有标识的多选框 的 key值

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月17日
  • 已采纳回答 10月17日
  • 创建了问题 8月17日

悬赏问题

  • ¥15 fx2n系列plc的自控成型机模拟
  • ¥15 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
  • ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
  • ¥15 c语言数据结构高铁订票系统
  • ¥15 关于wkernell.PDB加载的问题,如何解决?(语言-c#|开发工具-vscode)
  • ¥100 某宝多次访问被拒绝,求解
  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!