瀏覽代碼

Merge branch '07/06musicArchives' into test

mo 3 年之前
父節點
當前提交
bf53b7660d

+ 22 - 0
src/views/main/api.js

@@ -139,3 +139,25 @@ export const getMusicGroupPerformance = (data) => request2({
   method: 'post',
   params: data
 })
+
+// 获取云教练首页数据汇总
+export const getCloudStudyStudentOverView = (data) => request2({
+  url: '/api-web/studentManage/getCloudStudyStudentOverView',
+  method: 'get',
+  params: data
+})
+
+// 分部数据
+export const organStudentOverView = (data) => request2({
+  url: '/api-web/studentManage/organStudentOverView',
+  method: 'get',
+  params: data
+})
+
+// 分部老师数据
+
+export const organStudentData = (data) => request2({
+  url: '/api-web/studentManage/organStudentData',
+  method: 'get',
+  params: data
+})

+ 39 - 11
src/views/main/cloudDate/allDate.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-card>
-      <headers title="数据总览"  :hidenOrgan="true"/>
+      <headers title="数据总览" :hidenOrgan="true" />
       <div
         class="wall"
         style="height: 68px"
@@ -9,13 +9,10 @@
       >
         暂无数据
       </div>
-      <statistic :col="5" class="statistic" :cols="0">
-        <statistic-item
-          v-for="(item, key) in items"
-          :key="key"
-          :class="{ active: active === key }"
-          @click="active = key"
-        >
+      <!--
+          -->
+      <statistic :col="6" class="statistic" :cols="0">
+        <statistic-item v-for="(item, key) in items" :key="key"  @click="active = key" :class="{ active: active === key }">
           <span>
             {{ item.title + "(人)" }}
             <el-tooltip
@@ -38,23 +35,54 @@
 </template>
 <script>
 import headers from "./modals/headers.vue";
+import countTo from "vue-count-to";
+import { descs, titles } from "../constant";
+import { getCloudStudyStudentOverView } from "../api";
 export default {
   props: ["data"],
   components: {
     headers,
+    countTo
   },
   data() {
-    return {};
+    return {
+      dataList:{},
+      active:''
+    };
+  },
+  async mounted() {
+    try {
+      const res = await getCloudStudyStudentOverView();
+      this.dataList = res.data;
+    } catch (e) {
+      console.log(e);
+    }
+    // 获取数据
   },
   computed: {
     items() {
-      return {};
+      let obj = {};
+      let arr = [
+        "vipStudentNum",
+        "eVipStudentNum",
+        "cloudStudyLivelyStudentNum",
+        "newCloudStudyStudentNum",
+        "cloudStudyTodayUseStudentNum",
+        "cloudStudyUseStudentNum",
+      ];
+      arr.forEach((str) => {
+        if (this.dataList[str]) {
+          obj[str] ={title:titles[str],percent:this.dataList[str],desc:descs[str]} ;
+        }
+      });
+      return obj;
     },
   },
+  methods: {},
 };
 </script>
 <style lang="scss" scoped>
 /deep/.el-card__body {
-  padding-top: 0!important;
+  padding-top: 0 !important;
 }
 </style>

+ 91 - 26
src/views/main/cloudDate/organDate.vue

@@ -10,12 +10,12 @@
         >
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="organName"
             label="分部"
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="totalStudentNum"
             label="学员总数"
             sortable
           >
@@ -23,7 +23,7 @@
               <div class="titleCell">
                 <span>学员总数</span>
                 <el-tooltip placement="top" popper-class="mTooltip">
-                  <div slot="content">该分部需服务的学员总数</div>
+                  <div slot="content">该分部下所有学员</div>
                   <i
                     class="el-icon-question micon el-tooltip"
                     style="
@@ -38,9 +38,60 @@
             </template>
           </el-table-column>
           <el-table-column
