|
@@ -66,7 +66,8 @@
|
|
|
<el-button
|
|
|
@click="onExport"
|
|
|
type="primary"
|
|
|
- v-permission="'export/exercisesSituations'">导出</el-button
|
|
|
+ v-permission="'export/exercisesSituations'"
|
|
|
+ >导出</el-button
|
|
|
>
|
|
|
</el-form-item>
|
|
|
</save-form>
|
|
@@ -231,107 +232,28 @@
|
|
|
</div>
|
|
|
<el-dialog title="服务指标规则说明" :visible.sync="lookServer">
|
|
|
<div class="serverInfo">
|
|
|
- <p>训练布置&服务指标优先级:<span>声部课>VIP课>合奏课>网管课</span></p>
|
|
|
+ <p style="font-weight:600">系统规则:</p>
|
|
|
<p>
|
|
|
- 每
|
|
|
- <span>周一凌晨</span> 系统根据学员的排课情况生成布置训练路径及服务指标
|
|
|
+ 1、每<span>周一凌晨</span>系统根据下方流程图,为每个乐团<span>独立生成</span>本周训练布置路径
|
|
|
</p>
|
|
|
<p>
|
|
|
- <span>多次课程</span>
|
|
|
- 只布置一次训练、统计一次服务指标(多乐团、多组VIP网管课除外)
|
|
|
+ 2、系统<span>每10分钟</span>根据乐团最新的课程、班级信息<span>更新</span>本周训练布置路径
|
|
|
</p>
|
|
|
- <el-table
|
|
|
- border
|
|
|
- style="margin-top: 30px"
|
|
|
- :data="infoList"
|
|
|
- :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
|
|
|
- :span-method="arraySpanMethod"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- align="center"
|
|
|
- prop="row1"
|
|
|
- label="总体课程情况"
|
|
|
- ></el-table-column>
|
|
|
- <el-table-column
|
|
|
- align="center"
|
|
|
- prop="row2"
|
|
|
- label="本周课程情况"
|
|
|
- ></el-table-column>
|
|
|
- <el-table-column
|
|
|
- align="center"
|
|
|
- prop="row3"
|
|
|
- label="训练布置路径"
|
|
|
- ></el-table-column>
|
|
|
- <el-table-column
|
|
|
- align="center"
|
|
|
- prop="row4"
|
|
|
- label="服务指标统计"
|
|
|
- ></el-table-column>
|
|
|
- </el-table>
|
|
|
- <div class="infoWrap">
|
|
|
- <h4>其他情况:</h4>
|
|
|
- <p>
|
|
|
- 1.学员在 <span>多个乐团时</span> ,剩余课程中
|
|
|
- <span>本周有声部课</span> 的乐团布置训练,
|
|
|
- <span>都有</span> 则都布置,
|
|
|
- <span>都没有</span> 则根据表格中的逻辑布置
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- 2.学员存在 <span>多组VIP课</span> 时,若课程组
|
|
|
- <span>老师相同</span> ,则仅布置一次训练(网管课同理)
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- 3.学员存在 <span>多组VIP课</span> 时,若课程组
|
|
|
- <span>老师不同,本周有课</span>
|
|
|
- 的VIP课程组布置训练,多个课程组本周都有课则布置多次(网管课同理)
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- 4.学员存在 <span>多组VIP课</span> 时,若课程组
|
|
|
- <span>老师不同,本周都没有课</span> ,则所有VIP老师
|
|
|
- <span>都布置</span> 课外训练, <span>都统计</span> 服务指标
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- <div class="infoWrap">
|
|
|
- <h4>课程调整:</h4>
|
|
|
- <p>
|
|
|
- 本周 <span>课程调整时</span> ,重新根据该学员的
|
|
|
- <span>本周课程情况更新</span> 训练布置路径及服务指标
|
|
|
- 则根据表格中的逻辑布置
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- <div class="infoWrap">
|
|
|
- <h4>服务指标:</h4>
|
|
|
- <p>服务指标按 <span>周为单位</span> 统计</p>
|
|
|
- <p>
|
|
|
- <span>周六周日</span> 的服务指标
|
|
|
- <span>延迟到下周二更新</span>
|
|
|
- 实际安排数据(即周日的训练课程,在周二23:59:59时前布置训练都算一次实际安排)
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- <div class="infoWrap">
|
|
|
- <h4>服务指标开启/关闭:</h4>
|
|
|
- <p>学员新增课程时,自动开启服务指标,</p>
|
|
|
- <p>手动关闭服务指标的学员新增课程时,不会自动开启服务指标</p>
|
|
|
- <p>
|
|
|
- 学员退团、乐团关闭、VIP课程组结束、网管课课程组结束时,若学员不在任何【进行中】乐团【在读】,且无任何未开始课程(乐团课、VIP课、网管课),则关闭服务指标
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- <div class="infoWrap">
|
|
|
- <h4>服务指标解释:</h4>
|
|
|
- <p><span>若本周学员有多次服务指标则生成多条数据</span></p>
|
|
|
- <p>
|
|
|
- 预期训练布置:本周内服务指标次数(即本周应该给该学员布置的训练次数)
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- 实际训练布置:本周通过服务指标训练布置路径给该学员布置训练的次数
|
|
|
- </p>
|
|
|
- <p>提交次数:本周学员按照训练布置路径提交训练的次数</p>
|
|
|
- <p>评价次数:本周老师评价通过训练布置路径提交的训练的次数</p>
|
|
|
- <p>及时评价次数:学员提交训练后24小时内进行评价的次数</p>
|
|
|
- <p>VIP课:本周VIP课程课时数</p>
|
|
|
- <p>付费网管课:本周付费网管课课时数</p>
|
|
|
- <p>训练提交时间:学员提交训练的时间</p>
|
|
|
- <p>服务周期:本服务周期时间段</p>
|
|
|
+ <p style="margin-top: 20px;font-weight:600">前提条件:</p>
|
|
|
+ <p>1、学员管理中,【是否服务】为 【是】</p>
|
|
|
+ <p>2、学员在【进行中】乐团在读</p>
|
|
|
+ <p>3、乐团截止本周日前,有声部课(含集训)或合奏课(含集训)</p>
|
|
|
+ <p style="margin-top: 20px;font-weight:600">特殊情况:</p>
|
|
|
+ <p>1、学员在多个乐团时,可能存在多次作业</p>
|
|
|
+ <p>2、老师<span>已布置训练后</span>,由于班级、学员、课程变动<span>更新</span>训练布置路径时,可能存在多次作业,但<span>服务指标相关数据统计仅按最新的训练布置路径统计</span></p>
|
|
|
+ <p>3、学员不在【课外训练布置班级】所设置的班级类型中时,不会生成课外训练</p>
|
|
|
+ <div class="imgWrap">
|
|
|
+ <el-image
|
|
|
+ :src="serverImg"
|
|
|
+ class="img"
|
|
|
+ fit="cover"
|
|
|
+ >
|
|
|
+ </el-image>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
@@ -480,6 +402,7 @@ export default {
|
|
|
components: { pagination },
|
|
|
data() {
|
|
|
return {
|
|
|
+ serverImg: require("./images/serverIndexDetail.png"),
|
|
|
tableList: [],
|
|
|
searchForm: {
|
|
|
timer: [],
|
|
@@ -631,7 +554,7 @@ export default {
|
|
|
method: "get",
|
|
|
headers: {
|
|
|
Authorization: getToken(),
|
|
|
- tenantId: getTenantId()
|
|
|
+ tenantId: getTenantId(),
|
|
|
},
|
|
|
url,
|
|
|
params: obj,
|
|
@@ -657,14 +580,14 @@ export default {
|
|
|
// 判断是否报错
|
|
|
if (res.indexOf("code") != -1) {
|
|
|
let json = JSON.parse(res);
|
|
|
- if(json.code == 403) {
|
|
|
- this.$message.error(`登录过期,请重新登录!`)
|
|
|
+ if (json.code == 403) {
|
|
|
+ this.$message.error(`登录过期,请重新登录!`);
|
|
|
setTimeout(() => {
|
|
|
- this.$store.dispatch('user/resetToken').then(() => {
|
|
|
- location.reload()
|
|
|
- })
|
|
|
+ this.$store.dispatch("user/resetToken").then(() => {
|
|
|
+ location.reload();
|
|
|
+ });
|
|
|
}, 1000);
|
|
|
- return
|
|
|
+ return;
|
|
|
}
|
|
|
this.$message.error(json.msg);
|
|
|
} else {
|
|
@@ -825,7 +748,7 @@ export default {
|
|
|
.serverInfo {
|
|
|
line-height: 30px;
|
|
|
span {
|
|
|
- color: #333;
|
|
|
+ color: red;
|
|
|
font-weight: bold;
|
|
|
}
|
|
|
}
|