|
@@ -1,66 +1,83 @@
|
|
|
<template>
|
|
|
- <el-table
|
|
|
- :data="list"
|
|
|
- :header-cell-style="{background:'#EDEEF0',color:'#444'}"
|
|
|
- >
|
|
|
- <!-- <el-table-column
|
|
|
- prop="type"
|
|
|
- label="课程类型"
|
|
|
- align="center"
|
|
|
+ <div>
|
|
|
+ <el-form ref="search" :model="search" inline @submit.stop.native="submit" @reset.stop.native="reset">
|
|
|
+ <el-form-item prop="keyword">
|
|
|
+ <el-input v-model.trim="search.keyword" clearable placeholder="学生姓名(手机、编号)"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="hastimer">
|
|
|
+ <el-select v-model.trim="search.hastimer" clearable placeholder="是否存在剩余时长">
|
|
|
+ <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" native-type="submit">搜索</el-button>
|
|
|
+ <el-button type="danger" native-type="reset">重置</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-table
|
|
|
+ :data="filterlist"
|
|
|
+ :header-cell-style="{background:'#EDEEF0',color:'#444'}"
|
|
|
>
|
|
|
- <template slot-scope="scope">
|
|
|
- {{courseType[scope.row.type]}}
|
|
|
- </template>
|
|
|
- </el-table-column> -->
|
|
|
- <el-table-column
|
|
|
- prop="userId"
|
|
|
- label="学生编号"
|
|
|
- width="120"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <template slot-scope="scope">
|
|
|
- <copy-text>{{scope.row.userId}}</copy-text>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="username"
|
|
|
- label="学生姓名"
|
|
|
- width="120"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <template slot-scope="scope">
|
|
|
- <copy-text>{{scope.row.username}}</copy-text>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="phone"
|
|
|
- label="学生手机号"
|
|
|
- width="140"
|
|
|
- align="center"
|
|
|
- >
|
|
|
- <template slot-scope="scope">
|
|
|
- <copy-text>{{scope.row.phone}}</copy-text>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- label="课程时长"
|
|
|
- >
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-tag
|
|
|
- style="margin-right: 5px;margin-bottom: 5px;"
|
|
|
- v-for="item in scope.row.mapDtos"
|
|
|
- :key="item.key"
|
|
|
- type="info"
|
|
|
- size="small"
|
|
|
- >{{courseType[item.key]}}: {{item.value}}分钟</el-tag>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <!-- <el-table-column
|
|
|
- prop="time"
|
|
|
- label="剩余时长(分)"
|
|
|
- align="center"
|
|
|
- /> -->
|
|
|
- </el-table>
|
|
|
+ <!-- <el-table-column
|
|
|
+ prop="type"
|
|
|
+ label="课程类型"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{courseType[scope.row.type]}}
|
|
|
+ </template>
|
|
|
+ </el-table-column> -->
|
|
|
+ <el-table-column
|
|
|
+ prop="userId"
|
|
|
+ label="学生编号"
|
|
|
+ width="120"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <copy-text>{{scope.row.userId}}</copy-text>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="username"
|
|
|
+ label="学生姓名"
|
|
|
+ width="120"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <copy-text>{{scope.row.username}}</copy-text>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="phone"
|
|
|
+ label="学生手机号"
|
|
|
+ width="140"
|
|
|
+ align="center"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <copy-text>{{scope.row.phone}}</copy-text>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ label="课程时长"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag
|
|
|
+ style="margin-right: 5px;margin-bottom: 5px;"
|
|
|
+ v-for="item in scope.row.mapDtos"
|
|
|
+ :key="item.key"
|
|
|
+ type="info"
|
|
|
+ size="small"
|
|
|
+ >{{courseType[item.key]}}: {{item.value}}分钟</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <!-- <el-table-column
|
|
|
+ prop="time"
|
|
|
+ label="剩余时长(分)"
|
|
|
+ align="center"
|
|
|
+ /> -->
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
@@ -72,7 +89,12 @@ export default {
|
|
|
return {
|
|
|
courseType,
|
|
|
list: [],
|
|
|
- extra: []
|
|
|
+ filterlist: [],
|
|
|
+ extra: [],
|
|
|
+ search: {
|
|
|
+ keyword: '',
|
|
|
+ hastimer: ''
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
@@ -86,12 +108,41 @@ export default {
|
|
|
}
|
|
|
return data
|
|
|
},
|
|
|
+ filter() {
|
|
|
+ const { keyword, hastimer } = this.search
|
|
|
+ this.filterlist = this.list.filter(item => {
|
|
|
+ const user = !keyword || (
|
|
|
+ ('' + item.userId).indexOf(keyword) > -1 ||
|
|
|
+ ('' + item.phone).indexOf(keyword) > -1 ||
|
|
|
+ ('' + item.username).indexOf(keyword) > -1
|
|
|
+ )
|
|
|
+ const couse = !hastimer || (hastimer == '1' && item.mapDtos.filter(dto => dto.value > 0).length)
|
|
|
+ return user && couse
|
|
|
+ })
|
|
|
+ },
|
|
|
+ submit(evt) {
|
|
|
+ evt.stopPropagation()
|
|
|
+ evt.stopImmediatePropagation()
|
|
|
+ evt.preventDefault()
|
|
|
+ this.filter()
|
|
|
+ },
|
|
|
+ reset(evt) {
|
|
|
+ evt.stopPropagation()
|
|
|
+ evt.stopImmediatePropagation()
|
|
|
+ evt.preventDefault()
|
|
|
+ this.search = {
|
|
|
+ keyword: '',
|
|
|
+ hastimer: ''
|
|
|
+ }
|
|
|
+ this.filter()
|
|
|
+ },
|
|
|
async FetchDetail() {
|
|
|
try {
|
|
|
const res = await queryStudentSubTotalCourseTimes({
|
|
|
musicGroupId: this.$route.query.id,
|
|
|
})
|
|
|
this.list = res.data
|
|
|
+ this.filter()
|
|
|
if (res.data[0]) {
|
|
|
this.extra = res.data[0].mapDtos
|
|
|
}
|