|  | @@ -12,14 +12,18 @@
 | 
	
		
			
				|  |  |          <div class="tabs-left">
 | 
	
		
			
				|  |  |            <span
 | 
	
		
			
				|  |  |              v-for="item in tabList"
 | 
	
		
			
				|  |  | -            :key="item.id"
 | 
	
		
			
				|  |  | -            :class="['tabs-item', { active: item.id === activeID }]"
 | 
	
		
			
				|  |  | -            @click="changeTab(item.id)"
 | 
	
		
			
				|  |  | +            :key="item.type"
 | 
	
		
			
				|  |  | +            :class="['tabs-item', { active: item.type === curTab }]"
 | 
	
		
			
				|  |  | +            @click="changeTab(item.type)"
 | 
	
		
			
				|  |  |            >
 | 
	
		
			
				|  |  |              {{ item.name }}
 | 
	
		
			
				|  |  |            </span>
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  | -        <div />
 | 
	
		
			
				|  |  | +        <div v-if="curTab === tabList[1].type" class="tabs-right">
 | 
	
		
			
				|  |  | +          <el-button @click="sendMessage('all')">
 | 
	
		
			
				|  |  | +            <span><svg-icon icon-class="send-message" /> 群发消息</span>
 | 
	
		
			
				|  |  | +          </el-button>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |        <div class="student-table">
 | 
	
		
			
				|  |  |          <el-table :data="student_list">
 | 
	
	
		
			
				|  | @@ -43,10 +47,13 @@
 | 
	
		
			
				|  |  |            </el-table-column>
 | 
	
		
			
				|  |  |            <el-table-column fixed="right" width="120">
 | 
	
		
			
				|  |  |              <template slot-scope="{ row }">
 | 
	
		
			
				|  |  | -              <template v-if="activeID === 'new'">
 | 
	
		
			
				|  |  | +              <template v-if="curTab === tabList[0].type">
 | 
	
		
			
				|  |  |                  <span class="agree" @click="auditCourseStudent(row.course_student_id, 'true')"> 同意 </span>
 | 
	
		
			
				|  |  |                  <span class="refuse" @click="auditCourseStudent(row.course_student_id, 'false')"> 拒绝 </span>
 | 
	
		
			
				|  |  |                </template>
 | 
	
		
			
				|  |  | +              <template v-if="curTab === tabList[1].type">
 | 
	
		
			
				|  |  | +                <span class="agree" @click="sendMessage('single', row.student_id, row.student_name)">发消息</span>
 | 
	
		
			
				|  |  | +              </template>
 | 
	
		
			
				|  |  |              </template>
 | 
	
		
			
				|  |  |            </el-table-column>
 | 
	
		
			
				|  |  |          </el-table>
 | 
	
	
		
			
				|  | @@ -64,30 +71,40 @@
 | 
	
		
			
				|  |  |        @current-change="changePage"
 | 
	
		
			
				|  |  |        @size-change="changePageSize"
 | 
	
		
			
				|  |  |      />
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <send-message :visible.sync="visible" :title-name="titleName" @sendMessage="sendMessageToCourseStudent" />
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  |  import { PageQueryCourseStudentList } from '@/api/list';
 | 
	
		
			
				|  |  | -import { AuditCourseStudent } from '@/api/course';
 | 
	
		
			
				|  |  | +import { AuditCourseStudent, SendMessageToCourseStudent } from '@/api/course';
 | 
	
		
			
				|  |  | +import SendMessage from './SendMessage.vue';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  | +  components: {
 | 
	
		
			
				|  |  | +    SendMessage
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  |    data() {
 | 
	
		
			
				|  |  |      return {
 | 
	
		
			
				|  |  |        course_id: this.$route.params.id,
 | 
	
		
			
				|  |  |        student_name: '',
 | 
	
		
			
				|  |  | -      activeID: 'new',
 | 
	
		
			
				|  |  | +      curTab: 'new',
 | 
	
		
			
				|  |  | +      visible: false,
 | 
	
		
			
				|  |  | +      titleName: '',
 | 
	
		
			
				|  |  | +      type: '',
 | 
	
		
			
				|  |  | +      student_id: '',
 | 
	
		
			
				|  |  |        student_list: [],
 | 
	
		
			
				|  |  |        page_capacity: 10,
 | 
	
		
			
				|  |  |        cur_page: 1,
 | 
	
		
			
				|  |  |        total_count: 0,
 | 
	
		
			
				|  |  |        tabList: [
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -          id: 'new',
 | 
	
		
			
				|  |  | +          type: 'new',
 | 
	
		
			
				|  |  |            name: '新申请'
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -          id: 'list',
 | 
	
		
			
				|  |  | +          type: 'list',
 | 
	
		
			
				|  |  |            name: '学生列表'
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        ]
 | 
	
	
		
			
				|  | @@ -98,38 +115,60 @@ export default {
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    methods: {
 | 
	
		
			
				|  |  |      queryCourseStudentList() {
 | 
	
		
			
				|  |  | -      let data = {
 | 
	
		
			
				|  |  | +      PageQueryCourseStudentList({
 | 
	
		
			
				|  |  |          student_name: this.student_name,
 | 
	
		
			
				|  |  |          course_id: this.course_id,
 | 
	
		
			
				|  |  |          page_capacity: this.page_capacity,
 | 
	
		
			
				|  |  | -        cur_page: this.cur_page
 | 
	
		
			
				|  |  | -      };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      if (this.activeID === 'new') {
 | 
	
		
			
				|  |  | -        data['audit_status_list'] = [0];
 | 
	
		
			
				|  |  | -      } else {
 | 
	
		
			
				|  |  | -        data['audit_status_list'] = [1];
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      PageQueryCourseStudentList(data).then(({ student_list, total_count, cur_page }) => {
 | 
	
		
			
				|  |  | +        cur_page: this.cur_page,
 | 
	
		
			
				|  |  | +        audit_status_list: this.curTab === 'new' ? [0] : [1]
 | 
	
		
			
				|  |  | +      }).then(({ student_list, total_count, cur_page }) => {
 | 
	
		
			
				|  |  |          this.student_list = student_list;
 | 
	
		
			
				|  |  |          this.total_count = total_count;
 | 
	
		
			
				|  |  |          this.cur_page = cur_page;
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    changeTab(id) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    changeTab(tab) {
 | 
	
		
			
				|  |  |        this.student_list = [];
 | 
	
		
			
				|  |  | -      this.activeID = id;
 | 
	
		
			
				|  |  | +      this.curTab = tab;
 | 
	
		
			
				|  |  |        this.queryCourseStudentList();
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      changePage(newPage) {
 | 
	
		
			
				|  |  |        this.cur_page = newPage;
 | 
	
		
			
				|  |  |        this.queryCourseStudentList();
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      changePageSize(pageSize) {
 | 
	
		
			
				|  |  |        this.page_capacity = pageSize;
 | 
	
		
			
				|  |  |        this.queryCourseStudentList();
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    sendMessage(type, student_id, student_name) {
 | 
	
		
			
				|  |  | +      this.type = type;
 | 
	
		
			
				|  |  | +      this.student_id = student_id;
 | 
	
		
			
				|  |  | +      if (type === 'all') {
 | 
	
		
			
				|  |  | +        this.titleName = '全部';
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        this.titleName = student_name;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      this.visible = true;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    sendMessageToCourseStudent(content) {
 | 
	
		
			
				|  |  | +      let loading = this.$loading('发送消息中...');
 | 
	
		
			
				|  |  | +      SendMessageToCourseStudent({
 | 
	
		
			
				|  |  | +        course_id: this.course_id,
 | 
	
		
			
				|  |  | +        content,
 | 
	
		
			
				|  |  | +        type: this.type,
 | 
	
		
			
				|  |  | +        student_id: this.student_id
 | 
	
		
			
				|  |  | +      }).then(({ message_count }) => {
 | 
	
		
			
				|  |  | +        loading.close();
 | 
	
		
			
				|  |  | +        this.visible = false;
 | 
	
		
			
				|  |  | +        this.$message.success(`已成功发送${message_count}条消息`);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      auditCourseStudent(course_student_id, is_audited) {
 | 
	
		
			
				|  |  |        AuditCourseStudent({ course_student_id, is_audited }).then(() => {
 | 
	
		
			
				|  |  |          this.$message.success('审核课程学员成功!');
 | 
	
	
		
			
				|  | @@ -140,7 +179,7 @@ export default {
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -<style lang="scss">
 | 
	
		
			
				|  |  | +<style lang="scss" scoped>
 | 
	
		
			
				|  |  |  @import '~@/styles/mixin';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  .student-list {
 | 
	
	
		
			
				|  | @@ -154,7 +193,6 @@ export default {
 | 
	
		
			
				|  |  |    &-container {
 | 
	
		
			
				|  |  |      width: 100%;
 | 
	
		
			
				|  |  |      min-height: calc(100vh - 240px);
 | 
	
		
			
				|  |  | -    padding: 24px 32px;
 | 
	
		
			
				|  |  |      margin-top: 16px;
 | 
	
		
			
				|  |  |      background-color: #fff;
 | 
	
		
			
				|  |  |      border-radius: 8px;
 | 
	
	
		
			
				|  | @@ -162,10 +200,14 @@ export default {
 | 
	
		
			
				|  |  |      // 标签
 | 
	
		
			
				|  |  |      .tabs {
 | 
	
		
			
				|  |  |        display: flex;
 | 
	
		
			
				|  |  | +      justify-content: space-between;
 | 
	
		
			
				|  |  | +      height: 68px;
 | 
	
		
			
				|  |  | +      padding: 16px 16px 0 32px;
 | 
	
		
			
				|  |  |        border-bottom: 1px solid #d9d9d9;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        &-left {
 | 
	
		
			
				|  |  |          display: flex;
 | 
	
		
			
				|  |  | +        align-items: flex-end;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          .tabs-item {
 | 
	
		
			
				|  |  |            padding-bottom: 16px;
 | 
	
	
		
			
				|  | @@ -174,7 +216,7 @@ export default {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |            &.active {
 | 
	
		
			
				|  |  |              font-weight: 600;
 | 
	
		
			
				|  |  | -            border-bottom: 2px solid $basic-color;
 | 
	
		
			
				|  |  | +            box-shadow: 0 1px 0 $basic-color, 0 -1px 0 $basic-color inset;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |            &:not(:first-child) {
 | 
	
	
		
			
				|  | @@ -182,6 +224,20 @@ export default {
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      &-right {
 | 
	
		
			
				|  |  | +        .el-button {
 | 
	
		
			
				|  |  | +          height: 40px;
 | 
	
		
			
				|  |  | +          padding: 8px 16px;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          .svg-icon {
 | 
	
		
			
				|  |  | +            width: 24px;
 | 
	
		
			
				|  |  | +            height: 24px;
 | 
	
		
			
				|  |  | +            margin-right: 8px;
 | 
	
		
			
				|  |  | +            vertical-align: middle;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 学员列表
 | 
	
	
		
			
				|  | @@ -207,6 +263,7 @@ export default {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        .el-avatar {
 | 
	
		
			
				|  |  | +        margin-left: 22px;
 | 
	
		
			
				|  |  |          vertical-align: sub;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -219,3 +276,13 @@ export default {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  </style>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<style lang="scss">
 | 
	
		
			
				|  |  | +.student-list {
 | 
	
		
			
				|  |  | +  .student-table {
 | 
	
		
			
				|  |  | +    .el-table__header {
 | 
	
		
			
				|  |  | +      display: none;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</style>
 |