Vue实现以按钮弹框动态控制Table列展示

🎈个人公众号:🎈 :✨✨ 可为编程 ✨✨ 🍟🍟
🔑个人信条:🔑知足知不足 有为有不为 为与不为皆为可为🌵
🍉本篇简介:🍉 本片详细说明了Vue实现以按钮弹框动态控制Table列展示使用规则和注意要点,并给出具体操作实例,如有出入还望指正。

关注公众号【可为编程】回复【面试】领取年度最新面试题大全!!!

点击设置弹出列数,并根据选择列进行展示:
在这里插入图片描述
点击勾选之后改变列表展示列
在这里插入图片描述
Html:

<div id="app">
    <template>
  <el-popover placement="right" width="800" trigger="click" style="margin-left:80%">
    <el-checkbox-group v-model="colOptions">
        <el-checkbox v-for="item in colSelect" :label="item" :key="item" ></el-checkbox>
    </el-checkbox-group>
    <el-button slot="reference">设置</el-button>
</el-popover>
  
 <el-table :data="tableData" stripe border style="width: 98%" ref="tableDataRef">
      <el-table-column type="selection" width="55" align="center"></el-table-column>
      <el-table-column type="index" width="55" label="序号" align="center"></el-table-column>
      <el-table-column v-if="colData[0].istrue" prop="name" label="名称" align="center"></el-table-column>
      <el-table-column v-if="colData[1].istrue" prop="select" label="性别" align="center"></el-table-column>
      <el-table-column v-if="colData[2].istrue" prop="kafang" label="年龄" align="center"></el-table-column>
      <el-table-column v-if="colData[3].istrue" prop="fengbi" label="时间" align="center"></el-table-column>
      <el-table-column v-if="colData[4].istrue" prop="isETF" label="事件" align="center"></el-table-column>
      <el-table-column v-if="colData[5].istrue" prop="range" label="地点" align="center"></el-table-column>
 </el-table>
 

</template>
</div>

Js:

new Vue({
  el:'#app',
   data() {
      return {
        colData: [{title: "名称",istrue: true},
          {title: "性别",istrue: true},
          {title: "年龄",istrue: true},
          {title: "时间",istrue: true},
          {title: "事件",istrue: true},
          {title: "地点",istrue: true}],
colOptions: [],
colSelect: []
      }
    },
  	mounted(){
    },
    methods: {
      formatter(row, column) {
        return row.address;
      },
      sortChange(val){
        const { order } = val
        console.log(order)
      }
    },
    created() {
  var _this = this;
  for (let i = 0; i < _this.colData.length; i++) {
     _this.colSelect.push(_this.colData[i].title);
    if (_this.colData[i].title == '名称') { //初始化不想展示的列可以放在这个条件里
      continue;
     }
     _this.colOptions.push(_this.colData[i].title); 
      
  }
},
watch: {
  colOptions(valArr) {
    var arr = this.colSelect.filter(i => valArr.indexOf(i) < 0); // 未选中
    this.colData.filter(i => {
      if (arr.indexOf(i.title) != -1) {
        i.istrue = false;
        this.$nextTick(() => {
          this.$refs.tableDataRef.doLayout();
        });
      } else {
        i.istrue = true;
        this.$nextTick(() => {
          this.$refs.tableDataRef.doLayout();
        });
      }
    });
  }
}
})

这里是一个真诚的***青年技术交流QQ群:761374713***,不管你是大学生、社畜、想学习变成的其他人员,欢迎大家加入我们,一起成长,一起进步,真诚的欢迎你,不管是技术,还是人生,还是学习方法。有道无术,术亦可求,有术无道,止于术。在这里插入图片描述
欢迎感兴趣的小伙伴一起探讨学习知识,以上是个人的一些总结分享,如有错误的地方望各位留言指出,十分感谢。觉得有用的话别忘点赞、收藏、关注,手留余香! 😗 😗 😗

欢迎大家关注【可为编程】,成长,进步,编程,技术、掌握更多知识!
在这里插入图片描述

Vue2项目中实现打开进行文件预览功能,有多种文件类型可供处理,下面分别介绍同类型文件的实现方法。 ### 通用预览插件实现 可以使用通用预览插件来实现解析预览各种office文档(如word、excel、ppt、pdf、txt等),支持出窗口在内预览或直接显示在页面某个div容器内,且支持文档在线网络地址、后端接口二进制文件流形式、本地上传形式等。让vue项目具备解析doc/docx/xls/xlsx/ppt/pptx/txt/cvs/txt等任意主流格式文件文档的能力,并且能在vue2内部直接预览而非利用浏览器新开页签打开文档 [^1]。 ### 在线预览word和excel文件 以在线预览word和excel文件为例,具体步骤如下: - **页面布局**:在页面中设置一个有边且可滚动的div容器,根据文件类型(word或excel)显示同的内容。 ```vue <template> <div :style="'border:1px dashed;width:100%;height:300px;overflow:scroll'"> <!-- word查看详情 --> <div id="wordView" v-html="vHtml" v-if="isWord"></div> <!-- excel查看详情 --> <div id="table" v-if="!isWord"> <el-table :data="excelData" style="width: 100%"> <el-table-column v-for="(value, key, index) in excelData[2]" :key="index" :prop="key" :label="key"></el-table-column> </el-table> </div> </div> </template> ``` - **调用函数展示数据**:点击查看按钮,吊起展示数据 [^2]。 ### PDF文件在线预览 对于PDF文件,可以封装组件进行在线预览和下载。以下是父组件的示例代码: ```vue <template> <!-- 页面内容 --> </template> <script> import pdf from "@/components/pdf.vue"; export default { components: { pdf }, data() { return { url: "", title: "", form: {} }; }, methods: { /**查看附件 */ hangdleAttachment(row) { this.form = row; this.viewTitle = "**附件"; this.$nextTick(() => { if (row.url?.includes(".pdf")) { this.$refs.pdf.changeDialog(true); } else { this.$modal.msgError("无附件"); } }); } } }; </script> ``` 在上述代码中,当点击查看附件,判断附件链接是否为PDF文件,如果是则打开PDF预览;否则提示无附件 [^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光宅猿AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值