Browse Source

Merge branch '07/06musicArchives' into test

mo 3 years ago
parent
commit
b3bda0ef0a

+ 50 - 12
src/views/categroyManager/productSystem/memberSet.vue

@@ -47,6 +47,16 @@
           </el-image>
         </template>
       </el-table-column>
+            <el-table-column align="center" prop="type" label="试用会员标识">
+        <template slot-scope="scope">
+          <el-image
+            style="width: 100px; height: 100px"
+            :src="scope.row.experienceIcon"
+            :preview-src-list="[scope.row.experienceIcon]"
+          >
+          </el-image>
+        </template>
+      </el-table-column>
       <!-- <el-table-column
         align="center"
         prop="type"
@@ -148,6 +158,25 @@
             :imageHeightM="200"
           ></upload>
           <img v-else :src="form.icon" alt="" width="120px" height="120px" />
+          <!-- <p style="color: red" v-if="!addDisabled">
+            请上传200*200像素,大小2M以内,格式为jpg、png、gif图片
+          </p> -->
+        </el-form-item>
+        <br>
+        <el-form-item
+          label="试用会员标识"
+          prop="experienceIcon"
+          :label-width="formLabelWidth"
+          :rules="[{ required: true, message: '请上传试用会员标识' }]"
+        >
+          <upload
+            v-if="!addDisabled"
+            v-model="form.experienceIcon"
+            :imageWidthM="200"
+            :disabled="addDisabled"
+            :imageHeightM="200"
+          ></upload>
+          <img v-else :src="form.experienceIcon" alt="" width="120px" height="120px" />
           <p style="color: red" v-if="!addDisabled">
             请上传200*200像素,大小2M以内,格式为jpg、png、gif图片
           </p>
@@ -280,6 +309,7 @@ export default {
         name: "",
         icon: "",
         into: "",
+        experienceIcon:'',
       },
       addDisabled: false,
       checkAll: false,
