<template>
<div>
  <el-dialog :title="userObj.title" :visible.sync="userObj.show" :modal="false" :fullscreen="true">
    <div>
      <el-form label-width="120px" inline>
        <el-form-item label="课程开课时间">
          <el-date-picker
            type="daterange"
            v-model="timeLang"
            range-separator="至"
            value-format="yyyy-MM-dd"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            @change="searchList2()">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="用户ID">
          <el-input v-model="searchFrom.user_id"/>
        </el-form-item>
        <el-form-item label="是否添加老师">
          <el-select v-model="searchFrom.is_add_teacher" placeholder="请选择" @change="searchList2()" clearable>
            <el-option label="老师主动添加" :value="1">
            </el-option>
            <el-option label="用户主动添加" :value="2">
            </el-option>
            <el-option label="待通过" :value="3">
            </el-option>
            <el-option label="手机号不是微信号" :value="4">
            </el-option>
            <el-option label="用户已拒绝" :value="5">
            </el-option>
            <el-option label="暂未处理" :value="0">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="是否可看课">
          <el-select v-model="searchFrom.is_view_course" placeholder="请选择" @change="searchList2()">
            <el-option
              label="全部"
              value="">
            </el-option>
            <el-option
              label="是"
              value="1">
            </el-option>
            <el-option
              label="否"
              value="0">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="searchList2(classUserLimit)">搜索</el-button>
          <el-button type="success" @click="changeClass" v-if="!$store.state.readonly">切换班级</el-button>
          <el-button type="success" @click="onAddUser(false)" v-if="$store.state.orderRefund">+添加用户</el-button>
          <el-button type="primary"  @click="exportTable(userTable)" v-if="$store.state.export">导出</el-button>
          <el-button type="success" @click="onRank()" >看课排行</el-button>
        </el-form-item>
      </el-form>
      <el-table
        :data="[statistics]"
        border
        size="mini"
        style="width: 100%;margin: 20px 0">
        <el-table-column
          label="到课率">
          <template slot-scope="scope2">
            <span>{{ scope2.row.arrive_course_rate  | percent}}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="看课率">
          <template slot-scope="scope2">
            <span>{{ scope2.row.watch_course_rate  | percent}}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="完课率">
          <template slot-scope="scope2">
            <span>{{ scope2.row.over_course_rate  | percent}}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="打卡率">
          <template slot-scope="scope2">
            <span>{{ scope2.row.clock_rate  | percent}}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="全勤打卡率">
          <template slot-scope="scope2">
            <span>{{ scope2.row.over_clock_rate  | percent}}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="转化率">
          <template slot-scope="scope2">
            <span>{{ scope2.row.transform_rate  | percent}}</span>
          </template>
        </el-table-column>
        <el-table-column
          label="老师主动添加用户数"
          prop="teacher_add_user_num">
        </el-table-column>
        <el-table-column
          label="用户主动添加老师数"
          prop="user_add_teacher_num">
        </el-table-column>
      </el-table>
      <el-table
        :data="userTable"
        v-loading="loadingFlag"
        size="mini"
        @selection-change="handleSelectionChange123"
        style="width: 100%" fixed>
        <el-table-column
          type="selection"
          width="30">
        </el-table-column>
         <el-table-column
           width="120"
          label="沟通情况">
          <template slot-scope="scope">
            <teacher-desc :row="scope.row" :typeFlag="true" :descType="2" @onSuccess="searchList()"></teacher-desc>
          </template>
        </el-table-column>
        <el-table-column label="用户" className="f-c" min-width="180" sortable   prop="user_id">
          <template slot-scope="scope">
            <img :src="scope.row.avatar" style="width: 40px;min-width:40px;height: 40px;border-radius: 50px"> {{scope.row.nickname}}(ID:{{scope.row.user_id}})
            <br> Tel:{{scope.row.mobile}}
          </template>
        </el-table-column>
        <el-table-column
          label="看课权限">
            <template slot-scope="scope">
              <el-select v-model="scope.row.is_view_course" size="mini" @change="changeView(scope.row)">
                <el-option label="否" :value="0">
                </el-option>
                <el-option label="是" :value="1">
                </el-option>
              </el-select>
            </template>
        </el-table-column>
        <el-table-column
          label="时间" sortable  min-width="200"   prop="last_login_at" >
          <template slot-scope="scope">
            最后登录:{{ scope.row.last_login_at }}
            <br>
            进班时间:{{ scope.row.created_at }}
          </template>
        </el-table-column>
        <el-table-column
          label="看课率" sortable prop="watch_course_rate">
          <template slot-scope="scope">
            {{ scope.row.watch_course_rate  | percent}}
          </template>
        </el-table-column>
        <el-table-column
          label="看课次数" sortable prop="watch_course_num" min-width="95">
          <template slot-scope="scope">
            {{ scope.row.watch_course_num }}
          </template>
        </el-table-column>
        <el-table-column
          label="学习时长(分)" sortable min-width="120" prop="watch_course_time">
          <template slot-scope="scope">
            {{ Math.round(scope.row.watch_course_time / 60 * 100) / 100}}
          </template>
        </el-table-column>
        <el-table-column
          label="打卡率" sortable   prop="clock_rate"  min-width="80">
          <template slot-scope="scope">
            {{ scope.row.clock_rate | percent}}
          </template>
        </el-table-column>
        <el-table-column
          label="续费情况" sortable prop="is_continue_buy">
          <template slot-scope="scope">
            {{ scope.row.is_continue_buy  | isOrNot}}
          </template>
        </el-table-column>
        <el-table-column
          label="是否添加老师"  min-width="155" sortable prop="is_add_teacher">
          <template slot-scope="scope">
            <el-select v-model="scope.row.is_add_teacher" size="mini" @change="changeAddTeacher(scope.row)">
              <el-option label="老师主动添加" :value="1">
              </el-option>
              <el-option label="用户主动添加" :value="2">
              </el-option>
              <el-option label="待通过" :value="3">
              </el-option>
              <el-option label="手机号不是微信号" :value="4">
              </el-option>
              <el-option label="用户已拒绝" :value="5">
              </el-option>
              <el-option label="暂未处理" :value="0">
              </el-option>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column
          label="意向等级" sortable min-width="95" prop="weight">
            <template slot-scope="scope">
              <user-weight :row="scope.row" @onSuccess="searchList"></user-weight>
            </template>
        </el-table-column>
        <el-table-column label="操作"   fixed="right">
          <template slot-scope="scope">
          <el-popover
            placement="top"
            width="200">
            <div style="text-align: center">
            <el-button type="primary" size="mini" plain @click="showSourceByDate(scope.row)">看课情况</el-button>
            <el-button type="danger" size="mini" plain @click="onDel(scope.row)" v-if="$store.state.deletePermission && !$store.state.readonly">删除</el-button>
            </div>
            <el-button slot="reference" size="mini" type="text" >操作</el-button>
          </el-popover>
        </template>
        </el-table-column>
      </el-table>
      <div style="text-align: center">
        <el-pagination
          @size-change="searchList"
          :page-sizes="[20,50,100,200,500,1000]"
          :page-size="classUserLimit"
          :current-page.sync="classUserNowPage"
          layout="total , sizes, prev, pager, next, jumper"
          :total="classUserTotal">
        </el-pagination>
      </div>
    </div>
    <el-dialog :modal="false" :visible.sync="addShow">
      <el-form label-width="90px">
        <!--<el-form-item label="用户id">-->
          <!--<el-input v-model="addId"></el-input>-->
        <!--</el-form-item>-->
        <el-row>
          <el-col :span="8">
            <el-form-item label="ID">
              <el-input v-model="searchFrom.userId"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="昵称">
              <el-input v-model="searchFrom.nickName"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="电话">
              <el-input v-model="searchFrom.mobile"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="8" :offset="16">
            <el-form-item>
              <el-button style="float: right" type="primary" plain @click="getUser">搜索</el-button>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-table
        :data="userList"
        ref="multipleTable"
        @selection-change="handleSelectionChange"
        style="width: 100%">
        <el-table-column
          type="selection"
          width="55">
        </el-table-column>
        <el-table-column
          className="f-c"
          label="用户">
          <template slot-scope="scope">
            <img style="margin-right:5px;width: 50px;height: 50px;border-radius: 50px" :src="scope.row.avatar">{{scope.row.nickname}}(ID:{{scope.row.user_id}})
          </template>
        </el-table-column>
        <el-table-column
          prop="mobile"
          label="手机号">
        </el-table-column>
      </el-table>
      <page :total="total" :limit="limit" @pageChange="onPageChange" @sizeChange="onSizeChange"/>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addShow = false">取 消</el-button>
        <el-button type="primary" @click="onAdd">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog :modal="false" :visible.sync="lookDetail.show">
      <el-table
        v-loading="lookDetail.loading"
        :data="lookDetail.list"
        style="width: 100%">
        <el-table-column
          prop="start_at"
          label="日期">
        </el-table-column>
        <el-table-column
          label="爸妈看一看">
          <template slot-scope="scope">
            <span v-if="scope.row.watch_list && scope.row.watch_list.length > 0 && scope.row.watch_list.find(i=>{return i.page_id === 1})">
              {{scope.row.watch_list.find(i=>{return i.page_id === 1}).stay_time}}
            </span>
            <span v-if="!scope.row.watch_list.find(i=>{return i.page_id === 1})">
              暂未上课
            </span>
          </template>
        </el-table-column>
        <el-table-column
          label="宝贝玩一玩">
          <template slot-scope="scope">
            <span v-if="scope.row.watch_list && scope.row.watch_list.length > 0 && scope.row.watch_list.find(i=>{return i.page_id === 2})">
              {{scope.row.watch_list.find(i=>{return i.page_id === 2}).stay_time}}
            </span>
            <span v-if="!scope.row.watch_list.find(i=>{return i.page_id === 2})">
              暂未上课
            </span>
          </template>
        </el-table-column>
        <el-table-column
          label="爸妈秀宝贝">
          <template slot-scope="scope">
            <span v-if="scope.row.watch_list && scope.row.watch_list.length > 0 && scope.row.watch_list.find(i=>{return i.page_id === 3})">
              <div v-html="scope.row.watch_list.find(i=>{return i.page_id === 3}).learn_report"></div>
            </span>
            <span v-if="!scope.row.watch_list.find(i=>{return i.page_id === 3})">
              暂未秀宝贝
            </span>
          </template>
        </el-table-column>
        <el-table-column
          label="多元趣味课">
          <template slot-scope="scope">
            <span v-if="scope.row.watch_list && scope.row.watch_list.length > 0 && scope.row.watch_list.find(i=>{return i.page_id === 5})">
              {{scope.row.watch_list.find(i=>{return i.page_id === 5}).stay_time}}
            </span>
            <span v-if="!scope.row.watch_list.find(i=>{return i.page_id === 5})">
              暂未上课
            </span>
          </template>
        </el-table-column>
        <el-table-column
          label="分享">
          <template slot-scope="scope">
            <span v-if="scope.row.watch_list && scope.row.watch_list.length > 0 && scope.row.watch_list.find(i=>{return i.page_id === 4})">
              已分享
            </span>
            <span v-if="!scope.row.watch_list.find(i=>{return i.page_id === 4})">
              暂未分享
            </span>
          </template>
        </el-table-column>
      </el-table>
      <page2 :nowPage="lookDetail.nowPage" :total="lookDetail.total" :limit="lookDetail.limit" @pageChange="onLookDetailPageChange" @sizeChange="onLookDetailSizeChange"/>
    </el-dialog>
    <el-dialog :modal="false" :visible.sync="changeClassObj.show" title="切换班级">
      <el-form>
        <el-form-item>
          <el-cascader
            :options="changeClassObj.periods_list"
            :props="{value:'id',label:'title'}"
            @active-item-change="handleItemChange"
            @change="changePeriods"
            v-model="changeClassObj.selectedGoods"
          >
          </el-cascader>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="changeClassObj.show = false">取 消</el-button>
        <el-button type="primary" @click="changeClassSub()">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog :modal="false" width="1100px" :visible.sync="rank.show" title="看课排行">
      <el-form label-width="100px" inline>
        <el-form-item label="看课时间">
          <el-date-picker
            type="daterange"
            v-model="timerank"
            range-separator="至"
            value-format="yyyy-MM-dd"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            @change="onRank()">
          </el-date-picker>
        </el-form-item>
        <el-form-item  label="排名人数">
          <el-input style="width:100px;" v-model="rankParams.limit"/>
        </el-form-item>
        <el-form-item label="排名类型">
          <el-select style="width:100px;" v-model="rankParams.type" placeholder="请选择" @change="onRank()">
            <el-option
              label="按天数"
              value="day">
            </el-option>
            <el-option
              label="按时长"
              value="time">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="onRank()">搜索</el-button>
        </el-form-item>
      </el-form>
      <el-table border
                size="mini"
                style="display: block;margin: 20px auto;background: transparent"
        :data="rank.list">
        <el-table-column
          label="排名"
          type="index"
          >
        </el-table-column>
        <el-table-column
        className="f-c"
        label="用户">
        <template slot-scope="scope">
          <img class="avatar" :src="scope.row.avatar">{{scope.row.nickname}}(ID:{{scope.row.user_id}})
        </template>
      </el-table-column>
        <el-table-column
          label="总天数"
          prop="total_day">
        </el-table-column>
        <el-table-column
          label="总时长(分)"
          prop="total_time">
          <template slot-scope="scope">
          {{scope.row.total_time/60}}
          </template>
        </el-table-column>
        <el-table-column
          label="手机号"
          prop="mobile">
        </el-table-column>
        <el-table-column
          label="最后登录时间"
          prop="last_login_at">
        </el-table-column>
      </el-table>
    </el-dialog>
    <el-dialog :modal="false" :visible.sync="privilegeDialog.show" title="编辑权限">
      <el-form label-width="120px">
        <el-form-item label="是否添加老师">
          <el-select v-model="privilegeDialog.is_add_teacher" placeholder="请选择">
            <el-option
              v-for="(data,index) in isAddTeacherList"
              :key="index"
              :label="data.label"
              :value="data.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="看课权限">
          <el-switch
            v-model="privilegeDialog.isAllowView"
            active-color="#13ce66"
            inactive-color="#ff4949">
          </el-switch>
        </el-form-item>
        <el-form-item label="意向等级">
          <el-input-number v-model="privilegeDialog.weight" :min="0" :step="1"></el-input-number>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="privilegeDialog.show = false">取 消</el-button>
        <el-button type="primary" @click="changePrivilegeSub()">确 定</el-button>
      </span>
    </el-dialog>
    <!--<el-dialog :modal="false" :visible.sync="descDialog.show" title="沟通情况列表">-->
      <!--<el-form label-width="90px">-->
        <!--<el-form-item>-->
          <!--<el-button style="float: right" type="primary" plain @click="editComment(descDialog.id)">添加沟通情况</el-button>-->
        <!--</el-form-item>-->
      <!--</el-form>-->
      <!--<el-table-->
        <!--:data="descDialog.descList"-->
        <!--style="width: 100%">-->
        <!--<el-table-column-->
          <!--label="用户" className="f-c" min-width="150">-->
          <!--<template slot-scope="scope" v-if="descDialog.userInfo">-->
            <!--<img :src="descDialog.userInfo.avatar" style="width: 40px;height: 40px;border-radius: 50px"> {{descDialog.userInfo.nickname}}(ID:{{descDialog.userInfo.user_id}})-->
          <!--</template>-->
        <!--</el-table-column>-->
        <!--<el-table-column-->
          <!--prop="desc"-->
          <!--label="沟通情况">-->
        <!--</el-table-column>-->
        <!--<el-table-column-->
          <!--prop="operator"-->
          <!--label="联系人">-->
        <!--</el-table-column>-->
        <!--<el-table-column-->
        <!--prop="created_at"-->
        <!--label="记录时间">-->
        <!--</el-table-column>-->
      <!--</el-table>-->
      <!--<page-desc :nowPage="descDialog.nowPage" :total="descDialog.total" :limit="descDialog.limit" @pageChange="onDescDialogPageChange" @sizeChange="onDescDialogSizeChange"/>-->
    <!--</el-dialog>-->
  </el-dialog>
  <sourceByDateDialog :dialogObj = sourceByDateDialogJson ref="sourceByDateDialogDom"></sourceByDateDialog>
  </div>
