<template>
  <div class="box-center">
    <div class="app-top">
      <div class="app-titel" v-if="role != 3" style="margin-bottom: 10px">
        <div class="titel-text">项目选择:</div>
        <div style="margin-left: 26px">
          <el-select
            v-model="houseId"
            placeholder="请选择"
            filterable
            @change="houseChange"
          >
            <el-option
              v-for="item in houseList"
              :key="item.id"
              :label="item.propertyName"
              :value="item.id"
            >
            </el-option>
          </el-select>
        </div>
      </div>
      <div class="app-titel">
        <div class="titel-text">接待时间:</div>
        <div class="toptimeqhuan">
          <div :class="{ tophove: dateType == 4 }" @click="tabtimetap(4)">
            近7天
          </div>
          <div :class="{ tophove: dateType == 5 }" @click="tabtimetap(5)">
            近15天
          </div>
          <div :class="{ tophove: dateType == 6 }" @click="tabtimetap(6)">
            近30天
          </div>
        </div>
        <div style="margin-left: 26px">
          <el-date-picker
            v-model="customtime"
            @change="confirmtime()"
            type="daterange"
            range-separator="-"
            :default-time="['00:00:00', '23:59:59']"
            :clearable="false"
            value-format="yyyy-MM-dd"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          >
          </el-date-picker>
        </div>
      </div>
      <div class="app-titel" style="margin-top: 15px" v-show="isOpen">
        <div class="div-lab">
          <div style="margin-right: 20px" class="titel-text">团队:</div>
          <el-select
            v-model="deptId"
            filterable
            @change="deptChange"
            placeholder="请选择"
            class="div-inp"
          >
            <el-option
              v-for="item in options"
              :key="item.deptId"
              :label="item.name"
              :value="item.deptId"
            >
            </el-option>
          </el-select>
        </div>
        <div style="margin-left: 26px" class="div-lab">
          <div style="margin-right: 20px" class="titel-text">置业顾问:</div>
          <el-select
            v-model="accountId"
            filterable
            @change="repChange"
            placeholder="请选择"
            class="div-inp"
          >
            <el-option
              v-for="item in repList"
              :key="item.accountId"
              :label="item.name"
              :value="item.accountId"
            >
            </el-option>
          </el-select>
        </div>
        
      </div>
      <div class="app-titel" style="margin-top: 15px">
         <div style="margin-left: 30px">
          <el-button type="primary" size="small" @click="screen()"
            >筛选</el-button
          >
          <el-button type="text" size="small" @click="reset()"
            >清空筛选条件</el-button
          >
                  <el-button style="margin-left:10px;" @click="isSystoleForm" type="text">{{isOpen?'收起':'展开'}}<i style="margin-left:5px;" :class="isOpen?'el-icon-arrow-up':'el-icon-arrow-down'"></i></el-button>

        </div>
        <div
          style="margin-left: auto; margin-right: 10px"
          v-if="sta_rec_downLoad"
        >
          <el-button @click="downLoad" icon="el-icon-download">导出</el-button>
        </div>
      </div>
     
    </div>
    <!-- 表格 -->
    <div class="cen-tab">
      <el-table :header-cell-style="{background:'#F5F7FA',color:'#333333'}" :data="tableData" style="width: 100%">
        <el-table-column prop="batchId" width="120" label="序号" align="center">
          <template slot-scope="scope">
            {{
              scope.$index == tableData.length - 1
                ? "合计/平均"
                : scope.$index + 1
            }}
          </template>
        </el-table-column>
        <el-table-column
          width="120"
          prop="accountName"
          label="日期"
          align="center"
          sortable
        >
          <template slot-scope="scope">
            {{
              scope.$index == tableData.length - 1
                ? scope.row.statDate
                : scope.row.statDate.substring(0, 10)
            }}
          </template>
        </el-table-column>
        <el-table-column
          prop="fraction"
          label="平均执行率"
          align="center"
          width="110"
          sortable
        >
          <template slot-scope="{ row }"> {{ row.fraction }}% </template>
        </el-table-column>
        <el-table-column
          prop="receptionCount"
          label="接待量"
          align="center"
          sortable
        >
          <template slot-scope="{ row }"> {{ row.receptionCount }}次 </template>
        </el-table-column>
        <el-table-column
          prop="accountNum"
          label="接待顾问"
          align="center"
          sortable
          width="100"
        >
        </el-table-column>
        <el-table-column
          prop="activeCustomer"
          label="有效接待"
          align="center"
          sortable
          width="100"
        >
          <template slot-scope="{ row }"> {{ row.activeCustomer }}次 </template>
        </el-table-column>
        <el-table-column
          prop="prohibitedCustomer"
          label="违禁接待次数"
          align="center"
          sortable
          width="120"
        >
        </el-table-column>
        <el-table-column
          prop="sumDurationMinutes"
          label="接待时长(分)"
          align="center"
          sortable
          width="120"
        >
          <template slot-scope="{ row }">
            {{ Math.floor(row.sumDurationMinutes) }}分钟
          </template>
        </el-table-column>
        <el-table-column
          prop="prohibitedZb"
          label="违禁接待占比"
          align="center"
          width="150"
          sortable
        >
          <template slot-scope="{ row }"> {{ row.prohibitedZb }}% </template>
        </el-table-column>
        
        <el-table-column
          v-for="(item, idx) in tablist"
          :key="idx"
          :prop="item.props"
          :label="item.label"
          align="center"
          sortable
          width="100"
        >
          <template slot-scope="{ row }"> {{ row[item.props] }}% </template>
        </el-table-column>
        <el-table-column label="操作" align="center">
          <template slot-scope="scope">
            <el-button
              v-if="scope.$index < tableData.length - 1"
              type="text"
              size="small"
              @click="toDetail(scope.row)"
              >详情</el-button
            >
          </template>
        </el-table-column>
      </el-table>
      <div style="display: flex; justify-content: flex-end; margin-top: 10px">
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="current"
          :page-sizes="[10, 30, 50]"
          :page-size="size"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
        >
        </el-pagination>
      </div>
    </div>

    <el-dialog title="详情" :visible.sync="dialogVisible" width="80%">
      <div class="cen-tab">
        <el-table
          :data="detailData"
          stripe
          style="width: 100%"
        >
          <el-table-column prop="batchId" label="序号" align="center">
            <template slot-scope="scope">
              {{
                scope.$index == detailData.length - 1
                  ? "合计/平均"
                  : scope.$index + 1
              }}
            </template>
          </el-table-column>
          <el-table-column prop="accountName" label="顾问" align="center">
          </el-table-column>
          <el-table-column prop="deptName" label="归属团队" align="center">
          </el-table-column>
          <el-table-column prop="fraction" label="平均执行率" align="center" >
          </el-table-column>
          <el-table-column prop="receptionCount" label="接待量" align="center" >
          </el-table-column>
          <el-table-column
            prop="activeCustomer"
            label="有效接待"
            align="center"
            
          >
          </el-table-column>
          <el-table-column
            prop="prohibitedCustomer"
            label="违禁接待次数"
            align="center"
            
          >
          </el-table-column>
          <el-table-column
            prop="sumDurationMinutes"
            label="接待时长(分)"
            align="center"
            
          >
            <template slot-scope="{ row }">
              {{ Math.floor(row.sumDurationMinutes) }}
            </template>
          </el-table-column>
          <el-table-column
            prop="prohibitedZb"
            label="违禁接待占比"
            align="center"
            
          >
          </el-table-column>
          
          <el-table-column
            v-for="(item, idx) in tablist1"
            :key="idx"
            :prop="item.props"
            :label="item.label"
            align="center"
          >
          </el-table-column>
        </el-table>
        <div style="display: flex; justify-content: flex-end; margin-top: 10px">
          <el-pagination
            @size-change="handleSizeChange1"
            @current-change="handleCurrentChange1"
            :current-page="current1"
            :page-sizes="[10, 30, 50]"
            :page-size="size1"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total1"
          >
          </el-pagination>
        </div>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import { mapGetters } from "vuex";
