|
@@ -1,59 +1,88 @@
|
|
<template>
|
|
<template>
|
|
<div class="cl-container">
|
|
<div class="cl-container">
|
|
<!-- 搜索类型 -->
|
|
<!-- 搜索类型 -->
|
|
- <el-form :inline="true" class="searchForm" v-model.trim="searchForm">
|
|
|
|
|
|
+ <el-form :inline="true"
|
|
|
|
+ class="searchForm"
|
|
|
|
+ v-model.trim="searchForm">
|
|
<el-form-item>
|
|
<el-form-item>
|
|
- <el-select v-model.trim="searchForm.courseStatus" clearable filterable placeholder="课程类型">
|
|
|
|
- <el-option label="基础技能课" value="HIGH"></el-option>
|
|
|
|
- <el-option label="综合课" value="COMPREHENSIVE"></el-option>
|
|
|
|
- <el-option label="课堂课" value="CLASSROOM"></el-option>
|
|
|
|
- <el-option label="合奏课" value="MIX"></el-option>
|
|
|
|
- <el-option label="集训合奏课" value="TRAINING_MIX"></el-option>
|
|
|
|
- <el-option label="集训单技课" value="TRAINING_SINGLE"></el-option>
|
|
|
|
- <el-option label="单技课" value="SINGLE"></el-option>
|
|
|
|
|
|
+ <el-select v-model.trim="searchForm.courseStatus"
|
|
|
|
+ clearable
|
|
|
|
+ filterable
|
|
|
|
+ placeholder="课程类型">
|
|
|
|
+ <el-option label="基础技能课"
|
|
|
|
+ value="HIGH"></el-option>
|
|
|
|
+ <el-option label="综合课"
|
|
|
|
+ value="COMPREHENSIVE"></el-option>
|
|
|
|
+ <el-option label="课堂课"
|
|
|
|
+ value="CLASSROOM"></el-option>
|
|
|
|
+ <el-option label="合奏课"
|
|
|
|
+ value="MIX"></el-option>
|
|
|
|
+ <el-option label="集训合奏课"
|
|
|
|
+ value="TRAINING_MIX"></el-option>
|
|
|
|
+ <el-option label="集训单技课"
|
|
|
|
+ value="TRAINING_SINGLE"></el-option>
|
|
|
|
+ <el-option label="单技课"
|
|
|
|
+ value="SINGLE"></el-option>
|
|
|
|
+ <el-option label="线上基础技能课"
|
|
|
|
+ value="HIGH_ONLINE"></el-option>
|
|
|
|
+ <el-option label="乐团网管课"
|
|
|
|
+ value="MUSIC_NETWORK"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
- <el-select v-model.trim="searchForm.classStatus" clearable filterable placeholder="课程状态">
|
|
|
|
- <el-option label="未开始" value="NOT_START"></el-option>
|
|
|
|
- <el-option label="进行中" value="UNDERWAY"></el-option>
|
|
|
|
- <el-option label="已结束" value="OVER"></el-option>
|
|
|
|
|
|
+ <el-select v-model.trim="searchForm.classStatus"
|
|
|
|
+ clearable
|
|
|
|
+ filterable
|
|
|
|
+ placeholder="课程状态">
|
|
|
|
+ <el-option label="未开始"
|
|
|
|
+ value="NOT_START"></el-option>
|
|
|
|
+ <el-option label="进行中"
|
|
|
|
+ value="UNDERWAY"></el-option>
|
|
|
|
+ <el-option label="已结束"
|
|
|
|
+ value="OVER"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
<!-- getMusicGroupAllClass -->
|
|
<!-- getMusicGroupAllClass -->
|
|
- <el-select v-model.trim="searchForm.class" placeholder="班级名称" filterable clearable>
|
|
|
|
- <el-option
|
|
|
|
- v-for="(item,index) in classList"
|
|
|
|
- :key="index"
|
|
|
|
- :value="item.id"
|
|
|
|
- :label="item.name"
|
|
|
|
- ></el-option>
|
|
|
|
|
|
+ <el-select v-model.trim="searchForm.class"
|
|
|
|
+ placeholder="班级名称"
|
|
|
|
+ filterable
|
|
|
|
+ clearable>
|
|
|
|
+ <el-option v-for="(item,index) in classList"
|
|
|
|
+ :key="index"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ :label="item.name"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
- <el-select v-model.trim="searchForm.isSettlement" placeholder="是否结算" filterable clearable>
|
|
|
|
- <el-option value="0" label="未结算"></el-option>
|
|
|
|
- <el-option value="1" label="已结算"></el-option>
|
|
|
|
|
|
+ <el-select v-model.trim="searchForm.isSettlement"
|
|
|
|
+ placeholder="是否结算"
|
|
|
|
+ filterable
|
|
|
|
+ clearable>
|
|
|
|
+ <el-option value="0"
|
|
|
|
+ label="未结算"></el-option>
|
|
|
|
+ <el-option value="1"
|
|
|
|
+ label="已结算"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
- <el-date-picker
|
|
|
|
- v-model.trim="searchForm.timer"
|
|
|
|
- style="width:420px;"
|
|
|
|
- type="daterange"
|
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
|
- range-separator="至"
|
|
|
|
- start-placeholder="开始日期"
|
|
|
|
- end-placeholder="结束日期"
|
|
|
|
- ></el-date-picker>
|
|
|
|
|
|
+ <el-date-picker v-model.trim="searchForm.timer"
|
|
|
|
+ style="width:420px;"
|
|
|
|
+ type="daterange"
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
+ range-separator="至"
|
|
|
|
+ start-placeholder="开始日期"
|
|
|
|
+ end-placeholder="结束日期"></el-date-picker>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
- <div class="searchBtn" @click="search">搜索</div>
|
|
|
|
|
|
+ <div class="searchBtn"
|
|
|
|
+ @click="search">搜索</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<div class="btnWraps">
|
|
<div class="btnWraps">
|
|
- <div class="newBand" @click="removeCourses" v-permission="'courseSchedule/batchDelete'">批量删除</div>
|
|
|
|
|
|
+ <div class="newBand"
|
|
|
|
+ @click="removeCourses"
|
|
|
|
+ v-permission="'courseSchedule/batchDelete'">批量删除</div>
|
|
<!-- <div class="newBand"
|
|
<!-- <div class="newBand"
|
|
@click="resetTimer">修改日期</div>-->
|
|
@click="resetTimer">修改日期</div>-->
|
|
</div>
|
|
</div>
|
|
@@ -61,113 +90,118 @@
|
|
|
|
|
|
<!-- 列表 -->
|
|
<!-- 列表 -->
|
|
<div class="tableWrap">
|
|
<div class="tableWrap">
|
|
- <el-table
|
|
|
|
- :data="tableList"
|
|
|
|
- :header-cell-style="{background:'#EDEEF0',color:'#444'}"
|
|
|
|
- @selection-change="handleSelectionChange"
|
|
|
|
- >
|
|
|
|
- <el-table-column type="selection" width="55" :selectable="checkSelectable"></el-table-column>
|
|
|
|
- <el-table-column align="center" width="180px" label="时间">
|
|
|
|
- <template
|
|
|
|
- slot-scope="scope"
|
|
|
|
- >{{ scope.row.classDate }} {{ scope.row.startClassTime ? scope.row.startClassTime.substr(0, 5) : '' }}-{{ scope.row.endClassTime ? scope.row.endClassTime.substr(0, 5) : '' }}</template>
|
|
|
|
|
|
+ <el-table :data="tableList"
|
|
|
|
+ :header-cell-style="{background:'#EDEEF0',color:'#444'}"
|
|
|
|
+ @selection-change="handleSelectionChange">
|
|
|
|
+ <el-table-column type="selection"
|
|
|
|
+ width="55"
|
|
|
|
+ :selectable="checkSelectable"></el-table-column>
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ width="180px"
|
|
|
|
+ label="时间">
|
|
|
|
+ <template slot-scope="scope">{{ scope.row.classDate }} {{ scope.row.startClassTime ? scope.row.startClassTime.substr(0, 5) : '' }}-{{ scope.row.endClassTime ? scope.row.endClassTime.substr(0, 5) : '' }}</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column align="center" prop="classGroupName" label="班级名称"></el-table-column>
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ prop="classGroupName"
|
|
|
|
+ label="班级名称"></el-table-column>
|
|
<!-- <el-table-column align='center'
|
|
<!-- <el-table-column align='center'
|
|
prop="mixClassGroupName"
|
|
prop="mixClassGroupName"
|
|
label="合奏班">
|
|
label="合奏班">
|
|
</el-table-column>-->
|
|
</el-table-column>-->
|
|
- <el-table-column align="center" prop="courseScheduleType" label="课程类型">
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ prop="courseScheduleType"
|
|
|
|
+ label="课程类型">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.courseScheduleType | coursesType}}</div>
|
|
<div>{{ scope.row.courseScheduleType | coursesType}}</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
|
|
|
- <el-table-column align="center" prop="courseScheduleStatus" label="课程状态">
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ prop="courseScheduleStatus"
|
|
|
|
+ label="课程状态">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.courseScheduleStatus | coursesStatus }}</div>
|
|
<div>{{ scope.row.courseScheduleStatus | coursesStatus }}</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column align="center" label="老师签到">
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ label="老师签到">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.signInStatus | attendanceType}}</div>
|
|
<div>{{ scope.row.signInStatus | attendanceType}}</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column align="center" label="老师签退">
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ label="老师签退">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.signOutStatus | attendanceOutType}}</div>
|
|
<div>{{ scope.row.signOutStatus | attendanceOutType}}</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column align="center" prop="masterTeacherName" label="指导老师"></el-table-column>
|
|
|
|
- <el-table-column align="center" label="结算状态">
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ prop="masterTeacherName"
|
|
|
|
+ label="指导老师"></el-table-column>
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ label="结算状态">
|
|
<template slot-scope="scope">{{ scope.row.settlementTime ? '已结算' : '未结算' }}</template>
|
|
<template slot-scope="scope">{{ scope.row.settlementTime ? '已结算' : '未结算' }}</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column align="center" prop="remark" label="是否点名">
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ prop="remark"
|
|
|
|
+ label="是否点名">
|
|
<template slot-scope="scope">{{ scope.row.isCallNames ? '已点名' : '未点名' }}</template>
|
|
<template slot-scope="scope">{{ scope.row.isCallNames ? '已点名' : '未点名' }}</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column align="center" prop="remark" label="备注"></el-table-column>
|
|
|
|
- <el-table-column align="center" width="280px" label="操作" fixed="right">
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ prop="remark"
|
|
|
|
+ label="备注"></el-table-column>
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ width="280px"
|
|
|
|
+ label="操作"
|
|
|
|
+ fixed="right">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div>
|
|
<div>
|
|
<!-- {child: 'teacherAttendance/updateTeacherAttendance', parent: '/teamDetails/courseList'} -->
|
|
<!-- {child: 'teacherAttendance/updateTeacherAttendance', parent: '/teamDetails/courseList'} -->
|
|
- <el-button
|
|
|
|
- v-if="scope.row.courseScheduleStatus == 'OVER' && !scope.row.settlementTime && permission('teacherAttendance/updateTeacherAttendance', '/teamDetails/courseList')"
|
|
|
|
- type="text"
|
|
|
|
- @click="onMarkAttendance(scope.row)"
|
|
|
|
- >补考勤</el-button>
|
|
|
|
- <el-button
|
|
|
|
- v-if="scope.row.courseScheduleStatus == 'OVER' && !scope.row.settlementTime && permission('studentAttendance/updateStudentAttendances')"
|
|
|
|
- type="text"
|
|
|
|
- @click="onCallName(scope.row)"
|
|
|
|
- >点名表</el-button>
|
|
|
|
|
|
+ <el-button v-if="scope.row.courseScheduleStatus == 'OVER' && !scope.row.settlementTime && permission('teacherAttendance/updateTeacherAttendance', '/teamDetails/courseList')"
|
|
|
|
+ type="text"
|
|
|
|
+ @click="onMarkAttendance(scope.row)">补考勤</el-button>
|
|
|
|
+ <el-button v-if="scope.row.courseScheduleStatus == 'OVER' && !scope.row.settlementTime && permission('studentAttendance/updateStudentAttendances')"
|
|
|
|
+ type="text"
|
|
|
|
+ @click="onCallName(scope.row)">点名表</el-button>
|
|
<!-- OVER -->
|
|
<!-- OVER -->
|
|
<!-- <el-button
|
|
<!-- <el-button
|
|
v-if="scope.row.courseScheduleStatus == 'OVER' && permission('courseSchedule/classStartDateAdjust1')"
|
|
v-if="scope.row.courseScheduleStatus == 'OVER' && permission('courseSchedule/classStartDateAdjust1')"
|
|
type="text"
|
|
type="text"
|
|
@click="resetClass(scope.row)"
|
|
@click="resetClass(scope.row)"
|
|
>调整</el-button>-->
|
|
>调整</el-button>-->
|
|
- <el-button
|
|
|
|
- v-if="!scope.row.settlementTime && permission('courseSchedule/classStartDateAdjust')"
|
|
|
|
- type="text"
|
|
|
|
- @click="resetClass(scope.row)"
|
|
|
|
- >调整</el-button>
|
|
|
|
- <el-button
|
|
|
|
- v-if="scope.row.courseScheduleStatus == 'NOT_START' && permission('courseSchedule/batchDelete')"
|
|
|
|
- type="text"
|
|
|
|
- @click="removeSingleClass(scope.row)"
|
|
|
|
- >删除</el-button>
|
|
|
|
|
|
+ <el-button v-if="!scope.row.settlementTime && permission('courseSchedule/classStartDateAdjust')"
|
|
|
|
+ type="text"
|
|
|
|
+ @click="resetClass(scope.row)">调整</el-button>
|
|
|
|
+ <el-button v-if="scope.row.courseScheduleStatus == 'NOT_START' && permission('courseSchedule/batchDelete')"
|
|
|
|
+ type="text"
|
|
|
|
+ @click="removeSingleClass(scope.row)">删除</el-button>
|
|
<!-- v-if="scope.row.courseScheduleStatus == 'NOT_START' && permission('courseSchedule/batchDelete')" teamDetail/resetTpye-->
|
|
<!-- v-if="scope.row.courseScheduleStatus == 'NOT_START' && permission('courseSchedule/batchDelete')" teamDetail/resetTpye-->
|
|
- <el-button
|
|
|
|
- type="text"
|
|
|
|
- @click="resetType(scope.row)"
|
|
|
|
- v-if="permission('teamDetail/resetTpye')"
|
|
|
|
- >类型调整</el-button>
|
|
|
|
- <el-button
|
|
|
|
- type="text"
|
|
|
|
- v-if="permission('courseSchedule/cleanAttendance')"
|
|
|
|
- @click="clearAttend(scope.row)"
|
|
|
|
- >清除考勤</el-button>
|
|
|
|
|
|
+ <el-button type="text"
|
|
|
|
+ @click="resetType(scope.row)"
|
|
|
|
+ v-if="permission('teamDetail/resetTpye')">类型调整</el-button>
|
|
|
|
+ <el-button type="text"
|
|
|
|
+ v-if="permission('courseSchedule/cleanAttendance')"
|
|
|
|
+ @click="clearAttend(scope.row)">清除考勤</el-button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
- <pagination
|
|
|
|
- :total="rules.total"
|
|
|
|
- :page.sync="rules.page"
|
|
|
|
- :limit.sync="rules.limit"
|
|
|
|
- :page-sizes="rules.page_size"
|
|
|
|
- @pagination="getList"
|
|
|
|
- />
|
|
|
|
|
|
+ <pagination :total="rules.total"
|
|
|
|
+ :page.sync="rules.page"
|
|
|
|
+ :limit.sync="rules.limit"
|
|
|
|
+ :page-sizes="rules.page_size"
|
|
|
|
+ @pagination="getList" />
|
|
</div>
|
|
</div>
|
|
- <el-dialog title="课程调整" width="400px" :before-close="handleClose" :visible.sync="courseVisible">
|
|
|
|
- <el-form
|
|
|
|
- :model="maskForm"
|
|
|
|
- ref="maskForm"
|
|
|
|
- :rules="maskRules"
|
|
|
|
- label-position="right"
|
|
|
|
- label-width="80px;"
|
|
|
|
- :inline="true"
|
|
|
|
- >
|
|
|
|
|
|
+ <el-dialog title="课程调整"
|
|
|
|
+ width="400px"
|
|
|
|
+ :before-close="handleClose"
|
|
|
|
+ :visible.sync="courseVisible">
|
|
|
|
+ <el-form :model="maskForm"
|
|
|
|
+ ref="maskForm"
|
|
|
|
+ :rules="maskRules"
|
|
|
|
+ label-position="right"
|
|
|
|
+ label-width="80px;"
|
|
|
|
+ :inline="true">
|
|
<!-- <el-form-item label="课程类型" prop="type">
|
|
<!-- <el-form-item label="课程类型" prop="type">
|
|
<el-select v-model.trim="maskForm.type" clearable filterable>
|
|
<el-select v-model.trim="maskForm.type" clearable filterable>
|
|
<el-option
|
|
<el-option
|
|
@@ -178,168 +212,176 @@
|
|
></el-option>
|
|
></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>-->
|
|
</el-form-item>-->
|
|
- <el-form-item label="主教老师" prop="teacher">
|
|
|
|
- <el-select v-model.trim="maskForm.teacher" clearable filterable>
|
|
|
|
- <el-option
|
|
|
|
- v-for="(item,index) in teacherList"
|
|
|
|
- :key="index"
|
|
|
|
- :value="item.id"
|
|
|
|
- :label="item.realName"
|
|
|
|
- ></el-option>
|
|
|
|
|
|
+ <el-form-item label="主教老师"
|
|
|
|
+ prop="teacher">
|
|
|
|
+ <el-select v-model.trim="maskForm.teacher"
|
|
|
|
+ clearable
|
|
|
|
+ filterable>
|
|
|
|
+ <el-option v-for="(item,index) in teacherList"
|
|
|
|
+ :key="index"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ :label="item.realName"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="助教老师" prop="assistant">
|
|
|
|
- <el-select v-model.trim="maskForm.assistant" clearable filterable multiple collapse-tags>
|
|
|
|
- <el-option
|
|
|
|
- v-for="(item,index) in teacherList"
|
|
|
|
- :key="index"
|
|
|
|
- :value="item.id"
|
|
|
|
- :label="item.realName"
|
|
|
|
- ></el-option>
|
|
|
|
|
|
+ <el-form-item label="助教老师"
|
|
|
|
+ prop="assistant">
|
|
|
|
+ <el-select v-model.trim="maskForm.assistant"
|
|
|
|
+ clearable
|
|
|
|
+ filterable
|
|
|
|
+ multiple
|
|
|
|
+ collapse-tags>
|
|
|
|
+ <el-option v-for="(item,index) in teacherList"
|
|
|
|
+ :key="index"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ :label="item.realName"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="上课日期" prop="date">
|
|
|
|
- <el-date-picker
|
|
|
|
- v-model.trim="maskForm.date"
|
|
|
|
- type="date"
|
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
|
- placeholder="选择日期"
|
|
|
|
- ></el-date-picker>
|
|
|
|
|
|
+ <el-form-item label="上课日期"
|
|
|
|
+ prop="date">
|
|
|
|
+ <el-date-picker v-model.trim="maskForm.date"
|
|
|
|
+ type="date"
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
+ placeholder="选择日期"></el-date-picker>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="开始时间" v-if="courseVisible" prop="startTime">
|
|
|
|
- <el-time-select
|
|
|
|
- placeholder="起始时间"
|
|
|
|
- v-model.trim="maskForm.startTime"
|
|
|
|
- :picker-options="{
|
|
|
|
|
|
+ <el-form-item label="开始时间"
|
|
|
|
+ v-if="courseVisible"
|
|
|
|
+ prop="startTime">
|
|
|
|
+ <el-time-select placeholder="起始时间"
|
|
|
|
+ v-model.trim="maskForm.startTime"
|
|
|
|
+ :picker-options="{
|
|
start: '04:30',
|
|
start: '04:30',
|
|
step: '00:05',
|
|
step: '00:05',
|
|
end: '23:30'
|
|
end: '23:30'
|
|
- }"
|
|
|
|
- ></el-time-select>
|
|
|
|
|
|
+ }"></el-time-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="结束时间" v-if="courseVisible" prop="endTime">
|
|
|
|
- <el-time-select
|
|
|
|
- placeholder="结束时间"
|
|
|
|
- v-model.trim="maskForm.endTime"
|
|
|
|
- :picker-options="{
|
|
|
|
|
|
+ <el-form-item label="结束时间"
|
|
|
|
+ v-if="courseVisible"
|
|
|
|
+ prop="endTime">
|
|
|
|
+ <el-time-select placeholder="结束时间"
|
|
|
|
+ v-model.trim="maskForm.endTime"
|
|
|
|
+ :picker-options="{
|
|
start: '04:30',
|
|
start: '04:30',
|
|
step: '00:05',
|
|
step: '00:05',
|
|
end: '23:30',
|
|
end: '23:30',
|
|
minTime: maskForm.startTime
|
|
minTime: maskForm.startTime
|
|
- }"
|
|
|
|
- ></el-time-select>
|
|
|
|
|
|
+ }"></el-time-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
|
|
|
+ <div slot="footer"
|
|
|
|
+ class="dialog-footer">
|
|
<el-button @click="courseVisible = false">取 消</el-button>
|
|
<el-button @click="courseVisible = false">取 消</el-button>
|
|
- <el-button type="primary" @click="submitResetClass">确 定</el-button>
|
|
|
|
|
|
+ <el-button type="primary"
|
|
|
|
+ @click="submitResetClass">确 定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
- <el-dialog
|
|
|
|
- title="修改时间"
|
|
|
|
- width="400px"
|
|
|
|
- :before-close="handleCloseTimer"
|
|
|
|
- :visible.sync="timerVisible"
|
|
|
|
- >
|
|
|
|
|
|
+ <el-dialog title="修改时间"
|
|
|
|
+ width="400px"
|
|
|
|
+ :before-close="handleCloseTimer"
|
|
|
|
+ :visible.sync="timerVisible">
|
|
<el-form :model="timerMask">
|
|
<el-form :model="timerMask">
|
|
- <el-form-item
|
|
|
|
- label="上课日期"
|
|
|
|
- :rules=" [{ required: true, message: '请选择日期', trigger: 'blur' },]"
|
|
|
|
- >
|
|
|
|
- <el-date-picker
|
|
|
|
- v-model.trim="timerMask.timer"
|
|
|
|
- type="date"
|
|
|
|
- format="yyyy-MM-dd"
|
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
|
- placeholder="选择日期"
|
|
|
|
- ></el-date-picker>
|
|
|
|
|
|
+ <el-form-item label="上课日期"
|
|
|
|
+ :rules=" [{ required: true, message: '请选择日期', trigger: 'blur' },]">
|
|
|
|
+ <el-date-picker v-model.trim="timerMask.timer"
|
|
|
|
+ type="date"
|
|
|
|
+ format="yyyy-MM-dd"
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
+ placeholder="选择日期"></el-date-picker>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
|
|
|
+ <div slot="footer"
|
|
|
|
+ class="dialog-footer">
|
|
<el-button @click="timerVisible = false">取 消</el-button>
|
|
<el-button @click="timerVisible = false">取 消</el-button>
|
|
- <el-button type="primary" @click="batchAdjustmentTime">确 定</el-button>
|
|
|
|
|
|
+ <el-button type="primary"
|
|
|
|
+ @click="batchAdjustmentTime">确 定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog title="补考勤" width="400px" :visible.sync="markAttendance.status">
|
|
|
|
|
|
+ <el-dialog title="补考勤"
|
|
|
|
+ width="400px"
|
|
|
|
+ :visible.sync="markAttendance.status">
|
|
<el-form>
|
|
<el-form>
|
|
<el-form-item label="签到状态">{{ markAttendance.dataInfo.signInStatus | attendanceType }}</el-form-item>
|
|
<el-form-item label="签到状态">{{ markAttendance.dataInfo.signInStatus | attendanceType }}</el-form-item>
|
|
<el-form-item label="签到时间">{{ markAttendance.dataInfo.signInTime}}</el-form-item>
|
|
<el-form-item label="签到时间">{{ markAttendance.dataInfo.signInTime}}</el-form-item>
|
|
<el-form-item label="签退状态">{{ markAttendance.dataInfo.signOutStatus | attendanceOutType }}</el-form-item>
|
|
<el-form-item label="签退状态">{{ markAttendance.dataInfo.signOutStatus | attendanceOutType }}</el-form-item>
|
|
<el-form-item label="签退时间">{{ markAttendance.dataInfo.signOutTime}}</el-form-item>
|
|
<el-form-item label="签退时间">{{ markAttendance.dataInfo.signOutTime}}</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
|
|
|
+ <div slot="footer"
|
|
|
|
+ class="dialog-footer">
|
|
<el-button @click="markAttendance.status = false">取 消</el-button>
|
|
<el-button @click="markAttendance.status = false">取 消</el-button>
|
|
- <el-button
|
|
|
|
- type="primary"
|
|
|
|
- :disabled="markAttendance.dataInfo.signOutStatus == 1 && markAttendance.dataInfo.signInStatus == 1 ? true : false"
|
|
|
|
- @click="batchAdjustmentTime"
|
|
|
|
- >确定补卡</el-button>
|
|
|
|
|
|
+ <el-button type="primary"
|
|
|
|
+ :disabled="markAttendance.dataInfo.signOutStatus == 1 && markAttendance.dataInfo.signInStatus == 1 ? true : false"
|
|
|
|
+ @click="batchAdjustmentTime">确定补卡</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog title="点名表" width="700px" :visible.sync="rollCall.status">
|
|
|
|
|
|
+ <el-dialog title="点名表"
|
|
|
|
+ width="700px"
|
|
|
|
+ :visible.sync="rollCall.status">
|
|
<el-table :data="rollCall.gridData">
|
|
<el-table :data="rollCall.gridData">
|
|
- <el-table-column align="center" property="userName" label="学员姓名"></el-table-column>
|
|
|
|
- <el-table-column align="center" property="phone" label="手机号"></el-table-column>
|
|
|
|
- <el-table-column align="center" property="subjectName" label="学员声部"></el-table-column>
|
|
|
|
- <el-table-column align="center" label="到课状态">
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ property="userName"
|
|
|
|
+ label="学员姓名"></el-table-column>
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ property="phone"
|
|
|
|
+ label="手机号"></el-table-column>
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ property="subjectName"
|
|
|
|
+ label="学员声部"></el-table-column>
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ label="到课状态">
|
|
<template slot-scope="scope">{{ scope.row.status | studentCallName }}</template>
|
|
<template slot-scope="scope">{{ scope.row.status | studentCallName }}</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column align="center" label="操作" width="220px">
|
|
|
|
|
|
+ <el-table-column align="center"
|
|
|
|
+ label="操作"
|
|
|
|
+ width="220px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-button
|
|
|
|
- size="small"
|
|
|
|
- @click="onChangeRollCall('TRUANT', scope.row)"
|
|
|
|
- type="primary"
|
|
|
|
- round
|
|
|
|
- >未到</el-button>
|
|
|
|
- <el-button
|
|
|
|
- size="small"
|
|
|
|
- @click="onChangeRollCall('LEAVE', scope.row)"
|
|
|
|
- type="warning"
|
|
|
|
- round
|
|
|
|
- >请假</el-button>
|
|
|
|
- <el-button
|
|
|
|
- size="small"
|
|
|
|
- @click="onChangeRollCall('NORMAL', scope.row)"
|
|
|
|
- type="success"
|
|
|
|
- round
|
|
|
|
- >到课</el-button>
|
|
|
|
|
|
+ <el-button size="small"
|
|
|
|
+ @click="onChangeRollCall('TRUANT', scope.row)"
|
|
|
|
+ type="primary"
|
|
|
|
+ round>未到</el-button>
|
|
|
|
+ <el-button size="small"
|
|
|
|
+ @click="onChangeRollCall('LEAVE', scope.row)"
|
|
|
|
+ type="warning"
|
|
|
|
+ round>请假</el-button>
|
|
|
|
+ <el-button size="small"
|
|
|
|
+ @click="onChangeRollCall('NORMAL', scope.row)"
|
|
|
|
+ type="success"
|
|
|
|
+ round>到课</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
- <pagination
|
|
|
|
- :total="rollCall.total"
|
|
|
|
- :page.sync="rollCall.page"
|
|
|
|
- :limit.sync="rollCall.limit"
|
|
|
|
- :page-sizes="rollCall.page_size"
|
|
|
|
- @pagination="getCallName"
|
|
|
|
- />
|
|
|
|
|
|
+ <pagination :total="rollCall.total"
|
|
|
|
+ :page.sync="rollCall.page"
|
|
|
|
+ :limit.sync="rollCall.limit"
|
|
|
|
+ :page-sizes="rollCall.page_size"
|
|
|
|
+ @pagination="getCallName" />
|
|
</el-dialog>
|
|
</el-dialog>
|
|
- <el-dialog title="类型修改" width="400px" :visible.sync="typeVisible">
|
|
|
|
- <el-form
|
|
|
|
- :model="typeForm"
|
|
|
|
- ref="typeForm"
|
|
|
|
- :rules="typeRules"
|
|
|
|
- label-position="right"
|
|
|
|
- label-width="80px;"
|
|
|
|
- :inline="true"
|
|
|
|
- >
|
|
|
|
- <el-form-item label="课程类型" prop="type">
|
|
|
|
- <el-select v-model.trim="typeForm.type" clearable filterable>
|
|
|
|
- <el-option
|
|
|
|
- v-for="(item,index) in courseType"
|
|
|
|
- :key="index"
|
|
|
|
- :value="item.value"
|
|
|
|
- :label="item.label"
|
|
|
|
- ></el-option>
|
|
|
|
|
|
+ <el-dialog title="类型修改"
|
|
|
|
+ width="400px"
|
|
|
|
+ :visible.sync="typeVisible">
|
|
|
|
+ <el-form :model="typeForm"
|
|
|
|
+ ref="typeForm"
|
|
|
|
+ :rules="typeRules"
|
|
|
|
+ label-position="right"
|
|
|
|
+ label-width="80px;"
|
|
|
|
+ :inline="true">
|
|
|
|
+ <el-form-item label="课程类型"
|
|
|
|
+ prop="type">
|
|
|
|
+ <el-select v-model.trim="typeForm.type"
|
|
|
|
+ clearable
|
|
|
|
+ filterable>
|
|
|
|
+ <el-option v-for="(item,index) in courseType"
|
|
|
|
+ :key="index"
|
|
|
|
+ :value="item.value"
|
|
|
|
+ :label="item.label"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
|
|
|
+ <div slot="footer"
|
|
|
|
+ class="dialog-footer">
|
|
<el-button @click="typeVisible = false">取 消</el-button>
|
|
<el-button @click="typeVisible = false">取 消</el-button>
|
|
- <el-button type="primary" @click="submitResetType">确定</el-button>
|
|
|
|
|
|
+ <el-button type="primary"
|
|
|
|
+ @click="submitResetType">确定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
@@ -365,7 +407,7 @@ import { permission } from "@/utils/directivePage";
|
|
export default {
|
|
export default {
|
|
name: "tcourseList",
|
|
name: "tcourseList",
|
|
props: ["teamid"],
|
|
props: ["teamid"],
|
|
- data() {
|
|
|
|
|
|
+ data () {
|
|
return {
|
|
return {
|
|
courseType: [
|
|
courseType: [
|
|
{ value: "SINGLE", label: "单技课" },
|
|
{ value: "SINGLE", label: "单技课" },
|
|
@@ -374,7 +416,8 @@ export default {
|
|
{ value: "TRAINING_MIX", label: "集训合奏课" },
|
|
{ value: "TRAINING_MIX", label: "集训合奏课" },
|
|
{ value: "HIGH", label: "基础技能课" },
|
|
{ value: "HIGH", label: "基础技能课" },
|
|
{ value: "COMPREHENSIVE", label: "综合课" },
|
|
{ value: "COMPREHENSIVE", label: "综合课" },
|
|
- { value: "CLASSROOM", label: "课堂课" }
|
|
|
|
|
|
+ { value: "CLASSROOM", label: "课堂课" },
|
|
|
|
+ { label: "线上基础技能课", value: "HIGH_ONLINE" },
|
|
],
|
|
],
|
|
typeVisible: false,
|
|
typeVisible: false,
|
|
timerVisible: false,
|
|
timerVisible: false,
|
|
@@ -453,14 +496,14 @@ export default {
|
|
components: {
|
|
components: {
|
|
pagination
|
|
pagination
|
|
},
|
|
},
|
|
- mounted() {
|
|
|
|
|
|
+ mounted () {
|
|
this.init();
|
|
this.init();
|
|
},
|
|
},
|
|
- activated() {
|
|
|
|
|
|
+ activated () {
|
|
this.init();
|
|
this.init();
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
- init() {
|
|
|
|
|
|
+ init () {
|
|
this.getList();
|
|
this.getList();
|
|
// 获取所有老师
|
|
// 获取所有老师
|
|
// findMusicGroupClassTeacher({ musicGroupId: this.teamid }).then(res => {
|
|
// findMusicGroupClassTeacher({ musicGroupId: this.teamid }).then(res => {
|
|
@@ -481,20 +524,20 @@ export default {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
},
|
|
},
|
|
- onMarkAttendance(item) {
|
|
|
|
|
|
+ onMarkAttendance (item) {
|
|
// 补考勤
|
|
// 补考勤
|
|
this.markAttendance = {
|
|
this.markAttendance = {
|
|
status: true,
|
|
status: true,
|
|
dataInfo: item
|
|
dataInfo: item
|
|
};
|
|
};
|
|
},
|
|
},
|
|
- onCallName(item) {
|
|
|
|
|
|
+ onCallName (item) {
|
|
// 点名表
|
|
// 点名表
|
|
this.rollCall.page = 1;
|
|
this.rollCall.page = 1;
|
|
this.rollCall.selectItem = item;
|
|
this.rollCall.selectItem = item;
|
|
this.getCallName();
|
|
this.getCallName();
|
|
},
|
|
},
|
|
- getCallName() {
|
|
|
|
|
|
+ getCallName () {
|
|
let rollCall = this.rollCall;
|
|
let rollCall = this.rollCall;
|
|
let params = {
|
|
let params = {
|
|
page: rollCall.page,
|
|
page: rollCall.page,
|
|
@@ -510,7 +553,7 @@ export default {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
},
|
|
},
|
|
- onChangeRollCall(type, row) {
|
|
|
|
|
|
+ onChangeRollCall (type, row) {
|
|
let rollCall = this.rollCall;
|
|
let rollCall = this.rollCall;
|
|
let params = {
|
|
let params = {
|
|
courseScheduleId: rollCall.selectItem.courseScheduleId,
|
|
courseScheduleId: rollCall.selectItem.courseScheduleId,
|
|
@@ -531,14 +574,14 @@ export default {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
},
|
|
},
|
|
- permission(str, parent) {
|
|
|
|
|
|
+ permission (str, parent) {
|
|
return permission(str, parent);
|
|
return permission(str, parent);
|
|
},
|
|
},
|
|
- search() {
|
|
|
|
|
|
+ search () {
|
|
this.rules.page = 1;
|
|
this.rules.page = 1;
|
|
this.getList();
|
|
this.getList();
|
|
},
|
|
},
|
|
- getList() {
|
|
|
|
|
|
+ getList () {
|
|
let searchForm = this.searchForm;
|
|
let searchForm = this.searchForm;
|
|
if (!searchForm.timer) {
|
|
if (!searchForm.timer) {
|
|
searchForm.timer = [];
|
|
searchForm.timer = [];
|
|
@@ -561,7 +604,7 @@ export default {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
},
|
|
},
|
|
- resetClass(row) {
|
|
|
|
|
|
+ resetClass (row) {
|
|
this.maskForm.teacher = parseInt(row.masterTeacherId);
|
|
this.maskForm.teacher = parseInt(row.masterTeacherId);
|
|
// this.maskForm.type = row.courseScheduleType;
|
|
// this.maskForm.type = row.courseScheduleType;
|
|
this.maskForm.assistant = [];
|
|
this.maskForm.assistant = [];
|
|
@@ -587,7 +630,7 @@ export default {
|
|
// classGroupId: row.id
|
|
// classGroupId: row.id
|
|
// }
|
|
// }
|
|
},
|
|
},
|
|
- removeSingleClass(row) {
|
|
|
|
|
|
+ removeSingleClass (row) {
|
|
this.$confirm("是否删除该课程?", "提示", {
|
|
this.$confirm("是否删除该课程?", "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonText: "确定",
|
|
cancelButtonText: "取消",
|
|
cancelButtonText: "取消",
|
|
@@ -602,9 +645,9 @@ export default {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
})
|
|
})
|
|
- .catch(() => {});
|
|
|
|
|
|
+ .catch(() => { });
|
|
},
|
|
},
|
|
- removeCourses() {
|
|
|
|
|
|
+ removeCourses () {
|
|
// 批量删除
|
|
// 批量删除
|
|
if (this.activeCourseList.length < 1) {
|
|
if (this.activeCourseList.length < 1) {
|
|
this.$message.error("请至少选择一节课");
|
|
this.$message.error("请至少选择一节课");
|
|
@@ -628,9 +671,9 @@ export default {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
})
|
|
})
|
|
- .catch(() => {});
|
|
|
|
|
|
+ .catch(() => { });
|
|
},
|
|
},
|
|
- submitResetClass() {
|
|
|
|
|
|
+ submitResetClass () {
|
|
let maskForm = this.maskForm;
|
|
let maskForm = this.maskForm;
|
|
if (!maskForm.startTime || !maskForm.endTime) {
|
|
if (!maskForm.startTime || !maskForm.endTime) {
|
|
this.$message.error("请填写开始时间或结束时间");
|
|
this.$message.error("请填写开始时间或结束时间");
|
|
@@ -663,9 +706,9 @@ export default {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
})
|
|
})
|
|
- .catch(() => {});
|
|
|
|
|
|
+ .catch(() => { });
|
|
},
|
|
},
|
|
- handleClose() {
|
|
|
|
|
|
+ handleClose () {
|
|
this.courseVisible = false;
|
|
this.courseVisible = false;
|
|
(this.maskForm = {
|
|
(this.maskForm = {
|
|
teacher: "",
|
|
teacher: "",
|
|
@@ -677,14 +720,14 @@ export default {
|
|
}),
|
|
}),
|
|
this.$refs["maskForm"].resetFields();
|
|
this.$refs["maskForm"].resetFields();
|
|
},
|
|
},
|
|
- handleSelectionChange(val) {
|
|
|
|
|
|
+ handleSelectionChange (val) {
|
|
this.activeCourseList = val;
|
|
this.activeCourseList = val;
|
|
},
|
|
},
|
|
- checkSelectable(val) {
|
|
|
|
|
|
+ checkSelectable (val) {
|
|
return val.courseScheduleStatus == "NOT_START";
|
|
return val.courseScheduleStatus == "NOT_START";
|
|
// return true;
|
|
// return true;
|
|
},
|
|
},
|
|
- batchAdjustmentTime() {
|
|
|
|
|
|
+ batchAdjustmentTime () {
|
|
let tempData = this.markAttendance.dataInfo;
|
|
let tempData = this.markAttendance.dataInfo;
|
|
let params = {
|
|
let params = {
|
|
teacherId: tempData.masterTeacherId,
|
|
teacherId: tempData.masterTeacherId,
|
|
@@ -702,18 +745,18 @@ export default {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
},
|
|
},
|
|
- handleCloseTimer() {
|
|
|
|
|
|
+ handleCloseTimer () {
|
|
this.timerVisible = false;
|
|
this.timerVisible = false;
|
|
this.timerMask.timer = "";
|
|
this.timerMask.timer = "";
|
|
},
|
|
},
|
|
- resetTimer() {
|
|
|
|
|
|
+ resetTimer () {
|
|
if (this.activeCourseList.length < 1) {
|
|
if (this.activeCourseList.length < 1) {
|
|
this.$message.error("请至少选择一节课");
|
|
this.$message.error("请至少选择一节课");
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
this.timerVisible = true;
|
|
this.timerVisible = true;
|
|
},
|
|
},
|
|
- resetType(row) {
|
|
|
|
|
|
+ resetType (row) {
|
|
this.typeForm.type = row.courseScheduleType;
|
|
this.typeForm.type = row.courseScheduleType;
|
|
this.typeForm.id = row.courseScheduleId;
|
|
this.typeForm.id = row.courseScheduleId;
|
|
this.typeForm.teacher = parseInt(row.masterTeacherId);
|
|
this.typeForm.teacher = parseInt(row.masterTeacherId);
|
|
@@ -734,7 +777,7 @@ export default {
|
|
// console.log(row.type)
|
|
// console.log(row.type)
|
|
this.typeVisible = true;
|
|
this.typeVisible = true;
|
|
},
|
|
},
|
|
- submitResetType() {
|
|
|
|
|
|
+ submitResetType () {
|
|
this.$refs.typeForm.validate(res => {
|
|
this.$refs.typeForm.validate(res => {
|
|
if (res) {
|
|
if (res) {
|
|
let teachingTeacherIdList = this.typeForm.assistant.join(",");
|
|
let teachingTeacherIdList = this.typeForm.assistant.join(",");
|
|
@@ -761,7 +804,7 @@ export default {
|
|
});
|
|
});
|
|
},
|
|
},
|
|
// 清除考勤
|
|
// 清除考勤
|
|
- clearAttend(row) {
|
|
|
|
|
|
+ clearAttend (row) {
|
|
this.$confirm("是否清除考勤记录?", "提示", {
|
|
this.$confirm("是否清除考勤记录?", "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonText: "确定",
|
|
cancelButtonText: "取消",
|
|
cancelButtonText: "取消",
|
|
@@ -779,7 +822,7 @@ export default {
|
|
}
|
|
}
|
|
);
|
|
);
|
|
})
|
|
})
|
|
- .catch(() => {});
|
|
|
|
|
|
+ .catch(() => { });
|
|
}
|
|
}
|
|
},
|
|
},
|
|
filters: {
|
|
filters: {
|