</template>

<script>
  import {getLookRankApi,addClassUesrApi,editUserViewCourseApi,editUserWeightApi,changeAddTeacherApi,getClassUserApi,changeUserApi,delClassUserApi,getUserListApi,addPeriodsClassUserDescApi,getClassStatisticsApi,userLookApi,getPeriodsApi,changeClassApi,getClassListApi,addUserTeacherApi,getUserDescListApi,updateUserPrivilegeApi,teacherBindUserApi,getJoinNumApi,exportExcelApi} from "../../service/api";
  import page from '../framework/page'
  import page2 from '../framework/page'
  import pageDesc from '../framework/page'
  import {ISORNOT} from "../../util/wordbook";
  import teacherDesc from '../framework/teacherDesc'
  import userWeight from '../framework/userWeight'
  import sourceByDateDialog from '../teacherDetail/sourceByDateDialog'
  export default {
    name: "userList",
    props:[
      'userObj'
    ],
    data(){
      let nowDate = this.formatTime(new Date());
      return {
        nowDate:nowDate,
        rank:{
          show:false,
          list:[]
        },
        rankParams:{
          type:'time',
          start_date:'',
          end_date:'',
          limit:10
        },
        sourceByDateDialogJson:{},
        userTable:[],
        addId:'',
        loadingFlag:false,
        statistics:{
          arrive_course_rate:0,
          clock_rate:0,
          over_clock_rate:0,
          over_course_rate:0,
          over_work_rate:0,
          transform_rate:0,
          watch_course_rate:0,
          work_rate:0,
          teacher_add_user_num:0,
          user_add_teacher_num:0
        },
        lookDetail:{
          show:false,
          loading:false,
          list:[],
          nowPage: 1,
          limit: 5,
          total:0
        },
        classUserLimit:20,
        classUserTotal:0,
        classUserNowPage:1,
        changeClassObj:{
          show:false,
          new_periods_id:'',
          new_class_id:'',
          periods_user_class_id:'',
          periods_list:[],
          selectedGoods:[]
        },
        selectUserList:[],
        addShow:false,
        userList: [],
        nowPage: 1,
        limit: 1000,
        total:0,
        timeLang:[],
        timerank:[],
        searchFrom: {
          user_id:'',
          is_add_teacher: '',
          is_view_course: '',
          start_at:'',
          end_at:''
        },
        multipleSelection: [],
        descDialog: {
          show: false,
          descList: [],
          nowPage: 1,
          limit: 10,
          total:0,
          userInfo: null
        },
        privilegeDialog: {
          show: false,
          isAllowView: false,
          is_add_teacher: 0,
          weight: 0,
          id: ''
        },
        isAddTeacherList: [
          {
            label: '暂未处理',
            value: 0
          },
          {
            label: '老师主动添加用户',
            value: 1
          },
          {
            label: '用户主动添加老师',
            value: 2
          },
          {
            label: '待通过',
            value: 3
          },
          {
            label: '手机号不是微信号',
            value: 4
          },
          {
            label: '用户已拒绝',
            value: 5
          }
        ],
        isBindUser: false
      }
    },
    components:{
      page,
      page2,
      teacherDesc,
      userWeight,
      pageDesc,
      sourceByDateDialog
    },
    filters:{
      isOrNot(value){
        return ISORNOT[value]
      },
      percent(val){
        return (val * 100).toFixed(2)+'%'
      }
    },
    methods:{
      onRank(){
        console.log(this.timerank)
        let json = {}
        if(this.timerank && this.timerank.length > 1){
          json.start_at = this.timerank[0];
          json.end_at = this.timerank[1];
        }
        if(this.rankParams.type){
          json.type = this.rankParams.type
        }
        if(this.rankParams.start_date){
          json.start_date = this.rankParams.start_date
        }
        if(this.rankParams.end_date){
          json.end_date = this.rankParams.end_date
        }
        if(this.rankParams.limit){
          json.limit = this.rankParams.limit
        }
        getLookRankApi(this.userObj.classId,json).then(res =>{
          this.rank.show = true
          this.rank.list = res
          // console.log(res)
        })
      },
      showSourceByDate(row){
          this.sourceByDateDialogJson = {
          "periods_id":row.periods_id,
          "user_id":row.user_id,
          json:{
            limit: 10,
            page:0
          }
        }
        this.$refs.sourceByDateDialogDom.dialogShow = true
        // 
      },
      changeView(data){
        editUserViewCourseApi(data.id,data.is_view_course).then(()=>{
          this.$message({
            type:'success',
            message:'数据更改成功'
          });
          this.searchList()
        })
      },
      changeWeight(data){
        editUserWeightApi(data.id,data.weight).then(()=>{
          this.$message({
            type:'success',
            message:'数据更改成功'
          });
          this.searchList()
        })
      },
      changeAddTeacher(data){
        changeAddTeacherApi(data.id,data.is_add_teacher).then(()=>{
          this.$message({
            type:'success',
            message:'数据更改成功'
          });
          this.searchList()
        })
      },
      handleItemChange(value){
        getClassListApi(value[0],{limit:999}).then(res=>{
          res.list.forEach(i=>{
            i.title = i.class_name
          });
          this.changeClassObj.periods_list.find(i=>{return i.id === value[0]}).children = res.list
        })
      },
      changeClassSub(){
        this.changeClassObj.periods_user_class_id=[]
        this.selectUserList.forEach(i=>{
          this.changeClassObj.periods_user_class_id.push(i.id)
        });
        let json = {
          new_periods_id:this.changeClassObj.new_periods_id,
          new_class_id:this.changeClassObj.new_class_id,
          periods_user_class_id:this.changeClassObj.periods_user_class_id.toString()
        };
        changeClassApi(json).then(res=>{
          this.$message({
            type:'success',
            message:res
          });
          this.userObj.show = false;
          this.$emit('reflash')
        })
      },
      changePeriods(data){
        if(data.length>1){
          this.changeClassObj.new_periods_id = data[0];
          this.changeClassObj.new_class_id = data[1];
        }
      },
      changeClass(){
        if(this.selectUserList.length < 1){
          this.$message({
            type:'error',
            message:'请先选择用户'
          })
        }else{
          let goods_id=this.selectUserList[0].goods_id;
          getPeriodsApi({goods_id:goods_id,limit:999}).then(res=>{
            res.list.forEach(i=>{
              i.children = []
            });
            this.changeClassObj.periods_list = res.list;
            this.changeClassObj.show = true;
          });
        }
      },
       defaultClass(){
          this.changeClassObj.selectedGoods = [parseInt(this.userObj.periods_id),parseInt(this.userObj.classId)];
          getClassListApi(this.changeClassObj.selectedGoods[0],{limit:999}).then(res=>{
            res.list.forEach(i=>{
              i.title = i.class_name;
            });
            this.changeClassObj.periods_list.find(i=>{return i.id === this.changeClassObj.selectedGoods[0]}).children = res.list
            let nowGoods =  this.changeClassObj.periods_list.find(i=>{return i.id === this.changeClassObj.selectedGoods[0]});
            this.periods = nowGoods.children.find(i=>{return i.id === this.changeClassObj.selectedGoods[1]});
            this.changeClassObj.new_class_id=this.userObj.classId;
            this.changeClassObj.new_periods_id=this.userObj.periods_id;
          })
      },
      handleSelectionChange123(a){
        this.selectUserList = a
      },
      userLook(data){
        this.lookDetail.show = true;
        this.lookDetail.loading = true;
        let json = {
          limit: this.lookDetail.limit,
          page: this.lookDetail.nowPage
        }
        this.lookDetail.data = {
          periods_id:data.periods_id,
          user_id: data.user_id
        }
        userLookApi(data.periods_id,data.user_id, json).then(res=>{
          this.lookDetail.list = res.list;
          this.lookDetail.loading = false;
          this.lookDetail.total = res.total;
        })
      },
      getUserLook(){
        if(!this.lookDetail.data) return;
        this.lookDetail.show = true;
        this.lookDetail.loading = true;
        let json = {
          limit: this.lookDetail.limit,
          page: this.lookDetail.nowPage
        }
        let data = this.lookDetail.data;
        userLookApi(data.periods_id,data.user_id, json).then(res=>{
          this.lookDetail.list = res.list;
          this.lookDetail.loading = false;
          this.lookDetail.total = res.total;
        })
      },
      onLookDetailPageChange(val){
        this.lookDetail.nowPage = val
        this.getUserLook();
      },
      onLookDetailSizeChange(val){
        this.lookDetail.limit = val
        this.lookDetail.nowPage = 1;
        this.getUserLook();
      },
      searchList2(){
        this.classUserNowPage = 1
        this.searchList()
      },
      searchList(value){
        console.log(value)
        if (value) {
          this.classUserLimit = value;
          this.classUserNowPage = 1
        }
        this.loadingFlag = true;
        let json = {
          page:this.classUserNowPage,
          limit:this.classUserLimit
        };
        let json2 = {};
        if(this.timeLang && this.timeLang.length > 1){
          json.start_at = this.timeLang[0];
          json.end_at = this.timeLang[1];
          json2.start_at = this.timeLang[0];
          json2.end_at = this.timeLang[1];
        }
        if(this.searchFrom.user_id){
          json.user_id = this.searchFrom.user_id
        }
        if(this.searchFrom.is_add_teacher || this.searchFrom.is_add_teacher === 0){
          json.is_add_teacher = this.searchFrom.is_add_teacher
        }
        if(this.searchFrom.is_view_course){
          json.is_view_course = this.searchFrom.is_view_course
        }
        getClassStatisticsApi(this.userObj.periods_id,this.userObj.classId,json2).then(res=>{
          this.statistics.arrive_course_rate = res.arrive_course_rate;
          this.statistics.clock_rate = res.clock_rate;
          this.statistics.over_clock_rate = res.over_clock_rate;
          this.statistics.over_course_rate = res.over_course_rate;
          this.statistics.over_work_rate = res.over_work_rate;
          this.statistics.transform_rate = res.transform_rate;
          this.statistics.watch_course_rate = res.watch_course_rate;
          this.statistics.work_rate = res.work_rate;
        });
        getJoinNumApi(this.userObj.classId).then(res=>{
            let _list = res || [];
            _list.forEach((_data)=>{
                if(_data.is_add_teacher === 1){
                  this.statistics.teacher_add_user_num = _data.num
                } else if (_data.is_add_teacher === 2) {
                  this.statistics.user_add_teacher_num = _data.num
                }
            })
        });
        getClassUserApi(this.userObj.classId,json).then(res=>{
          this.classUserTotal=res.total;
          this.userTable = res.list;
          this.loadingFlag = false;
        });
        this.changeClassObj={
          show:false,
          new_periods_id:'',
          new_class_id:'',
          periods_user_class_id:'',
          periods_list:[],
          selectedGoods:[]
        }
      },
      initPage(){
        this.timerank[0]=this.nowDate
        this.timerank[1]=this.nowDate
        // this.timeLang[0]='2019-04-17'
        
        console.log(this.timerank)
        // debugger
        this.searchFrom = {
            user_id:'',
            is_add_teacher: '',
            is_view_course: '',
            start_at:'',
            end_at:'',
        };

        this.statistics={
          arrive_course_rate:0,
            clock_rate:0,
            over_clock_rate:0,
            over_course_rate:0,
            over_work_rate:0,
            transform_rate:0,
            watch_course_rate:0,
            work_rate:0,
            teacher_add_user_num:0,
            user_add_teacher_num:0
        };

        this.classUserLimit=20;
          this.classUserTotal=0;
          this.classUserNowPage=1;
        this.searchList()
      },
      changeUser(data){
        this.$confirm('此操作将修改成员看课权限?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          changeUserApi(data.id,{is_view_course:data.is_view_course === 0 ? 1 : 0}).then(res=>{
            this.$message({
              type: 'success',
              message: '修改成功!'
            });
            this.searchList()
          });
        });
      },
      addTeacher(data){
        this.$confirm('此操作将修改是否添加老师权限?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          addUserTeacherApi(data.id,{is_add_teacher:data.is_add_teacher === 0 ? 1 : 0}).then(res=>{
            this.$message({
              type: 'success',
              message: '修改成功!'
            });
            this.searchList()
          });
        });
      },
      onDel(data){
        this.$confirm('此操作将删除该成员?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          delClassUserApi(data.id).then(res=>{
            this.$message({
              type: 'success',
              message: '删除成功!'
            });
            this.searchList()
          });
        });
      },
      onAdd(){
        let json = {
          is_buy: 0
        }
        if(this.multipleSelection.length === 0) {
          this.$message({
            type: 'error',
            message: '请选择用户!'
          });
          return
        } else if (this.multipleSelection.length !== 1){
          this.$message({
            type: 'error',
            message: '只能选择一个用户!'
          });
          return
        }
        this.addId = this.multipleSelection[0].user_id;
        if (!this.addId) {
            return
        }
        if (!this.isBindUser) {
          addClassUesrApi(this.userObj.classId,this.addId,json).then(res=>{
            this.$message({
              type: 'success',
              message: '添加成功!'
            });
            this.addShow = false;
            this.searchList()
          })
        } else {
          teacherBindUserApi(this.userObj.teacherId, {user_id: this.addId}).then(res=>{
            this.$message({
              type: 'success',
              message: '绑定成功!'
            });
            this.addShow = false;
          })
        }

      },
      onAddUser(flag){
        this.isBindUser = flag;
        this.addShow = true;
        this.getUser();
      },
      getUser(){
        let json = {
          page: this.nowPage,
          limit: 5
        };
        if (this.searchFrom.userId) {
          json.user_id = this.searchFrom.userId
        }
        if (this.searchFrom.nickName) {
          json.nickname = this.searchFrom.nickName
        }
        if (this.searchFrom.mobile) {
          json.mobile = this.searchFrom.mobile
        }
        getUserListApi(json).then(res=>{
          this.userList = res.list;
          this.total = res.total;
        })
      },
      onPageChange(val){
        this.nowPage = val
        this.getUser()
      },
      onSizeChange(val){
        this.limit = val
        this.nowPage = 1;
        this.getUser()
      },
      handleSelectionChange(val) {
        this.multipleSelection = val;
      },
      editComment(id) {
        this.$prompt('', '添加沟通情况', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          inputValue: ''
        }).then(({ value }) => {
          addPeriodsClassUserDescApi(id,{desc: value}).then(res=>{
            this.$message({
              type: 'success',
              message: '编辑沟通情况成功'
            })
            this.getUserDescList();
            this.searchList();
          });
        })
      },
      onGetUserDescList(val){
        this.descDialog.show = true;
        this.descDialog.userInfo = {
          user_id: val.user_id,
          avatar: val.avatar,
          nickname: val.nickname
        };
        this.descDialog.id = val.id;
        this.getUserDescList();
      },
      getUserDescList(){
        let json = {
          page: this.descDialog.nowPage,
          limit: this.descDialog.limit
        };
        getUserDescListApi(this.descDialog.id,json).then(res=>{
          this.descDialog.descList = res.list;
          this.descDialog.total = res.total;
        })
      },
      onDescDialogPageChange(val){
        this.descDialog.nowPage = val
        this.getUserDescList()
      },
      onDescDialogSizeChange(val){
        this.descDialog.limit = val
        this.descDialog.nowPage = 1;
        this.getUserDescList()
      },
      editPrivilege(val){
        this.privilegeDialog = {
          id: val.id,
          isAllowView: val.is_view_course === 1,
          is_add_teacher: val.is_add_teacher ? val.is_add_teacher : 0,
          weight: val.weight ? val.weight : 0,
          show: true
        }
      },
      changePrivilegeSub(){
        this.$confirm('此操作将修改用户权限?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          let _json = {
            is_view_course: this.privilegeDialog.isAllowView ? 1 : 0,
            is_add_teacher: this.privilegeDialog.is_add_teacher,
            weight: this.privilegeDialog.weight
          }
          updateUserPrivilegeApi(this.privilegeDialog.id,_json).then(res=>{
            this.$message({
              type: 'success',
              message: '修改成功!'
            });
            this.privilegeDialog.show = false;
            this.searchList()
          });
        });
      },
      exportTable(data){
        if(data.length>0){
            let json = {};
        if (this.searchFrom.user_id) {
          json.user_id = this.searchFrom.user_id
        }
         if (this.searchFrom.is_add_teacher) {
          json.is_add_teacher = this.searchFrom.is_add_teacher
        }
        if (this.searchFrom.is_view_course) {
          json.is_view_course = this.searchFrom.is_view_course
        }
        if(this.timeLang && this.timeLang.length > 0){
          json.pay_start_at =this.timeLang[0];
          json.pay_end_at =this.timeLang[1]
        }
            exportExcelApi(`api/admin/class/user/export/${this.userObj.classId}`,json);
        }

      },
      formatTime(date){
        let year = date.getFullYear();
        let Month = date.getMonth()+1;
        if(Month < 10){
          Month = `0${Month}`
        }
        let Day = date.getDate();
        if(Day<10)Day = `0${Day}`;
        return `${year}-${Month}-${Day}`;
      },
    },

    watch:{
      'userObj.show'(value){
        if(value){
          this.initPage()
        }
      },
      'classUserNowPage'(value){
        this.searchList()
      },
      "changeClassObj.show"(val){
        if(val){
          this.defaultClass()
        }
      }
    }
  }
</script>
<style scoped lang="less">
@import "../../util/public";
  .avatar {
    width: 50px;
    margin-right: 5px;
    border-radius: 50%;
    height: 50px;
  }
  .user{
    height: 100%;
    overflow: auto;
    padding: 20px 0;
    .btn-content{
      text-align: center;
    }
  }
  .flexRow {
    display: flex;
    flex-flow: row;
    justify-content: flex-start;
    align-items: center;
  }
</style>

<style>
 .f-c > div{
   display: flex;
   flex-flow: row nowrap;
   justify-content: flex-start;
   align-items: center;
 }
</style>
