Vue2&ElementUi中表格自定义展开图标箭头

前提
公司有个业务需求需要点击表格的展开箭头显示自定义内容
查阅UI文档有自带的只是需要调整箭头位置和文本一列展示,目前箭头是自己占了一列的宽度
文档地址
在这里插入图片描述
看下官方文档的写法 用了一列来实现展开效果type设置为expand
在这里插入图片描述

我们自定义一个展开列把宽度设置为1,然后再下一列加上展开的icon图表
在这里插入图片描述
效果目前是这样的,现在需要去除自带的展开图表
在这里插入图片描述
编写自定义展开逻辑
目前效果上面的是之前的测试数据 看下面就可以
在这里插入图片描述

展开的icon就使用表格自带的就行不用额外写

  <h2>表格自定义展开箭头图表</h2>
    <div class="expand">
      <el-table
        border
        :data="dataList"
        :expand-row-keys="expands"
        row-key="idCard"
      >
        <el-table-column type="expand" width="1">
          <template slot-scope="scope">
            <div>{{ scope.row.sourceName }}</div>
            <div>{{ scope.row.streetName }}</div>
          </template>
        </el-table-column>
        <el-table-column
          prop="sourceName"
          label="人员类型"
          show-overflow-tooltip
        >
          <template slot-scope="scope">
            <span>
              <i
                class="el-icon el-icon-caret-right icon_color"
                :class="[
                  {
                    'el-table__expand-icon--expanded':
                      expandsObj[scope.row.idCard],
                  },
                ]"
                @click="setExpand(scope.row)"
              ></i>
              {{ scope.row.sourceName }}
            </span>
          </template>
        </el-table-column>
        <el-table-column
          prop="streetName"
          label="所属街道"
          show-overflow-tooltip
        />
        <el-table-column
          prop="communityName"
          label="所属社区"
          show-overflow-tooltip
        />
        <el-table-column
          prop="managementMeasuresName"
          label="管理措施"
          show-overflow-tooltip
        />
      </el-table>
    </div>
    data(){
		 expands: [],
      expandsObj: {},
	}
	methods:{
			// 展开
    setExpand (item) {
      const { idCard } = item
      if (!this.expands.includes(idCard)) {
        this.expands.push(idCard)
        this.expandsObj[idCard] = true
      } else {
        const index = this.expands.indexOf(idCard)
        this.expands.splice(index, 1)
        this.expandsObj[idCard] = false
      }
    }
		}

css样式需要把原有的图标透明度设置一下

.expand {
  ::v-deep .el-table__expand-icon {
    opacity: 0;
  }
}

注意Tips:由于原有的展开列type=expand 宽度为1px在浏览器放大后会左边的边框会显示的粗一点 目前我的解决方案也有了 只是一个不同的css样式 大家可以自己想一下具体方式实现 或者留言给我

码云代码地址
github代码地址

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值