赞
踩
- <template>
- <div :class="$options.name">
- <el-table
- style="user-select: none"
- ref="table"
- :data="tableData"
- :row-class-name="row_class_name"
- @mousedown.native="mousedownTable"
- @row-click="row_click"
- @cell-mouse-enter="cell_mouse_enter"
- @cell-mouse-leave="cell_mouse_leave"
- @mouseup.native="mouseupTable"
- @mouseleave.native="mouseupTable"
- @selection-change="selection_change"
- >
- <el-table-column type="selection" width="50" :selectable="selectable" />
- <el-table-column type="index" label="序号" width="60" />
- <el-table-column prop="ID" label="ID" />
- <el-table-column prop="username" label="用户名" />
- </el-table>
- </div>
- </template>
- <script>
- export default {
- name: "sgBody",
- components: {},
- data() {
- return {
- isMousedownTable: false, //是否按下表格
- currentEnterRow: null, //当前移入的行数据
- tableData: [
- { ID: "330110198704103091", username: "username1" },
- { ID: "330110198704103092", username: "username2" },
- { ID: "330110198704103093", username: "username3" },
- { ID: "330110198704103094", username: "username4", disabled: true },
- { ID: "330110198704103095", username: "username5" },
- { ID: "330110198704103096", username: "username6" },
- { ID: "330110198704103097", username: "username7" },
- { ID: "330110198704103098", username: "username8" },
- ],
- selection: [], //表格选中项数组
- };
- },
-
- methods: {
- // 屏蔽复选框
- selectable(row) {
- return !row.disabled;
- },
- // 表格按下
- mousedownTable(d) {
- this.currentEnterRow &&
- !this.currentEnterRow.disabled &&
- this.$refs.table.toggleRowSelection(this.currentEnterRow);
- this.isMousedownTable = true;
- },
- // 单击表格行
- row_click(row, column, event) {
- this.currentEnterRow || (!row.disabled && this.$refs.table.toggleRowSelection(row));
- },
- // 进入单元格
- cell_mouse_enter(row, column, cell, event) {
- if (column.type === "selection") {
- this.currentEnterRow = null;
- } else {
- this.isMousedownTable &&
- !row.disabled &&
- this.$refs.table.toggleRowSelection(row);
- this.currentEnterRow = row;
- }
- },
- // 离开单元格
- cell_mouse_leave(row, column, cell, event) {
- this.currentEnterRow = null;
- },
- // 鼠标弹起或者离开表格
- mouseupTable(d) {
- this.isMousedownTable = false;
- },
- // 表格选中项发生改变
- selection_change(selection) {
- this.selection = selection;
- },
- // 表格每行样式
- row_class_name({ row, rowIndex }) {
- if (row.disabled) return "disabled";
- return this.selection.find((v) => v.ID == row.ID) ? "selected" : "";
- },
- },
- };
- </script>
- <style lang="scss" scoped>
- .sgBody {
- >>> .el-table {
- $bgColor: #409eff11;
- tr {
- // 高亮选中行
- &:hover,
- &.selected {
- td {
- background-color: $bgColor !important;
- }
- }
- // 禁用行
- &.disabled {
- $bgColor: #eee;
- td {
- background-color: $bgColor !important;
- }
- }
- }
- }
- }
- </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。