|
@@ -19,7 +19,7 @@
|
|
|
clearable
|
|
|
placeholder="学生姓名或电话"
|
|
|
@keydown.enter.native="
|
|
|
- e => {
|
|
|
+ (e) => {
|
|
|
e.target.blur();
|
|
|
$refs.saveForm.save();
|
|
|
onSearch();
|
|
@@ -185,11 +185,7 @@
|
|
|
>
|
|
|
新增学员
|
|
|
</el-button>
|
|
|
- <el-button
|
|
|
- @click="onCreateQRCode"
|
|
|
- type="primary"
|
|
|
- style="margin-bottom: 20px"
|
|
|
- >
|
|
|
+ <el-button @click="onCreateQRCode" type="primary" style="margin-bottom: 20px">
|
|
|
学员激活列表
|
|
|
</el-button>
|
|
|
<!-- 列表 -->
|
|
@@ -226,11 +222,7 @@
|
|
|
}
|
|
|
"
|
|
|
class="el-icon-question question"
|
|
|
- style="
|
|
|
- font-size: 18px;
|
|
|
- color: #f56c6c;
|
|
|
- cursor: pointer;
|
|
|
- "
|
|
|
+ style="font-size: 18px; color: #f56c6c; cursor: pointer"
|
|
|
></i> </el-tooltip
|
|
|
></span>
|
|
|
<div>{{ props.row.isActive ? "是" : "否" }}</div>
|
|
@@ -259,9 +251,7 @@
|
|
|
<el-form-item label="VIP老师" v-if="tenantId == 1">
|
|
|
<Tooltip
|
|
|
:content="
|
|
|
- props.row.vipTeacherName
|
|
|
- ? props.row.vipTeacherName
|
|
|
- : '--'
|
|
|
+ props.row.vipTeacherName ? props.row.vipTeacherName : '--'
|
|
|
"
|
|
|
/> </el-form-item
|
|
|
></el-col>
|
|
@@ -279,9 +269,7 @@
|
|
|
<el-form-item label="声部课老师">
|
|
|
<Tooltip
|
|
|
:content="
|
|
|
- props.row.normalTeacherName
|
|
|
- ? props.row.normalTeacherName
|
|
|
- : '--'
|
|
|
+ props.row.normalTeacherName ? props.row.normalTeacherName : '--'
|
|
|
"
|
|
|
/> </el-form-item
|
|
|
></el-col>
|
|
@@ -289,9 +277,7 @@
|
|
|
<el-form-item label="合奏课老师">
|
|
|
<Tooltip
|
|
|
:content="
|
|
|
- props.row.mixTeacherName
|
|
|
- ? props.row.mixTeacherName
|
|
|
- : '--'
|
|
|
+ props.row.mixTeacherName ? props.row.mixTeacherName : '--'
|
|
|
"
|
|
|
/> </el-form-item
|
|
|
></el-col>
|
|
@@ -314,9 +300,7 @@
|
|
|
>
|
|
|
<el-col :span="4">
|
|
|
<el-form-item label="加油包">
|
|
|
- <span>{{
|
|
|
- props.row.comeOnPackage | studentPackage
|
|
|
- }}</span>
|
|
|
+ <span>{{ props.row.comeOnPackage | studentPackage }}</span>
|
|
|
</el-form-item></el-col
|
|
|
>
|
|
|
<el-col :span="4">
|
|
@@ -346,12 +330,7 @@
|
|
|
<copy-text>{{ scope.row.organName }}</copy-text>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column
|
|
|
- align="center"
|
|
|
- prop="userId"
|
|
|
- label="学员信息"
|
|
|
- width="140px"
|
|
|
- >
|
|
|
+ <el-table-column align="center" prop="userId" label="学员信息" width="140px">
|
|
|
<template slot-scope="scope">
|
|
|
{{ scope.row.username }}
|
|
|
({{ scope.row.gender ? "男" : "女" }})<br />
|
|
@@ -361,12 +340,7 @@
|
|
|
<!-- <el-table-column align="center" prop="username" label="学员姓名">
|
|
|
<template slot-scope="scope"> </template>
|
|
|
</el-table-column> -->
|
|
|
- <el-table-column
|
|
|
- align="center"
|
|
|
- prop="realName"
|
|
|
- label="家长信息"
|
|
|
- width="140px"
|
|
|
- >
|
|
|
+ <el-table-column align="center" prop="realName" label="家长信息" width="140px">
|
|
|
<template slot-scope="scope">
|
|
|
{{ scope.row.realName }}
|
|
|
<br />
|
|
@@ -568,47 +542,134 @@
|
|
|
</el-table-column> -->
|
|
|
<el-table-column align="center" width="180px" label="操作">
|
|
|
<template slot-scope="scope">
|
|
|
- <router-link
|
|
|
+ <div
|
|
|
+ @click="
|
|
|
+ () => {
|
|
|
+ activeRow = scope.row;
|
|
|
+ }
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <el-dropdown
|
|
|
+ trigger="click"
|
|
|
+ placement="bottom"
|
|
|
+ :hide-on-click="false"
|
|
|
+ @visible-change="(val) => showDropdown(val, scope.row)"
|
|
|
+ >
|
|
|
+ <span class="el-dropdown-link">
|
|
|
+ 操作<i
|
|
|
+ class="el-icon--right"
|
|
|
+ :class="[
|
|
|
+ showDropdownFlag &&
|
|
|
+ activeRow &&
|
|
|
+ activeRow.userId == scope.row.userId
|
|
|
+ ? 'el-icon-arrow-up'
|
|
|
+ : 'el-icon-arrow-down',
|
|
|
+ ]"
|
|
|
+ ></i>
|
|
|
+ </span>
|
|
|
+ <el-dropdown-menu slot="dropdown" style="width: 180px">
|
|
|
+ <el-dropdown-item
|
|
|
+ style="width: 180px"
|
|
|
+ v-if="$helpers.permission('/studentDetail')"
|
|
|
+ >
|
|
|
+ <router-link
|
|
|
+ style="padding-left: 10px"
|
|
|
+ v-if="$helpers.permission('/studentDetail')"
|
|
|
+ class="el-button--text"
|
|
|
+ :to="{
|
|
|
+ path: `/business/studentDetail`,
|
|
|
+ query: { ...scope.row },
|
|
|
+ }"
|
|
|
+ >查看</router-link
|
|
|
+ >
|
|
|
+ </el-dropdown-item>
|
|
|
+ <el-dropdown-item
|
|
|
+ style="width: 180px"
|
|
|
+ v-if="$helpers.permission('studentManage/studentUpdate/setStudent')"
|
|
|
+ @click.native="setStudent(scope.row)"
|
|
|
+ >
|
|
|
+ <el-button type="text" style="padding-left: 10px"
|
|
|
+ >设置扩展声部</el-button
|
|
|
+ >
|
|
|
+ </el-dropdown-item>
|
|
|
+ <el-dropdown-item
|
|
|
+ style="width: 180px"
|
|
|
+ v-if="$helpers.permission('studentManage/studentUpdate')"
|
|
|
+ @click.native="resetStudent(scope.row)"
|
|
|
+ >
|
|
|
+ <el-button type="text" style="padding-left: 10px">修改</el-button>
|
|
|
+ </el-dropdown-item>
|
|
|
+ <el-dropdown-item
|
|
|
+ style="width: 180px"
|
|
|
+ v-if="$helpers.permission('api-auth/user/updatePassword2')"
|
|
|
+ @click.native="resetPassWrod(scope.row)"
|
|
|
+ >
|
|
|
+ <el-button type="text" style="padding-left: 10px"
|
|
|
+ >修改密码</el-button
|
|
|
+ >
|
|
|
+ </el-dropdown-item>
|
|
|
+ <el-dropdown-item
|
|
|
+ style="width: 180px"
|
|
|
+ v-if="
|
|
|
+ scope.row.isSignedContract &&
|
|
|
+ $helpers.permission('sysUserContracts/getLatest')
|
|
|
+ "
|
|
|
+ @click.native="lookContracts(scope.row)"
|
|
|
+ >
|
|
|
+ <el-button type="text" style="padding-left: 10px"
|
|
|
+ >下载协议</el-button
|
|
|
+ >
|
|
|
+ </el-dropdown-item>
|
|
|
+ <el-dropdown-item
|
|
|
+ style="width: 180px"
|
|
|
+ v-if="$helpers.permission('studentManage/studentUpdate/setStudent')"
|
|
|
+ @click.native="setClound(scope.row)"
|
|
|
+ >
|
|
|
+ <el-button type="text" style="padding-left: 10px">云教练</el-button>
|
|
|
+ </el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </el-dropdown>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- <router-link
|
|
|
v-if="$helpers.permission('/studentDetail')"
|
|
|
class="el-button--text"
|
|
|
:to="{
|
|
|
path: `/business/studentDetail`,
|
|
|
- query: { ...scope.row }
|
|
|
+ query: { ...scope.row },
|
|
|
}"
|
|
|
>查看</router-link
|
|
|
- >
|
|
|
- <el-button
|
|
|
+ > -->
|
|
|
+ <!-- <el-button
|
|
|
type="text"
|
|
|
style="padding-left: 10px"
|
|
|
- v-if="
|
|
|
- $helpers.permission('studentManage/studentUpdate/setStudent')
|
|
|
- "
|
|
|
+ v-if="$helpers.permission('studentManage/studentUpdate/setStudent')"
|
|
|
@click="setStudent(scope.row)"
|
|
|
>设置扩展声部</el-button
|
|
|
- >
|
|
|
- <el-button
|
|
|
+ > -->
|
|
|
+ <!-- <el-button
|
|
|
type="text"
|
|
|
style="padding-left: 10px"
|
|
|
v-if="$helpers.permission('studentManage/studentUpdate')"
|
|
|
@click="resetStudent(scope.row)"
|
|
|
>修改</el-button
|
|
|
- >
|
|
|
+ > -->
|
|
|
<!-- api-auth/user/updatePassword2 -->
|
|
|
- <el-button
|
|
|
+ <!-- <el-button
|
|
|
v-if="$helpers.permission('api-auth/user/updatePassword2')"
|
|
|
@click="resetPassWrod(scope.row)"
|
|
|
type="text"
|
|
|
>修改密码</el-button
|
|
|
- >
|
|
|
- <el-button
|
|
|
+ > -->
|
|
|
+ <!-- <el-button
|
|
|
v-if="
|
|
|
scope.row.isSignedContract &&
|
|
|
- $helpers.permission('sysUserContracts/getLatest')
|
|
|
+ $helpers.permission('sysUserContracts/getLatest')
|
|
|
"
|
|
|
type="text"
|
|
|
@click="lookContracts(scope.row)"
|
|
|
>下载协议</el-button
|
|
|
- >
|
|
|
+ > -->
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -647,14 +708,11 @@
|
|
|
style="margin-bottom: 15px"
|
|
|
></el-alert>
|
|
|
<el-form-item label="学生姓名" prop="name">
|
|
|
- <el-input
|
|
|
- v-model.trim="studentForm.name"
|
|
|
- stlye="width:202px"
|
|
|
- ></el-input>
|
|
|
+ <el-input v-model.trim="studentForm.name" stlye="width:202px"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="学生性别" prop="sex">
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
class="multiple"
|
|
|
filterable
|
|
|
v-model.trim="studentForm.sex"
|
|
@@ -672,14 +730,14 @@
|
|
|
value-format="yyyy-MM-dd"
|
|
|
type="date"
|
|
|
:picker-options="{
|
|
|
- firstDayOfWeek: 1
|
|
|
+ firstDayOfWeek: 1,
|
|
|
}"
|
|
|
placeholder="选择日期"
|
|
|
></el-date-picker>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="学生声部" prop="subjectIdList">
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
v-model.trim="studentForm.subjectIdList"
|
|
|
filterable
|
|
|
clearable
|
|
@@ -702,7 +760,7 @@
|
|
|
|
|
|
<el-form-item label="家长姓名" prop="parseName">
|
|
|
<el-input
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
v-model.trim="studentForm.parseName"
|
|
|
:disabled="!isNew"
|
|
|
></el-input>
|
|
@@ -715,23 +773,20 @@
|
|
|
{
|
|
|
pattern: /^1\d{10}$/,
|
|
|
message: '请输入正确的手机号',
|
|
|
- trigger: 'blur'
|
|
|
- }
|
|
|
+ trigger: 'blur',
|
|
|
+ },
|
|
|
]"
|
|
|
>
|
|
|
<!-- @blur="checkPhone(studentForm.phone)" -->
|
|
|
<el-input
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
:maxlength="11"
|
|
|
v-model.trim="studentForm.phone"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item
|
|
|
- :label="tenantId == 28 ? '城市' : '所属分部'"
|
|
|
- prop="organId"
|
|
|
- >
|
|
|
+ <el-form-item :label="tenantId == 28 ? '城市' : '所属分部'" prop="organId">
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
class="multiple"
|
|
|
v-model.trim="studentForm.organId"
|
|
|
filterable
|
|
@@ -749,7 +804,7 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="school" label="所属学校">
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
v-model.trim="studentForm.school"
|
|
|
filterable
|
|
|
clearable
|
|
@@ -767,7 +822,7 @@
|
|
|
<el-form-item label="学员年级" prop="currentGradeNum">
|
|
|
<el-select
|
|
|
class="multiple"
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
v-model.trim="studentForm.currentGradeNum"
|
|
|
clearable
|
|
|
filterable
|
|
@@ -783,7 +838,7 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="学员班级" prop="currentClass">
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
placeholder="班级"
|
|
|
filterable
|
|
|
clearable
|
|
@@ -861,7 +916,7 @@
|
|
|
></el-alert>
|
|
|
<el-form-item label="是否运营" prop="operatingTag" v-if="tenantId == 1">
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
class="multiple"
|
|
|
v-model.trim="studentForm.operatingTag"
|
|
|
clearable
|
|
@@ -872,7 +927,7 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="是否服务" prop="serviceTag" v-if="tenantId == 1">
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
class="multiple"
|
|
|
v-model.trim="studentForm.serviceTag"
|
|
|
clearable
|
|
@@ -887,15 +942,12 @@
|
|
|
是否是新用户
|
|
|
<el-tooltip placement="top" popper-class="mTooltip">
|
|
|
<div slot="content">未购买VIP课程的学员为新用户</div>
|
|
|
- <i
|
|
|
- class="el-icon-question"
|
|
|
- style="font-size: 18px; color: #f56c6c"
|
|
|
- ></i>
|
|
|
+ <i class="el-icon-question" style="font-size: 18px; color: #f56c6c"></i>
|
|
|
</el-tooltip>
|
|
|
</p>
|
|
|
</template>
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
class="multiple"
|
|
|
v-model.trim="studentForm.isNewUser"
|
|
|
clearable
|
|
@@ -906,7 +958,7 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="关心包" prop="carePackage">
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
class="multiple"
|
|
|
v-model.trim="studentForm.carePackage"
|
|
|
clearable
|
|
@@ -920,7 +972,7 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="加油包" prop="comeOnPackage">
|
|
|
<el-select
|
|
|
- style="width: 202px!important"
|
|
|
+ style="width: 202px !important"
|
|
|
class="multiple"
|
|
|
v-model.trim="studentForm.comeOnPackage"
|
|
|
clearable
|
|
@@ -943,9 +995,7 @@
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button @click="studentVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" v-if="isNew" @click="submitAddStudent"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
+ <el-button type="primary" v-if="isNew" @click="submitAddStudent">确 定</el-button>
|
|
|
<el-button type="primary" v-if="!isNew" @click="resetStudentSubmie"
|
|
|
>确 定</el-button
|
|
|
>
|
|
@@ -970,8 +1020,8 @@
|
|
|
{
|
|
|
pattern: /^1\d{10}$/,
|
|
|
message: '请输入正确的手机号',
|
|
|
- trigger: 'blur'
|
|
|
- }
|
|
|
+ trigger: 'blur',
|
|
|
+ },
|
|
|
]"
|
|
|
>
|
|
|
<copy-text>{{ passwrodForm.phone }}</copy-text>
|
|
@@ -985,8 +1035,8 @@
|
|
|
{
|
|
|
pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/,
|
|
|
message: '密码为6-20位数字和字母组合',
|
|
|
- trigger: 'blur'
|
|
|
- }
|
|
|
+ trigger: 'blur',
|
|
|
+ },
|
|
|
]"
|
|
|
>
|
|
|
<el-input v-model.trim="passwrodForm.password"></el-input>
|
|
@@ -1000,8 +1050,8 @@
|
|
|
{
|
|
|
pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/,
|
|
|
message: '密码为6-20位数字和字母组合',
|
|
|
- trigger: 'blur'
|
|
|
- }
|
|
|
+ trigger: 'blur',
|
|
|
+ },
|
|
|
]"
|
|
|
>
|
|
|
<el-input v-model.trim="passwrodForm.password2"></el-input>
|
|
@@ -1031,11 +1081,7 @@
|
|
|
/>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog
|
|
|
- title="创建云教练缴费"
|
|
|
- width="500px"
|
|
|
- :visible.sync="memberVisible"
|
|
|
- >
|
|
|
+ <el-dialog title="创建云教练缴费" width="500px" :visible.sync="memberVisible">
|
|
|
<createMember
|
|
|
ref="addMember"
|
|
|
v-if="memberVisible"
|
|
@@ -1048,6 +1094,19 @@
|
|
|
<el-button type="primary" @click="submitAddMember">确 定</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+ <el-dialog title="云教练时长调整" width="500px" :visible.sync="cloundDateVisible">
|
|
|
+ <setMemberDate
|
|
|
+ v-if="cloundDateVisible"
|
|
|
+ :row="activatedRow"
|
|
|
+ ref="submitDateReset"
|
|
|
+ @close="memberVisible = false"
|
|
|
+ @submited="getList"
|
|
|
+ ></setMemberDate>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="cloundDateVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitDateReset">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
@@ -1058,7 +1117,7 @@ import {
|
|
|
getStudentInfoByPhone,
|
|
|
registerStudent,
|
|
|
updateStudent,
|
|
|
- getLatest
|
|
|
+ getLatest,
|
|
|
} from "@/api/studentManager";
|
|
|
import { queryByOrganId } from "@/api/systemManage";
|
|
|
import { getGradeList } from "@/views/2021memeberActionManager/api";
|
|
@@ -1067,13 +1126,14 @@ import { vaildStudentUrl } from "@/utils/validate";
|
|
|
import { resetPassword2, getTeacher, getAgreement } from "@/api/buildTeam";
|
|
|
import {
|
|
|
organizationCloudTeacherFeeQueryPage,
|
|
|
- subjectListTree
|
|
|
+ subjectListTree,
|
|
|
} from "@/api/specialSetting";
|
|
|
import axios from "axios";
|
|
|
import qs from "qs";
|
|
|
import { getToken, getTenantId } from "@/utils/auth";
|
|
|
import load from "@/utils/loading";
|
|
|
import createMember from "./modals/createMember";
|
|
|
+import setMemberDate from "./modals/setMemberDate";
|
|
|
import studentExt from "./modals/studentExt";
|
|
|
import Tooltip from "@/components/Tooltip";
|
|
|
export default {
|
|
@@ -1084,7 +1144,8 @@ export default {
|
|
|
createMember,
|
|
|
protocolModel,
|
|
|
studentExt,
|
|
|
- Tooltip
|
|
|
+ Tooltip,
|
|
|
+ setMemberDate,
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
@@ -1107,7 +1168,7 @@ export default {
|
|
|
isNewUser: null,
|
|
|
hasTeacher: null,
|
|
|
isRecord: null,
|
|
|
- hasMember: null
|
|
|
+ hasMember: null,
|
|
|
},
|
|
|
memberVisible: false,
|
|
|
multipleSelection: [],
|
|
@@ -1122,7 +1183,7 @@ export default {
|
|
|
limit: 10, // 限制显示条数
|
|
|
page: 1, // 当前页
|
|
|
total: 0, // 总条数
|
|
|
- page_size: [10, 20, 40, 50] // 选择限制显示条数
|
|
|
+ page_size: [10, 20, 40, 50], // 选择限制显示条数
|
|
|
},
|
|
|
studentForm: {
|
|
|
phone: "",
|
|
@@ -1140,11 +1201,11 @@ export default {
|
|
|
comeOnPackage: 0,
|
|
|
school: null,
|
|
|
currentClass: "",
|
|
|
- currentGradeNum: ""
|
|
|
+ currentGradeNum: "",
|
|
|
},
|
|
|
studentUpdatePackage: {
|
|
|
carePackage: 0,
|
|
|
- comeOnPackage: 0
|
|
|
+ comeOnPackage: 0,
|
|
|
},
|
|
|
studentRules: {
|
|
|
name: [{ required: true, message: "请输入学生姓名" }],
|
|
@@ -1155,7 +1216,7 @@ export default {
|
|
|
serviceTag: [{ required: true, message: "请选择是否参与服务" }],
|
|
|
isNewUser: [{ required: true, message: "请选择是否是新用户" }],
|
|
|
operatingTag: [{ required: true, message: "请选择是否参与运营" }],
|
|
|
- teacherId: [{ required: true, message: "请选择指导老师" }]
|
|
|
+ teacherId: [{ required: true, message: "请选择指导老师" }],
|
|
|
},
|
|
|
isNew: false,
|
|
|
active: null,
|
|
@@ -1167,14 +1228,16 @@ export default {
|
|
|
passwrodForm: {
|
|
|
phone: "",
|
|
|
password: "",
|
|
|
- password2: ""
|
|
|
+ password2: "",
|
|
|
},
|
|
|
activatedRow: null,
|
|
|
protocolVisible: false,
|
|
|
protocolVersions: [],
|
|
|
cooperationList: [],
|
|
|
tenantId: null,
|
|
|
- studentGradeList: []
|
|
|
+ studentGradeList: [],
|
|
|
+ showDropdownFlag: false,
|
|
|
+ cloundDateVisible: false,
|
|
|
};
|
|
|
},
|
|
|
mounted() {
|
|
@@ -1190,9 +1253,7 @@ export default {
|
|
|
if (this.$route.params.organId) {
|
|
|
this.searchForm.organId = [];
|
|
|
|
|
|
- this.searchForm.organId = this.searchForm.organId.push(
|
|
|
- this.$route.params.organId
|
|
|
- );
|
|
|
+ this.searchForm.organId = this.searchForm.organId.push(this.$route.params.organId);
|
|
|
}
|
|
|
this.$store.dispatch("setBranchs");
|
|
|
this.$store.dispatch("setTeachers");
|
|
@@ -1201,6 +1262,14 @@ export default {
|
|
|
this.tenantId = this.$helpers.tenantId;
|
|
|
},
|
|
|
methods: {
|
|
|
+ setClound(row) {
|
|
|
+ this.activatedRow = row;
|
|
|
+ this.cloundDateVisible = true;
|
|
|
+ console.log(row, "setClound");
|
|
|
+ },
|
|
|
+ submitDateReset() {
|
|
|
+ this.$refs.submitDateReset.submit();
|
|
|
+ },
|
|
|
async getAgreement() {
|
|
|
try {
|
|
|
const res = await getAgreement();
|
|
@@ -1215,10 +1284,13 @@ export default {
|
|
|
submitAddMember() {
|
|
|
this.$refs.addMember.submit();
|
|
|
},
|
|
|
+ showDropdown(flag) {
|
|
|
+ this.showDropdownFlag = flag;
|
|
|
+ },
|
|
|
addStudentMember() {
|
|
|
if (this.multipleSelection.length > 0) {
|
|
|
let organIds = [];
|
|
|
- this.multipleSelection.forEach(m => {
|
|
|
+ this.multipleSelection.forEach((m) => {
|
|
|
if (!organIds.includes(m.organId)) {
|
|
|
organIds.push(m.organId);
|
|
|
}
|
|
@@ -1240,15 +1312,14 @@ export default {
|
|
|
onCreateQRCode() {
|
|
|
// 生成报名二维码
|
|
|
this.qrcodeStatus = true;
|
|
|
- this.qrcodeUrl =
|
|
|
- vaildStudentUrl() + `/#/queryStudentPer?tenantId=` + this.tenantId;
|
|
|
+ this.qrcodeUrl = vaildStudentUrl() + `/#/queryStudentPer?tenantId=` + this.tenantId;
|
|
|
},
|
|
|
getList() {
|
|
|
let params = { ...this.searchForm };
|
|
|
params.rows = this.pageInfo.limit;
|
|
|
params.page = this.pageInfo.page;
|
|
|
params.organId = this.searchForm.organId.join(",");
|
|
|
- queryStudentList(params).then(res => {
|
|
|
+ queryStudentList(params).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.tableList = res.data.rows;
|
|
|
this.pageInfo.total = res.data.total;
|
|
@@ -1266,7 +1337,7 @@ export default {
|
|
|
hasPracticeCourse: null,
|
|
|
operatingTag: null,
|
|
|
serviceTag: null,
|
|
|
- teacherId: null
|
|
|
+ teacherId: null,
|
|
|
};
|
|
|
this.getList();
|
|
|
},
|
|
@@ -1280,49 +1351,44 @@ export default {
|
|
|
hasCourse: searchForm.hasCourse == "" ? null : searchForm.hasCourse,
|
|
|
// isMake: searchForm.isMake ? searchForm.isMake : null,
|
|
|
hasPracticeCourse:
|
|
|
- searchForm.hasPracticeCourse + ""
|
|
|
- ? searchForm.hasPracticeCourse
|
|
|
- : null,
|
|
|
- operatingTag:
|
|
|
- searchForm.operatingTag + "" ? searchForm.operatingTag : null,
|
|
|
+ searchForm.hasPracticeCourse + "" ? searchForm.hasPracticeCourse : null,
|
|
|
+ operatingTag: searchForm.operatingTag + "" ? searchForm.operatingTag : null,
|
|
|
serviceTag: searchForm.serviceTag + "" ? searchForm.serviceTag : null,
|
|
|
teacherId: searchForm.teacherId + "" ? searchForm.teacherId : null,
|
|
|
- carePackage:
|
|
|
- searchForm.carePackage + "" ? searchForm.carePackage : null,
|
|
|
- comeOnPackage:
|
|
|
- searchForm.comeOnPackage + "" ? searchForm.comeOnPackage : null,
|
|
|
+ carePackage: searchForm.carePackage + "" ? searchForm.carePackage : null,
|
|
|
+ comeOnPackage: searchForm.comeOnPackage + "" ? searchForm.comeOnPackage : null,
|
|
|
isNewUser: searchForm.isNewUser + "" ? searchForm.isNewUser : null,
|
|
|
hasTeacher: searchForm.hasTeacher + "" ? searchForm.hasTeacher : null,
|
|
|
isRecord: searchForm.isRecord + "" ? searchForm.isRecord : null,
|
|
|
- hasMember: searchForm.hasMember + "" ? searchForm.hasMember : null
|
|
|
+ hasMember: searchForm.hasMember + "" ? searchForm.hasMember : null,
|
|
|
};
|
|
|
const options = {
|
|
|
method: "POST",
|
|
|
headers: {
|
|
|
Authorization: getToken(),
|
|
|
- tenantId: getTenantId()
|
|
|
+ tenantId: getTenantId(),
|
|
|
},
|
|
|
url,
|
|
|
data: qs.stringify(data),
|
|
|
- responseType: "blob"
|
|
|
+ responseType: "blob",
|
|
|
};
|
|
|
|
|
|
this.$confirm("确定导出学员名单?", "提示", {
|
|
|
confirmButtonText: "确定",
|
|
|
cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
+ type: "warning",
|
|
|
})
|
|
|
.then(() => {
|
|
|
load.startLoading();
|
|
|
axios(options)
|
|
|
- .then(res => {
|
|
|
+ .then((res) => {
|
|
|
let blob = new Blob([res.data], {
|
|
|
// type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
|
|
|
- type: "application/vnd.ms-excel;charset=utf-8"
|
|
|
+ type: "application/vnd.ms-excel;charset=utf-8",
|
|
|
// word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
|
|
|
});
|
|
|
let text = new Response(blob).text();
|
|
|
- text.then(res => {
|
|
|
+ text.then((res) => {
|
|
|
// 判断是否报错
|
|
|
if (res.indexOf("code") != -1) {
|
|
|
let json = JSON.parse(res);
|
|
@@ -1341,9 +1407,7 @@ export default {
|
|
|
let link = document.createElement("a");
|
|
|
let nowTime = new Date();
|
|
|
let ymd =
|
|
|
- nowTime.getFullYear() +
|
|
|
- (nowTime.getMonth() + 1) +
|
|
|
- nowTime.getDate();
|
|
|
+ nowTime.getFullYear() + (nowTime.getMonth() + 1) + nowTime.getDate();
|
|
|
let fname = `导出学员名单` + ymd + ".xls"; //下载文件的名字
|
|
|
link.href = objectUrl;
|
|
|
link.setAttribute("download", fname);
|
|
@@ -1354,7 +1418,7 @@ export default {
|
|
|
|
|
|
load.endLoading();
|
|
|
})
|
|
|
- .catch(error => {
|
|
|
+ .catch((error) => {
|
|
|
this.$message.error("导出数据失败,请联系管理员");
|
|
|
load.endLoading();
|
|
|
});
|
|
@@ -1365,7 +1429,7 @@ export default {
|
|
|
var regu = /^1\d{10}$/;
|
|
|
var re = new RegExp(regu);
|
|
|
if (re.test(val)) {
|
|
|
- getStudentInfoByPhone({ mobile: this.studentForm.phone }).then(res => {
|
|
|
+ getStudentInfoByPhone({ mobile: this.studentForm.phone }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
if (res.data) {
|
|
|
this.studentForm = {
|
|
@@ -1374,7 +1438,7 @@ export default {
|
|
|
parseName: res.data.parentsName,
|
|
|
// sound: parseInt(res.data.subjectIdList),
|
|
|
phone: val,
|
|
|
- date: res.data.birthdate
|
|
|
+ date: res.data.birthdate,
|
|
|
};
|
|
|
}
|
|
|
}
|
|
@@ -1384,7 +1448,7 @@ export default {
|
|
|
submitAddStudent() {
|
|
|
const studentForm = this.studentForm;
|
|
|
// 效验 然后组数据提交
|
|
|
- this.$refs["studentForm"].validate(item => {
|
|
|
+ this.$refs["studentForm"].validate((item) => {
|
|
|
if (item) {
|
|
|
let obj = {
|
|
|
phone: studentForm.phone,
|
|
@@ -1403,9 +1467,9 @@ export default {
|
|
|
cooperationOrganId: studentForm.school,
|
|
|
currentClass: studentForm.currentClass,
|
|
|
currentGradeNum: studentForm.currentGradeNum,
|
|
|
- courseTeacher: studentForm.courseTeacher
|
|
|
+ courseTeacher: studentForm.courseTeacher,
|
|
|
};
|
|
|
- registerStudent(obj).then(res => {
|
|
|
+ registerStudent(obj).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.$message.success("添加成功");
|
|
|
this.studentVisible = false;
|
|
@@ -1418,7 +1482,7 @@ export default {
|
|
|
// 修改学生信息
|
|
|
resetStudentSubmie() {
|
|
|
const studentForm = this.studentForm;
|
|
|
- this.$refs["studentForm"].validate(item => {
|
|
|
+ this.$refs["studentForm"].validate((item) => {
|
|
|
if (item) {
|
|
|
let obj = {
|
|
|
phone: studentForm.phone,
|
|
@@ -1438,9 +1502,9 @@ export default {
|
|
|
cooperationOrganId: studentForm.school,
|
|
|
currentClass: studentForm.currentClass,
|
|
|
currentGradeNum: studentForm.currentGradeNum,
|
|
|
- courseTeacher: studentForm.courseTeacher
|
|
|
+ courseTeacher: studentForm.courseTeacher,
|
|
|
};
|
|
|
- updateStudent(obj).then(res => {
|
|
|
+ updateStudent(obj).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.$message.success("修改成功");
|
|
|
this.studentVisible = false;
|
|
@@ -1450,12 +1514,13 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
+
|
|
|
async getSubjectList() {
|
|
|
try {
|
|
|
await subjectListTree({
|
|
|
delFlag: "NO",
|
|
|
- rows: 9999
|
|
|
- }).then(res => {
|
|
|
+ rows: 9999,
|
|
|
+ }).then((res) => {
|
|
|
let result = res.data;
|
|
|
if (res.code == 200) {
|
|
|
let tempArray = [];
|
|
@@ -1463,17 +1528,17 @@ export default {
|
|
|
result.rows.forEach((item, index) => {
|
|
|
let subject = [];
|
|
|
let nowSubject = item.subjects || [];
|
|
|
- nowSubject.forEach(s => {
|
|
|
+ nowSubject.forEach((s) => {
|
|
|
subject.push({
|
|
|
value: s.id,
|
|
|
- label: s.name
|
|
|
+ label: s.name,
|
|
|
});
|
|
|
});
|
|
|
|
|
|
tempArray[index] = {
|
|
|
label: item.name,
|
|
|
value: item.id,
|
|
|
- options: subject
|
|
|
+ options: subject,
|
|
|
};
|
|
|
});
|
|
|
this.subjectList = tempArray;
|
|
@@ -1528,11 +1593,11 @@ export default {
|
|
|
extSubjectIds: row.extSubjectIds || null,
|
|
|
currentClass: row.currentClass || null,
|
|
|
currentGradeNum: row.currentGradeNum || null,
|
|
|
- courseTeacher: row.courseTeacher || null
|
|
|
+ courseTeacher: row.courseTeacher || null,
|
|
|
};
|
|
|
this.studentUpdatePackage = {
|
|
|
carePackage: row.carePackage,
|
|
|
- comeOnPackage: row.comeOnPackage
|
|
|
+ comeOnPackage: row.comeOnPackage,
|
|
|
};
|
|
|
});
|
|
|
},
|
|
@@ -1555,7 +1620,7 @@ export default {
|
|
|
carePackage: row.carePackage,
|
|
|
comeOnPackage: row.comeOnPackage,
|
|
|
cooperationOrganId: row.cooperationOrganId || null,
|
|
|
- extSubjectIds: row.extSubjectIds
|
|
|
+ extSubjectIds: row.extSubjectIds,
|
|
|
};
|
|
|
this.extVisible = true;
|
|
|
},
|
|
@@ -1572,7 +1637,7 @@ export default {
|
|
|
this.passwrodForm = {
|
|
|
phone: "",
|
|
|
password: "",
|
|
|
- password2: ""
|
|
|
+ password2: "",
|
|
|
};
|
|
|
this.$refs["passwrodForm"].resetFields();
|
|
|
this.passwrodVisiable = false;
|
|
@@ -1582,14 +1647,14 @@ export default {
|
|
|
this.$message.error("两次密码必须相同");
|
|
|
return;
|
|
|
}
|
|
|
- this.$refs["passwrodForm"].validate(res => {
|
|
|
+ this.$refs["passwrodForm"].validate((res) => {
|
|
|
if (res) {
|
|
|
// 发请求
|
|
|
resetPassword2({
|
|
|
mobile: this.passwrodForm.phone,
|
|
|
newPassword: this.passwrodForm.password,
|
|
|
- userId: this.activatedRow.userId
|
|
|
- }).then(res => {
|
|
|
+ userId: this.activatedRow.userId,
|
|
|
+ }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
// 修改成功
|
|
|
this.$message.success("修改成功");
|
|
@@ -1603,7 +1668,7 @@ export default {
|
|
|
this.studentForm.teacherId = null;
|
|
|
this.studentForm.school = null;
|
|
|
if (val) {
|
|
|
- await getTeacher({ organId: val }).then(res => {
|
|
|
+ await getTeacher({ organId: val }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.maskTeacherList = res.data;
|
|
|
if (this.maskTeacherList <= 0) {
|
|
@@ -1613,7 +1678,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
- queryByOrganId({ organId: val }).then(res => {
|
|
|
+ queryByOrganId({ organId: val }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.cooperationList = res.data;
|
|
|
}
|
|
@@ -1624,7 +1689,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
async lookContracts(row) {
|
|
|
- await getLatest({ userId: row.userId }).then(res => {
|
|
|
+ await getLatest({ userId: row.userId }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
if (res.data) {
|
|
|
this.protocolVersions = res.data;
|
|
@@ -1637,8 +1702,8 @@ export default {
|
|
|
let dayjs = this.$helpers.dayjs;
|
|
|
let nowDate = new Date().getTime();
|
|
|
return nowDate - dayjs(dateStr).valueOf() < 0;
|
|
|
- }
|
|
|
- }
|
|
|
+ },
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
@@ -1691,4 +1756,8 @@ export default {
|
|
|
text-overflow: ellipsis;
|
|
|
white-space: nowrap;
|
|
|
}
|
|
|
+.el-dropdown-link {
|
|
|
+ color: #00a79d;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
</style>
|