<template>
  <div class='infoWrap'>
    <div class="left">
      <div class="unread"
           @click="onLookMessage('all')">全部</div>
      <div class="unread"
           @click="onLookMessage('0')"> <img :src="img.boxicon"
             alt=""> 未读消息
        <div class="count"
             v-if="noReadMessage >= 1">{{ noReadMessage }}</div>
      </div>
      <div class="read"
           @click="onLookMessage('1')">
        <img :src="img.bookicon"
             alt="">
        已读消息</div>
    </div>
    <div class="middle">
      <div class="msgItem"
           :class="[isCheckMessage == item.id ? 'active' : '']"
           @click="onClickRead(item)"
           v-for="(item, index) in dataList"
           :key="index">
        <!-- <h6 class="type"></h6> -->
        <h4 class="name">学生申诉<span class='time'>{{ item.createOn }}</span>
          <div class="dot"
               v-if="item.readStatus == 0"></div>
        </h4>
        <p class='msg'>{{ item.content }}</p>
      </div>
      <el-pagination style="text-align: right"
                     small
                     v-if="dataList.length > 0"
                     @current-change="onChange"
                     :hide-on-single-page="pageInfo.isSinglePage"
                     layout="prev, pager, next"
                     :total="pageInfo.total">
      </el-pagination>
    </div>
    <div class="right"
         v-if="showRight">
      <el-row>
        <el-col :span="24">
          <h3 class="title">学员投诉
            <el-tag v-if="showMessage.complaints.status == 'PASS'"
                    type="success"
                    effect="plain">已处理</el-tag>
            <el-tag v-if="showMessage.complaints.status == 'REJECT'"
                    type="danger"
                    effect="plain">已拒绝</el-tag>
            <span class="time">发起投诉时间: {{ showMessage.courseSchedule.createTime }}</span>
          </h3>
        </el-col>
      </el-row>

      <el-row>
        <el-col :span="4"> 学员姓名： </el-col>
        <el-col :span="20"> {{ showMessage.complaints.user.username }} </el-col>
      </el-row>

      <el-row>
        <el-col :span="4"> 课程名称： </el-col>
        <el-col :span="20"> {{ showMessage.courseSchedule.name }} </el-col>
      </el-row>

      <el-row>
        <el-col :span="4"> 课程时间：</el-col>
        <el-col :span="20"> {{ showMessage.courseSchedule.classDate | formatTimer }} {{ showMessage.courseSchedule.startClassTime | timer }} </el-col>
      </el-row>

      <el-row>
        <el-col :span="4"> 老师名称： </el-col>
        <el-col :span="20"> {{ showMessage.courseSchedule.teacher.username }} </el-col>
      </el-row>

      <el-row>
        <el-col :span="4">投诉理由：</el-col>
        <el-col :span="20">
          {{ showMessage.complaints.reason }}
        </el-col>
      </el-row>

      <el-row>
        <el-col :span="4">
          责任比：
        </el-col>
        <el-col :span="20"
                v-if="showMessage.complaints.status == 'ING'">
          <div style="padding-bottom: 8px;">
            <span style="padding-right: 8px;">老师</span>
            <el-input type="number"
                      @mousewheel.native.prevent
                      min="0"
                      max="10"
                      v-model.trim="teacherRate"
                      placeholder="请输入内容"></el-input>
          </div>
          <div>
            <span style="padding-right: 8px;">学生</span>
            <el-input type="number"
                      @mousewheel.native.prevent
                      min="0"
                      max="10"
                      v-model.trim="studentRate"
                      placeholder="请输入内容"></el-input>
          </div>
        </el-col>
        <el-col :span="20"
                v-else>
          <div style="padding-bottom: 8px;">
            <span style="padding-right: 8px;">老师</span>
            <el-input disabled
                      type="number"
                      @mousewheel.native.prevent
                      min="0"
                      max="10"
                      v-model.trim="teacherRate"
                      placeholder="请输入内容"></el-input>
          </div>
          <div>
            <span style="padding-right: 8px;">学生</span>
            <el-input disabled
                      type="number"
                      @mousewheel.native.prevent
                      min="0"
                      max="10"
                      v-model.trim="studentRate"
                      placeholder="请输入内容"></el-input>
          </div>
        </el-col>
      </el-row>
      <el-row v-permission="'courseSchedule/courseScheduleCommplaintAudit'"
              v-if="showMessage.complaints.status == 'ING'">
        <el-col :span="24">
          <el-button type="primary"
                     @click="onSubmit(showMessage.complaints.id, 'submit')">确认</el-button>
          <el-button type="danger"
                     @click="onSubmit(showMessage.complaints.id, 'reject')">拒绝</el-button>
        </el-col>
      </el-row>
    </div>
  </div>