import { exportMethodPost } from "@/util/util";
export default {
  data() {
    return {
      isOpen:false,
      houseId: "",
      buildingoptions: [],
      houseList: [],
      detailData: [],
      dateType: 2,
      repList: [],
      current: 1,
      current1: 1,
      accountId: "",
      size: 10,
      total: 20,
      size1: 10,
      total1: 20,
      customtime: [],
      tablist: [],
      tablist1: [],
      deptId: "",
      tableData: [],
      orgType: localStorage.getItem("orgType"),
      options: [],
      value: "1",
      statDateStart: "",
      statDateEnd: "",
      echarlist: [],
      echarlist1: [],
      echarlist2: [],
      echarlist3: [],
      teamAllLevel: [],
      teamAllLevelid: "",
      teamAllLeve2id: "",
      teamAllLeve2: [],
      statDate: "",
      dialogVisible: false,
      houseList: [],
      role: "",
    };
  },
  computed: {
    ...mapGetters(["permissions"]),
  },
  created() {
    this.sta_rec_downLoad = this.permissions["sta_rec_downLoad"];
  },
  mounted() {
    this.role = localStorage.getItem("orgType");
    if (this.role == 3) {
      this.houseId = localStorage.getItem("houseId");
      this.tabtimetap(4);
      this.deptFindList();
    } else {
      this.zkhousePage();
    }
  },
  methods: {
    isSystoleForm(){
      this.isOpen = !this.isOpen
    },
    downLoad() {
      let obj = {
        houseId: this.houseId,
        statDateStart: this.statDateStart,
        statDateEnd: this.statDateEnd,
        type: 1,
        current: 1,
        size: 1,
        deptId: this.deptId,
        accountId: this.accountId,
        dateType: this.dateType == 7 ? null : this.dateType,
      };
      exportMethodPost(
        "autoSR/cusStageStatistics/receptionStatisticsExport",
        "接待统计",
        obj
      );
    },
    houseChange() {
      this.customtime = [];
      this.TimetoAhoose = 4;
      this.statDateStart = "";
      this.deptId = "";
      this.accountId = "";
      this.statDateEnd = "";
      this.tabtimetap(4);
      this.deptFindList();
    },
    zkhousePage() {
      this.$api.api
        .findHouseByUser({
          orgType: localStorage.getItem("orgType"),
        })
        .then((res) => {
          this.houseList = res.data;
          this.houseId = res.data[0].id;
          this.tabtimetap(4);
          this.deptFindList();
        });
    },
    toDetail(row) {
      console.log(row);
      this.statDate = row.statDate.substring(0, 10);
      this.dialogVisible = true;
      this.getDetailList();
    },
    // 获取detail
    getDetailList() {
      this.$api.api
        .receptionStatistics({
          houseId: this.houseId,
          statDate: this.statDate,
          current: this.current,
          size: this.size,
          deptId: this.deptId,
          accountId: this.accountId,
          type: 2,
        })
        .then((res) => {
          this.detailData = res.data.records;
          // 数据处理
          // 需要两个数组，一个用来展示
          this.deailDate(0);
          this.total1 = res.data.total;
        });
    },
    screen() {
      this.current = 1;
      this.accountRank();
    },
    reset() {
      this.current = 1;
      this.deptId = "";
      this.accountId = "";
      this.accountRank();
    },
    handleClose(done) {
      this.$confirm("确认关闭？")
        .then((_) => {
          done();
        })
        .catch((_) => {});
    },
    deptFindList() {
      // 获取团队
      this.$api.http
        .overviewfindList({
          houseId: this.houseId,
        })
        .then((res) => {
          let userinfo = JSON.parse(sessionStorage.getItem("zk-userInfo"));
          if (userinfo.content.deptType == 1) {
            this.options.push(...res.data);
            this.deptId = this.options[0].deptId;
          } else {
            this.options = [
              {
                name: "全部",
                deptId: "",
              },
            ];
            this.options.push(...res.data);
            this.deptId = "";
          }
          this.receptionStatisticsAllAccount();
          this.accountRank();
        });
    },
    deptChange() {
      this.receptionStatisticsAllAccount();
      this.accountId = "";
    },
    receptionStatisticsAllAccount() {
      this.$api.api
        .receptionStatisticsAllAccount({
          houseId: this.houseId,
          deptId: this.deptId,
        })
        .then((res) => {
          console.log(res);
          this.repList = [];
          this.repList.push(...res.data);
          this.accountRank();
        });
    },
    // 获取列表
    repChange() {
      this.accountRank();
    },
    accountRank() {
      this.$api.api
        .receptionStatistics({
          houseId: this.houseId,
          statDateStart: this.statDateStart,
          statDateEnd: this.statDateEnd,
          current: this.current,
          size: this.size,
          deptId: this.deptId,
          accountId: this.accountId,
          dateType: this.dateType == 7 ? null : this.dateType,
          type: 1,
        })
        .then((res) => {
          this.tableData = res.data.records;
          // 数据处理
          // 需要两个数组，一个用来展示
          this.deailDate();
          this.total = res.data.total;
        });
    },
    confirmtime() {
      this.dateType = 7;
      this.statDateStart = this.customtime[0];
      this.statDateEnd = this.customtime[1];
      this.init();
    },
    init() {
      this.accountRank();
    },
    deailDate(idx) {
      if (idx) {
        this.tablist1 = [];
        // 当他是第一个 小将
        // console.log("第一个");
        this.deailDate[0].resultsList.map((item, idx) => {
          let obj = {};
          obj.label = item.name;
          obj.props = "str" + idx;
          this.tablist1.push(obj);
        });
        this.deailDate.map((item) => {
          this.tablist1.map((item1, idx) => {
            item[item1.props] = item.resultsList[idx].zxl;
          });
        });
      } else {
        this.tablist = [];
        // 当他是第一个 小将
        // console.log("第一个");
        this.tableData[0].resultsList.map((item, idx) => {
          let obj = {};
          obj.label = item.name;
          obj.props = "str" + idx;
          this.tablist.push(obj);
        });
        this.tableData.map((item) => {
          this.tablist.map((item1, idx) => {
            item[item1.props] = item.resultsList[idx].zxl;
          });
        });
      }
    },
    handleCurrentChange(e) {
      this.current = e;
      this.accountRank();
    },
    handleSizeChange(e) {
      this.size = e;
      this.accountRank();
    },
    handleCurrentChange1(e) {
      this.current1 = e;
      // this.accountRank();
    },
    handleSizeChange1(e) {
      this.size1 = e;
      // this.accountRank();
    },
    //切换时间
    tabtimetap(index) {
      this.statDateStart = "";
      this.statDateEnd = "";
      this.dateType = index;
      this.customtime = [];
      
      //给时间选择器赋值
      let num = 24 * 3600 * 1000;
      //	获取当前时间戳转换为日期格式
      if (index == 4) {
        num = 24 * 3600 * 1000 * 7;
      }
      if (index == 5) {
        num = 24 * 3600 * 1000 * 15;
      }
      if (index == 6) {
        num = 24 * 3600 * 1000 * 30;
      }
      this.customtime = [
        this.timestampToTime(new Date().getTime() - num),
        this.timestampToTime(new Date().getTime() - 24 * 3600 * 1000),
      ];

      this.init();
    },
    dealData(arr) {
      let num = Math.max.apply(
        Math,
        arr.map(function (o) {
          return o.zxl;
        })
      ); //结果：3
      arr.map((item) => {
        item.zxl1 = Math.floor((item.zxl / num) * 100);
      });
      return arr;
    },

    
    timestampToTime(timestamp) {
      var date = new Date(timestamp); //时间戳为10位需*1000，时间戳为13位的话不需乘1000
      var yyyy = date.getFullYear() + "-";
      var MM =
        (date.getMonth() + 1 < 10
          ? "0" + (date.getMonth() + 1)
          : date.getMonth() + 1) + "-";
      var dd = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
      return yyyy + MM + dd;
    },
  },
};
</script>

