lex-xin 9 kuukautta sitten
vanhempi
commit
f78906814a

+ 1 - 1
src/utils/searchArray.js

@@ -339,7 +339,7 @@ export const orderStatus = [
   },
   {
     value: "MEMBER",
-    label: "会员购买"
+    label: "学练宝购买"
   },
   {
     value: "SMALL_CLASS_TO_BUY",

+ 34 - 4
src/views/resetTeaming/components/giveMemberList.vue

@@ -36,6 +36,17 @@
           <el-option label="已取消" value="4"></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-date-picker
           v-model="searchForm.operationDate"
@@ -63,7 +74,7 @@
       v-if="$helpers.permission('cloudTeacherOrder/pay')"
       type="primary"
       style="margin-bottom: 20px"
-      >激活云练习</el-button
+      >激活学练宝</el-button
     >
     <el-button
       type="primary"
@@ -97,7 +108,9 @@
           prop="subjectName"
           label="学员声部"
         ></el-table-column>
-        <el-table-column align="center" prop="type" label="云练习类型">
+        <el-table-column align="center" prop="memberName" label="学练宝版本">
+        </el-table-column>
+        <el-table-column align="center" prop="type" label="周期">
           <template slot-scope="scope">
             {{ scope.row.type | memberEnumType }}
           </template>
@@ -168,7 +181,7 @@
     </div>
 
     <el-dialog
-      title="激活云练习"
+      title="激活学练宝"
       :visible.sync="giveMemberVisible"
       width="1000px"
       v-if="giveMemberVisible"
@@ -219,6 +232,7 @@
 import pagination from "@/components/Pagination/index";
 import { findSound } from "@/api/buildTeam";
 import { queryInactive, cancelInactive } from "../api";
+import { getmemberRankList } from '@/views/categroyManager/productSystem/api'
 import giveMemberModel from "../modals/giveMemberModel";
 import Tooltip from "@/components/Tooltip";
 import { getTimeFormat } from "@/utils";
@@ -232,9 +246,11 @@ export default {
       searchForm: {
         queryCondition: "",
         subjectId: "",
+        memberRankId: [],
         operationDate: [],
         status: ""
       },
+      memberRankList: [],
       soundList: [],
       tableList: [],
       rules: {
@@ -254,9 +270,18 @@ export default {
   },
   mounted() {
     this.__init();
+    this.getMemberList()
     this.getList();
   },
   methods: {
+    async getMemberList() {
+      try {
+        const { data } = await getmemberRankList()
+        this.memberRankList = data || [];
+      } catch (e) {
+        console.log(e);
+      }
+    },
     async __init() {
       try {
         let res = await findSound({ musicGroupId: this.musicGroupId });
@@ -267,9 +292,14 @@ export default {
     },
     async getList() {
       try {
-        let { operationDate, ...rest } = this.searchForm;
+        let { operationDate, memberRankId, ...rest } = this.searchForm;
+        let rankId = null
+        if(memberRankId && memberRankId.length > 0) {
+          rankId = memberRankId[memberRankId.length - 1]
+        }
         let params = {
           ...rest,
+          memberRankId: rankId,
           ...getTimeFormat(operationDate, [
             "operateStartTime",
             "operateEndTime"

+ 1 - 1
src/views/resetTeaming/index.vue

@@ -200,7 +200,7 @@
           <studentList :teamid="teamid" v-if="activeIndex == '7'" />
         </el-tab-pane>
         <el-tab-pane
-          label="待激活练宝"
+          label="待激活练宝"
           v-if="permission('/giveMemberList')"
           name="13"
           :disabled="!teamid"

+ 5 - 3
src/views/resetTeaming/modals/giveMemberModel.vue

@@ -2,7 +2,7 @@
   <div class="chioseWrap">
     <p>
       您将为以下<span>{{ tableList.length }}</span
-      >位学员激活云练习,激活金额<span>{{
+      >位学员激活学练宝,激活金额<span>{{
         selectStudentMoney | moneyFormat
       }}</span
       >元
@@ -35,7 +35,9 @@
       </el-table-column>
       <el-table-column align="center" prop="phone" label="手机号">
       </el-table-column>
-      <el-table-column align="center" prop="type" label="云练习类型">
+      <el-table-column align="center" prop="memberName" label="学练宝版本">
+      </el-table-column>
+      <el-table-column align="center" prop="type" label="周期">
         <template slot-scope="scope">
           {{ scope.row.type | memberEnumType }}
         </template>
@@ -64,7 +66,7 @@
     </span>
 
     <el-dialog
-      title="激活云练习"
+      title="激活学练宝"
       :visible.sync="payMentVisible"
       :before-close="onClose"
       v-if="payMentVisible"

+ 2 - 2
src/views/resetTeaming/modals/giveMemberPayment.vue

@@ -2,12 +2,12 @@
   <div class="chioseWrap">
     <p>
       您将为<span>{{ tableList.length }}</span
-      >位学员激活云练习<br />共需支付<span>{{
+      >位学员激活学练宝<br />共需支付<span>{{
         selectStudentMoney | moneyFormat
       }}</span
       >元
     </p>
-    <p>请扫描二维码支付,支付功能后学员云练习即刻激活</p>
+    <p>请扫描二维码支付,支付功能后学员学练宝即刻激活</p>
 
     <vue-qr :text="codeUrl" style="width: 250px" :margin="0"></vue-qr>
   </div>

+ 32 - 18
src/views/resetTeaming/modals/member-setting.vue

@@ -6,20 +6,20 @@
     label-suffix=": "
     :inline="true"
   >
-    <el-form-item label="是否购买会员" v-if="isUserType && addStudent">
+    <el-form-item label="是否购买学练宝" v-if="isUserType && addStudent">
       <el-radio-group v-model="radio">
-        <el-radio :label="true">购买会员</el-radio>
-        <el-radio :label="false">不购买会员</el-radio>
+        <el-radio :label="true">购买</el-radio>
+        <el-radio :label="false">不购买</el-radio>
       </el-radio-group>
     </el-form-item>
     <el-form-item
-      label="会员等级"
+      label="学练宝版本"
       prop="memberRankSettingId"
       v-if="isUserType && radio"
-      :rules="[{ required: true, message: '请选择会员等级', trigger: 'blur' }]"
+      :rules="[{ required: true, message: '请选择学练宝版本', trigger: 'blur' }]"
     >
-      <el-select
-        placeholder="会员等级"
+      <!-- <el-select
+        placeholder="学练宝版本"
         style="width: 620px !important"
         clearable
         filterable
@@ -32,17 +32,28 @@
           v-for="item in memberRankList"
           :key="item.id"
         ></el-option>
-      </el-select>
+      </el-select> -->
+      <el-cascader
+        filterable
+        style="width: 620px !important"
+        v-model="form.memberRankSettingId"
+        clearable
+        placeholder="请选择学练宝版本"
+        :options="memberRankList"
+        :props="{ value: 'id', label: 'name' }"
+        @change="(val) => changeMember(val, scope.$index)"
+
+      ></el-cascader>
     </el-form-item>
 
     <el-form-item
       v-if="isUserType && radio"
-      label="会员周期"
+      label="数量"
       prop="num"
       :rules="[
         {
           required: true,
-          message: '请选择会员周期',
+          message: '请选择数量',
           trigger: 'blur',
         },
       ]"
@@ -55,18 +66,18 @@
         :precision="0"
         :min="0"
         @change="changeMemberperiodEnum(form.period)"
-        placeholder="会员周期"
+        placeholder="数量"
         :disabled="!form.memberRankSettingId"
       />
     </el-form-item>
     <el-form-item
       v-if="isUserType && radio"
-      label="周期单位"
+      label="周期"
       prop="period"
       :rules="[
         {
           required: true,
-          message: '请选择周期单位',
+          message: '请选择周期',
           trigger: 'blur',
         },
       ]"
@@ -138,12 +149,13 @@
 </template>
 <script>
 import { objectToOptions } from "@/utils";
-import { getAllmemberRank, getMemberFee } from "../api";
+import { getMemberRankTree, getMemberFee } from "../api";
 import { memberEnumList } from "@/utils/searchArray";
 import { sysConfigList } from "@/api/generalSettings";
 export default {
   props: [
     "form",
+    "musicGroupId",
     "isUserType",
     "organId",
     "addStudent",
@@ -179,8 +191,10 @@ export default {
   async mounted() {
     // 获取所有得会员信息
     try {
-      const res = await getAllmemberRank({ isDefault: 0 });
-      this.memberRankList = res.data;
+      // const res = await getAllmemberRank({ isDefault: 0 });
+      // this.memberRankList = res.data;
+      const {data} = await getMemberRankTree({ musicGroupId: this.musicGroupId })
+      this.memberRankList = data || [];
     } catch (e) {
       console.log(e);
     }
@@ -287,12 +301,12 @@ export default {
       // this.$set(this.form, "originalMemberPaymentAmount", null);
       // this.$set(this.form, "num", null);
       // this.$set(this.form, "period", null);
-      if (val) {
+      if (val && val.length > 0) {
         if (this.getMemberFeeFlag) {
           this.getMemberFeeFlag = false;
           try {
             const res = await getMemberFee({
-              rankId: val,
+              rankId: val[val.length - 1],
               organId: this.organId,
             });
             this.memberPrice = res.data;

+ 0 - 2
src/views/resetTeaming/modals/payMember.vue

@@ -437,8 +437,6 @@ export default {
               rankId: val[val.length - 1],
               organId: this.organId
             });
-            // this.memberPrice = res.data;
-            console.log(val, index, 'index')
             this.memberPriceList[index] = res.data
             this.getMemberFeeFlag = true;
             if (!res.data) {

+ 36 - 7
src/views/studentManager/studentGroupPractice.vue

@@ -2,7 +2,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      待激活云练习
+      待激活学练宝
     </h2>
     <div class="m-core">
       <el-form :inline="true" :model="searchForm">
@@ -25,6 +25,17 @@
             <el-option label="已取消" value="4"></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-date-picker
             v-model="searchForm.operationDate"
@@ -52,7 +63,7 @@
         v-if="$helpers.permission('cloudTeacherOrder/pay/student')"
         type="primary"
         style="margin-bottom: 20px"
-        >激活云练习</el-button
+        >激活学练宝</el-button
       >
       <el-button
         type="primary"
@@ -97,7 +108,9 @@
             prop="subjectName"
             label="学员声部"
           ></el-table-column>
-          <el-table-column align="center" prop="type" label="云练习类型">
+          <el-table-column align="center" prop="memberName" label="学练宝版本">
+          </el-table-column>
+          <el-table-column align="center" prop="name" label="周期">
             <template slot-scope="scope">
               {{ scope.row.type | memberEnumType }}
             </template>
@@ -159,7 +172,7 @@
     </div>
 
     <el-dialog
-      title="激活云练习"
+      title="激活学练宝"
       :visible.sync="giveMemberVisible"
       width="1000px"
       v-if="giveMemberVisible"
@@ -209,6 +222,7 @@
 <script>
 import pagination from "@/components/Pagination/index";
 import { queryInactive, cancelInactive } from "@/views/resetTeaming/api";
+import { getmemberRankList } from '@/views/categroyManager/productSystem/api'
 import giveMemberModel from "@/views/resetTeaming/modals/giveMemberModel";
 import Tooltip from "@/components/Tooltip";
 import { getTimeFormat } from "@/utils";
@@ -221,6 +235,7 @@ export default {
       musicGroupId,
       giveMemberVisible: false,
       searchForm: {
+        memberRankId: [],
         queryCondition: "",
         subjectId: "",
         operationDate: [],
@@ -244,14 +259,28 @@ export default {
     };
   },
   mounted() {
+    this.getMemberList()
     this.getList();
   },
   methods: {
+    async getMemberList() {
+      try {
+        const { data } = await getmemberRankList()
+        this.memberRankList = data || [];
+      } catch (e) {
+        console.log(e);
+      }
+    },
     async getList() {
       try {
-        let { operationDate, ...rest } = this.searchForm;
+        let { operationDate, memberRankId, ...rest } = this.searchForm;
+        let rankId = null
+        if(memberRankId && memberRankId.length > 0) {
+          rankId = memberRankId[memberRankId.length - 1]
+        }
         let params = {
           ...rest,
+          memberRankId: rankId,
           ...getTimeFormat(
             operationDate,
             ["operateStartTime", "operateEndTime"],
@@ -321,14 +350,14 @@ export default {
         this,
         {
           url: "/api-web/export/now",
-          fileName: "待激活云练习.xls",
+          fileName: "待激活学练宝.xls",
           method: "post",
           params: {
             exportEnum: "EXPORT_CLOUD_TEACHER_ORDER_INACTIVE",
             queryInfo: params
           }
         },
-        "您确定导出待激活云练习?"
+        "您确定导出待激活学练宝?"
       );
     },
     async submitDateReset() {

+ 36 - 6
src/views/studentManager/studentGroupRecord.vue

@@ -2,13 +2,13 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      云练习缴费记录
+      学练宝缴费记录
     </h2>
     <div class="m-core">
       <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"
@@ -36,6 +36,17 @@
             ></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 prop="visitTime">
           <el-date-picker
             v-model.trim="searchForm.visitTime"
@@ -69,7 +80,9 @@
           ></el-table-column>
           <el-table-column align="center" prop="organName" label="分部名称">
           </el-table-column>
-          <el-table-column align="center" prop="name" label="云练习单位">
+          <el-table-column align="center" prop="memberName" label="学练宝版本">
+          </el-table-column>
+          <el-table-column align="center" prop="name" label="周期">
             <template slot-scope="scope">
               {{ scope.row.period | memberEnumType }}
             </template>
@@ -156,7 +169,7 @@
     </div>
 
     <el-dialog
-      title="激活云练习"
+      title="激活学练宝"
       :visible.sync="recordVisible"
       width="1000px"
       v-if="recordVisible"
@@ -166,7 +179,7 @@
     </el-dialog>
 
     <el-dialog
-      title="修改云练习缴费"
+      title="修改学练宝缴费"
       width="500px"
       :visible.sync="memberVisible"
     >
@@ -189,6 +202,7 @@
 import pagination from "@/components/Pagination/index";
 import recordDetail from "@/views/studentManager/modals/recordDetail";
 import { cloudCoachPaymentProgramQueryPage } from "./api";
+import { getmemberRankList } from '@/views/categroyManager/productSystem/api'
 import createMember from "./modals/createMember";
 import { getTimes } from "@/utils";
 export default {
@@ -198,10 +212,12 @@ export default {
       recordVisible: false,
       memberVisible: false,
       searchForm: {
+        memberRankId: [],
         visitTime: [],
         period: null,
         organId: null
       },
+      memberRankList: [],
       tableList: [],
       rules: {
         // 分页规则
@@ -215,14 +231,28 @@ export default {
   },
   async mounted() {
     await this.$store.dispatch("setBranchs");
+    this.getMemberList()
     this.getList();
   },
   methods: {
+    async getMemberList() {
+      try {
+        const { data } = await getmemberRankList()
+        this.memberRankList = data || [];
+      } catch (e) {
+        console.log(e);
+      }
+    },
     async getList() {
       try {
-        const { visitTime, ...search } = this.searchForm;
+        const { visitTime, memberRankId, ...search } = this.searchForm;
+        let rankId = null
+        if(memberRankId && memberRankId.length > 0) {
+          rankId = memberRankId[memberRankId.length - 1]
+        }
         const res = await cloudCoachPaymentProgramQueryPage({
           ...search,
+          memberRankId: rankId,
           ...getTimes(visitTime, ["startTime", "endTime"]),
           page: this.rules.page,
           rows: this.rules.limit

+ 7 - 4
src/views/teamDetail/components/modals/create-user-pay.vue

@@ -96,7 +96,7 @@
       @moneyChange="syncAllMoney"
     />
     <el-alert
-      title="会员设置"
+      title="学练宝设置"
       :closable="false"
       class="alert"
       style="margin-top: 20px"
@@ -105,6 +105,7 @@
     </el-alert>
     <memberSetting
       :addStudent="true"
+      :musicGroupId="musicGroupId"
       :form="memberForm"
       :isUserType="isUserType"
       :organId="baseInfo.organId"
@@ -427,11 +428,13 @@ export default {
         return;
       }
       if (forms.length === valided.length) {
+        const { memberRankSettingId, memberPaymentAmount, originalMemberPaymentAmount, ...tempMember } = this.memberForm
         const data = {
           calenderMember: {
-            ...this.memberForm,
-            actualAmount: this.memberForm.memberPaymentAmount,
-            originalAmount: this.memberForm.originalMemberPaymentAmount
+            ...tempMember,
+            memberRankSettingId: memberRankSettingId && memberRankSettingId.length > 0 ? memberRankSettingId[memberRankSettingId.length - 1] : null,
+            actualAmount: memberPaymentAmount,
+            originalAmount: originalMemberPaymentAmount
           },
           calenderAddStudent: {
             classGroupIds: this.ids,

+ 82 - 160
src/views/teamDetail/components/studentList.vue

@@ -203,6 +203,17 @@
           <el-option label="已使用" :value="2"></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 type="primary" native-type="reset">重置</el-button>
@@ -309,28 +320,6 @@
             </div>
           </template>
         </el-table-column>
-        <!-- <el-table-column label="学员姓名" width="120px;" prop="realName">
-          <template slot-scope="scope">
-            <div
-              @click="gotoStudent(scope.row.realName)"
-              style="color: var(--color-primary); cursor: pointer"
-            >
-              <copy-text>
-                {{ scope.row.realName }}
-              </copy-text>
-            </div>
-          </template>
-        </el-table-column> -->
-        <!-- <el-table-column
-          align="center"
-          prop="gender"
-          width="50px;"
-          label="性别"
-        >
-          <template slot-scope="scope">
-            <div>{{ scope.row.gender | sex }}</div>
-          </template>
-        </el-table-column> -->
         <el-table-column align="center" prop="phone" label="联系电话">
           <template slot-scope="scope">
             <copy-text>
@@ -353,13 +342,6 @@
             </div>
           </template>
         </el-table-column>
-        <!-- <el-table-column align="center" label="报名专业" prop="subjectName">
-          <template slot-scope="scope">
-            <copy-text>
-              {{ scope.row.regSubjectName }}
-            </copy-text>
-          </template>
-        </el-table-column> -->
         <el-table-column align="center" label="入团专业" prop="subjectName">
           <template slot-scope="scope">
             <copy-text>
@@ -382,26 +364,6 @@
             <div>{{ scope.row.paymentStatus | paymentStatus }}</div>
           </template>
         </el-table-column>
-        <!-- <el-table-column align="center" label="是否激活">
-          <template slot-scope="scope">
-            <div>{{ scope.row.isActive ? "是" : "否" }}</div>
-          </template>
-        </el-table-column> -->
-        <!-- <el-table-column align="center" label="VIP/网管是否有课">
-          <template slot-scope="scope">
-            <div>{{ scope.row.hasCourse ? "是" : "否" }}</div>
-          </template>
-        </el-table-column> -->
-        <!-- <el-table-column align="center" label="关心包">
-          <template slot-scope="scope">{{
-            scope.row.carePackage | studentPackage
-          }}</template>
-        </el-table-column> -->
-        <!-- <el-table-column align="center" label="加油包">
-          <template slot-scope="scope">{{
-            scope.row.comeOnPackage | studentPackage
-          }}</template>
-        </el-table-column> -->
         <el-table-column align="center" label="欠费金额(元)">
           <template slot-scope="scope">
             <div :class="[scope.row.noPaymentAmount > 0 ? 'error' : null]">
@@ -421,107 +383,26 @@
             </div>
           </template>
         </el-table-column>
-        <!-- <el-table-column label="退团原因" align="center">
-          <template slot-scope="scope">
-            <div>
-              <Tooltip :content="scope.row.quitReason" />
-            </div>
-          </template>
-        </el-table-column> -->
-        <!-- <el-table-column
-          label="下次续费时间(剩余天数)"
-          align="center"
-          width="120px;"
-        >
-          <template slot-scope="scope">
-            <div>
-              {{ scope.row.musicMembershipEndTime | dayjsFormat }}
-              <p
-                class="error"
-                v-if="
-                  scope.row.musicMembershipEndTime &&
-                  scope.row.musicMembershipDay >= 0
-                "
-              >
-                剩余{{ scope.row.musicMembershipDay }}天
-              </p>
-              <p
-                class="error"
-                v-if="
-                  scope.row.musicMembershipEndTime &&
-                  scope.row.musicMembershipDay < 0
-                "
-              >
-                已欠费{{ Math.abs(scope.row.musicMembershipDay) }}天
-              </p>
-            </div>
-          </template>
-        </el-table-column>
         <el-table-column
-          label="会员试用结束日期(剩余天数)"
+          label="学练宝截止时间(剩余天数)"
           align="center"
-          width="120px;"
         >
           <template slot-scope="scope">
-            <div>
-              {{ scope.row.experienceMembershipEndTime | dayjsFormat }}
-              <p
-                class="error"
-                v-if="
-                  scope.row.experienceMembershipEndTime &&
-                  scope.row.experienceMembershipDay >= 0
-                "
-              >
-                剩余{{ scope.row.experienceMembershipDay }}天
-              </p>
-              <p
-                class="error"
-                v-if="
-                  scope.row.experienceMembershipEndTime &&
-                  scope.row.experienceMembershipDay < 0
-                "
-              >
-                已过期{{ Math.abs(scope.row.experienceMembershipDay) }}天
-              </p>
-            </div>
-          </template>
-        </el-table-column> -->
-        <el-table-column
-          label="会员截止时间(剩余天数)"
-          align="center"
-          width="120px;"
-        >
-          <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>
-              </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 v-if="scope.row.cloudTeacherOrderList && scope.row.cloudTeacherOrderList.length > 0">
+              <!-- <div v-for="(item, index) in scope.row.cloudTeacherOrderList" :key="index">
+                {{ item.memberRankName  }}
+                {{ item.endTime | dayjsFormat }}
+                <p class="red">剩余{{ item.remainingDays }}天</p>
+              </div> -->
+              <el-button
+                type="text"
+                @click="() => {
+                  memberVisible = true;
+                  tableMemberList = scope.row.cloudTeacherOrderList
+                }"
+                >查看</el-button>
             </div>
+            <div v-else class="red"> 未购买会员 </div>
           </template>
         </el-table-column>
         <el-table-column label="备注" prop="remark" align="center">
@@ -970,6 +851,27 @@
         >
       </div>
     </el-dialog>
+
+    <el-dialog
+      title="学练宝详情"
+      :visible.sync="memberVisible"
+      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>
     <!-- <el-dialog
       title="新增会员试用期"
       width="600px"
@@ -1035,6 +937,7 @@ import visit from "@/views/withdrawal-application/modals/visit";
 import mergeMusic from "@/views/teamBuild/components/merge-music";
 import quiteTeam from "@/views/teamDetail/components/modals/quite-team";
 import addTryList from "@/views/teamDetail/components/modals/addTryList";
+import { getmemberRankList } from '@/views/categroyManager/productSystem/api'
 export default {
   name: "tstudentList",
   data() {
@@ -1049,6 +952,8 @@ export default {
       addStudentVisible: false, //新增学员弹窗
       timesVisible: false,
       timerDetail: null,
+      memberVisible: false,
+      tableMemberList: [],
       topFrom: {
         // 顶部的禁选框集合
         expect: "2", // 预期招生
@@ -1069,8 +974,10 @@ export default {
         classGroupId: null,
         hasCourse: null,
         carePackage: null,
-        comeOnPackage: null
+        comeOnPackage: null,
+        memberRankId: null,
       },
+      memberRankList: [],
       organizationCourseUnitPriceSettings: [],
       quitForm: {
         // 退团信息确认
@@ -1284,10 +1191,19 @@ export default {
     // } catch (e) {
     //   console.log(e);
     // }
+    this.getMemberList()
     this.init();
     this.getAgreement();
   },
   methods: {
+    async getMemberList() {
+      try {
+        const { data } = await getmemberRankList()
+        this.memberRankList = data || [];
+      } catch (e) {
+        console.log(e);
+      }
+    },
     onPaymentDetail(row) {
       this.paymentDetail = row;
       this.paymentDetailVisible = true;
@@ -1473,24 +1389,30 @@ export default {
       //   }
       // });
       this.getTeamStudent();
+      const searchForm = this.searchForm
+      let rankId = null
+        if(searchForm.memberRankId && searchForm.memberRankId.length > 0) {
+          rankId = searchForm.memberRankId[searchForm.memberRankId.length - 1]
+        }
       let obj = {
         musicGroupId: this.teamid,
         page: this.rules.page,
         rows: this.rules.limit,
-        studentStatus: this.searchForm.studentStatus || null,
-        paymentStatus: this.searchForm.isPay || null,
-        subjectId: this.searchForm.major || null,
-        search: this.searchForm.search || null,
-        isActive: this.searchForm.isActive || null,
-        classGroupId: this.searchForm.classGroupId || null,
-        currentGrade: this.searchForm.currentGrade || null,
-        createYear: this.searchForm.createYear || null,
-        oweFlag: this.searchForm.oweFlag || null,
-        hasCourse: this.searchForm.hasCourse || null,
-        oweFlag: this.searchForm.oweFlag || null,
-        comeOnPackage: this.searchForm.comeOnPackage,
-        carePackage: this.searchForm.carePackage,
-        hasMember: this.searchForm.hasMember
+        studentStatus: searchForm.studentStatus || null,
+        paymentStatus: searchForm.isPay || null,
+        subjectId: searchForm.major || null,
+        search: searchForm.search || null,
+        isActive: searchForm.isActive || null,
+        classGroupId: searchForm.classGroupId || null,
+        currentGrade: searchForm.currentGrade || null,
+        createYear: searchForm.createYear || null,
+        oweFlag: searchForm.oweFlag || null,
+        hasCourse: searchForm.hasCourse || null,
+        oweFlag: searchForm.oweFlag || null,
+        comeOnPackage: searchForm.comeOnPackage,
+        carePackage: searchForm.carePackage,
+        hasMember: searchForm.hasMember,
+        memberRankId: searchForm.memberRankId && searchForm.memberRankId.length > 0 ?searchForm.memberRankId[searchForm.memberRankId.length - 1] : null
       };
       return getTeamStudentList(obj).then(res => {
         if (res.code == 200) {

+ 33 - 8
src/views/tenantSetting/groupRecordManager.vue

@@ -2,7 +2,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      云练习激活记录
+      学练宝激活记录
     </h2>
     <div class="m-core">
       <save-form
@@ -30,6 +30,17 @@
             v-model.trim="searchForm.orderNo"
           ></el-input>
         </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 prop="createTimer">
           <el-date-picker
             v-model.trim="searchForm.createTimer"
@@ -89,12 +100,9 @@
           </el-table-column>
           <el-table-column align="center" label="手机号码" prop="phone">
           </el-table-column>
-          <!-- <el-table-column align="center" label="交易类型">
-            <template slot-scope="scope">
-              {{ scope.row.type | tenantStatus }}
-            </template>
-          </el-table-column> -->
-          <el-table-column align="center" label="数量/云练习类型">
+          <el-table-column align="center" label="学练宝版本" prop="memberName">
+          </el-table-column>
+          <el-table-column align="center" label="数量/学练宝周期">
             <template slot-scope="scope">
               {{ scope.row.time }}/{{ scope.row.type | memberEnumType }}
             </template>
@@ -130,9 +138,11 @@ import pagination from "@/components/Pagination/index";
 import { queryActiveRecord } from "./api";
 import { dealStatus } from "@/utils/searchArray";
 import { getTimes } from "@/utils";
+import { getmemberRankList } from '@/views/categroyManager/productSystem/api'
 const initSearch = {
   queryCondition: null,
   orderNo: null,
+  memberRankId: null,
   createTimer: []
 };
 export default {
@@ -148,18 +158,33 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
+      memberRankList: [],
       searchForm: { ...initSearch }
     };
   },
   async mounted() {
+    this.getMemberList()
     this.getList();
   },
   methods: {
+    async getMemberList() {
+      try {
+        const { data } = await getmemberRankList()
+        this.memberRankList = data || [];
+      } catch (e) {
+        console.log(e);
+      }
+    },
     async getList() {
       try {
-        let { createTimer, ...reset } = this.searchForm;
+        let { createTimer, memberRankId, ...reset } = this.searchForm;
+        let rankId = null
+        if(memberRankId && memberRankId.length > 0) {
+          rankId = memberRankId[memberRankId.length - 1]
+        }
         const res = await queryActiveRecord({
           ...reset,
+          memberRankId: memberRankId && memberRankId.length > 0 ?memberRankId[memberRankId.length - 1] : null,
           ...getTimes(
             createTimer,
             ["startTime", "endTime"],