elementui表格自定义指令控制显示哪些列可以拖动

javascript 复制代码
Vue.directive('tableBorder', function (el, {value}) {
  // value允许传字符串数字和数组
  el.classList.add('z_table_hasBorder')
  
  let hasStyle = el.querySelector('style')
  if(hasStyle){
    hasStyle.remove()
  }

  let style = document.createElement('style')
  let str = `
    .z_table_hasBorder  .el-table__cell{
      border-width: 0px;
    }
  `

  let reg = /^[0-9]*$/
  if(typeof value === 'string' || typeof value === 'number'){
    let test = reg.test(value)
    value  = test ? [Number(value)] : []
  }else if(!Array.isArray(value)){
    value = []
  }

  let html =value.reduce((prev,item)=>{
    let test = reg.test(item)
    return prev += test ? `
      .z_table_hasBorder tr .el-table__cell:nth-of-type(${item}){
        border-width: 1px;
      }
    ` : ''
  },str)

  style.innerText = html

  el.appendChild(style)
})

用法

javascript 复制代码
<el-table
    :data="tableData"
    border
    v-tableBorder="[2,4]"
    style="width: 100%">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>

效果

相关推荐
发现一只大呆瓜7 小时前
前端性能优化:图片懒加载的三种手写方案
前端·javascript·面试
不爱吃糖的程序媛7 小时前
Flutter 与 OpenHarmony 通信:Flutter Channel 使用指南
前端·javascript·flutter
利刃大大7 小时前
【Vue】Element-Plus快速入门 && Form && Card && Table && Tree && Dialog && Menu
前端·javascript·vue.js·element-plus
NEXT068 小时前
AI 应用工程化实战:使用 LangChain.js 编排 DeepSeek 复杂工作流
前端·javascript·langchain
念风零壹8 小时前
AI 时代的前端技术:从系统编程到 JavaScript/TypeScript
前端·ai
光影少年8 小时前
react的hooks防抖和节流是怎样做的
前端·javascript·react.js
小毛驴8508 小时前
Vue 路由示例
前端·javascript·vue.js
发现一只大呆瓜9 小时前
AI流式交互:SSE与WebSocket技术选型
前端·javascript·面试
m0_7190841110 小时前
React笔记张天禹
前端·笔记·react.js
Ziky学习记录10 小时前
从零到实战:React Router 学习与总结
前端·学习·react.js