</template>
<script>
import { queryCountOfUnread, sysMessageList, setRead, queryCourseScheduleComplaintsDetail, courseScheduleCommplaintAudit } from '@/api/journal'
export default {
  name: 'studentComplain',
  data () {
    return {
      img: {
        bookicon: require('@/assets/images/base/bookicon.png'),
        Hbookicon: require('@/assets/images/base/bookicon-h.png'),
        trashicon: require('@/assets/images/base/trashicon.png'),
        Htrashicon: require('@/assets/images/base/trashicon-h.png'),
        boxicon: require('@/assets/images/base/boxicon.png'),
        Hboxicon: require('@/assets/images/base/boxicon-h.png')
      },
      pageInfo: {
        isSinglePage: false, // 是否只有一页
        limit: 10,
        page: 1,
        readStatus: null,
        total: 0,
      },
      noReadMessage: 0, // 未读消息
      dataList: [],
      isCheckMessage: null,
      showRight: false,
      showMessage: {},
      teacherRate: null,
      studentRate: null
    }
  },
  mounted () {
    this.__init()
    this.sysMessageList()
  },
  methods: {
    __init () {
      // 未读消息
      queryCountOfUnread().then(res => {
        if (res.code == 200) {
          if (res.data && res.data.STUDENT) {
            this.noReadMessage = res.data.STUDENT
          }
        }
      })
    },
    sysMessageList () { // 列表
      sysMessageList({
        group: 'STUDENT',
        rows: this.pageInfo.limit,
        page: this.pageInfo.page,
        readStatus: this.pageInfo.readStatus
      }).then(res => {
        if (res.code == 200) {
          this.dataList = res.data.rows
          this.pageInfo.total = res.data.total
        }
      })
    },
    getCourseDetail (id) {
      queryCourseScheduleComplaintsDetail({ courseScheduleComplaintsId: id }).then(res => {
        let result = res.data
        if (res.code == 200) {
          this.showRight = true
          this.showMessage = result
          if (result.complaints.status != 'ING') {
            this.teacherRate = result.complaints.teacherLiabilityRatio
            this.studentRate = result.complaints.studentLiabilityRatio
          }
        }
      })
    },
    onLookMessage (type) { // 查看对应的数据
      if (type == "all") {
        this.pageInfo.readStatus = null
      } else {
        this.pageInfo.readStatus = type
      }
      this.pageInfo.page = 1
      this.showRight = false
      this.showMessage = {}
      this.isCheckMessage = null
      this.sysMessageList()
    },
    onChange (page) { // 分页
      this.pageInfo.page = page
      this.sysMessageList()
    },
    onClickRead (item) {
      this.isCheckMessage = item.id
      let memo = JSON.parse(item.memo)
      if (item.readStatus == 1) {
        this.getCourseDetail(memo.courseScheduleComplaintsId)
      } else {
        setRead({ id: item.id }).then(res => {
          let result = res.data
          if (res.code == 200) {
            item.readStatus = 1
            this.getCourseDetail(memo.courseScheduleComplaintsId)

            this.noReadMessage--
          }
        })
      }
    },
    onSubmit (id, type) {
      let params = {
        id: id
      }
      let teacherRate = this.teacherRate
      let studentRate = this.studentRate
      if (type == 'submit') {
        if (teacherRate < 0 || teacherRate > 10 || Number(teacherRate) == NaN) {
          this.$message.error('老师责任比输入有误')
          return
        }
        if (studentRate < 0 || studentRate > 10 || Number(studentRate) == NaN) {
          this.$message.error('学生责任比输入有误')
          return
        }
        if (studentRate + teacherRate != 10) {
          this.$message.error('责任比之和为必须为10')
          return
        }
        params.status = 'PASS'
        params.studentLiabilityRatio = studentRate
        params.teacherLiabilityRatio = teacherRate
      } else if (type == 'reject') {
        params.status = 'REJECT'
        params.studentLiabilityRatio = 0
        params.teacherLiabilityRatio = 0
      }

      courseScheduleCommplaintAudit(params).then(res => {
        if (res.code == 200) {
          this.$message.success('处理成功')
          this.getCourseDetail(id)
        } else {
          this.$message.errot(res.msg)
        }
      })
    }
  },
  watch: {
    teacherRate (newvalue, oldvalue) {
      if (newvalue) {
        this.studentRate = 10 - newvalue
      }
    },
    studentRate (newvalue, oldvalue) {
      if (newvalue) {
        this.teacherRate = 10 - newvalue
      }
    }
  }
}
</script>
<style lang="scss" scoped>
.infoWrap {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  height: calc(100vh - 266px);
  overflow: auto;
  .left {
    padding-top: 24px;
    display: flex;
    flex-direction: column;
    align-items: left;
    > div {
      height: 26px;
      line-height: 26px;
      margin-top: 26px;
      img {
        position: relative;
        top: 6px;
      }
    }
    .unread,
    .read,
    .recovery {
      cursor: pointer;
    }
    .unread {
      position: relative;
      img {
        width: 26px;
        height: 25px;
      }
      .count {
        position: absolute;
        width: 38px;
        height: 23px;
        background: rgba(20, 146, 138, 0.5);
        border-radius: 100px;
        font-size: 12px;
        line-height: 23px;
        text-align: center;
        color: #225551;
        right: -44px;
        top: 8px;
      }
    }
    .read {
      img {
        width: 20px;
        height: 26px;
      }
    }
    .recovery {
      img {
        width: 19px;
        height: 26px;
      }
    }
  }
  .middle {
    width: 25%;
    margin-left: 76px;
    padding-top: 50px;
    overflow: auto;
    .msgItem {
      padding: 16px 18px 23px 30px;
      border-bottom: 1px solid #ccc;
      .type {
        font-size: 14px;
        color: #777;
        font-weight: 400;
        padding-bottom: 4px;
      }
      .name {
        position: relative;
        color: #444;
        font-size: 16px;
        padding-bottom: 9px;
        clear: both;
        .time {
          font-weight: 400;
          color: #aaa;
          float: right;
        }
        .dot {
          width: 7px;
          height: 7px;
          background-color: #f97215;
          border-radius: 50%;
          position: absolute;
          left: -13px;
          top: 4px;
        }
      }
      .msg {
        color: #444;
        font-size: 14px;
        line-height: 24px;
        text-overflow: -o-ellipsis-lastline;
        overflow: hidden;
        text-overflow: ellipsis;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
      }
    }
    .msgItem.active {
      background-color: #f3f4f8;
      border-radius: 5px;
      .msg {
        color: #aaa;
      }
    }
  }
  .right {
    border: 1px solid #e4e8eb;
    margin-left: 25px;
    position: relative;
    overflow: auto;
    padding: 20px;
    min-width: 50%;
  }
}
.el-timeline-item__dot {
  width: 20px;
  height: 20px;
}
.el-timeline-item {
  min-height: 80px !important;
}
.el-timeline-item__tail {
  left: 9px !important;
}
/deep/.el-row {
  padding-bottom: 10px;
}
/deep/.el-col-4 {
  font-size: 16px;
}

/deep/.el-col {
  .el-input {
    width: 200px;
  }
}

.title {
  font-size: 16px;
  .time {
    float: right;
    font-size: 12px;
    color: #ccc;
  }
}
</style>