<style scoped="scoped" lang="scss" >
.box-center {
  width: 100%;
  padding: 5px 15px 20px;
  min-width: 1000px;
}
.cen-tab {
  width: 100%;
  padding: 15px;
  background: #ffffff;
  margin-top: 15px;
}
.tophove {
  color: #ffffff;
  background: #2671e2;
}
.app-top {
  width: 100%;
  background: #ffffff;
  box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
  border-radius: 4px;
  padding-top: 15px;
  padding-bottom: 15px;
  .app-titel {
    width: 100%;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    .label {
      font-size: 14px;
      font-weight: 400;
      color: #32363d;
      line-height: 32px;
      text-align: right;
    }
    .titel-text {
      height: 100%;
      font-size: 16px;
      color: #32363d;
      text-indent: 30px;
    }
    .toptimeqhuan {
      height: 30px;
      background: #ffffff;
      display: flex;
      align-items: center;
      margin-left: 20px;
    }
    .toptimeqhuan div {
      padding-left: 20px;
      padding-right: 20px;
      text-align: center;
      line-height: 30px;
      font-size: 14px;
      margin-right: 15px;
      border-radius: 4px;
      border: 1px solid #e0e0e0;
    }
  }
}
.div-lab {
  display: flex;
  margin: 5px;
}
.div-inp {
  width: 250px;
}

