<template>
  <section class="List">
    <ai-list>
      <template slot="title">
        <ai-title title="席位管理" isShowBottomBorder></ai-title>
      </template>
      <template #content>
        <ai-search-bar>
          <template #left>
            <el-select v-model="configInfo.id" filterable placeholder="请选择机位" size="small" @change="configChange">
              <el-option
                v-for="item in configList"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
            <span class="tips">当前机位1有效期为：{{configInfo.validity}}&nbsp;&nbsp;&nbsp;&nbsp;ip地址为：{{configInfo.xbotIp}}</span>
          </template>
          <template #right>
            <el-button size="small" :type="configInfo.status != 1 ? 'info' : 'primary'" @click="openWechat()" :disabled="configInfo.status != 1">{{configInfo.status != 1 ? '已启动' : '启动'}}</el-button>
          </template>
        </ai-search-bar>
        <ai-table :tableData="tableData" :total="total" :current.sync="search.current" :size.sync="search.size"
                  @getList="getTableData()" :col-configs="colConfigs">
          <el-table-column slot="avatar" label="头像 "  align="left" width="200">
            <template slot-scope="{ row }">
              <img :src="row.avatar ? row.avatar : 'https://cdn.cunwuyun.cn/dvcp/group-img.png'" alt="" class="group-avatar">
            </template>
          </el-table-column>
          <el-table-column slot="groupCount" label="监控群聊"  align="center">
            <template slot-scope="{ row }">
              <div @click="showDialog(row)" style="cursor: pointer;color:#26f">{{row.groupCount}}</div>
            </template>
          </el-table-column>
          <el-table-column slot="num" label="群匹配"  align="center">
            <template slot-scope="{ row }">
              <div>{{row.matchGroupCount}}/{{row.groupCount}}</div>
            </template>
          </el-table-column>
          <el-table-column slot="options" label="操作"  align="center">
            <template slot-scope="{ row }">
              <el-button type="text" @click="toGroup(row)">群匹配</el-button>
            </template>
          </el-table-column>
        </ai-table>
      </template>
    </ai-list>
    <ai-dialog
      title="监控群聊"
      :visible.sync="dialog"
      :destroyOnClose="true"
      width="720px"
      :customFooter="true">
        <ai-table :tableData="tableDataGroup" :isShowPagination="false"
          @getList="getTableDataGroup()" :col-configs="colConfigsGroup">
          <el-table-column slot="avatar" label="群聊头像"  align="left">
            <template slot-scope="{ row }">
              <img :src="row.avatar ? row.avatar : 'https://cdn.cunwuyun.cn/dvcp/group-img.png'" alt="" class="group-avatar">
            </template>
          </el-table-column>
        </ai-table>
        <div class="dialog-footer" slot="footer">
          <el-button @click="dialog=false">关闭</el-button>
        </div>
    </ai-dialog>
  </section>

</template>

<script>
import { mapState } from "vuex";
export default {
  name: "List",
  props: {
    instance: Function,
    dict: Object
  },
  data() {
    return {
      search: {
        current: 1,
        size: 10,
      },
      tableData: [],
      total: 0,
      dialog: false,
      configList: [],
      configId: '',
      configInfo: {id: ''},
      groupInfo: {},
      searchGroup: {
        current: 1,
        size: 10,
      },
      tableDataGroup: [],
      totalGroup: 0,
    }
  },
  created() {
    this.dict.load('yesOrNo').then(() => {
      this.getConfigList()
    })
  },
  computed: {
    ...mapState(['user']),
    colConfigs() {
      return [
        { slot: "avatar"},
        { slot: "loginUserId", label: '用户id'},
        { prop: "loginUserName", label: '姓名', align: "left"},
        { prop: "phone", label: '手机号'},
        // { prop: "girdNames", label: '管辖区域'},
        { slot: "groupCount", label: '监控群聊'},
        { slot: "num", label: '群匹配'},
        { slot: "option"},
      ]
    },
    colConfigsGroup() {
      return [
        { slot: "avatar", label: '群聊头像'},
        { prop: "nickname", label: '群聊名称', align: 'center'},
        { prop: "is_manager", label: '是否管理员', dict: 'yesOrNo', align: 'center'},
        { prop: "num", label: '群聊成员（人数）', align: 'center'},
        // { prop: "phone", label: '群主'},
      ]
    },
  },
  methods: {
    getConfigList() {
      this.instance.post(`/app/appxbotconfig/list?size=1000`).then(res => {
        if(res?.data) {
          res.data.records.map((item) => {
            item.label = item.xbotName
            item.value = item.id
          })
          this.configList = res.data.records
          this.configInfo = this.configList[0]
          this.getTableData()
        }
      })
    },
    configChange(e) {
      this.configInfo = this.configList.filter(item => item.id == e)[0]
      this.search.current = 1
      this.getTableData()
    },
    openWechat() {
      this.instance.post(`/app/appxbotconfig/openWechat?id=${this.configInfo.id}`).then(res => {
        if(res.code === 0) {
          this.configInfo.status = 0
          this.$message.success('启动成功!')
        }
      })
    },
    getTableData() {
      this.instance.post(`/app/xbotCallback/list`,null,{
        params: {
          ...this.search,
          xbotId: this.configInfo.id
        }
      }).then(res => {
        if(res?.data) {
          this.tableData = res.data.records
          this.total = res.data.total
        }
      })
    },
    showDialog(row) {
      this.dialog = true
      this.groupInfo = row
      this.getTableDataGroup()
    },
    getTableDataGroup() {
      this.tableDataGroup = []
      this.instance.post(`/app/xbotCallback/groupList`,null,{
        params: {
          // ...this.searchGroup,
          current: 1,
          managerWxid: this.groupInfo.loginUserId
        }
      }).then(res => {
        if(res?.data) {
          var tableDataGroup = JSON.parse(res.data)
          tableDataGroup.map((item) => {
            item.num = item.member_list.length
            if(item.total_member > 2) {
              this.tableDataGroup.push(item)
            }
          })
        }
      })
    },
    toGroup(row) {
      this.$emit('change', {
        type: 'GroupList',
        params:row
      })
    }
  },
}
</script>

<style lang="scss" scoped>
.List {
  height: 100%;

  .time-select {
    padding: 0 16px;
    height: 32px;
    line-height: 32px;
    border: 1px solid #d0d4dc;
    border-radius: 4px;
    display: flex;
    justify-content: space-between;
    cursor: pointer;
    .el-icon-arrow-down {
      line-height: 32px;
    }
  }

  :deep .is-error {
    .time-select {
      border: 1px solid #f46!important;
    }
  }
  .tips {
    display: inline-block;
    color: #999;
    font-size: 14px;
    margin-left: 16px;
  }
  .group-avatar {
    width: 50px;
    height: 50px;
    border-radius: 50%;
  }
  :deep .ai-dialog__content--wrapper {
    // height: 1000px;
    // overflow-y: scroll;
    .ai-table {
      // height: 1000px;
    }
  }
}
</style>
