将el-table checkbox 多选改为单选

<div class="list-content mt10" v-loading="loading">
          <Table
            v-model="selected"
            ref="table"
            height="580"
            rowKey="id"
            selection
            reserve-selection
            :columns="columns"
            class="table-style"
            :data="tableData"
            @selectChange="selectChange"
            @selectionChange="selectionChange"
          >
            <template slot="domainList" slot-scope="{ item }">
              <div
                v-if="item.domainList !== null && item.domainList.length > 0"
              >
                <ArrayList :list="item.domainList" />
              </div>
            </template>
          </Table>
          <div style="padding-top: 10px">
            <Pagination v-model="page" @change="getList"></Pagination>
          </div>
        </div>
      </el-col>
      <el-col :span="8" style="border-left: 1px #ebeef5 solid">
        <div
          class="selected-info"
          v-html="
            $t('ASSET_COMMON.ASSET_SELECTED_TOOLTIP', { num: selected.length })
          "
        ></div>
        <div class="select-list">
          <el-tag
            class="autoHeight"
            v-for="tag in selected"
            :key="tag.id"
            size="small"
            closable
            @close="tagClose(tag)"
            style="margin-left: 10px; margin-bottom: 5px"
          >
            {{ tag.name }}
          </el-tag>
        </div>
      </el-col>
    </el-row>
    <template slot="footer">
      <el-button size="small" class="drawer-footer-btn" @click="close">{{
        $t('COMMON_LANG.CLOSE')
      }}</el-button>
      <el-button
        type="primary"
        size="small"
        class="drawer-footer-btn"
        @click="submit"
        >{{ $t('COMMON_LANG.CONFIRM_BTN') }}</el-button
      >
    </template>

 async selectChange(selection, row) {
      // 清空
      await this.$refs.table.clearSelection();
      if (selection.length === 0) return;
      this.$refs.table.toggleRowSelectionInfo(row, true);
      this.selected = [];
      this.selected.push(row);
    },
    async selectionChange(selected) {
      if (selected.length > 1) {
        await this.$refs.table.clearSelection();
        const newRows = selected.filter((it, index) => {
          if (index == selected.length - 1) {
            this.$refs.table.toggleRowSelectionInfo(it, true);
            return true;
          } else {
            this.$refs.table.toggleRowSelectionInfo(it, false);
            return false;
          }
        });
        this.selected = newRows;
      } else {
        this.selected = selected;
      }
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用 ElementUI 的 Table 组件进行多时,可以通过配置 `show-selection` 和 `selection-type` 属性来实现多功能。 其中,`show-selection` 属性用于控制是否显示择列,如果设置为 `false` 则不会显示择列,如果设置为 `true` 则会显示择列。 `selection-type` 属性用于指定择类型,可以设置为 `'checkbox'` 或 `'radio'`。当设置为 `'checkbox'` 时,会显示复框,允许用户择多行数据,当设置为 `'radio'` 时,会显示单选框,只允许用户择一行数据。 在中数据后,可以通过 `@selection-change` 事件获取中的数据,或者通过 `this.$refs.table.getSelectedRows()` 方法获取中的数据。另外还可以通过 `@select-all` 和 `@select` 事件监听全单选操作。 示例代码如下: ```html <template> <div> <el-table :data="tableData" :show-selection="true" :selection-type="'checkbox'" @selection-change="handleSelectionChange"> <el-table-column type="selection"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="gender" label="性别"></el-table-column> </el-table> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' }, { name: '赵六', age: 24, gender: '女' } ] } }, methods: { handleSelectionChange(rows) { console.log(rows) // 获取中的数据 } } } </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值