.app-box-san {
  width: 100%;
  height: 400px;
  display: flex;
  margin-top: 15px;
  .zuo {
    flex: 1;
    height: 100%;
    margin-right: 15px;
    background: #ffffff;
    border-radius: 4px;
    .title {
      width: 100%;
      height: 55px;
      // border-bottom: 1px solid #e0e0e0;
      display: flex;
      align-content: center;
      .text1 {
        flex: 2;
        line-height: 55px;
        text-indent: 20px;
        font-weight: 500;
        font-size: 16px;
        color: #333333;
            display: flex;
            align-items: center;
      }
      .text2 {
        flex: 1;
        height: 55px;
        display: flex;
        align-items: center;
      }
    }
  }
  .you {
    height: 100%;
    flex: 1;
    background: #ffffff;
    border-radius: 4px;
    .title {
      width: 100%;
      height: 55px;
      // border-bottom: 1px solid #e0e0e0;
      display: flex;
      align-content: center;
      .text1 {
        flex: 2;
        line-height: 55px;
        text-indent: 20px;
        font-weight: 500;
        font-size: 16px;
        color: #333333;
            display: flex;
            align-items: center;
      }
      .text2 {
        flex: 1;
        height: 55px;
        display: flex;
        align-items: center;
      }
    }
  }
}

