el-table固定表头(设置height)出现内容过多时不能滚动问题

主要原因是el-table没有div包裹

解决:加一个div并设置其高度和overflow

我自己的主要代码

html 复制代码
    <div class="contentTable">
      <el-table
        ref="table"
        :data="tableData"
        stripe
        @row-dblclick="onRowDblclick"
        height="100%"
      >
        <el-table-column
          type="index"
          align="center"
          label="序号"
          width="50"
        ></el-table-column>
        <el-table-column
          prop="templateName"
          align="center"
          label="模板名称"
          width="150"
        ></el-table-column>
        <el-table-column
          prop="mainContent"
          align="center"
          label="主要内容"
        ></el-table-column>
        <el-table-column
          prop="devContent"
          align="center"
          label="活动措施和设备状态"
        ></el-table-column>
        <el-table-column prop="operate" align="center" label="操作" width="80">
          <template slot-scope="scope">
            <el-button
              size="mini"
              class="delete-btn"
              @click="onDelete(scope.row)"
              title="删除"
              v-isLogin
            ></el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>

css代码:

javascript 复制代码
.contentTable {
  height: calc(100% - 50px) !important;
  overflow: scroll;
}
.contentTable >>> .el-table__body-wrapper::-webkit-scrollbar {
  width: 10px;
  height: 8px;
}

-webkit-scrollbar用来加滚动条的!!!

页面所有代码:

javascript 复制代码
<template>
  <el-dialog
    :title="title"
    :visible.sync="visible"
    class="template-query"
    @opened="openInit"
    append-to-body
    width="80%"
  >
    <el-form
      :model="form"
      ref="form"
      :inline="true"
      style="text-align: right"
      size="small"
    >
      <el-form-item label="模板名称:" prop="templateName">
        <el-input
          v-model="form.templateName"
          maxlength="20"
          v-special-code
        ></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="onQuery">查询</el-button>
        <el-button type="primary" @click="onReset">重置</el-button>
      </el-form-item>
    </el-form>
    <div class="contentTable">
      <el-table
        ref="table"
        :data="tableData"
        stripe
        @row-dblclick="onRowDblclick"
        height="100%"
      >
        <el-table-column
          type="index"
          align="center"
          label="序号"
          width="50"
        ></el-table-column>
        <el-table-column
          prop="templateName"
          align="center"
          label="模板名称"
          width="150"
        ></el-table-column>
        <el-table-column
          prop="mainContent"
          align="center"
          label="主要内容"
        ></el-table-column>
        <el-table-column
          prop="devContent"
          align="center"
          label="活动措施和设备状态"
        ></el-table-column>
        <el-table-column prop="operate" align="center" label="操作" width="80">
          <template slot-scope="scope">
            <el-button
              size="mini"
              class="delete-btn"
              @click="onDelete(scope.row)"
              title="删除"
              v-isLogin
            ></el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
  </el-dialog>
</template>
<script>
import { listTemplatesByType } from "@/api/template.js";
import { removeTemplate } from "@/api/template.js";
import { getBizcodeList } from "@/api/common.js";
export default {
  props: {
    templateQueryVisible: {
      type: Boolean,
      default: false,
    },
    type: {
      type: String,
      default: "",
    },
    typeName: {
      type: String,
      default: "",
    },
  },
  data() {
    return {
      title: "",
      form: {
        templateName: "",
      },
      headField: [], //表头信息
      tableData: [], //表格数据
    };
  },
  computed: {
    visible: {
      get() {
        return this.templateQueryVisible;
      },
      set(val) {
        this.$emit("update:templateQueryVisible", val);
      },
    },
  },
  mounted() {},
  methods: {
    //打开窗口初始化
    openInit() {
      this.title = this.typeName + "模板管理";
      this.form.templateName = "";
      //根据type查询表头信息
      // listGridHeadByType({ type: this.type }).then(async (res) => {
      //   var headFieldList = JSON.parse(res.data.data);
      //   for (var i = 0; i < headFieldList.length; i++) {
      //     if ("codeType" in headFieldList[i]) {
      //       await getBizcodeList(headFieldList[i].codeType).then((res) => {
      //         headFieldList[i]["codeList"] = res.data.data;
      //       });
      //     }
      //   }
      //   this.headField = headFieldList;
      // });

      //查询模板数据
      this.onQuery();
    },
    //删除
    onDelete(row) {
      var that = this;
      this.$confirm("确定删除该模板?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        removeTemplate(row.id).then((res) => {
          if (res.data.code == "1") {
            that.$message({
              type: "success",
              message: "删除模板成功!",
            });
            that.onQuery();
          } else {
            that.$message({
              type: "error",
              message: "保存模板失败!",
            });
          }
        });
      });
    },

    //双击行加载模板数据
    onRowDblclick(row) {
      if (row.id) {
        delete row.id;
      }

      if (row.ID) {
        delete row.ID;
      }
      this.$emit("loadTemplateData", row);
    },

    //查询
    onQuery() {
      //根据type查询模板数据
      listTemplatesByType({
        type: this.type,
        name: this.form.templateName,
      }).then((res) => {
        var resData = res.data.data;
        var tableData = [];
        console.log(resData);
        if (resData) {
          for (var i = 0; i < resData.length; i++) {
            var content = JSON.parse(resData[i].content);
            let res = {
              id: resData[i].id,
              templateName: resData[i].name,
              mainContent: content.mainContent,
              devContent: content.devContent,
            };
            tableData.push(res);
          }
          this.tableData = tableData;
        } else {
          this.tableData = [];
        }
      });
    },

    //重置
    onReset() {
      if (this.$refs.form) {
        this.$refs.form.resetFields();
        this.onQuery();
      }
    },

    //渲染表格列
    itemFormatter(cellValue, codeList) {
      if (codeList && cellValue) {
        // return this.$common.renderCodeId(cellValue, codeList);
        return this.$common.renderCode(cellValue, "ID", "TEXT", codeList);
      } else {
        return cellValue;
      }
    },
  },
};
</script>
<style scoped>
.template-query >>> .el-dialog__body {
  height: 600px;
}

.template-query >>> .el-form-item__label {
  width: 85px !important;
}

.delete-btn {
  background-image: url("~@/assets/imgs/delete.png");
  width: 23px;
  height: 23px;
  padding-left: 5px;
  cursor: pointer;
  background-repeat: no-repeat;
}
.contentTable {
  height: calc(100% - 50px) !important;
  overflow: scroll;
}
.contentTable >>> .el-table__body-wrapper::-webkit-scrollbar {
  width: 10px;
  height: 8px;
}
</style>
相关推荐
杨芋爽1 小时前
管理后台列表页为什么一直转圈?从一次 1+N 请求扇出聊聊前端性能优化
javascript
_山海2 小时前
Bun入门指南
前端·javascript·后端
2301_32241428042 小时前
活力孕康复APP 47737- 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·mysql·微信小程序·idea·微信开发者工具
YHL2 小时前
🎯 JavaScript 单例模式(Singleton Pattern)—— 从理论到实战
javascript·设计模式
vx_Biye_Design3 小时前
springboot游泳馆系统93765-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·spring·课程设计
晴天163 小时前
VSCodium 项目介绍
前端·javascript·vscode
世岩清上3 小时前
展厅数字内容同质化严重,怎样打造专属叙事风格?
大数据·前端·javascript·人工智能·html·音视频·展厅改造
持敬chijing4 小时前
Web前后端开发-JavaScript 入门教程
开发语言·前端·javascript
专业程序开发源4 小时前
springbootLivehouse票务系统-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·pygame