<template>
  <div class="div_main">

    <div :style="{height:rowHeight}"
         class="div_tree">
      <el-input placeholder="输入关键字进行过滤"
                v-model="filterText">
      </el-input>
      <el-scrollbar :style="{height:treeHeight}"
                    class="scrollar">
        <el-tree ref="ref_tree"
                 v-loading="treeLoading"
                 class="filter_tree"
                 :data="treeData"
                 :props="defaultProps"
                 :highlight-current="true"
                 node-key="id"
                 :expand-on-click-node="false"
                 default-expand-all
                 :filter-node-method="filterNode"
                 @node-click="handleNodeClick">
        </el-tree>
      </el-scrollbar>

    </div>

    <div :style="{height:rowHeight}"
         class="div_table">
      <div class="div_search">
        <div class="resi-cell">
          <div class="resi-cell-label">房主姓名</div>
          <div class="resi-cell-value">
            <el-input v-model="ownerName"
                      class="resi-cell-input"
                      size="small"
                      clearable
                      placeholder="请输入内容">
            </el-input>

          </div>
        </div>
        <div class="resi-cell">
          <div class="resi-cell-label">房主手机</div>
          <div class="resi-cell-value">
            <el-input v-model="ownerPhone"
                      class="resi-cell-input"
                      size="small"
                      clearable
                      placeholder="请输入内容">
            </el-input>

          </div>
        </div>

        <div class="resi-cell">
          <div class="resi-cell-label">房屋状态</div>
          <div class="resi-cell-value">

            <el-select class="item_width_1"
                       v-model="rentState"
                       placeholder="请选择"
                       size="small"
                       clearable>
              <el-option v-for="item in rentList"
                         :key="item.value"
                         :label="item.label"
                         :value="item.value">
              </el-option>
            </el-select>

          </div>
        </div>
        <el-button style="margin-left:10px"
                   class="diy-button--search"
                   size="small"
                   @click="handleSearch">查询</el-button>
        <el-button style="margin-left:10px"
                   class="diy-button--reset"
                   size="small"
                   @click="resetSearch">重置</el-button>
        <!-- <el-button style="margin-left:10px"
                 class="diy-button--reset"
                 size="small"
                 @click="resetSearch">重置</el-button> -->
      </div>
      <build-table v-if="selTreeObj.level==='neighborHood'&&!showRoomTable"
                   ref="ref_neighTable"
                   :staffAgencyId="staffAgencyId"
                   :showImportBtn="showImportBtn"
                   @toNextLevel="toNextLevel"
                   @refreshTree="refreshTree"></build-table>

      <room-table v-if="showRoomTable||selTreeObj.level==='building'"
                  :staffAgencyId="staffAgencyId"
                  :showImportBtn="showImportBtn"
                  ref="ref_buildingTable"
                  @refreshTree="refreshTree"></room-table>

      <community-table v-if="(selTreeObj.level!=='building'||selTreeObj.level!=='neighborHood')&&!showRoomTable"
                       @toNextLevel="toNextLevel"
                       :staffAgencyId="staffAgencyId"
                       ref="ref_communityTable"
                       @refreshTree="refreshTree"></community-table>

    </div>

  </div>
</template>

<script>
import CDialog from '@c/CDialog'
import communityTable from './communityTable'
import buildTable from './buildTable'
import roomTable from './roomTable'
import { requestPost } from "@/js/dai/request";
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // 引入Loading服务

