lex-xin 9 tháng trước cách đây
mục cha
commit
7991188e3c

+ 28 - 22
src/views/categroyManager/modals/payInfo.vue

@@ -235,40 +235,37 @@
       <div v-else>
         <el-row>
           <el-form-item
-            label="会员名称"
+            label="学练宝版本"
             prop="memberRankId"
             :rules="[
-              { required: true, message: '请选择会员名称', trigger: 'change' }
+              { required: true, message: '请选择学练宝版本', trigger: 'change' }
             ]"
           >
-            <el-select
-              style="width: 400px !important"
+            <el-cascader
               v-model.trim="payForm.memberRankId"
-              placeholder="请选择会员名称"
+              style="width: 400px !important"
+              :options="remberList"
+              :props="{ value: 'id', label: 'name',  }"
+              :show-all-levels="false"
+              collapse-tags
               clearable
               :disabled="isDisabled"
-            >
-              <el-option
-                v-for="(item, index) in remberList"
-                :key="index"
-                :label="item.name"
-                :value="item.id"
-              ></el-option>
-            </el-select>
+              placeholder="请选择学练宝版本"
+            ></el-cascader>
           </el-form-item>
         </el-row>
         <el-row>
           <el-form-item
-            label="会员周期"
+            label="周期"
             prop="periodEnum"
             :rules="[
-              { required: true, message: '请选择会员周期', trigger: 'change' }
+              { required: true, message: '请选择周期', trigger: 'change' }
             ]"
           >
             <el-select
               style="width: 400px !important"
               v-model.trim="payForm.periodEnum"
-              placeholder="请选择会员周期"
+              placeholder="请选择周期"
               clearable
               :disabled="isDisabled"
             >
@@ -555,7 +552,7 @@
             }
           ]"
         >
-          <el-select
+          <!-- <el-select
             style="width: 400px !important"
             v-model.trim="payForm.giveMemberRankId"
             placeholder="请选择会员名称"
@@ -569,7 +566,18 @@
               :value="item.id"
               :disabled="item.id == 2"
             ></el-option>
-          </el-select>
+          </el-select> -->
+          <el-cascader
+            :disabled="isDisabled"
+              v-model.trim="payForm.giveMemberRankId"
+              style="width: 400px !important"
+              :options="remberList"
+              :props="{ value: 'id', label: 'name',  }"
+              :show-all-levels="false"
+              collapse-tags
+              clearable
+              placeholder="请选择学练宝版本"
+            ></el-cascader>
         </el-form-item>
       </el-row>
       <el-row
@@ -603,20 +611,19 @@
 <script>
 import { vipResetTypeList, memberEnumList } from "@/utils/searchArray";
 import { getOnlineMun } from "@/api/vipSeting";