.hejisan {
  width: 92%;
  margin: 15px auto;
  display: flex;
  // padding-top: 10px;
  // padding-bottom: 10px;
  .text1-1 {
    color: #666666;
  }
  .text1-2 {
    color: #333333;
    margin-top: 10px;
  }
}

// 进度条
.jinbox {
  width: 100%;
  height: 18px;
  line-height: 18px;
  display: flex;
  font-size: 16px;
  color: #2c3542;
  margin-top: 24px;
  align-items: center;
  .jinboxtit {
    width: 14%;
    height: 18px;
    padding-right: 6px;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
  }
  .jinbox-box {
    width: 75%;
    height: 100%;
    border-radius: 8px;
    background: #f2f2f2;
  }
  .boxbaifenbi {
    height: 100%;
    background: #60d7a0;
    border-radius: 8px;
    max-width: 100%;
  }
  .boxbaifenbi2 {
    height: 100%;
    max-width: 100%;
    background: #5b8ff9;
  }
  .jinboxbott {
    width: 16%;
    text-indent: 50px;
  }
}
.div-lab {
  display: flex;
  margin: 5px;
}
.div-inp {
  width: 200px;
}
.label {
  font-size: 14px;
  font-weight: 400;
  color: #32363d;
  line-height: 32px;
  margin-left: 15px;
  min-width: 40px;
}
/deep/ .el-table__header-wrapper{
  thead{
    tr{
      th{
        background: #F5F7FA;
        color: #333333;
      }
    }
  }
}
/deep/ .el-dialog--center{
  border-radius: 8px;
  .el-dialog__title{
    font-weight: bold;
  }
}
/deep/ .el-button--primary{
  background: #2671E2 !important;
  border: 1px solid #2671E2 !important;
}
/deep/ .el-button--text{
  color: #2671E2;
}
</style>