+            align="center"
+            prop="cloudStudyLivelyStudentNum"
+            label="活跃人数"
+            sortable
+          >
+            <template slot="header" slot-scope="slot">
+              <div class="titleCell">
+                <span>活跃人数</span>
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">近15天内使用达到5天及以上的用户数</div>
+                  <i
+                    class="el-icon-question micon el-tooltip"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      top: 2px;
+                      position: relative;
+                    "
+                  ></i>
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="cloudStudyUseStudentDuty"
+            label="使用比例"
+            sortable
+          >
+            <template slot="header" slot-scope="slot">
+              <div class="titleCell">
+                <span>使用比例</span>
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">云教练使用人数 / 学员总数</div>
+                  <i
+                    class="el-icon-question micon el-tooltip"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      top: 2px;
+                      position: relative;
+                    "
+                  ></i>
+                </el-tooltip>
+              </div>
+            </template>
+            <template slot-scope="scope">
+              <div>{{ scope.row.cloudStudyUseStudentDuty }}%</div>
+            </template>
+          </el-table-column>
+          <el-table-column
             sortable
             align="center"
-            prop="studentId"
+            prop="vipStudentNum"
             label="付费会员数"
           >
             <template slot="header" slot-scope="slot">
@@ -64,14 +115,14 @@
           <el-table-column
             sortable
             align="center"
-            prop="studentId"
-            label="试用会员"
+            prop="vipStudentDuty"
+            label="付费会员占比"
           >
             <template slot="header" slot-scope="slot">
               <div class="titleCell">
-                <span>试用会员</span>
+                <span>付费会员占比</span>
                 <el-tooltip placement="top" popper-class="mTooltip">
-                  <div slot="content">该分部生效中试用会员总数</div>
+                  <div slot="content">付费会员数 / 学员总数</div>
                   <i
                     class="el-icon-question micon el-tooltip"
                     style="
@@ -84,19 +135,22 @@
                 </el-tooltip>
               </div>
             </template>
+            <template slot-scope="scope">
+              <div>{{ scope.row.vipStudentDuty }}%</div>
+            </template>
           </el-table-column>
           <el-table-column
             sortable
             align="center"
-            prop="studentId"
-            label="付费会员占比"
+            prop="eVipStudentNum"
+            label="试用会员"
           >
             <template slot="header" slot-scope="slot">
               <div class="titleCell">
-                <span>付费会员占比</span>
+                <span>试用会员</span>
                 <el-tooltip placement="top" popper-class="mTooltip">
                   <div slot="content">
-                    该分部生效中、待生效付费会员占服务学员比例
+                    有生效中或待生效的付费会员,不统计在内
                   </div>
                   <i
                     class="el-icon-question micon el-tooltip"
@@ -111,22 +165,23 @@
               </div>
             </template>
           </el-table-column>
+
           <el-table-column align="center" prop="studentId" label="操作">
-            <template>
+            <template slot-scope="scope">
               <div>
-                <el-button type="text" @click="gotoDetail">详情</el-button>
+                <el-button type="text" @click="gotoDetail(scope.row)">详情</el-button>
               </div>
             </template>
           </el-table-column>
         </el-table>
-        <pagination
+        <!-- <pagination
           sync
           :total.sync="rules.total"
           :page.sync="rules.page"
           :limit.sync="rules.limit"
           :page-sizes="rules.page_size"
           @pagination="getList"
-        />
+        /> -->
       </div>
     </el-card>
   </div>
@@ -134,6 +189,7 @@
 <script>
 import headers from "./modals/headers.vue";
 import pagination from "@/components/Pagination/index";
