<template>
  <div class="box">
    <div class="condition">
      <div class="header">
        <i style="float:left;font-size:30px;padding-right:10px;cursor:pointer;" title="返回" @click="goBack" class="el-icon-back"></i>
        <die-cascader ref="dieCascader" :Family="params.Family" @change="changeDevice"></die-cascader>
        <floor-cascader ref="floorCascader" @change="changeFloor"></floor-cascader>
        <el-button style="float:right;margin-top:1px;" @click="handleClickCreate">创建已选</el-button>
      </div>
      <div class="main">
        <el-table ref="multipleTable" :data="tableData" v-loading='loading' stripe height="100%" @selection-change="handleSelectionChange">
          <el-table-column type="selection" width="55"></el-table-column>
          <el-table-column label="设备名称" width="200">
            <template slot-scope="scope">{{ scope.row.EquipLocalName?scope.row.EquipLocalName:scope.row.EquipName }}</template>
          </el-table-column>
          <el-table-column label="设备本地编码" show-overflow-tooltip>
            <template slot-scope="scope">{{ scope.row.EquipLocalID?scope.row.EquipLocalID:scope.row.EquipID }}</template>
          </el-table-column>
          <el-table-column prop="Category" label="设备类型" show-overflow-tooltip width="200"></el-table-column>
          <el-table-column prop="BuildingId" label="所属建筑"></el-table-column>
          <el-table-column prop="FloorId" label="所属楼层"></el-table-column>
          <el-table-column prop="address" label="操作" width="100">
            <template slot-scope="scope">
              <el-button @click.native.prevent="handleOpenDetail(scope.row, tableData)" type="text" size="small">详情</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div class=footer>
        <el-pagination
          class="right"
          v-show="tableData && tableData.length"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="page.pageNumber"
          :page-sizes="page.pageSizes"
          :page-size="page.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="page.total">
        </el-pagination>
      </div>
    </div>
  </div>
</template>

<script>
import { mapGetters } from "vuex"
//组件
import floorCascader from "@/components/ledger/lib/floorCascader"
import dieCascader from "@/components/ledger/lib/partsDieList"
//api
import { queryPartsDie, createPropertys } from "@/api/scan/request";
export default {
  data() {
    return {
      params: {},
      loading: false,
      page: {
        pageSize: 50,
        pageSizes: [10, 20, 50, 100],
        pageNumber: 1,
        total: 0
      },
      tableData: [],
      multipleSelection:[]
    }
  },
  computed: {
    ...mapGetters("layout", ["projectId", "userId", "secret"])
  },
  components: {
    floorCascader,
    dieCascader
  },
  created() {
    this.params = this.$route.query
  },
  mounted() {
    if (this.params.category) {
      this.$refs.dieCascader.setValue([this.params.category])
    }
    if (this.params.buildId && this.params.floorId) {
      this.$refs.floorCascader.setValue([this.params.buildId,this.params.floorId])
    } else if (this.params.buildId && !this.params.floorId) {
      this.$refs.floorCascader.setValue([this.params.buildId])
    } else {
      this.$refs.floorCascader.setValue(['all'])
    }
  },
  watch: {
    projectId() {}
  },
  methods: {
    //返回
    goBack() {
      this.$router.push({
        path: "/ledger/property",
        query: { Family: this.params.Family }
      })
    },
    //选择设备或部件
    changeDevice(val) {
      if(val.code) {
        this.params.category = val.code
      } else {
        this.params.category = ''
      }
      this.getTableData()
    },
    //选择建筑楼层
    changeFloor(value) {
      if (value[0]) {
        this.params.buildId = value[0]
      }
      if (value[1]) {
        this.params.floorId = value[1]
      } else {
        this.params.floorId = ''
      }
      this.getTableData()
    },
    //获取表格数据
    getTableData() {
      this.loading = true
      let param = this.formatFilter()
      queryPartsDie(param, res => {
        this.tableData = res.Content
        this.loading = false
      })
    },
    //格式化条件
    formatFilter() {
      let param = {
        Filters: `category='${this.params.category}'`,
        Orders: "createTime desc, EquipID asc",
        PageNumber: this.page.pageNumber,
        PageSize: this.page.pageSize
      }

      if (this.params.buildId == "noKnow") {
        param.Filters += `;buildingId isNull`
      } else if (this.params.buildId && this.params.buildId != "all") {
        param.Filters += `;buildingId='${this.params.buildId}'`
      }

      if (this.params.floorId == "noKnow") {
        param.Filters += `;floorId isNull`
      } else if (this.params.floorId && this.params.floorId != "all") {
        param.Filters += `;floorId='${this.params.floorId}'`
      }

      return param
    },
    //选择的设备或部件
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    //切换每页显示多少条数据
    handleSizeChange(val) {
      this.page.pageSize = val
      this.getTableData()
    },
    //切换页数
    handleCurrentChange(val) {
      this.page.pageNumber = val
      this.getTableData()
    },
    //查看详情
    handleOpenDetail(row) {
      // window.open(`http://adm.sagacloud.cn:8058/spread?id=${row.EquipID}&pid=${this.projectId}&secret=${this.secret}`,"_blank")
      this.$message("开发中...")
    },
    //创建已选
    handleClickCreate() {
      let list = this.multipleSelection.map((item) => {
        return item.EquipID
      })
      let param = {
        Filters: `EquipID in ${JSON.stringify(list)}`
      }
      createPropertys(param, res => {
        this.$message.success("创建成功!")
        this.$router.push({
          path: "/ledger/property",
          query: { Family: this.params.Family }
        })
      })
    }
  }
};
</script>

<style scoped lang='less'>
.box {
  .condition {
    padding: 10px;
    display: flex;
    height: 100%;
    flex-direction: column;
    border: 1px solid #dfe6ec;
    background: #fff;
    margin-bottom: 10px;
    .header{
      padding-bottom: 10px;
      border-bottom: 1px solid #bcbcbc;
    }
    .main{
      margin-top: 10px;
      height: calc(100% - 96px);
    }
    .footer{
      margin-bottom: 10px;
    }
  }
}
</style>

<style lang="less">
.el-table th {
  background-color: #d9d9d9;
  color: #000;
}
</style>