-import { getAllMemberFindByOrganIds } from "@/views/categroyManager/productSystem/api";
 const MIN_NUMBER = 1;
 const MAX_NUMBER = 999;
 export default {
   props: [
     "organ",
     "payForm",
+    "remberList",
     "activeType",
     "isDisabled",
     "activityChannel"
   ],
   data() {
     return {
-      remberList: [],
       coureTimerList: [],
       vipResetTypeList,
       memberEnumList,
@@ -626,8 +633,7 @@ export default {
     };
   },
   async mounted() {
-    const memberInfo = await getAllMemberFindByOrganIds(this.organ)
-    this.remberList = memberInfo.data || []
+    
 
     const res1 = await getOnlineMun();
 

+ 56 - 22
src/views/categroyManager/vipNewActive.vue

@@ -30,6 +30,7 @@
         <payInfo
           :payForm="payForm"
           ref="payInfo"
+          :remberList="remberList"
           :organ="baseForm.organ"
           :activeType="baseForm.activityType"
           :activityChannel="baseForm.activityChannel"
@@ -101,6 +102,7 @@ import {
   resetVipActive,
   getVipGroupActivity
 } from "@/api/vipSeting";
+import { getAllMemberFindByOrganIds } from "@/views/categroyManager/productSystem/api";
 import cleanDeep from "clean-deep";
 const payBaseForm = {
   courseType: "",
@@ -161,6 +163,7 @@ export default {
     return {
       status: "DRAFT",
       active: 1,
+      remberList: [],
       baseForm: {
         name: "",
         description: "",
@@ -188,8 +191,14 @@ export default {
 
     if (this.$route.query.id) {
       this.baseForm.id = this.$route.query.id;
-      const rusult = await getVipGroupActivity({ id: this.$route.query.id });
-      this.formatDetail(rusult.data);
+      const result = await getVipGroupActivity({ id: this.$route.query.id });
+      const organ = result.data.organId.split(",").map(organ => {
+        return Number(organ);
+      })
+      if(organ && organ.length > 0) {
+        await this.getMemberList(organ)
+      }
+      this.formatDetail(result.data);
       this.$router;
     } else {
       this.payInfo = { ...payBaseForm };
@@ -209,12 +218,13 @@ export default {
       });
       // }
     },
-    next() {
+    async next() {
       let flags = true;
       if (this.active == 1) {
-        this.$refs.baseForm.$refs.vipform.validate(flag => {
+        this.$refs.baseForm.$refs.vipform.validate((flag) => {
           flags = flag;
         });
+        await this.getMemberList(this.baseForm.organ)
         // 验证表单1
       } else if (this.active == 2) {
         // 验证表单2
@@ -356,9 +366,25 @@ export default {
       ) {
         this.payForm.discount = 100;
       }
+
+      let rankId = null;
+      const memberRankId = this.payForm.memberRankId
+      if(memberRankId && memberRankId.length > 0) {
+        rankId = memberRankId[memberRankId.length - 1]
+      }
+
+
+      let giveRankId = null;
+      const giveMemberRankId = this.payForm.giveMemberRankId
+      if(giveMemberRankId && giveMemberRankId.length > 0) {
+        giveRankId = giveMemberRankId[giveMemberRankId.length - 1]
+      }
+
       let obj = {
         ...this.baseForm,
         ...this.payForm,
+        memberRankId: rankId,
+        giveMemberRankId: giveRankId,
         organId,
         coursesStartTime,
         coursesEndTime,
@@ -421,6 +447,30 @@ export default {
         });
       }
     },
+    formatParentId(id, list, ids = []) {
+      for (const item of list) {
+        if (item.children) {
+          const cIds = this.formatParentId(
+            id,
+            item.children,
+            [...ids, item.id]
+          );
+          if (cIds.includes(id)) {
+            return cIds;
+          }
+        }
+        if (item.id === id) {
+          return [...ids, id];
+        }
+      }
+      return ids;
+    },
+    async getMemberList(organ) {
+      try {
+        const memberInfo = await getAllMemberFindByOrganIds(organ)
+        this.remberList = memberInfo.data || []
+      } catch {}
+    },
     formatDetail(data) {
       this.status = data.status;
       for (let item in data) {
@@ -458,22 +508,6 @@ export default {
         id: this.$route.query.id,
         activityChannel: data.activityChannel
       });
-      // this.baseForm = {
-      //   name: data.name,
-      //   description: data.description,
-      //   activeTime,
-      //   courseTime,
-      //   marketPrice: data.marketPrice,
-      //   organ: data.organId.split(",").map((organ) => {
-      //     return Number(organ);
-      //   }),
-      //   activityType: data.activityType,
-      //   applyToStudentType,
-      //   studentMaxUsedTimes,
-      //   isPayToBalance: Number(data.payToBalance),
-      //   id: this.$route.query.id,
-      // };
-      // this.$set()
       //格式化payForm
       // console.log(data.vipGroupCategoryIdList
       //     .split(",")
@@ -493,7 +527,7 @@ export default {
         fixedCourseNumFlag: data.fixedCourseNumFlag,
         minCourseNum: data.minCourseNum,
         maxCourseNum: data.maxCourseNum,
-        memberRankId: data.memberRankId,
+        memberRankId: this.formatParentId(data.memberRankId, this.remberList),
         periodEnum: data.periodEnum,
         discount: data.discount,
         fullMinusCourseTimes: data.fullMinusCourseTimes,
@@ -503,7 +537,7 @@ export default {
           data.giveCategoryId * 1 ? data.giveCategoryId * 1 : null,
         giveSingleCourseTime: data.giveSingleCourseTime,
         giveCourseNum: data.giveCourseNum,
-        giveMemberRankId: data.giveMemberRankId,
+        giveMemberRankId: this.formatParentId(data.giveMemberRankId, this.remberList),
         givePeriod: data.givePeriodEnum,
         giveMemberTime: data.giveMemberTime ? data.giveMemberTime : null,
         giveAllowOnlineToOffline: data.giveAllowOnlineToOffline + "",

+ 58 - 12
src/views/studentManager/modals/createMember.vue

@@ -1,16 +1,30 @@
 <template>
   <div>
     <!-- <p class="title">已选择{{ multipleSelection.length }}名学员</p> -->
-    <el-form :model="memberForm" label-width="100px" ref="memberForm">
+    <el-form :model="memberForm" label-width="110px" ref="memberForm">
+      <el-form-item label="学练宝版本" prop="memberRankId" :rules="[
+          { required: true, message: '请选择学练宝版本', trigger: 'blur' }
+        ]">
+          <el-cascader
+            v-model.trim="memberForm.memberRankId"
+            style="width: 100% !important"  
+            :options="memberRankList"
+            :props="{ value: 'id', label: 'name',  }"
+            :show-all-levels="false"
+            collapse-tags
+            clearable
+            placeholder="请选择学练宝版本"
+          ></el-cascader>
+        </el-form-item>
       <el-form-item
-        label="学练宝单位"
+        label="学练宝周期"
         prop="period"
         :rules="[
-          { required: true, message: '请选择学练宝单位', trigger: 'blur' }
+          { required: true, message: '请选择学练宝周期', trigger: 'blur' }
         ]"
       >
         <el-select
-          placeholder="学练宝单位"
+          placeholder="学练宝周期"
           clearable
           v-model.trim="memberForm.period"
           @change="getMemberList"
@@ -24,10 +38,10 @@
         </el-select>
       </el-form-item>
       <el-form-item
-        label="学练宝周期"
+        label="学练宝周期"
         prop="memberNum"
         :rules="[
-          { required: true, message: '请输入学练宝周期', trigger: 'blur' }
+          { required: true, message: '请输入学练宝周期', trigger: 'blur' }
         ]"
       >
         <el-input
@@ -35,7 +49,7 @@
           @input="getMemberList"
           onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
           v-model="memberForm.memberNum"
-          placeholder="请输入学练宝周期"
+          placeholder="请输入学练宝周期"
         >
         </el-input>
       </el-form-item>
@@ -79,53 +93,79 @@
 </template>
 <script>
 import { add, update } from "../api";
-import { getmemberRankOrganizationFeeMapper } from "@/views/categroyManager/productSystem/api";
+import { getmemberRankOrganizationFeeMapper, getAllMemberFindByOrganIds } from "@/views/categroyManager/productSystem/api";
 import { sysConfigList } from "@/api/generalSettings"; // 平台的修改和查
 export default {
   props: ["multipleSelection", "type"],
   data() {
     return {
       memberForm: {
+        memberRankId: [],
         memberNum: null,
         actualAmount: null,
         period: null,
         remark: null
       },
       userIds: [],
+      memberRankList: [],
       organId: null,
       rulesForm: null, // 范围
       memberFeeSetting: null
     };
   },
-  mounted() {
-    console.log(this.multipleSelection);
+ async mounted() {
     if (this.type == "update") {
       const {
         memberNum,
         actualAmount,
+        memberRankSettingId,
         period,
         remark,
         organId,
         id
       } = this.multipleSelection;
+      this.organId = organId;
+      const memberInfo = await getAllMemberFindByOrganIds([organId])
+      this.memberRankList = memberInfo.data || []
       this.memberForm = {
         memberNum,
+        memberRankId: this.formatParentId(memberRankSettingId, this.memberRankList),
         period,
         actualAmount,
         remark,
         id
       };
-      this.organId = organId;
+      
     } else {
       this.userIds = this.multipleSelection.map(stu => {
         return stu.userId;
       });
       this.organId = this.multipleSelection[0].organId; //
+      const memberInfo = await getAllMemberFindByOrganIds([this.organId])
+      this.memberRankList = memberInfo.data || []
     }
-
+   
     this.__init();
   },
   methods: {
+    formatParentId(id, list, ids = []) {
+      for (const item of list) {
+        if (item.children) {
+          const cIds = this.formatParentId(
+            id,
+            item.children,
+            [...ids, item.id]
+          );
+          if (cIds.includes(id)) {
+            return cIds;
+          }
+        }
+        if (item.id === id) {
+          return [...ids, id];
+        }
+      }
+      return ids;
+    },
     async __init() {
       try {
         const res = await sysConfigList({ group: "DEFAULT" });
@@ -195,15 +235,21 @@ export default {
         console.log(res, this.type, "res");
         if (res) {
           try {
+            let rankId = null
+            if(this.memberForm.memberRankId && this.memberForm.memberRankId.length > 0) {
+              rankId = this.memberForm.memberRankId[this.memberForm.memberRankId.length - 1]
+            }
             if (this.type == "update") {
               await update({
                 ...this.memberForm,
+                memberRankSettingId: rankId,
                 organId: this.organId
               });
               this.$message.success("创建学练宝成功");
             } else {
               await add({
                 ...this.memberForm,
+                memberRankSettingId: rankId,
                 userIds: this.userIds,
                 organId: this.organId
               });

+ 4 - 1
src/views/studentManager/modals/recordDetail.vue

@@ -2,7 +2,10 @@
   <div>
     <!-- <el-alert title="基础信息" :closable="false" class="alert" type="info" /> -->
     <descriptions :column="3" style="margin-bottom: 20px;">
-      <descriptions-item label="学练宝单位">{{
+      <descriptions-item label="学练宝版本">{{
+        detail.name
+      }}</descriptions-item>
+      <descriptions-item label="周期">{{
         detail.period | memberEnumType
       }}</descriptions-item>
       <descriptions-item label="周期数">{{

+ 3 - 3
src/views/studentManager/studentGroupRecord.vue

@@ -8,7 +8,7 @@
       <el-form :inline="true" :model="searchForm">
         <el-form-item prop="period">
           <el-select
-            placeholder="学练宝单位"
+            placeholder="周期"
             clearable
             v-model.trim="searchForm.period"
             style="width: 100% !important"
@@ -80,9 +80,9 @@
           ></el-table-column>
           <el-table-column align="center" prop="organName" label="分部名称">
           </el-table-column>
-          <el-table-column align="center" prop="memberName" label="学练宝版本">
+          <el-table-column align="center" prop="name" label="学练宝版本">
           </el-table-column>
-          <el-table-column align="center" prop="name" label="周期">
+          <el-table-column align="center" prop="period" label="周期">
             <template slot-scope="scope">
               {{ scope.row.period | memberEnumType }}
             </template>

+ 69 - 188
src/views/studentManager/studentList.vue

@@ -158,6 +158,17 @@
             <el-option label="否" value="0"></el-option>
           </el-select>
         </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-button native-type="submit" type="danger">搜索</el-button>
           <el-button native-type="reset" type="primary">重置</el-button>
@@ -354,9 +365,6 @@
               <copy-text>{{ scope.row.userId }}</copy-text>
             </template>
           </el-table-column>
-          <!-- <el-table-column align="center" prop="username" label="学员姓名">
-            <template slot-scope="scope"> </template>
-          </el-table-column> -->
           <el-table-column
             align="center"
             prop="realName"
@@ -379,61 +387,11 @@
             prop="courseTeacherName"
             label="排课老师"
           ></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="未上课时">
             <template slot-scope="scope">{{
               scope.row.hasCourse ? "有" : "无"
             }}</template>
           </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">
             <template slot-scope="scope">{{
               scope.row.serviceTag ? "是" : "否"
@@ -448,74 +406,21 @@
             align="center"
             width="120px"
             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 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
-            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="是否是新用户">
             <template slot="header">
               <p style="position: relative">
@@ -534,34 +439,6 @@
               {{ scope.row.isNewUser ? "是" : "否" }}
             </template>
           </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="操作">
             <template slot-scope="scope">
               <div
@@ -664,46 +541,6 @@
                   </el-dropdown-menu>
                 </el-dropdown>
               </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>
           </el-table-column>
         </el-table>
@@ -1160,6 +997,27 @@
         <el-button type="primary" @click="submitDateReset">确 定</el-button>
       </div>
     </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>
 </template>
 <script>
@@ -1189,6 +1047,7 @@ import createMember from "./modals/createMember";
 import setMemberDate from "./modals/setMemberDate";
 import studentExt from "./modals/studentExt";
 import Tooltip from "@/components/Tooltip";
+import { getmemberRankList } from '@/views/categroyManager/productSystem/api'
 export default {
   name: "studentManagerList",
   components: {
@@ -1202,11 +1061,15 @@ export default {
   },
   data() {
     return {
+      memberRecordVisible: false,
+      tableMemberList: [],
       extVisible: false,
       extDetail: {},
       studentVisible: false,
+      memberRankList: [],
       searchForm: {
         organId: [],
+        memberRankId: [],
         search: null,
         studentName: null,
         isActive: null,
@@ -1294,6 +1157,7 @@ export default {
     };
   },
   mounted() {
+    this.getMemberList()
     if (this.$route.params.search) {
       this.searchForm.search = this.$route.params.search;
     }
@@ -1317,6 +1181,14 @@ export default {
     this.tenantId = this.$helpers.tenantId;
   },
   methods: {
+    async getMemberList() {
+      try {
+        const { data } = await getmemberRankList()
+        this.memberRankList = data || [];
+      } catch (e) {
+        console.log(e);
+      }
+    },
     setClound(row) {
       this.activatedRow = row;
       this.cloundDateVisible = true;
@@ -1371,7 +1243,11 @@ export default {
         vaildStudentUrl() + `/#/queryStudentPer?tenantId=` + this.tenantId;
     },
     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.page = this.pageInfo.page;
       params.organId = this.searchForm.organId.join(",");
@@ -1400,6 +1276,10 @@ export default {
     downLoadStudent() {
       let url = "/api-web/export/studentHasCourse";
       let searchForm = this.searchForm;
+      let rankId = null
+      if(searchForm.memberRankId && searchForm.memberRankId.length > 0) {
+        rankId = searchForm.memberRankId[searchForm.memberRankId.length - 1]
+      }
       let data = {
         organId: searchForm.organId.join(","),
         search: searchForm.search + "" ? searchForm.search : null,
@@ -1421,7 +1301,8 @@ export default {
         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,
+        memberRankId: rankId
       };
       const options = {
         method: "POST",