+import { organStudentOverView } from "../api";
 export default {
   components: {
     headers,
@@ -142,21 +198,30 @@ export default {
   data() {
     return {
       tableList: [{}],
-      rules: {
-        // 分页规则
-        limit: 10, // 限制显示条数
-        page: 1, // 当前页
-        total: 0, // 总条数
-        page_size: [10, 20, 40, 50], // 选择限制显示条数
-      },
+      // rules: {
+      //   // 分页规则
+      //   limit: 10, // 限制显示条数
+      //   page: 1, // 当前页
+      //   total: 0, // 总条数
+      //   page_size: [10, 20, 40, 50], // 选择限制显示条数
+      // },
     };
   },
-  mounted() {},
+  mounted() {
+    this.getList();
+  },
   methods: {
-    getList() {},
+    async getList() {
+      try {
+        const res = await organStudentOverView();
+        this.tableList = res.data;
+      } catch (e) {
+        console.log(e);
+      }
+    },
     gotoDetail(row) {
       // 跳转到分部数据详情 row.organId
-      this.$router.push({name:'organDateDetail',params:{organId:1}})
+      this.$router.push({ name: "organDateDetail", params: { organId: row.organId } });
     },
   },
 };

+ 27 - 11
src/views/main/cloudDate/organDateDetail.vue

@@ -1,10 +1,12 @@
 <!--  -->
 <template>
   <div class="m-container">
-    <h2>
-      <div class="squrt"></div>
-      分部云教练数据详情
-    </h2>
+    <el-page-header
+      @back="goback"
+      style="padding-bottom: 30px"
+      content="分部云教练数据详情"
+    >
+    </el-page-header>
     <div class="m-core">
       <save-form
         :inline="true"
@@ -108,10 +110,11 @@ import axios from "axios";
 import { getToken } from "@/utils/auth";
 import pagination from "@/components/Pagination/index";
 import load from "@/utils/loading";
-import organStudentDetail from './organStudentDetail'
+import organStudentDetail from "./organStudentDetail";
+import { organStudentData } from "../api";
 export default {
   name: "organDateDetail",
-  components: { pagination,organStudentDetail },
+  components: { pagination, organStudentDetail },
   data() {
     return {
       searchForm: {
@@ -127,7 +130,7 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50], // 选择限制显示条数
       },
-      studentVisible:false
+      studentVisible: false,
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -137,24 +140,37 @@ export default {
     // 获取分部
     await this.$store.dispatch("setBranchs");
     if (this.$route.params?.organId) {
-      this.searchForm.organId = this.$route.query.params.organId;
+      this.searchForm.organId = this.$route.params.organId;
     }
 
     this.init();
   },
   methods: {
-    init() {},
-    getList() {},
+    init() {
+      this.getList()
+    },
+   async getList() {
+     try{
+       const res = await organStudentData({organId:this.searchForm.organId,page:this.rules.page,rows:this.rules.limit})
+       this.tableList = res.data.detail.rows
+       this.rules.total = res.data.detail.total;
+     }catch(e){
+       console.log(e)
+     }
+    },
     search() {
       this.rules.page = 1;
       this.getList();
-      console.log(this.$refs.saveForm);
       this.$refs.saveForm.save();
     },
     onReSet() {},
     gotoDetail() {
       this.studentVisible = true;
     },
+    goback() {
+      this.$store.dispatch("delVisitedViews", this.$route);
+      this.$router.push({ path: "/main/main?tabrouter=cloudDate" });
+    },
   },
 };
 </script>

+ 52 - 30
src/views/main/constant.js

@@ -32,30 +32,44 @@ export const descs = {
   QUIT_MUSIC_GROUP_STUDENT_NUM: '筛选时间段内,乐团退团学员总数(学员无在读乐团,则记为退团)',
   VIP_PRACTICE_STUDENT_NUM: '筛选时间段中最后一日,学员有剩余VIP或网管未上课时的总人数(分部下去重)',
   VIP_PRACTICE_ADD_STUDENT_NUM: '筛选时间段内,新增的VIP/网管课付费学员总数',
-  MUSIC_PATROL_ITEM:'乐团主管提交的巡查表中有未勾选事项',
-  HIGH_CLASS_STUDENT_LESS_THAN_THREE:'基础技能班学员数量<3',
-  STUDENT_NOT_PAYMENT:'当前时间以前的缴费项目中未缴费学员数量',
-  STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP:'未处理的学员退团申请数量',
-  TEACHER_EXPECT_SALARY_BE_LOW:'本月预计课酬未达到系统设置的分部基本课酬标准的老师人数',
-  INSPECTION_ITEM:'乐团主管未完成巡查计划安排',
-  INSPECTION_ITEM_PLAN:'乐团主管已安排的巡查任务未提交',
-  STUDENT_VISIT:'乐团主管未完成回访任务',
-  TEACHER_EXCEPTION_ATTENDANCE:'课程上有老师或学员考勤异常',
-  TEACHER_NOT_A_CLASS:'课程无老师考勤',
-  TEACHER_SERVE_ERROR:'服务指标生成的训练未布置',
-  WAIT_CREATE_PAYMENT_CALENDER:'缴费项目有效期结束前7天',
+  MUSIC_PATROL_ITEM: '乐团主管提交的巡查表中有未勾选事项',
+  HIGH_CLASS_STUDENT_LESS_THAN_THREE: '基础技能班学员数量<3',
+  STUDENT_NOT_PAYMENT: '当前时间以前的缴费项目中未缴费学员数量',
+  STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP: '未处理的学员退团申请数量',
+  TEACHER_EXPECT_SALARY_BE_LOW: '本月预计课酬未达到系统设置的分部基本课酬标准的老师人数',
+  INSPECTION_ITEM: '乐团主管未完成巡查计划安排',
+  INSPECTION_ITEM_PLAN: '乐团主管已安排的巡查任务未提交',
+  STUDENT_VISIT: '乐团主管未完成回访任务',
+  TEACHER_EXCEPTION_ATTENDANCE: '课程上有老师或学员考勤异常',
+  TEACHER_NOT_A_CLASS: '课程无老师考勤',
+  TEACHER_SERVE_ERROR: '服务指标生成的训练未布置',
+  WAIT_CREATE_PAYMENT_CALENDER: '缴费项目有效期结束前7天',
   NO_CLASS_MUSIC_GROUP_STUDENT_INFO: '进行中乐团不在班级中的在读学员提醒',
   COURSE_TIME_ERROR: '上课时间在21:00~06:00时间段内为时间安排异常',
-  TOTAL_AMOUNT:'总收入:现金收入 + 余额收入',
+  TOTAL_AMOUNT: '总收入:现金收入 + 余额收入',
   STUDENT_ERROR_LEAVE: '当月请假2次及以上',
   STUDENT_ARREARAGE: '缴费项目中的学员未缴费',
-  NO_MEMBER_STUDENT_INFO:'进行中会员收费乐团中会员已过期在读学生数量',
-  MEMBER_STUDENT_INFO:"进行中会员收费乐团中会员有效期≤15天的在读学生数量" ,
-  APPLY_AMOUNT:"乐团报名缴费、新增学员缴费收入金额总和",
-   PRACTICE_AMOUNT:"网管课购买、续费金额总和",
-   OTHER_AMOUNT:"其他收入金额总和",
-   RENEW_AMOUNT:"乐团续费、临时加课、合班缴费金额总和",
-    VIP_AMOUNT:"VIP课购买、续费、复学、课程组新增学员收入金额总和",
+  NO_MEMBER_STUDENT_INFO: '进行中会员收费乐团中会员已过期在读学生数量',
+  MEMBER_STUDENT_INFO: "进行中会员收费乐团中会员有效期≤15天的在读学生数量",
+  APPLY_AMOUNT: "乐团报名缴费、新增学员缴费收入金额总和",
+  PRACTICE_AMOUNT: "网管课购买、续费金额总和",
+  OTHER_AMOUNT: "其他收入金额总和",
+  RENEW_AMOUNT: "乐团续费、临时加课、合班缴费金额总和",
+  VIP_AMOUNT: "VIP课购买、续费、复学、课程组新增学员收入金额总和",
+  "vipStudentNum":'会员生效中或待生效总人数',
+  "eVipStudentNum":'如果是试用会员又是付费会员,则不算试用会员数',
+  "cloudStudyLivelyStudentNum":'近15天内使用达到5天及以上的用户总数',
+  "newCloudStudyStudentNum":'第一次使用云教练的人数',
+  "cloudStudyTodayUseStudentNum":'今日使用的总人数',
+  "cloudStudyUseStudentNum":'累计使用的总人数',
+}
+export const titles = {
+  "vipStudentNum":'付费会员人数',
+  "eVipStudentNum":'试用会员人数',
+  "cloudStudyLivelyStudentNum":'活跃用户 ',
+  "newCloudStudyStudentNum":'今日新增使用人数',
+  "cloudStudyTodayUseStudentNum":'今日使用人数',
+  "cloudStudyUseStudentNum":'累计使用人数',
 }
 
 
@@ -84,7 +98,7 @@ export const errorType = {
     always: true,
     query: {
       tabrouter: 'teamSchedule',
-      searchType:'MUSIC_PATROL_ITEM',
+      searchType: 'MUSIC_PATROL_ITEM',
       ...dates,
     },
   },
@@ -104,24 +118,28 @@ export const errorType = {
     url: '/main/teamMemberList',
     permission: '/teamMemberList',
     always: true,
-    query: {hasMember:'0'}
+    query: {
+      hasMember: '0'
+    }
   },
-  MUSIC_GROUP_PERFORMANCE:{
+  MUSIC_GROUP_PERFORMANCE: {
     name: '当前共有{0}个乐团共{1}次展演计划',
     isError: false,
     url: '/main/teamShowList',
     permission: '/teamShowList',
     always: true,
   },
-  MEMBER_STUDENT_INFO:{
+  MEMBER_STUDENT_INFO: {
     name: '当前共有{0}个乐团共{1}名学员会员即将过期',
     isError: true,
     url: '/main/teamMemberList',
     permission: '/teamMemberList',
     always: true,
-    query: {hasMember:'1'}
+    query: {
+      hasMember: '1'
+    }
   },
-  NO_CLASS_MUSIC_GROUP_STUDENT_INFO :{
+  NO_CLASS_MUSIC_GROUP_STUDENT_INFO: {
     name: '当前有{0}个乐团共{1}名学员未加入任何班级',
     isError: true,
     url: '/main/notClassStudent',
@@ -135,13 +153,15 @@ export const errorType = {
     permission: '/studentLeaveList',
     always: true,
   },
-  STUDENT_ARREARAGE:{
+  STUDENT_ARREARAGE: {
     name: '未缴费学员数',
     isError: true,
     url: '/studentManager/ArrearageStudents',
     permission: '/ArrearageStudents',
     always: true,
-    query: {noPaymentType:'0'}
+    query: {
+      noPaymentType: '0'
+    }
   },
   STUDENT_NOT_PAYMENT: {
     name: '未缴费学员数',
@@ -149,7 +169,9 @@ export const errorType = {
     url: '/studentManager/ArrearageStudents',
     permission: '/ArrearageStudents',
     always: true,
-    query: {noPaymentType:'1'}
+    query: {
+      noPaymentType: '1'
+    }
   },
   STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP: {
     name: '申请退团学员数',
@@ -281,7 +303,7 @@ export const errorType = {
     permission: '/serverDetail',
     query: {
       searchType: 'TEACHER_SERVE_ERROR',
-      unDone:1,
+      unDone: 1,
       reminded: 0
     },
   }

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

@@ -65,7 +65,7 @@
             ></el-option>
           </el-select> -->
         </el-form-item>
-                <el-form-item prop="hasMember">
+        <el-form-item prop="hasMember">
           <el-select
             class="multiple"
             v-model.trim="searchForm.hasMember"
@@ -74,6 +74,7 @@
           >
             <el-option label="是" value="1"></el-option>
             <el-option label="否" value="0"></el-option>
+            <el-option label="未生效" value="2"></el-option>
           </el-select>
         </el-form-item>
 
@@ -175,7 +176,7 @@
                         ></overflow-text>
                       </div> </el-form-item
                   ></el-col>
-                  <el-col  :span="4">
+                  <el-col :span="4">
                     <el-form-item>
                       <span slot="label"
                         >是否激活
@@ -189,17 +190,17 @@
                       <span>{{ props.row.isActive ? "是" : "否" }}</span>
                     </el-form-item></el-col
                   >
-                  <el-col  :span="4">
+                  <el-col :span="4">
                     <el-form-item label="课程余额(元)">
                       <span>{{ props.row.courseBalance | moneyFormat }}</span>
                     </el-form-item></el-col
                   >
-                  <el-col  :span="4">
+                  <el-col :span="4">
                     <el-form-item label="网管课剩余课时">
                       <span>{{ props.row.noStartPracticeCourseNum }}</span>
                     </el-form-item></el-col
                   >
-                  <el-col  :span="4">
+                  <el-col :span="4">
                     <el-form-item label="关心包">
                       <span>
                         {{ props.row.carePackage | studentPackage }}
@@ -365,9 +366,22 @@
                 :class="checkDate(scope.row.membershipEndTime) ? '' : 'red'"
               >
                 {{ scope.row.membershipEndTime | dayjsFormat }}
-                <p class="red" v-if="scope.row.membershipEndTime">
+                <p
+                  class="red"
+                  v-if="
+                    scope.row.membershipEndTime && scope.row.membershipDay >= 0
+                  "
+                >
                   剩余{{ scope.row.membershipDay }}天
                 </p>
+                <p
+                  class="red"
+                  v-if="
+                    scope.row.membershipEndTime && scope.row.membershipDay < 0
+                  "
+                >
+                  已过期{{ Math.abs(scope.row.membershipDay) }}天
+                </p>
               </div>
               <div v-else class="red">未购买会员</div>
             </template>
@@ -382,9 +396,24 @@
                 <p :class="checkDate(scope.row.membershipEndTime) ? '' : 'red'">
                   {{ scope.row.experienceMembershipEndTime | dayjsFormat }}
                 </p>
-                <p class="red" v-if="scope.row.experienceMembershipEndTime">
+                <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>

+ 44 - 4
src/views/teamDetail/components/studentList.vue

@@ -1,7 +1,8 @@
 <template>
   <div class="stu-container">
-    <div class="studentListWrap" v-if="team_status == 'PROGRESS'">
+    <div class="studentListWrap">
       <div
+        v-if="team_status == 'PROGRESS'"
         class="newBand"
         v-permission="'studentRegistration/insertStudent'"
         @click="createStudentFrom"
@@ -403,9 +404,24 @@
           <template slot-scope="scope">
             <div>
               {{ scope.row.musicMembershipEndTime | dayjsFormat }}
-              <p class="error" v-if="scope.row.musicMembershipEndTime">
+              <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>
@@ -417,9 +433,24 @@
           <template slot-scope="scope">
             <div>
               {{ scope.row.experienceMembershipEndTime | dayjsFormat }}
-              <p class="error" v-if="scope.row.experienceMembershipEndTime">
+              <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>
@@ -431,9 +462,18 @@
           <template slot-scope="scope">
             <div>
               {{ scope.row.membershipEndTime | dayjsFormat }}
-              <p class="error" v-if="scope.row.membershipEndTime">
+              <p class="error" v-if="scope.row.membershipEndTime&&scope.row.membershipDay>=0">
                 剩余{{ scope.row.membershipDay }}天
               </p>
+                       <p
+                class="error"
+                v-if="
+                  scope.row.membershipEndTime &&
+                  scope.row.membershipDay < 0
+                "
+              >
+                已过期{{ Math.abs(scope.row.membershipDay) }}天
+              </p>
             </div>
           </template>
         </el-table-column>

+ 3 - 3
vue.config.js

@@ -19,9 +19,9 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.148:8000' //邹璇
 // let target = 'http://192.168.3.112:8000' //勇哥
-let target = 'http://dev.dayaedu.com' // 开发环境
-// let target = 'https://test.dayaedu.com' //测试环境
-// let target = 'http://192.168.3.134' // 乔
+// let target = 'http://dev.dayaedu.com' // 开发环境
+let target = 'https://test.dayaedu.com' //测试环境
+// let target = 'http://192.168.3.134:8000' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
   /**