|
@@ -158,6 +158,17 @@
|
|
<el-option label="否" value="0"></el-option>
|
|
<el-option label="否" value="0"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+ <el-form-item prop="memberRankId">
|
|
|
|
+ <el-cascader
|
|
|
|
+ v-model.trim="searchForm.memberRankId"
|
|
|
|
+ :options="memberRankList"
|
|
|
|
+ :props="{ value: 'id', label: 'name', }"
|
|
|
|
+ :show-all-levels="false"
|
|
|
|
+ collapse-tags
|
|
|
|
+ clearable
|
|
|
|
+ placeholder="请选择学练宝版本"
|
|
|
|
+ ></el-cascader>
|
|
|
|
+ </el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
<el-button native-type="submit" type="danger">搜索</el-button>
|
|
<el-button native-type="submit" type="danger">搜索</el-button>
|
|
<el-button native-type="reset" type="primary">重置</el-button>
|
|
<el-button native-type="reset" type="primary">重置</el-button>
|
|
@@ -354,9 +365,6 @@
|
|
<copy-text>{{ scope.row.userId }}</copy-text>
|
|
<copy-text>{{ scope.row.userId }}</copy-text>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <!-- <el-table-column align="center" prop="username" label="学员姓名">
|
|
|
|
- <template slot-scope="scope"> </template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
<el-table-column
|
|
<el-table-column
|
|
align="center"
|
|
align="center"
|
|
prop="realName"
|
|
prop="realName"
|
|
@@ -379,61 +387,11 @@
|
|
prop="courseTeacherName"
|
|
prop="courseTeacherName"
|
|
label="排课老师"
|
|
label="排课老师"
|
|
></el-table-column>
|
|
></el-table-column>
|
|
-
|
|
|
|
- <!-- <el-table-column align="center" prop="teacherName" label="指导老师">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <copy-text>{{ scope.row.teacherName }}</copy-text>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
- <!-- <el-table-column align="center" label="性别">
|
|
|
|
- <template slot-scope="scope"></template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
-
|
|
|
|
- <!-- <el-table-column
|
|
|
|
- align="center"
|
|
|
|
- prop="leaveNum"
|
|
|
|
- label="本月请假次数"
|
|
|
|
- ></el-table-column> -->
|
|
|
|
- <!-- <el-table-column align="center">
|
|
|
|
- <template slot="header">
|
|
|
|
- <p style="position: relative">
|
|
|
|
- 是否激活
|
|
|
|
- <el-tooltip placement="top" popper-class="mTooltip">
|
|
|
|
- <div slot="content">学员是否设置密码</div>
|
|
|
|
- <i
|
|
|
|
- class="el-icon-question"
|
|
|
|
- style="font-size: 18px; color: #f56c6c"
|
|
|
|
- ></i>
|
|
|
|
- </el-tooltip>
|
|
|
|
- </p>
|
|
|
|
- </template>
|
|
|
|
- <template slot-scope="scope">{{
|
|
|
|
- scope.row.isActive ? "是" : "否"
|
|
|
|
- }}</template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
<el-table-column align="center" label="未上课时">
|
|
<el-table-column align="center" label="未上课时">
|
|
<template slot-scope="scope">{{
|
|
<template slot-scope="scope">{{
|
|
scope.row.hasCourse ? "有" : "无"
|
|
scope.row.hasCourse ? "有" : "无"
|
|
}}</template>
|
|
}}</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <!-- <el-table-column align="center" label="预约网管课">
|
|
|
|
- <template slot-scope="scope">{{ scope.row.isMake ? '是' : '否' }}</template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
- <!-- <el-table-column align="center" label="网管课剩余课时">
|
|
|
|
- <template slot-scope="scope">{{
|
|
|
|
- scope.row.noStartPracticeCourseNum
|
|
|
|
- }}</template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
- <!-- <el-table-column align="center" label="vip课剩余课时">
|
|
|
|
- <template slot-scope="scope">{{
|
|
|
|
- scope.row.noStartVipCourseNum
|
|
|
|
- }}</template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
- <!-- <el-table-column align="center" label="是否运营">
|
|
|
|
- <template slot-scope="scope">{{
|
|
|
|
- scope.row.operatingTag ? "是" : "否"
|
|
|
|
- }}</template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
<el-table-column align="center" label="是否服务" v-if="tenantId == 1">
|
|
<el-table-column align="center" label="是否服务" v-if="tenantId == 1">
|
|
<template slot-scope="scope">{{
|
|
<template slot-scope="scope">{{
|
|
scope.row.serviceTag ? "是" : "否"
|
|
scope.row.serviceTag ? "是" : "否"
|
|
@@ -448,74 +406,21 @@
|
|
align="center"
|
|
align="center"
|
|
width="120px"
|
|
width="120px"
|
|
prop="parentsPhone"
|
|
prop="parentsPhone"
|
|
- label="会员截止日期(剩余天数)"
|
|
|
|
|
|
+ label="学练宝截止日期(剩余天数)"
|
|
>
|
|
>
|
|
- <template slot-scope="scope">
|
|
|
|
- <div v-if="scope.row.membershipEndTime">
|
|
|
|
- <div v-if="scope.row.membershipDay >= 0">
|
|
|
|
- {{ scope.row.membershipEndTime | dayjsFormat }}
|
|
|
|
- <p class="red">剩余{{ scope.row.membershipDay }}天</p>
|
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <div v-if="scope.row.cloudTeacherOrderList && scope.row.cloudTeacherOrderList.length > 0">
|
|
|
|
+ <el-button
|
|
|
|
+ type="text"
|
|
|
|
+ @click="() => {
|
|
|
|
+ memberRecordVisible = true;
|
|
|
|
+ tableMemberList = scope.row.cloudTeacherOrderList
|
|
|
|
+ }"
|
|
|
|
+ >查看</el-button>
|
|
</div>
|
|
</div>
|
|
- <!-- 已过期 -->
|
|
|
|
- <div v-else>
|
|
|
|
- <!-- 有未生效 -->
|
|
|
|
- <div v-if="scope.row.hasNoStartCloudTeacher">
|
|
|
|
- <p>会员未生效</p>
|
|
|
|
- </div>
|
|
|
|
- <!-- 无未生效 -->
|
|
|
|
- <div v-else>
|
|
|
|
- {{ scope.row.membershipEndTime | dayjsFormat }}
|
|
|
|
- <p class="red" v-if="scope.row.membershipDay < 0">
|
|
|
|
- 已过期{{ Math.abs(scope.row.membershipDay) }}天
|
|
|
|
- </p>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <!--
|
|
|
|
- <div></div>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- <p v-if="scope.row.hasNoStartCloudTeacher">
|
|
|
|
- {{ scope.row.membershipEndTime | dayjsFormat }}
|
|
|
|
- </p> -->
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- <div v-else class="red">
|
|
|
|
- <div v-if="scope.row.hasNoStartCloudTeacher">会员未生效</div>
|
|
|
|
- <div v-else>未购买会员</div>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
|
|
+ <div v-else class="red"> 未购买会员 </div>
|
|
|
|
+ </template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <!-- <el-table-column
|
|
|
|
- label="会员试用结束日期(剩余天数)"
|
|
|
|
- align="center"
|
|
|
|
- width="120px;"
|
|
|
|
- >
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <div>
|
|
|
|
- <p>
|
|
|
|
- {{ scope.row.experienceMembershipEndTime | dayjsFormat }}
|
|
|
|
- </p>
|
|
|
|
- <p
|
|
|
|
- class="red"
|
|
|
|
- v-if="
|
|
|
|
- scope.row.experienceMembershipEndTime &&
|
|
|
|
- scope.row.experienceMembershipDay >= 0
|
|
|
|
- "
|
|
|
|
- >
|
|
|
|
- 剩余{{ scope.row.experienceMembershipDay }}天
|
|
|
|
- </p>
|
|
|
|
- <p
|
|
|
|
- class="red"
|
|
|
|
- v-if="
|
|
|
|
- scope.row.membershipEndTime &&
|
|
|
|
- scope.row.experienceMembershipDay < 0
|
|
|
|
- "
|
|
|
|
- >
|
|
|
|
- 已过期{{ Math.abs(scope.row.experienceMembershipDay) }}天
|
|
|
|
- </p>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
<el-table-column align="center" label="是否是新用户">
|
|
<el-table-column align="center" label="是否是新用户">
|
|
<template slot="header">
|
|
<template slot="header">
|
|
<p style="position: relative">
|
|
<p style="position: relative">
|
|
@@ -534,34 +439,6 @@
|
|
{{ scope.row.isNewUser ? "是" : "否" }}
|
|
{{ scope.row.isNewUser ? "是" : "否" }}
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <!-- <el-table-column
|
|
|
|
- align="center"
|
|
|
|
- prop="courseBalance"
|
|
|
|
- label="课程余额(元)"
|
|
|
|
- >
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <div>
|
|
|
|
- {{ scope.row.courseBalance | moneyFormat }}
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
- <!-- <el-table-column align="center" prop="balance" label="账户余额(元)">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <div>
|
|
|
|
- {{ scope.row.balance | moneyFormat }}
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
- <!-- <el-table-column align="center" prop="carePackage" label="关心包">
|
|
|
|
- <template slot-scope="scope">{{
|
|
|
|
- scope.row.carePackage | studentPackage
|
|
|
|
- }}</template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column align="center" prop="comeOnPackage" label="加油包">
|
|
|
|
- <template slot-scope="scope">{{
|
|
|
|
- scope.row.comeOnPackage | studentPackage
|
|
|
|
- }}</template>
|
|
|
|
- </el-table-column> -->
|
|
|
|
<el-table-column align="center" width="180px" label="操作">
|
|
<el-table-column align="center" width="180px" label="操作">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div
|
|
<div
|
|
@@ -664,46 +541,6 @@
|
|
</el-dropdown-menu>
|
|
</el-dropdown-menu>
|
|
</el-dropdown>
|
|
</el-dropdown>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
- <!-- <router-link
|
|
|
|
- v-if="$helpers.permission('/studentDetail')"
|
|
|
|
- class="el-button--text"
|
|
|
|
- :to="{
|
|
|
|
- path: `/business/studentDetail`,
|
|
|
|
- query: { ...scope.row },
|
|
|
|
- }"
|
|
|
|
- >查看</router-link
|
|
|
|
- > -->
|
|
|
|
- <!-- <el-button
|
|
|
|
- type="text"
|
|
|
|
- style="padding-left: 10px"
|
|
|
|
- v-if="$helpers.permission('studentManage/studentUpdate/setStudent')"
|
|
|
|
- @click="setStudent(scope.row)"
|
|
|
|
- >设置扩展声部</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
|
|
|
|
- v-if="$helpers.permission('api-auth/user/updatePassword2')"
|
|
|
|
- @click="resetPassWrod(scope.row)"
|
|
|
|
- type="text"
|
|
|
|
- >修改密码</el-button
|
|
|
|
- > -->
|
|
|
|
- <!-- <el-button
|
|
|
|
- v-if="
|
|
|
|
- scope.row.isSignedContract &&
|
|
|
|
- $helpers.permission('sysUserContracts/getLatest')
|
|
|
|
- "
|
|
|
|
- type="text"
|
|
|
|
- @click="lookContracts(scope.row)"
|
|
|
|
- >下载协议</el-button
|
|
|
|
- > -->
|
|
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -1160,6 +997,27 @@
|
|
<el-button type="primary" @click="submitDateReset">确 定</el-button>
|
|
<el-button type="primary" @click="submitDateReset">确 定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
+
|
|
|
|
+ <el-dialog
|
|
|
|
+ title="学练宝详情"
|
|
|
|
+ :visible.sync="memberRecordVisible"
|
|
|
|
+ width="600px"
|
|
|
|
+ >
|
|
|
|
+ <el-table :data="tableMemberList" :header-cell-style="{ background: '#EDEEF0', color: '#444' }">
|
|
|
|
+ <el-table-column align="center" prop="memberRankName" label="学练宝版本">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ {{ scope.row.memberRankName }}
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column align="center" prop="endTime" label="截止时间">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ {{ scope.row.endTime | dayjsFormat }}
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column align="center" prop="remainingDays" label="剩余天数">
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script>
|
|
<script>
|
|
@@ -1189,6 +1047,7 @@ import createMember from "./modals/createMember";
|
|
import setMemberDate from "./modals/setMemberDate";
|
|
import setMemberDate from "./modals/setMemberDate";
|
|
import studentExt from "./modals/studentExt";
|
|
import studentExt from "./modals/studentExt";
|
|
import Tooltip from "@/components/Tooltip";
|
|
import Tooltip from "@/components/Tooltip";
|
|
|
|
+import { getmemberRankList } from '@/views/categroyManager/productSystem/api'
|
|
export default {
|
|
export default {
|
|
name: "studentManagerList",
|
|
name: "studentManagerList",
|
|
components: {
|
|
components: {
|
|
@@ -1202,11 +1061,15 @@ export default {
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+ memberRecordVisible: false,
|
|
|
|
+ tableMemberList: [],
|
|
extVisible: false,
|
|
extVisible: false,
|
|
extDetail: {},
|
|
extDetail: {},
|
|
studentVisible: false,
|
|
studentVisible: false,
|
|
|
|
+ memberRankList: [],
|
|
searchForm: {
|
|
searchForm: {
|
|
organId: [],
|
|
organId: [],
|
|
|
|
+ memberRankId: [],
|
|
search: null,
|
|
search: null,
|
|
studentName: null,
|
|
studentName: null,
|
|
isActive: null,
|
|
isActive: null,
|
|
@@ -1294,6 +1157,7 @@ export default {
|
|
};
|
|
};
|
|
},
|
|
},
|
|
mounted() {
|
|
mounted() {
|
|
|
|
+ this.getMemberList()
|
|
if (this.$route.params.search) {
|
|
if (this.$route.params.search) {
|
|
this.searchForm.search = this.$route.params.search;
|
|
this.searchForm.search = this.$route.params.search;
|
|
}
|
|
}
|
|
@@ -1317,6 +1181,14 @@ export default {
|
|
this.tenantId = this.$helpers.tenantId;
|
|
this.tenantId = this.$helpers.tenantId;
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ async getMemberList() {
|
|
|
|
+ try {
|
|
|
|
+ const { data } = await getmemberRankList()
|
|
|
|
+ this.memberRankList = data || [];
|
|
|
|
+ } catch (e) {
|
|
|
|
+ console.log(e);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
setClound(row) {
|
|
setClound(row) {
|
|
this.activatedRow = row;
|
|
this.activatedRow = row;
|
|
this.cloundDateVisible = true;
|
|
this.cloundDateVisible = true;
|
|
@@ -1371,7 +1243,11 @@ export default {
|
|
vaildStudentUrl() + `/#/queryStudentPer?tenantId=` + this.tenantId;
|
|
vaildStudentUrl() + `/#/queryStudentPer?tenantId=` + this.tenantId;
|
|
},
|
|
},
|
|
getList() {
|
|
getList() {
|
|
- let params = { ...this.searchForm };
|
|
|
|
|
|
+ let rankId = null
|
|
|
|
+ if(this.searchForm.memberRankId && this.searchForm.memberRankId.length > 0) {
|
|
|
|
+ rankId = this.searchForm.memberRankId[this.searchForm.memberRankId.length - 1]
|
|
|
|
+ }
|
|
|
|
+ let params = { ...this.searchForm, memberRankId: rankId };
|
|
params.rows = this.pageInfo.limit;
|
|
params.rows = this.pageInfo.limit;
|
|
params.page = this.pageInfo.page;
|
|
params.page = this.pageInfo.page;
|
|
params.organId = this.searchForm.organId.join(",");
|
|
params.organId = this.searchForm.organId.join(",");
|
|
@@ -1400,6 +1276,10 @@ export default {
|
|
downLoadStudent() {
|
|
downLoadStudent() {
|
|
let url = "/api-web/export/studentHasCourse";
|
|
let url = "/api-web/export/studentHasCourse";
|
|
let searchForm = this.searchForm;
|
|
let searchForm = this.searchForm;
|
|
|
|
+ let rankId = null
|
|
|
|
+ if(searchForm.memberRankId && searchForm.memberRankId.length > 0) {
|
|
|
|
+ rankId = searchForm.memberRankId[searchForm.memberRankId.length - 1]
|
|
|
|
+ }
|
|
let data = {
|
|
let data = {
|
|
organId: searchForm.organId.join(","),
|
|
organId: searchForm.organId.join(","),
|
|
search: searchForm.search + "" ? searchForm.search : null,
|
|
search: searchForm.search + "" ? searchForm.search : null,
|
|
@@ -1421,7 +1301,8 @@ export default {
|
|
isNewUser: searchForm.isNewUser + "" ? searchForm.isNewUser : null,
|
|
isNewUser: searchForm.isNewUser + "" ? searchForm.isNewUser : null,
|
|
hasTeacher: searchForm.hasTeacher + "" ? searchForm.hasTeacher : null,
|
|
hasTeacher: searchForm.hasTeacher + "" ? searchForm.hasTeacher : null,
|
|
isRecord: searchForm.isRecord + "" ? searchForm.isRecord : null,
|
|
isRecord: searchForm.isRecord + "" ? searchForm.isRecord : null,
|
|
- hasMember: searchForm.hasMember + "" ? searchForm.hasMember : null
|
|
|
|
|
|
+ hasMember: searchForm.hasMember + "" ? searchForm.hasMember : null,
|
|
|
|
+ memberRankId: rankId
|
|
};
|
|
};
|
|
const options = {
|
|
const options = {
|
|
method: "POST",
|
|
method: "POST",
|