let loading // 加载动画
export default {
  data () {
    return {
      filterText: '',
      treeLoading: true,
      treeData: [],
      defaultProps: {
        children: 'children',
        label: 'showName'
      },

      selTreeObj: {},

      centerPoint: [],
      staffAgencyId: localStorage.getItem("agencyId"),
      showImportBtn: false,

      rentList: [
        {
          value: '1',
          label: '出租'
        },
        {
          value: '2',
          label: '闲置'
        },
        {
          value: '0',
          label: '自住'
        },
      ],
      ownerName: '',
      ownerPhone: '',
      rentState: '',
      showRoomTable: false,
      selObj: {},
    }
  },
  components: {
    CDialog
  },
  async mounted () {
    this.treeLoading = true
    await this.loadOrgData()
    await this.loadTree()

    await this.$refs['ref_communityTable'].loadTable(true, this.selTreeObj)
    if (this.treeData.length > 0) {
      this.$nextTick(() => {
        // ref_tree 元素的ref   value 绑定的node-key
        this.$refs.ref_tree.setCurrentKey(this.treeData[0].id);
      });
    }
    this.treeLoading = false

  },
  computed: {
    rowHeight () {

      return this.$store.state.inIframe ? this.clientHeight - 140 + this.iframeHeight + 'px' : this.clientHeight - 140 + 'px'

    },
    treeHeight () {
      return this.$store.state.inIframe ? this.clientHeight - 200 + this.iframeHeight + 'px' : this.clientHeight - 200 + 'px'

    },

    ...mapGetters(['clientHeight', 'iframeHeight'])
  },
  methods: {

    handleSearch () {
      if (this.ownerName || this.ownerPhone || this.rentState) {
        this.showRoomTable = true
        this.$nextTick(() => {
          this.$refs['ref_buildingTable'].loadTable(false, this.selTreeObj, this.ownerName, this.ownerPhone, this.rentState)
        })
      } else {
        this.$message.warning('请输入查询条件')
      }


    },

    //重置搜索条件
    resetSearch () {
      this.ownerName = ''
      this.ownerPhone = ''
      this.rentState = ''

      this.pageSize = 10
      this.pageNo = 1
      this.handleNodeClick(this.selObj)
      // this.loadTable()
    },

    async loadTree (isRefresh) {
      const url = "/gov/org/building/treelist"
      let params = {}

      const { data, code, msg } = await requestPost(url, params)

      if (code === 0) {

        this.treeData = data
        if (!isRefresh && data.length > 0) {

          this.selTreeObj = data[0]
          if (!this.selTreeObj.latitude) {
            this.selTreeObj.latitude = this.centerPoint[0]
          }

          if (!this.selTreeObj.longitude) {
            this.selTreeObj.longitude = this.centerPoint[1]
          }
        }

      } else {
        this.$message.error(msg)
      }
    },

    //加载组织数据
    async loadOrgData () {
      const url = "/gov/org/agency/maporg"
      // const url = "http://yapi.elinkservice.cn/mock/245/gov/org/agency/maporg"
      let params = {}

      const { data, code, msg } = await requestPost(url, params)

      if (code === 0) {
        this.centerPoint = []

        this.centerPoint.push(data.latitude)
        this.centerPoint.push(data.longitude)

      } else {
        this.$message.error(msg)
      }

    },

    handleNodeClick (obj) {
      this.ownerName = ''
      this.ownerPhone = ''
      this.rentState = ''
      this.showRoomTable = false

      this.selObj = JSON.parse(JSON.stringify(obj))
      this.getTreeObj(obj)

      this.$nextTick(() => {
        if (obj.level === 'building') {//点击楼栋
          this.$refs['ref_buildingTable'].loadTable(true, this.selTreeObj)

        } else if (obj.level === 'neighborHood') {//点击小区
          this.$refs['ref_neighTable'].loadTable(true, this.selTreeObj)

        } else {
          this.$refs['ref_communityTable'].loadTable(true, this.selTreeObj)
        }
      })

    },

    //添加小区结束
    async refreshTree () {
      this.treeLoading = true
      await this.loadTree(this.selTreeObj.id)
      this.$nextTick(() => {
        // ref_tree 元素的ref   value 绑定的node-key
        this.$refs.ref_tree.setCurrentKey(this.selTreeObj.id);
      });
      this.treeLoading = false
    },

    //进入下一级
    toNextLevel (row, level) {

      if (level === 'community') {
        this.selTreeObj = this.$refs.ref_tree.getNode(row.neighborHoodId).data
      } else {
        this.selTreeObj = this.$refs.ref_tree.getNode(row.buildingId).data
      }

      this.handleNodeClick(this.selTreeObj)
      this.$nextTick(() => {
        // ref_tree 元素的ref   value 绑定的node-key
        this.$refs.ref_tree.setCurrentKey(this.selTreeObj.id);
      });

    },

    //解析树数据
    getTreeObj (obj) {
      // 树接口：
      // 组织：组织id、组织名称、type、经度、纬度
      // 小区：小区id、小区名称、type、所属网格id、所属网格名称、所属组织id、所属组织名称、经度、纬度
      // 楼：楼id、楼名称、type、所属小区id、所属小区名称
      if (obj.level === 'building') {//点击楼栋
        let neighborHoodNode = this.$refs.ref_tree.getNode(obj.pid)//所属小区

        let gridNode = this.$refs.ref_tree.getNode(neighborHoodNode.data.pid)//所属网格
        let agencyNode = this.$refs.ref_tree.getNode(gridNode.data.pid)//所属社区
        obj.agencyId = agencyNode.data.id
        obj.agencyName = agencyNode.data.label
        obj.gridId = gridNode.data.id
        obj.gridName = gridNode.data.label
        obj.neighborHoodId = neighborHoodNode.data.id
        obj.neighborHoodName = neighborHoodNode.data.label
        if (obj.agencyId === this.staffAgencyId) {
          this.showImportBtn = true
        } else {
          this.showImportBtn = false
        }

      } else if (obj.level === 'neighborHood') {//点击小区
        let gridNode = this.$refs.ref_tree.getNode(obj.pid)
        let agencyNode = this.$refs.ref_tree.getNode(gridNode.data.pid)
        obj.gridId = gridNode.data.id
        obj.gridName = gridNode.data.label
        obj.agencyId = agencyNode.data.id
        obj.agencyName = agencyNode.data.label
        if (obj.agencyId === this.staffAgencyId) {
          this.showImportBtn = true
        } else {
          this.showImportBtn = false
        }

      } else {

      }

      if (!obj.latitude) {
        obj.latitude = this.centerPoint[0]
      }

      if (!obj.longitude) {
        obj.longitude = this.centerPoint[1]
      }
      this.selTreeObj = obj
      console.log(this.selTreeObj)

    },

    filterNode (value, data) {
      if (!value) return true;
      return data.label.indexOf(value) !== -1;
    },

    // 开启加载动画
    startLoading () {
      loading = Loading.service({
        lock: true, // 是否锁定
        text: '正在加载……', // 加载中需要显示的文字
        background: 'rgba(0,0,0,.7)' // 背景颜色
      })
    },
    // 结束加载动画
    endLoading () {
      // clearTimeout(timer);
      if (loading) {
        loading.close()
      }
    }
  },
  watch: {
    filterText (val) {
      this.$refs.ref_tree.filter(val);
    }
  },
  components: {
    communityTable, buildTable, roomTable
  }
}
</script>
<style lang="scss" scoped >
.div_main {
  display: flex;
}
.scrollar {
  margin-top: 10px;
}

.div_tree {
  flex: 0 0 280px;
  background-color: #ffffff;
  border-radius: 5px;
  padding: 10px;
  overflow-y: hidden;
}
.filter_tree {
  overflow-x: auto;
}

.div_table {
  margin-left: 15px;
  // flex: 1;
  width: calc(100% - 300px);
  background-color: #ffffff;
  border-radius: 5px;
  padding: 10px;
}

.div_btn {
  margin-top: 20px;
}

.row {
  padding: 10px;
}
</style>

<style>
/* .aui-content > .el-tabs > .el-tabs__content {
  padding: 0px;
} */

.el-tree-node:focus > .el-tree-node__content {
  /* background-color: #ccc !important; */
  color: #2195fe;
}
</style>
<style lang="scss" scoped>
.div_tree {
  /deep/ .el-scrollbar__wrap {
    overflow-x: hidden !important;
  }
}
</style>

<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManage.scss";
</style>
