vue+elementui表格中是否启用这一列添加开关按钮

elementUI表格中这样写switch表格是否没有任何作用?效果图

封装的表格代码

<template>
	<div>
		<!-- 表格 -->
		<el-table :data="tableData" ref="tableRef" @selection-change="handleSelectionChange" border>
			<!-- 复选框 -->
			<el-table-column v-if="isCheckbox" type="selection" align="center" fixed="left" width="60"></el-table-column>
			<!-- 序号 -->
			<el-table-column v-if="isIndex" type="index" label="序号" align="center" width="60">
				<template slot-scope="scope"><span>{{ scope.row.typeIndex }}</span></template>
			</el-table-column>
			<!-- 表格数据 -->
			<template v-for="(colItem, colIndex) in cols">
				<el-table-column :align="colItem.align ? colItem.align :'center'" :prop="colItem.propName"
					:label="colItem.label" :width="colItem.width" show-overflow-tooltip :key="colIndex">
					<template slot-scope="scope">
						<img width="36px" height="36px" :src="scope.row.imageUrl" v-if="colItem.propName == 'imageUrl'" />
						<template v-else-if="colItem.propName == 'imageList'">
							<img width="36px" height="36px" :src="img.path" v-for="(img,imgIndex) in scope.row.imageList" :key="imgIndex" />
						</template>
						<template v-else-if="colItem.propName == 'imageData'">
							<div class="tdCenter">
								<img v-show="scope.row.imageData.images && scope.row.imageData.images.length > 0" width="36px" height="36px" :src="img.path" v-for="(img,imgIndex) in scope.row.imageData.images" :key="imgIndex" />
								<span v-show="scope.row.imageData.title">{{ scope.row.imageData.title }}</span>
							</div>
						</template>
						<template v-else>{{ scope.row[colItem.propName] }}</template>
					</template>
				</el-table-column>
			</template>
			<!-- 操作栏 -->
			<el-table-column label="操作" align="center" fixed="right" width="220" :resizable="false">
				<template slot-scope="scope">
					<div class="comtable-operator-content">
						<template v-for="val in handleData">
							<el-button size="small" type="general" plain @click="handleFunc(scope, val)" :key="val"
								v-if="val == 'edit'">编辑</el-button>
							<el-button size="small" type="primary" plain @click="handleFunc(scope, val)" :key="val"
								v-if="val == 'check'">查看</el-button>
							<el-button size="small" type="danger" plain @click="handleFunc(scope, val)" :key="val"
								v-if="val == 'delete'">删除</el-button>
						</template>
					</div>
				</template>
			</el-table-column>
		</el-table>

		<!-- 分页 -->
		<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :total="total"
			:page-size="pageSize" :current-page="page" layout="total, sizes, prev, pager, next, jumper">
		</el-pagination>
	</div>
</template>

<script>
	export default {
		data() {
			return {
				page: 1,
				pageSize: 10
			};
		},
		props: {
			// 是否存在复选框
			isCheckbox: {
				type: Boolean,
				default: true
			},
			// 是否存在序号列
			isIndex: {
				type: Boolean,
				default: true
			},
			// 列表数据
			tableData: {
				type: Array,
				default () {
					return [];
				}
			},
			// 列数据
			cols: {
				type: Array,
				default () {
					return [];
				}
			},
			// 操作栏数据
			handleData: {
				type: Array,
				default () {
					return ['check', 'delete'];
				}
			},
			// 表格数据总条数
			total: {
				type: [Number, String],
				default: 0
			},
			// 表格当前页数
			pageNumber: {
				type: [Number, String],
				default: 1
			}
		},
		methods: {
			// 表格操作事件
			handleFunc(event, buttonType) {
				event.buttonType = buttonType;
				this.$emit("handleFunc", event);
			},
			// 当前页显示条目个数改变事件
			handleSizeChange(val) {
				this.page = 1;
				this.pageSize = val;
				this.$emit('getList', {
					limit: val,
					page: 1
				})
			},
			// 当前页数改变事件
			handleCurrentChange(val) {
				this.page = val;
				this.$emit('getList', {
					page: val
				})
			},
			// 勾选复选框事件
			handleSelectionChange(val) {
				this.$emit("handleSelectionChange", val);
			},
			// 清除所有复选框
			handleClear() {
				this.$refs.tableRef.clearSelection();
			}
		},
		watch: {
			tableData(newVal) {
				this.tableData = newVal;
				if (this.tableData.length > 0) {
					this.tableData.forEach((item, index) => {
						item['typeIndex'] = Number(index + (this.page - 1) * this.pageSize + 1);
					})
				}
				this.$forceUpdate();
			},
			total(newVal) {
				this.total = Number(newVal);
			},
			pageNumber(newVal) {
				this.page = Number(newVal);
			}
		}
	};
</script>

<style></style>

 

<template v-for="(colItem, colIndex) in cols">
  <el-table-column
    :align="colItem.align ? colItem.align : 'center'"
    :prop="colItem.propName"
    :label="colItem.label"
    :width="colItem.width"
    show-overflow-tooltip
    :key="colIndex"
  >
    <template slot-scope="scope">
      <img
        width="36px"
        height="36px"
        :src="scope.row.imageUrl"
        v-if="colItem.propName == 'imageUrl'"
      />
      <template v-else-if="colItem.propName == 'imageList'">
        <img
          width="36px"
          height="36px"
          :src="img.path"
          v-for="(img, imgIndex) in scope.row.imageList"
          :key="imgIndex"
        />
      </template>
      <template v-else-if="colItem.propName == 'imageData'">
        <div class="tdCenter">
          <img
            v-show="scope.row.imageData.images && scope.row.imageData.images.length > 0"
            width="36px"
            height="36px"
            :src="img.path"
            v-for="(img, imgIndex) in scope.row.imageData.images"
            :key="imgIndex"
          />
          <span v-show="scope.row.imageData.title">{{ scope.row.imageData.title }}</span>
        </div>
      </template>
      <template v-else-if="colItem.propName == 'status'">
        <el-switch>
          <!-- 这里写你的开关 -->
        </el-switch>
      </template>
      <template v-else>{{ scope.row[colItem.propName] }}</template>
    </template>
  </el-table-column>
</template>

试试看

  <el-table>
    <el-table-column
      prop="zip"
      label="日期"
      width="120">
    </el-table-column>
    <el-table-column
      fixed="right"
      label="操作"
      width="100">
      <template slot-scope="scope">
        <el-button @click="click(scope.row)" type="text" size="small">启用</el-button>
      </template>
    </el-table-column>
  </el-table>

这样试过么? 写在js里面返回html片段的话 不知道会不会被解析

把组件写到template中的el-table-column的插槽里

不知道和你的情况是否一致 这个是我自己封装的 然后预留的插槽 你看是否能帮到你

把你 tableModule 这个被封装的 文件贴出来 看看  ,你在这个文件里面应该是可以添加插槽,