@@ -338,9 +368,12 @@ export default {
       this.title = "新增会员等级";
       this.addDisabled = false;
       this.pageType = "create";
-     await this.getNewTree();
+      await this.getNewTree();
       this.slideCount = 0;
-      this.treeData = await this.setTableData(this.silderList, this.addDisabled);
+      this.treeData = await this.setTableData(
+        this.silderList,
+        this.addDisabled
+      );
       this.branchStatus = true;
     },
     onSubmit() {
@@ -426,22 +459,27 @@ export default {
       return list;
     },
     async resetMember(row, type) {
-       this.branchStatus = true;
-    await  this.resetTree(row);
+      this.branchStatus = true;
+      await this.resetTree(row);
       if (type) {
         this.title = "修改会员等级";
         this.pageType = "update";
         this.addDisabled = false;
         this.slideCount = 0;
-        this.treeData = await this.setTableData(this.silderList, this.addDisabled);
+        this.treeData = await this.setTableData(
+          this.silderList,
+          this.addDisabled
+        );
       } else {
         this.addDisabled = true;
         this.title = "查看会员等级";
         this.pageType = "";
         this.slideCount = 0;
-        this.treeData = await this.setTableData(this.silderList, this.addDisabled);
+        this.treeData = await this.setTableData(
+          this.silderList,
+          this.addDisabled
+        );
       }
-
     },
     //递归获取到所有的为子级的ID
     getParent(checkIds, data) {
@@ -470,12 +508,13 @@ export default {
     },
     async resetTree(row) {
       try {
-       this.treeData = await this.getNewTree()
+        this.treeData = await this.getNewTree();
         const res = await getmemberRankDetail({ memberRankSettingId: row.id });
         this.form = { ...res.data };
 
         this.checkAll =
-          res.data.memberPrivilegesItemIdList?.length >= this.slideCount || false;
+          res.data.memberPrivilegesItemIdList?.length >= this.slideCount ||
+          false;
         // 反写树的值
         this.isIndeterminate =
           res.data.memberPrivilegesItemIdList?.length > 0 &&
@@ -483,7 +522,7 @@ export default {
 
         this.checkList = res.data.memberPrivilegesItemIdList;
         let tSplice = this.getParent(
-          res.data.memberPrivilegesItemIdList||[],
+          res.data.memberPrivilegesItemIdList || [],
           this.treeData
         );
         this.checkList = tSplice;
@@ -499,9 +538,8 @@ export default {
         const resTree = await getMemberPrivilegesItem();
         this.silderList = resTree.data;
         this.slideCount = 0;
-         return this.setTableData(resTree.data)
+        return this.setTableData(resTree.data);
       } catch {}
-
     },
   },
 };

+ 2 - 2
src/views/main/api.js

@@ -156,8 +156,8 @@ export const organStudentOverView = (data) => request2({
 
 // 分部老师数据
 
-export const organStudentData = (data) => request2({
-  url: '/api-web/studentManage/organStudentData',
+export const queryMemberStudentData = (data) => request2({
+  url: '/api-web/teacher/queryMemberStudentData',
   method: 'get',
   params: data
 })

+ 124 - 66
src/views/main/cloudDate/activeUserNum.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-card>
-      <headers title="活跃用户统计" />
+      <headers title="活跃用户统计" @changeOrgan='changeOrgan'/>
       <div class="chioseBox">
         <el-radio-group v-model="timers" size="mini" @change="changeQuick">
           <el-radio-button label="month">本月</el-radio-button>
@@ -9,8 +9,9 @@
           <el-radio-button label="lastYear">去年</el-radio-button>
         </el-radio-group>
         <el-date-picker
-          v-model="date"
+          v-model="mdate"
           type="daterange"
+          class="datePick"
           style="width: 300px; padding: 0 10px"
           range-separator="-"
           start-placeholder="开始日期"
@@ -22,7 +23,8 @@
           :picker-options="bigin()"
         >
         </el-date-picker>
-        单位:
+        <p>单位:</p>
+
         <el-radio-group v-model="timer" size="mini">
           <el-radio-button label="day">按天</el-radio-button>
           <el-radio-button label="month">按月</el-radio-button>
@@ -45,6 +47,9 @@ import "echarts/lib/component/dataZoom";
 import headers from "./modals/headers.vue";
 import veLine from "v-charts/lib/line.common";
 import { getNowDateAndSunday, getNowDateAndMonday } from "@/utils/date";
+import { getIndex } from "../api";
+import { getTimes } from "@/utils";
+import { descs, chioseNum } from "../constant";
 export default {
   components: {
     headers,
@@ -52,9 +57,11 @@ export default {
   },
   data() {
     return {
-      timer: "", // 按天 按月
+      timer: "day", // 按天 按月
       timers: "", // 本月 本年 去年
-      date: [],
+      mdate: [],
+      data: [],
+      organId:''
     };
   },
   mounted() {
@@ -68,16 +75,18 @@ export default {
     },
     items() {
       let obj = {};
-      // let arr = [
-      //   "HOMEWORK_CREATE_RATE",
-      //   "HOMEWORK_SUBMIT_RATE",
-      //   "HOMEWORK_COMMENT_RATE",
-      // ];
-      // arr.forEach((str) => {
-      //   if (this.data[str]) {
-      //     obj[str] = this.data[str];
-      //   }
-      // });
+      let arr = [
+        "MEMBER_STUDENT_NUM",
+        "CLOUD_STUDY_LIVELY_STUDENT_NUM",
+        "CLOUD_STUDY_DAY_USE_STUDENT_NUM",
+        "CLOUD_STUDY_NEW_STUDENT_NUM"
+      ];
+      arr.forEach((str) => {
+        if (this.data[str]) {
+          obj[str] = this.data[str];
+        }
+      });
+      console.log(this.data, obj);
       /**
        *  {
         HOMEWORK_CREATE_RATE:this.data["HOMEWORK_CREATE_RATE"] || {},
@@ -143,30 +152,28 @@ export default {
           const key = this.$helpers.dayjs(row.month).format("YYYY-MM-DD");
           if (!months[key]) {
             months[key] = {
-              日期: key + "/" + getNowDateAndSunday(key),
+              日期: key,
             };
           }
           months[key][item.title] = row.percent;
         }
       }
-
       return {
-        columns: [
-          "日期",
-          ...values.map((item) => {
-            return item.title;
-          }),
-        ],
+        columns: ["日期", ...values.map((item) => item.title)],
         rows: Object.values(months),
       };
     },
     chartDataForMoth() {
-      const values = Object.values({ ...this.items, ...this.items2 });
+      const values = Object.values(this.items);
+      //   console.log(values)
+      // values['VIP_GROUP_COURSE'].forEach(item=>{
+      //     console.log(item.month)
+      //   })
       const months = {};
+
       for (const item of values) {
         for (const row of item.indexMonthData || []) {
           const key = this.$helpers.dayjs(row.month).format("YYYY-MM");
-
           if (!months[key]) {
             months[key] = {
               月份: key,
@@ -174,43 +181,61 @@ export default {
             months[key][item.title] = row.percent;
           } else {
             if (months[key][item.title]) {
-              months[key][item.title] = (
-                parseFloat(months[key][item.title]) + parseFloat(row.percent)
-              ).toFixed(2);
+              months[key][item.title] += parseFloat(row.percent);
             } else {
-              months[key][item.title] = parseFloat(row.percent).toFixed(2);
+              months[key][item.title] = row.percent;
             }
           }
         }
       }
+      // console.log(Object.values(months));
       return {
-        columns: [
-          "月份",
-          "总收入",
-          "现金收入",
-          "余额收入",
-          "财务支出",
-          "报名缴费收入",
-          "网管课收入",
-          "其他收入",
-          "乐团续费收入",
-          "VIP课收入",
-        ],
+        columns: ["月份", ...values.map((item) => item.title)],
         rows: Object.values(months),
-        loading: true,
       };
     },
     dataEmpty() {
       return !this.chartData.rows.length;
     },
+    chartExtend() {
+      return {
+        series: {
+          type: "line",
+          smooth: false,
+        },
+        yAxis: {
+          //纵轴标尺固定
+          minInterval: 1,
+          type: "value",
+          scale: true,
+          min: 0,
+          axisLabel: {
+            formatter: "{value}节",
+          },
+        },
+        tooltip: {
+          axisPointer: {
+            type: "shadow",
+            shadowStyle: {
+              color: "rgba(150,150,150,0.2)",
+            },
+          },
+          formatter: (item) => {
+            return [
+              item[0].axisValueLabel,
+              ...item.map(
+                (d) => `<br/>${d.marker}${d.seriesName}: ${d.value[1]}人`
+              ),
+            ].join("");
+          },
+        },
+      };
+    },
   },
   methods: {
     init() {
       let nowTiem = this.$helpers.dayjs(new Date()).format("YYYY-MM-DD");
-      let startTime = this.$helpers
-        .dayjs(getNowDateAndMonday(nowTiem))
-        .subtract(49, "day")
-        .format("YYYY-MM-DD");
+      let startTime = getNowDateAndMonday(nowTiem)
       let endTime = getNowDateAndSunday(nowTiem);
       this.mdate = [startTime, endTime];
       this.FetchDetail();
@@ -218,7 +243,8 @@ export default {
     changeValue(date) {
       // 请求更改数据
       this.mdate = date;
-      //  this.isDayOrMoth(date)
+      this.isDayOrMoth(date);
+      console.log('调用',date)
       this.FetchDetail();
     },
     async FetchDetail() {
@@ -226,15 +252,24 @@ export default {
       let data = [];
       try {
         // const { dates, ...rest } = this.search;
-        // const res = await getIndex({
         //   ...rest,
-        //   ...getTimes(this.mdate, ["startDate", "endDate"]),
-        //   dataTypes:
-        //     "HOMEWORK_CREATE_RATE,HOMEWORK_SUBMIT_RATE,HOMEWORK_COMMENT_RATE",
-        // });
+        const res = await getIndex({
+          ...getTimes(this.mdate, ["startDate", "endDate"]),
+          organId:this.organId,
+          dataTypes:
+            "MEMBER_STUDENT_NUM,CLOUD_STUDY_LIVELY_STUDENT_NUM,CLOUD_STUDY_DAY_USE_STUDENT_NUM,CLOUD_STUDY_NEW_STUDENT_NUM",
+        });
+        for (const item of res.data) {
+          data[item.dataType] = {
+            ...item,
+            desc: descs[item.dataType],
+          };
+        }
+        this.data = data;
         // for (const item of res.data) {
         //   // 再循环一遍
         //   for (const key in this.items) {
+
         //     if (item.dataType == key) {
         //       data[item.dataType] = {
         //         ...item,
@@ -247,7 +282,7 @@ export default {
         console.log(error);
       }
       this.loading = false;
-      // this.dataInfo = data;
+      this.data = data;
       // this.$emit("resetDate", data);
     },
     changeQuick(val) {
@@ -265,7 +300,9 @@ export default {
               .dayjs(new Date())
               .subtract(1, "day")
               .format("YYYY-MM-DD"));
-        this.date = [startDate, endDate];
+        this.mdate = [startDate, endDate];
+        this.isDayOrMoth(this.mdate);
+        this.FetchDetail();
         // this.submitDate(this.date);
       } else if (val == "year") {
         startDate = this.$helpers
@@ -279,7 +316,9 @@ export default {
               .dayjs(new Date())
               .subtract(1, "day")
               .format("YYYY-MM-DD"));
-        this.date = [startDate, endDate];
+        this.mdate = [startDate, endDate];
+        this.isDayOrMoth(this.mdate);
+        this.FetchDetail();
         // this.submitDate(this.date);
       } else if (val == "lastYear") {
         startDate = this.$helpers
@@ -293,15 +332,12 @@ export default {
           .subtract(1, "year")
           .endOf("year")
           .format("YYYY-MM-DD");
-        this.date = [startDate, endDate];
+        this.mdate = [startDate, endDate];
+        this.isDayOrMoth(this.mdate);
+        this.FetchDetail();
         // this.submitDate(this.date);
       }
     },
-    changeValue(val) {
-      this.timer = "";
-      this.date = val;
-      // this.submitDate(this.date);
-    },
     bigin() {
       let self = this;
       return {
@@ -316,6 +352,23 @@ export default {
         },
       };
     },
+    isDayOrMoth(arr) {
+      if (!arr || arr.length < 1) {
+        this.timer = "day";
+      } else {
+        const count = this.$helpers
+          .dayjs(arr[0])
+          .diff(this.$helpers.dayjs(arr[1]), "day");
+        Math.abs(count) > chioseNum
+          ? (this.timer = "month")
+          : (this.timer = "day");
+      }
+    },
+    changeOrgan(val){
+      this.organId = val;
+      this.FetchDetail()
+      // console.log('改变分部id',val)
+    }
   },
 };
 </script>
@@ -328,13 +381,18 @@ export default {
   position: absolute;
   right: 20px;
   z-index: 1000;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  p {
+    font-size: 14px;
+    margin: 0 5px 0 10px;
+  }
+  .datePick {
+    margin-left: 10px;
+  }
 }
 .wrap {
   position: relative;
 }
-.chioseBox {
-  position: absolute;
-  right: 20px;
-  z-index: 1000;
-}
 </style>

+ 7 - 0
src/views/main/cloudDate/modals/headers.vue

@@ -14,6 +14,7 @@
           filterable
           clearable
           placeholder="请选择分部"
+          @change='changeOrgan'
         >
           <el-option
             v-for="(item, index) in selects.branchs"
@@ -38,6 +39,12 @@ export default {
   async mounted() {
     await this.$store.dispatch("setBranchs");
   },
+  methods:{
+    changeOrgan(val){
+      this.organId = val;
+      this.$emit('changeOrgan',val)
+    }
+  }
 };
 </script>
 

+ 21 - 17
src/views/main/cloudDate/organDate.vue

@@ -7,6 +7,7 @@
           style="width: 100%"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
           :data="tableList"
+           @sort-change="sortChang(val)"
         >
           <el-table-column
             align="center"
@@ -17,7 +18,6 @@
             align="center"
             prop="totalStudentNum"
             label="学员总数"
-            sortable
           >
             <template slot="header" slot-scope="slot">
               <div class="titleCell">
@@ -41,7 +41,6 @@
             align="center"
             prop="cloudStudyLivelyStudentNum"
             label="活跃人数"
-            sortable
           >
             <template slot="header" slot-scope="slot">
               <div class="titleCell">
@@ -89,7 +88,6 @@
             </template>
           </el-table-column>
           <el-table-column
-            sortable
             align="center"
             prop="vipStudentNum"
             label="付费会员数"
@@ -113,7 +111,8 @@
             </template>
           </el-table-column>
           <el-table-column
-            sortable
+            sortable="custom"
+
             align="center"
             prop="vipStudentDuty"
             label="付费会员占比"
@@ -174,14 +173,13 @@
             </template>
           </el-table-column>
         </el-table>
-        <!-- <pagination
-          sync
+        <pagination
           :total.sync="rules.total"
           :page.sync="rules.page"
           :limit.sync="rules.limit"
           :page-sizes="rules.page_size"
           @pagination="getList"
-        /> -->
+        />
       </div>
     </el-card>
   </div>
@@ -197,14 +195,14 @@ export default {
   },
   data() {
     return {
-      tableList: [{}],
-      // rules: {
-      //   // 分页规则
-      //   limit: 10, // 限制显示条数
-      //   page: 1, // 当前页
-      //   total: 0, // 总条数
-      //   page_size: [10, 20, 40, 50], // 选择限制显示条数
-      // },
+      tableList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
     };
   },
   mounted() {
@@ -213,12 +211,18 @@ export default {
   methods: {
     async getList() {
       try {
-        const res = await organStudentOverView();
-        this.tableList = res.data;
+        const arr = [36,39,41,42,43,44,45,46,47,48,49,50,52,54,55,56]
+        const res = await organStudentOverView({page:this.rules.page,rows:this.rules.limit});
+        this.tableList= res.data.rows
+        this.rules.total = res.data.total;
+        // console.log(this.tableList)
       } catch (e) {
         console.log(e);
       }
     },
+    sortChang(val){
+      console.log('val',val)
+    },
     gotoDetail(row) {
       // 跳转到分部数据详情 row.organId
       this.$router.push({ name: "organDateDetail", params: { organId: row.organId } });

+ 21 - 15
src/views/main/cloudDate/organDateDetail.vue

@@ -44,38 +44,43 @@
         >
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="teacherName"
             label="老师姓名"
-            sortable
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="totalStudentNum"
             label="学员总数"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="vipStudentNum"
             label="付费会员数"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="eVipStudentNum"
             label="试用会员"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="vipStudentDuty"
             label="会员占比"
             sortable
-          ></el-table-column>
+          >
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.vipStudentDuty}}%
+            </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>
@@ -111,7 +116,7 @@ import { getToken } from "@/utils/auth";
 import pagination from "@/components/Pagination/index";
 import load from "@/utils/loading";
 import organStudentDetail from "./organStudentDetail";
-import { organStudentData } from "../api";
+import { queryMemberStudentData } from "../api";
 export default {
   name: "organDateDetail",
   components: { pagination, organStudentDetail },
@@ -151,9 +156,9 @@ export default {
     },
    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;
+       const res = await queryMemberStudentData({organId:this.searchForm.organId,page:this.rules.page,rows:this.rules.limit})
+       this.tableList = res.data.rows
+       this.rules.total = res.data.total;
      }catch(e){
        console.log(e)
      }
@@ -164,8 +169,9 @@ export default {
       this.$refs.saveForm.save();
     },
     onReSet() {},
-    gotoDetail() {
-      this.studentVisible = true;
+    gotoDetail(row) {
+      this.$router.push({name:'studentList',params:{teacherId:row.teacherId}})
+      // this.studentVisible = true;
     },
     goback() {
       this.$store.dispatch("delVisitedViews", this.$route);

+ 5 - 1
src/views/main/cloudDate/organRanking.vue

@@ -161,6 +161,7 @@
 <script>
 import headers from "./modals/headers.vue";
 import pagination from "@/components/Pagination/index";
+import dayjs from 'dayjs';
 export default {
   components: {
     headers,
@@ -179,7 +180,10 @@ export default {
       date: "",
     };
   },
-  mounted() {},
+  mounted() {
+    this.date = dayjs(new Date()).subtract(1, 'day').format('YYYY-MM-DD')
+
+  },
   methods: {
     getList() {},
     bigin() {

+ 31 - 33
src/views/studentManager/studentList.vue

@@ -349,41 +349,36 @@
             label="会员截止日期(剩余天数)"
           >
             <template slot-scope="scope">
-              <div
-                v-if="
-                  scope.row.membershipEndTime &&
-                  scope.row.memberRankSettingId == 0
-                "
-                class="red"
-              >
-                会员未生效
+              <div v-if="scope.row.membershipEndTime" class="red">
+                <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-if="
-                  scope.row.membershipEndTime &&
-                  scope.row.memberRankSettingId != 0
-                "
-                :class="checkDate(scope.row.membershipEndTime) ? '' : 'red'"
-              >
-                {{ scope.row.membershipEndTime | dayjsFormat }}
-                <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 v-else class="red">
+                <div v-if="scope.row.hasNoStartCloudTeacher">会员未生效</div>
+                <div v-else>未购买会员</div>
               </div>
-              <div v-else class="red">未购买会员</div>
             </template>
           </el-table-column>
           <el-table-column
@@ -950,6 +945,9 @@ export default {
     if (this.$route.params.search) {
       this.searchForm.search = this.$route.params.search;
     }
+    if (this.$route.params.teacherId) {
+      this.searchForm.teacherId = this.$route.params.teacherId;
+    }
     this.$store.dispatch("setBranchs");
     this.$store.dispatch("setTeachers");
     this.getList();

+ 48 - 17
src/views/teamDetail/components/studentList.vue

@@ -131,6 +131,18 @@
           <el-option label="是" value="1"></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item prop="hasMember">
+        <el-select
+          class="multiple"
+          v-model.trim="searchForm.hasMember"
+          clearable
+          placeholder="是否是会员"
+        >
+          <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>
       <el-form-item prop="isActive">
         <el-select
           v-model.trim="searchForm.isActive"
@@ -459,23 +471,38 @@
           align="center"
           width="120px;"
         >
-          <template slot-scope="scope">
-            <div>
-              {{ scope.row.membershipEndTime | dayjsFormat }}
-              <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>
+        <template slot-scope="scope">
+              <div v-if="scope.row.membershipEndTime" class="red">
+                <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>
+            </template>
         </el-table-column>
         <el-table-column label="备注" prop="remark" align="center">
           <template slot-scope="scope">
@@ -1394,6 +1421,7 @@ export default {
         oweFlag: this.searchForm.oweFlag || null,
         comeOnPackage: this.searchForm.comeOnPackage,
         carePackage: this.searchForm.carePackage,
+        hasMember: this.searchForm.hasMember,
       };
       return getTeamStudentList(obj).then((res) => {
         if (res.code == 200) {
@@ -2096,4 +2124,7 @@ export default {
 /deep/.el-table__expanded-cell[class*="cell"] {
   padding: 20px 0 20px 110px;
 }
+.red {
+  color:red;
+}
 </style>

+ 2 - 2
vue.config.js

@@ -20,8 +20,8 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // 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:8000' // 乔
+// 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 = {
   /**