<template>
  <div class="page">
    <LayoutTable :data="tableData" :config="tableConfig"> </LayoutTable>

    <drawer-show ref="drawerform" @ok="getData" />
  </div>
</template>

<script>
/** 表单弹出框模式需引入 */
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
export default {
  name: "RoomList",
  components: {
    drawerShow,
  },
  mixins: [table],
  created() {},
  methods: {
    renderTable(tableData) {
      return (
        <el-table stripe data={tableData} class="total-table">
          {this.columnSet.map((item) => this.renderTableColumn(item))}
        </el-table>
      );
    },
    renderTableColumn(options) {
      return (
        <el-table-column
          prop={options.prop}
          label={options.label}
          width={options.width}
          formatter={options.formatter}
        ></el-table-column>
      );
    },
    /** 重写新增方法 */
    toAdd(row) {
      this.$refs.drawerform.add(row);
    },
    /** 重写编辑方法 */
    toEdit(row) {
      this.$refs.drawerform.edit(row);
    },
    /** 重写查看方法 */
    toView(row) {
      this.$refs.drawerform.view(row);
    },
  },
  data() {
    return {
      /** 子表列元素 */
      columnSet: [
        { label: "设备编码", prop: "deviceCode", width: 150 },
        { label: "设备名称", prop: "deviceName", width: 150 },
      ],
      config: {
        search: [
          {
            name: "roomName",
            type: "text",
            label: "房间名称",
            fuzzy: true,
          },
        ],
        columns: [
          { type: "selection", width: 60 },
          { type: "index", label: "序号", width: 50 },

          {
            label: "房间名称",
            prop: "roomName",
            formatter: (row) => (row.roomName ? row.roomName : "--"),
          },

          {
            label: "房间编码",
            prop: "roomCode",
            formatter: (row) => (row.roomCode ? row.roomCode : "--"),
          },

          { label: "房间类型", prop: "roomType", formatter: this.formatter },

          {
            label: "绑定设备",
            width: 120,
            prop: "subColumns",
            formatter: (row) => {
              let widthsize = this.columnSet.reduce((pre, cur) => {
                return pre + Number(cur.width);
              }, 50);
              return (
                <el-popover placement="right" width={widthsize} trigger="click">
                  {this.renderTable(row.roomDeviceList)}
                  <el-button type="text" slot="reference">
                    详细
                  </el-button>
                </el-popover>
              );
            },
          },

          { label: "员工人数", prop: "countPerson", formatter: this.formatter },

          {
            label: "操作",
            width: 240,
            formatter: (row) => {
              return (
                <table-buttons
                  noAdd
                  row={row}
                  onEdit={this.toEdit}
                  onView={this.toView}
                  onDel={this.toDel}
                />
              );
            },
          },
        ],
      },
    };
  },
};
</script>
