ソースを参照

添加待激活

lex 2 年 前
コミット
16075c5ff2

+ 215 - 57
src/views/businessManager/orderManager/income.vue

@@ -14,73 +14,178 @@
         报表导出
       </el-button> -->
       <div class="btnList">
-        <ExportChiose v-permission="{ child: 'export/orderList', parent: '/income' }"
-          style="margin-bottom: 20px;margin-right:10px;" name="订单汇总导出" ExportEnum="ORDER_LIST_SUM"
-          :exportData="onOrderExport" fileName="订单汇总" errorMsg="请选择月份" :isDownList="true" />
-        <ExportChiose v-permission="{ child: 'export/orderList', parent: '/income' }"
-          style="margin-bottom: 20px;margin-right:10px;" name="报表导出" ExportEnum="ORDER_LIST1" :exportData="onOrderExport"
-          fileName="订单报表导出" errorMsg="请选择月份" :isDownList="true" />
+        <ExportChiose
+          v-permission="{ child: 'export/orderList', parent: '/income' }"
+          style="margin-bottom: 20px;margin-right:10px;"
+          name="订单汇总导出"
+          ExportEnum="ORDER_LIST_SUM"
+          :exportData="onOrderExport"
+          fileName="订单汇总"
+          errorMsg="请选择月份"
+          :isDownList="true"
+        />
+        <ExportChiose
+          v-permission="{ child: 'export/orderList', parent: '/income' }"
+          style="margin-bottom: 20px;margin-right:10px;"
+          name="报表导出"
+          ExportEnum="ORDER_LIST1"
+          :exportData="onOrderExport"
+          fileName="订单报表导出"
+          errorMsg="请选择月份"
+          :isDownList="true"
+        />
 
-        <ExportChiose v-permission="{ child: 'export/MALL_ORDER_LIST', parent: '/income' }" style="margin-bottom: 20px"
-          name="商城订单导出" ExportEnum="MALL_ORDER_LIST" :exportData="onOrderExport" fileName="商城订单导出" errorMsg="请选择月份"
-          :isDownList="true" />
+        <ExportChiose
+          v-permission="{ child: 'export/MALL_ORDER_LIST', parent: '/income' }"
+          style="margin-bottom: 20px"
+          name="商城订单导出"
+          ExportEnum="MALL_ORDER_LIST"
+          :exportData="onOrderExport"
+          fileName="商城订单导出"
+          errorMsg="请选择月份"
+          :isDownList="true"
+        />
       </div>
 
       <!-- 搜索类型 -->
-      <save-form :inline="true" class="searchForm" :model="searchForm" @submit="search" @reset="onReSet">
+      <save-form
+        :inline="true"
+        class="searchForm"
+        :model="searchForm"
+        @submit="search"
+        @reset="onReSet"
+      >
         <el-form-item>
-          <el-input placeholder="学生编号/姓名/手机号" type="text" clearable v-model.trim="searchForm.search"></el-input>
+          <el-input
+            placeholder="学生编号/姓名/手机号"
+            type="text"
+            clearable
+            v-model.trim="searchForm.search"
+          ></el-input>
         </el-form-item>
         <el-form-item>
-          <el-input placeholder="交易流水号" clearable type="text" v-model.trim="searchForm.transNo"></el-input>
+          <el-input
+            placeholder="交易流水号"
+            clearable
+            type="text"
+            v-model.trim="searchForm.transNo"
+          ></el-input>
         </el-form-item>
         <el-form-item>
-          <el-input placeholder="订单号" clearable type="text" v-model.trim="searchForm.orderNo"></el-input>
+          <el-input
+            placeholder="订单号"
+            clearable
+            type="text"
+            v-model.trim="searchForm.orderNo"
+          ></el-input>
         </el-form-item>
         <el-form-item>
-          <el-input placeholder="收款账户" clearable type="text" v-model.trim="searchForm.merNos"></el-input>
+          <el-input
+            placeholder="收款账户"
+            clearable
+            type="text"
+            v-model.trim="searchForm.merNos"
+          ></el-input>
         </el-form-item>
         <el-form-item>
-          <el-input placeholder="余额支付大于等于" clearable type="number" @mousewheel.native.prevent
-            v-model.trim="searchForm.balancePaymentAmount"></el-input>
+          <el-input
+            placeholder="余额支付大于等于"
+            clearable
+            type="number"
+            @mousewheel.native.prevent
+            v-model.trim="searchForm.balancePaymentAmount"
+          ></el-input>
         </el-form-item>
         <el-form-item>
-          <el-input placeholder="余额支付小于等于" clearable type="number" @mousewheel.native.prevent
-            v-model.trim="searchForm.lessBalancePaymentAmount"></el-input>
+          <el-input
+            placeholder="余额支付小于等于"
+            clearable
+            type="number"
+            @mousewheel.native.prevent
+            v-model.trim="searchForm.lessBalancePaymentAmount"
+          ></el-input>
         </el-form-item>
         <el-form-item>
-          <el-input placeholder="现金支付大于等于" clearable type="number" @mousewheel.native.prevent
-            v-model.trim="searchForm.actualAmount"></el-input>
+          <el-input
+            placeholder="现金支付大于等于"
+            clearable
+            type="number"
+            @mousewheel.native.prevent
+            v-model.trim="searchForm.actualAmount"
+          ></el-input>
         </el-form-item>
         <el-form-item>
-          <el-input placeholder="现金支付小于等于" clearable type="number" @mousewheel.native.prevent
-            v-model.trim="searchForm.lessActualAmount"></el-input>
+          <el-input
+            placeholder="现金支付小于等于"
+            clearable
+            type="number"
+            @mousewheel.native.prevent
+            v-model.trim="searchForm.lessActualAmount"
+          ></el-input>
         </el-form-item>
         <el-form-item prop="organId">
-          <el-select class="multiple" v-model.trim="searchForm.organId" filterable collapse-tags clearable multiple
-            @clear="onClear('organId')" placeholder="请选择分部">
-            <el-option v-for="(item, index) in selects.branchs" :key="index" :label="item.name"
-              :value="item.id"></el-option>
+          <el-select
+            class="multiple"
+            v-model.trim="searchForm.organId"
+            filterable
+            collapse-tags
+            clearable
+            multiple
+            @clear="onClear('organId')"
+            placeholder="请选择分部"
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-date-picker v-model="searchForm.orderDate" style="width: 410px" type="daterange" value-format="yyyy-MM-dd"
-            range-separator="至" :picker-options="{
+          <el-date-picker
+            v-model="searchForm.orderDate"
+            style="width: 410px"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            :picker-options="{
               firstDayOfWeek: 1
-            }" start-placeholder="订单开始日期" end-placeholder="订单结束日期"></el-date-picker>
+            }"
+            start-placeholder="订单开始日期"
+            end-placeholder="订单结束日期"
+          ></el-date-picker>
         </el-form-item>
         <el-form-item>
-          <el-select v-model.trim="searchForm.paymentType" clearable filterable @clear="onClear('paymentType')"
-            placeholder="交易类型">
-            <el-option v-for="(item, index) in orderStatus" :key="index" :label="item.label"
-              :value="item.value"></el-option>
+          <el-select
+            v-model.trim="searchForm.paymentType"
+            clearable
+            filterable
+            @clear="onClear('paymentType')"
+            placeholder="交易类型"
+          >
+            <el-option
+              v-for="(item, index) in orderStatus"
+              :key="index"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-select v-model.trim="searchForm.paymentStatus" clearable filterable @clear="onClear('paymentStatus')"
-            placeholder="交易状态">
-            <el-option v-for="(item, index) in dealStatus" :key="index" :label="item.label"
-              :value="item.value"></el-option>
+          <el-select
+            v-model.trim="searchForm.paymentStatus"
+            clearable
+            filterable
+            @clear="onClear('paymentStatus')"
+            placeholder="交易状态"
+          >
+            <el-option
+              v-for="(item, index) in dealStatus"
+              :key="index"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
@@ -102,35 +207,64 @@
         实收金额=应收总额(包含余额支付)
         预收金额=充值总额(发生消费,记负数)
         预收余额=充值总余额 -->
-        营收金额:{{ totalRevenueAmount | moneyFormat }}元<i style="width: 10px; display: inline-block"></i>
-        实收金额:{{ totalActualAmount | moneyFormat }}元<i style="width: 10px; display: inline-block"></i>
-        预收金额:{{ totalAdvanceAmount | moneyFormat }}元<i style="width: 10px; display: inline-block"></i>
+        营收金额:{{ totalRevenueAmount | moneyFormat }}元<i
+          style="width: 10px; display: inline-block"
+        ></i>
+        实收金额:{{ totalActualAmount | moneyFormat }}元<i
+          style="width: 10px; display: inline-block"
+        ></i>
+        预收金额:{{ totalAdvanceAmount | moneyFormat }}元<i
+          style="width: 10px; display: inline-block"
+        ></i>
         预收余额:{{ totalUserBalance | moneyFormat }}元
       </div>
       <div class="tableWrap">
-        <el-table :data="tableList" :header-cell-style="{ background: '#EDEEF0', color: '#444' }">
-          <el-table-column align="center" prop="transNo" label="所属分部" v-if="tenantId != 28">
+        <el-table
+          :data="tableList"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        >
+          <el-table-column
+            align="center"
+            prop="transNo"
+            label="所属分部"
+            v-if="tenantId != 28"
+          >
             <template slot-scope="scope">
               <div>
                 <copy-text>{{ scope.row.organName }}</copy-text>
               </div>
             </template>
           </el-table-column>
-          <el-table-column align="center" width="100px" prop="transNo" label="交易流水号">
+          <el-table-column
+            align="center"
+            width="100px"
+            prop="transNo"
+            label="交易流水号"
+          >
             <template slot-scope="scope">
               <div>
                 <copy-text>{{ scope.row.transNo }}</copy-text>
               </div>
             </template>
           </el-table-column>
-          <el-table-column align="center" width="100px" prop="orderNo" label="订单号">
+          <el-table-column
+            align="center"
+            width="100px"
+            prop="orderNo"
+            label="订单号"
+          >
             <template slot-scope="scope">
               <div>
                 <copy-text>{{ scope.row.orderNo }}</copy-text>
               </div>
             </template>
           </el-table-column>
-          <el-table-column align="center" width="150" prop="createTime" label="订单日期">
+          <el-table-column
+            align="center"
+            width="150"
+            prop="createTime"
+            label="订单日期"
+          >
             <template slot-scope="scope">{{
               scope.row.createTime | dateForMinFormat
             }}</template>
@@ -145,7 +279,7 @@
               <div>
                 {{
                   (scope.row.couponRemitFee + scope.row.expectAmount)
-                  | moneyFormat
+                    | moneyFormat
                 }}
               </div>
             </template>
@@ -165,7 +299,11 @@
             </template>
           </el-table-column>
 
-          <el-table-column align="center" prop="balancePaymentAmount" label="余额支付">
+          <el-table-column
+            align="center"
+            prop="balancePaymentAmount"
+            label="余额支付"
+          >
             <template slot-scope="scope">
               <div>
                 {{ scope.row.balancePaymentAmount | moneyFormat }}
@@ -182,14 +320,21 @@
           <el-table-column align="center" label="学员姓名" width="150px">
             <template slot-scope="scope">
               <copy-text v-if="scope.row.user.username">
-                {{ scope.row.user.username }}</copy-text>
-              <span v-if="scope.row.user.username && scope.row.user.phone">/</span>
+                {{ scope.row.user.username }}</copy-text
+              >
+              <span v-if="scope.row.user.username && scope.row.user.phone"
+                >/</span
+              >
               <copy-text v-if="scope.row.user.phone">
                 {{ scope.row.user.phone }}
               </copy-text>
             </template>
           </el-table-column>
-          <el-table-column align="center" prop="paymentChannel" label="交易方式">
+          <el-table-column
+            align="center"
+            prop="paymentChannel"
+            label="交易方式"
+          >
             <template slot-scope="scope">{{
               scope.row.paymentChannel | paymentChannelStatus
             }}</template>
@@ -210,14 +355,26 @@
           </el-table-column>
           <el-table-column align="center" width="150px" label="操作">
             <template slot-scope="scope">
-              <el-button v-if="scope.row.status != 'SUCCESS' && scope.row.actualAmount > 0
-                " v-permission="'order/getOrderStatus'" @click="onGetOrderStatus(scope.row)"
-                type="text">查询订单状态</el-button>
+              <el-button
+                v-if="
+                  scope.row.status != 'SUCCESS' && scope.row.actualAmount > 0
+                "
+                v-permission="'order/getOrderStatus'"
+                @click="onGetOrderStatus(scope.row)"
+                type="text"
+                >查询订单状态</el-button
+              >
             </template>
           </el-table-column>
         </el-table>
-        <pagination sync :total.sync="pageInfo.total" :page.sync="pageInfo.page" :limit.sync="pageInfo.limit"
-          :page-sizes="pageInfo.page_size" @pagination="getList" />
+        <pagination
+          sync
+          :total.sync="pageInfo.total"
+          :page.sync="pageInfo.page"
+          :limit.sync="pageInfo.limit"
+          :page-sizes="pageInfo.page_size"
+          @pagination="getList"
+        />
       </div>
     </div>
   </div>
@@ -284,7 +441,8 @@ export default {
     this.$store.dispatch("setBranchs");
     if (this.$route.params?.orderNo || this.$route.query?.orderNo) {
       this.searchForm.orderDate = [];
-      this.searchForm.orderNo = this.$route.params.orderNo || this.$route.query?.orderNo;
+      this.searchForm.orderNo =
+        this.$route.params.orderNo || this.$route.query?.orderNo;
       this.searchForm.paymentStatus = null;
     }
     this.getList();
@@ -451,7 +609,7 @@ export default {
             this.getList();
           });
         })
-        .catch(err => { });
+        .catch(err => {});
     },
     onReSet() {
       // 重置搜索

+ 158 - 133
src/views/resetTeaming/api.js

@@ -1,149 +1,174 @@
-import request2 from '@/utils/request2'
-
-export const musicGroupPaymentCalenderQueryPage = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/queryPage',
-  data: {},
-  params: data,
-  requestType: 'form'
-})
-
-export const musicGroupPaymentCalenderAdd = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/add',
-  data,
-  method: 'post',
-})
-
-export const musicGroupcreateCalender = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/createCalender',
-  data,
-  method: 'post',
-
-})
-export const musicGroupresetCalender = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/updateCalender',
-  data,
-  method: 'post',
-
-})
-
-
-
-
-export const musicGroupPaymentCalenderView = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/getDetail',
-  data: {},
-  params: data,
-  method: 'get',
-})
-export const musicGroupPaymentAuditListDetail = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/auditListDetail',
-  data: {},
-  params: data,
-  method: 'get',
-})
-
-export const getMusicGroupStu = data => request2({
-  url: '/api-web/studentRegistration/getMusicGroupStu',
-  data: {},
-  params: data,
-  method: 'get',
-})
-
-export const musicGroupPaymentCalenderDetailBatchAdd = data => request2({
-  url: '/api-web/musicGroupPaymentCalenderDetail/batchAdd',
-  data: data,
-  method: 'post',
-})
+import request2 from "@/utils/request2";
+
+export const musicGroupPaymentCalenderQueryPage = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/queryPage",
+    data: {},
+    params: data,
+    requestType: "form"
+  });
+
+export const musicGroupPaymentCalenderAdd = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/add",
+    data,
+    method: "post"
+  });
+
+export const musicGroupcreateCalender = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/createCalender",
+    data,
+    method: "post"
+  });
+export const musicGroupresetCalender = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/updateCalender",
+    data,
+    method: "post"
+  });
+
+export const musicGroupPaymentCalenderView = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/getDetail",
+    data: {},
+    params: data,
+    method: "get"
+  });
+export const musicGroupPaymentAuditListDetail = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/auditListDetail",
+    data: {},
+    params: data,
+    method: "get"
+  });
+
+export const getMusicGroupStu = data =>
+  request2({
+    url: "/api-web/studentRegistration/getMusicGroupStu",
+    data: {},
+    params: data,
+    method: "get"
+  });
+
+export const musicGroupPaymentCalenderDetailBatchAdd = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalenderDetail/batchAdd",
+    data: data,
+    method: "post"
+  });
 
 // musicGroupPaymentCalender/update
-export const musicGroupPaymentCalenderDetailBatchUpdate = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/update',
-  data: data,
-  method: 'post',
-})
+export const musicGroupPaymentCalenderDetailBatchUpdate = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/update",
+    data: data,
+    method: "post"
+  });
 
 // musicGroupPaymentCalender/update
-export const musicGroupPaymentCalenderDetailDel = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/del',
-  params: data,
-  method: 'post',
-})
+export const musicGroupPaymentCalenderDetailDel = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/del",
+    params: data,
+    method: "post"
+  });
 
 // 删除批次
-export const musicGroupPaymentCalenderDelByBatchNo = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/delByBatchNo',
-  params: data,
-  method: 'post',
-})
+export const musicGroupPaymentCalenderDelByBatchNo = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/delByBatchNo",
+    params: data,
+    method: "post"
+  });
 
 // 撤回审核  musicGroupPaymentCalender/revoke
-export const revokeMusicGroupPaymentCalender = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/revoke',
-  data: {},
-  params: data,
-  method: 'post',
-})
-
-export const queryByMusicGroupOrganizationCourseSettingsId = data => request2({
-  url: '/api-web/musicGroupOrganizationCourseSettingsDetail/queryByMusicGroupOrganizationCourseSettingsId',
-  data: {},
-  params: data,
-  method: 'get'
-})
-
-export const makesureSchoolePaid = data => request2({
-  url: '/api-web/musicGroupPaymentCalender/makesureSchoolePaid',
-  data,
-  method: 'post',
-  requestType: 'form'
-})
-
-export const queryByOrganIdAndCourseType = data => request2({
-  url: '/api-web/organizationCourseDurationSettings/queryByOrganId',
-  data: {},
-  params: data,
-  method: 'get',
-  requestType: 'form'
-})
+export const revokeMusicGroupPaymentCalender = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/revoke",
+    data: {},
+    params: data,
+    method: "post"
+  });
+
+export const queryByMusicGroupOrganizationCourseSettingsId = data =>
+  request2({
+    url:
+      "/api-web/musicGroupOrganizationCourseSettingsDetail/queryByMusicGroupOrganizationCourseSettingsId",
+    data: {},
+    params: data,
+    method: "get"
+  });
+
+export const makesureSchoolePaid = data =>
+  request2({
+    url: "/api-web/musicGroupPaymentCalender/makesureSchoolePaid",
+    data,
+    method: "post",
+    requestType: "form"
+  });
+
+export const queryByOrganIdAndCourseType = data =>
+  request2({
+    url: "/api-web/organizationCourseDurationSettings/queryByOrganId",
+    data: {},
+    params: data,
+    method: "get",
+    requestType: "form"
+  });
 // 根据会员等级查会员价格
-export const getMemberFee = data => request2({
-  url: '/api-web/memberFeeSetting/findByRankId',
-  data: {},
-  params: data,
-  method: 'get',
-  requestType: 'form'
-})
+export const getMemberFee = data =>
+  request2({
+    url: "/api-web/memberFeeSetting/findByRankId",
+    data: {},
+    params: data,
+    method: "get",
+    requestType: "form"
+  });
 
 // 获取所有得会员等级
-export const getAllmemberRank = (data) => request2({
-  url: '/api-web/memberRankSetting/findAll',
-  method: 'get',
-  params: data
-})
+export const getAllmemberRank = data =>
+  request2({
+    url: "/api-web/memberRankSetting/findAll",
+    method: "get",
+    params: data
+  });
 // 获取会员是否自动生效
-export const getAutoActivationFlag = (data) => request2({
-  url: '/api-web/tenantConfig/autoActivationFlag',
-  method: 'get',
-  params: data
-})
+export const getAutoActivationFlag = data =>
+  request2({
+    url: "/api-web/tenantConfig/autoActivationFlag",
+    method: "get",
+    params: data
+  });
 
 // 查询未激活云教练用户
-export const queryInactive = (data) => request2({
-  url: '/api-web/cloudTeacherOrder/queryInactive',
-  method: 'post',
-  data
-})
+export const queryInactive = data =>
+  request2({
+    url: "/api-web/cloudTeacherOrder/queryInactive",
+    method: "post",
+    data
+  });
+
+// 设置云教练会员时长
+export const cancelInactive = data =>
+  request2({
+    url: "/api-web/cloudTeacherOrder/cancelInactive",
+    method: "post",
+    data
+  });
 
 // 激活云教练用户
-export const cloudPay = (data) => request2({
-  url: '/api-web/cloudTeacherOrder/pay',
-  method: 'post',
-  data
-})
-
-export const cloudPayCheck = (data) => request2({
-  url: '/api-web/cloudTeacherOrder/payCheck',
-  method: 'get',
-  hideLoading: true,
-  params: data
-})
+export const cloudPay = data =>
+  request2({
+    url: "/api-web/cloudTeacherOrder/pay",
+    method: "post",
+    data
+  });
+
+export const cloudPayCheck = data =>
+  request2({
+    url: "/api-web/cloudTeacherOrder/payCheck",
+    method: "get",
+    hideLoading: true,
+    params: data
+  });

+ 163 - 32
src/views/resetTeaming/components/giveMemberList.vue

@@ -26,6 +26,31 @@
         </el-select>
       </el-form-item>
       <el-form-item>
+        <el-select
+          v-model.trim="searchForm.status"
+          clearable
+          filterable
+          placeholder="状态"
+        >
+          <el-option label="待激活" value="1"></el-option>
+          <el-option label="已取消" value="4"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-date-picker
+          v-model="searchForm.operationDate"
+          style="width: 410px"
+          type="daterange"
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          :picker-options="{
+            firstDayOfWeek: 1
+          }"
+          start-placeholder="操作开始日期"
+          end-placeholder="操作结束日期"
+        ></el-date-picker>
+      </el-form-item>
+      <el-form-item>
         <el-button @click="search" type="danger">搜索</el-button>
         <el-button @click="onReSet" type="primary">重置</el-button>
       </el-form-item>
@@ -33,7 +58,13 @@
     <!-- <div class="newBand"
          @click="resetPays"
          v-permission="'musicGroupStudentFee/batchUpdateCourseFee'">修改缴费金额</div> -->
-    <el-button @click="addMember" v-if="$helpers.permission('cloudTeacherOrder/pay')" type="primary" style="margin-bottom: 20px">激活云教练</el-button>
+    <el-button
+      @click="addMember"
+      v-if="$helpers.permission('cloudTeacherOrder/pay')"
+      type="primary"
+      style="margin-bottom: 20px"
+      >激活云教练</el-button
+    >
 
     <div class="tableWrap">
       <el-table
@@ -58,11 +89,7 @@
           prop="subjectName"
           label="学员声部"
         ></el-table-column>
-        <el-table-column
-          align="center"
-          prop="type"
-          label="云教练类型"
-        >
+        <el-table-column align="center" prop="type" label="云教练类型">
           <template slot-scope="scope">
             {{ scope.row.type | memberEnumType }}
           </template>
@@ -72,10 +99,7 @@
           prop="time"
           label="数量"
         ></el-table-column>
-        <el-table-column
-          align="center"
-          label="缴费金额(元)"
-        >
+        <el-table-column align="center" label="缴费金额(元)">
           <template slot-scope="scope">
             {{ scope.row.amount | hasMoneyFormat }}
           </template>
@@ -90,6 +114,40 @@
             </div>
           </template>
         </el-table-column> -->
+        <el-table-column align="center" label="状态">
+          <template slot-scope="scope">
+            {{ scope.row.status | statusEnum }}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="取消原因">
+          <template slot-scope="scope">
+            <!-- {{ scope.row.cancelReason }} -->
+            <tooltip :content="scope.row.cancelReason" />
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="操作人">
+          <template slot-scope="scope">
+            {{ scope.row.operatorName }}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="操作时间">
+          <template slot-scope="scope">
+            {{ scope.row.operateTime }}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="操作">
+          <template slot-scope="scope">
+            <div>
+              <el-button
+                type="text"
+                v-if="scope.row.status == 1"
+                v-permission="'cloudTeacherOrder/cancelInactive'"
+                @click="resetPay(scope.row)"
+                >取消激活</el-button
+              >
+            </div>
+          </template>
+        </el-table-column>
       </el-table>
       <pagination
         sync
@@ -108,15 +166,54 @@
       v-if="giveMemberVisible"
       append-to-body
     >
-      <giveMemberModel :tableList="selectStudentList" @getList="getList" @close="giveMemberVisible = false" />
+      <giveMemberModel
+        :tableList="selectStudentList"
+        @getList="getList"
+        @close="giveMemberVisible = false"
+      />
+    </el-dialog>
+
+    <el-dialog
+      title="取消激活"
+      :visible.sync="cancelCloudStatus"
+      width="600px"
+      v-if="cancelCloudStatus"
+      append-to-body
+    >
+      <el-form :model="reson" label-width="100px" ref="form">
+        <el-form-item
+          prop="cancelReason"
+          label="取消原因"
+          :rules="[
+            { required: true, message: '请输入取消原因', trigger: 'blur' }
+          ]"
+        >
+          <el-form-item>
+            <el-input
+              type="textarea"
+              v-model="reson.cancelReason"
+              placeholder="请输入取消原因"
+              :rows="3"
+              maxlength="200"
+              show-word-limit
+            ></el-input>
+          </el-form-item>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancelCloudStatus = false">取 消</el-button>
+        <el-button type="primary" @click="submitDateReset">确 定</el-button>
+      </div>
     </el-dialog>
   </div>
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
-import { findSound } from '@/api/buildTeam'
-import { queryInactive } from '../api'
+import { findSound } from "@/api/buildTeam";
+import { queryInactive, cancelInactive } from "../api";
 import giveMemberModel from "../modals/giveMemberModel";
+import Tooltip from "@/components/Tooltip";
+import { getTimes } from "@/utils";
 export default {
   components: { pagination, giveMemberModel },
   data() {
@@ -127,6 +224,8 @@ export default {
       searchForm: {
         queryCondition: "",
         subjectId: "",
+        operationDate: [],
+        status: ""
       },
       soundList: [],
       tableList: [],
@@ -135,39 +234,46 @@ export default {
         limit: 10, // 限制显示条数
         page: 1, // 当前页
         total: 0, // 总条数
-        page_size: [10, 20, 40, 50], // 选择限制显示条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      },
+      cancelCloudStatus: false,
+      reson: {
+        cancelReason: "",
+        ids: ""
       },
-      selectStudentList: [], // 选中的学生列表
+      selectStudentList: [] // 选中的学生列表
     };
   },
   mounted() {
-    this.__init()
-    this.getList()
+    this.__init();
+    this.getList();
   },
   methods: {
     async __init() {
       try {
-        let res = await findSound({ musicGroupId: this.musicGroupId })
+        let res = await findSound({ musicGroupId: this.musicGroupId });
         if (res.code == 200) {
           this.soundList = res.data;
         }
-      } catch(e) {}
+      } catch (e) {}
     },
     async getList() {
       try {
-        const res = await queryInactive({
-          ...this.searchForm,
+        let { operationDate, ...rest } = this.searchForm;
+        let params = {
+          ...rest,
+          ...getTimes(operationDate, ["operateStartTime", "operateEndTime"]),
           musicGroupId: this.musicGroupId,
           page: this.rules.page,
-          rows: this.rules.limit,
-        });
+          rows: this.rules.limit
+        };
+        const res = await queryInactive(params);
         this.rules.total = res.data.total;
         this.tableList = res.data.rows;
-      } catch (e) { }
-      queryInactive
+      } catch (e) {}
     },
     handleSelectionChange(val) {
-      this.selectStudentList = val || []
+      this.selectStudentList = val || [];
     },
     search() {
       this.rules.page = 1;
@@ -175,15 +281,40 @@ export default {
     },
     onReSet() {
       this.searchForm = { search: "", subjectId: "" };
-      this.search()
+      this.search();
     },
-    addMember(){
-      if(this.selectStudentList.length <= 0) {
-        this.$message.error('至少选择一名学生')
-        return
+    addMember() {
+      if (this.selectStudentList.length <= 0) {
+        this.$message.error("至少选择一名学生");
+        return;
+      }
+      this.giveMemberVisible = true;
+    },
+    resetPay(row) {
+      this.cancelCloudStatus = true;
+      this.reson.ids = row.cloudTeacherOrderId;
+    },
+    async submitDateReset() {
+      try {
+        await cancelInactive(this.reson);
+        this.$message.success("取消激活成功");
+        this.getList();
+      } catch (e) {
+        //
+        console.log(e, "e");
       }
-      this.giveMemberVisible = true
     }
   },
+  filters: {
+    statusEnum(val) {
+      let template = {
+        1: "生效中",
+        2: "已生效",
+        3: "已退 ",
+        4: "已取消"
+      };
+      return template[val];
+    }
+  }
 };
 </script>

+ 38 - 33
src/views/studentManager/api.js

@@ -1,45 +1,50 @@
-import request2 from '@/utils/request2'
+import request2 from "@/utils/request2";
 
 // 获取首页数据
-export const getMusicMemberList = data => request2({
-  url: '/api-web/musicGroup/queryMusicMemberList',
-  params: data,
-  method: 'get',
-})
+export const getMusicMemberList = data =>
+  request2({
+    url: "/api-web/musicGroup/queryMusicMemberList",
+    params: data,
+    method: "get"
+  });
 
 // 添加
-export const add = (data) => request2({
-  url: '/api-web/cloudCoachPaymentProgram/add',
-  method: 'post',
-  data
-})
+export const add = data =>
+  request2({
+    url: "/api-web/cloudCoachPaymentProgram/add",
+    method: "post",
+    data
+  });
 
 // 修改
-export const update = (data) => request2({
-  url: '/api-web/cloudCoachPaymentProgram/update',
-  method: 'post',
-  data
-})
+export const update = data =>
+  request2({
+    url: "/api-web/cloudCoachPaymentProgram/update",
+    method: "post",
+    data
+  });
 
 //
-export const cloudCoachPaymentProgramQueryPage = (data) => request2({
-  url: '/api-web/cloudCoachPaymentProgram/queryPage',
-  method: 'get',
-  params: data
-})
+export const cloudCoachPaymentProgramQueryPage = data =>
+  request2({
+    url: "/api-web/cloudCoachPaymentProgram/queryPage",
+    method: "get",
+    params: data
+  });
 
 //
-export const cloudQueryPage = (data) => request2({
-  url: '/api-web/studentCloudCoachPaymentDetails/queryPage',
-  method: 'get',
-  params: data
-})
+export const cloudQueryPage = data =>
+  request2({
+    url: "/api-web/studentCloudCoachPaymentDetails/queryPage",
+    method: "get",
+    params: data
+  });
 
 // 设置云教练会员时长
-export const setStudentMembe = (data) => request2({
-  url: '/api-web/studentManage/updateStudentMember',
-  method: 'post',
-  data: data,
-  requestType: 'form'
-
-})
+export const setStudentMembe = data =>
+  request2({
+    url: "/api-web/studentManage/updateStudentMember",
+    method: "post",
+    data: data,
+    requestType: "form"
+  });

+ 134 - 13
src/views/studentManager/studentGroupPractice.vue

@@ -15,6 +15,31 @@
           ></el-input>
         </el-form-item>
         <el-form-item>
+          <el-select
+            v-model.trim="searchForm.status"
+            clearable
+            filterable
+            placeholder="状态"
+          >
+            <el-option label="待激活" value="1"></el-option>
+            <el-option label="已取消" value="4"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-date-picker
+            v-model="searchForm.operationDate"
+            style="width: 410px"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            :picker-options="{
+              firstDayOfWeek: 1
+            }"
+            start-placeholder="操作开始日期"
+            end-placeholder="操作结束日期"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
           <el-button @click="search" type="danger">搜索</el-button>
           <el-button @click="onReSet" type="primary">重置</el-button>
         </el-form-item>
@@ -68,16 +93,40 @@
               {{ scope.row.amount | hasMoneyFormat }}
             </template>
           </el-table-column>
-          <!-- <el-table-column align="center"
-                          label="操作">
+          <el-table-column align="center" label="状态">
+            <template slot-scope="scope">
+              {{ scope.row.status | statusEnum }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="取消原因">
+            <template slot-scope="scope">
+              <!-- {{ scope.row.cancelReason }} -->
+              <tooltip :content="scope.row.cancelReason" />
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="操作人">
+            <template slot-scope="scope">
+              {{ scope.row.operatorName }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="操作时间">
+            <template slot-scope="scope">
+              {{ scope.row.operateTime }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="操作">
             <template slot-scope="scope">
               <div>
-                <el-button type="text"
-                          v-permission="'musicGroupStudentFee/batchUpdateCourseFee'"
-                          @click="resetPay(scope.row)">修改金额</el-button>
+                <el-button
+                  type="text"
+                  v-if="scope.row.status == 1"
+                  v-permission="'cloudTeacherOrder/cancelInactive'"
+                  @click="resetPay(scope.row)"
+                  >取消激活</el-button
+                >
               </div>
             </template>
-          </el-table-column> -->
+          </el-table-column>
         </el-table>
         <pagination
           sync
@@ -103,14 +152,49 @@
         @close="giveMemberVisible = false"
       />
     </el-dialog>
+
+    <el-dialog
+      title="取消激活"
+      :visible.sync="cancelCloudStatus"
+      width="600px"
+      v-if="cancelCloudStatus"
+      append-to-body
+    >
+      <el-form :model="reson" label-width="100px" ref="form">
+        <el-form-item
+          prop="cancelReason"
+          label="取消原因"
+          :rules="[
+            { required: true, message: '请输入取消原因', trigger: 'blur' }
+          ]"
+        >
+          <el-form-item>
+            <el-input
+              type="textarea"
+              v-model="reson.cancelReason"
+              placeholder="请输入取消原因"
+              :rows="3"
+              maxlength="200"
+              show-word-limit
+            ></el-input>
+          </el-form-item>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancelCloudStatus = false">取 消</el-button>
+        <el-button type="primary" @click="submitDateReset">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
-import { queryInactive } from "@/views/resetTeaming/api";
+import { queryInactive, cancelInactive } from "@/views/resetTeaming/api";
 import giveMemberModel from "@/views/resetTeaming/modals/giveMemberModel";
+import Tooltip from "@/components/Tooltip";
+import { getTimes } from "@/utils";
 export default {
-  components: { pagination, giveMemberModel },
+  components: { pagination, giveMemberModel, Tooltip },
   data() {
     let musicGroupId = this.$route.query.id;
     return {
@@ -118,7 +202,9 @@ export default {
       giveMemberVisible: false,
       searchForm: {
         queryCondition: "",
-        subjectId: ""
+        subjectId: "",
+        operationDate: [],
+        status: ""
       },
       soundList: [],
       tableList: [],
@@ -129,6 +215,11 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
+      cancelCloudStatus: false,
+      reson: {
+        cancelReason: "",
+        ids: ""
+      },
       selectStudentList: [] // 选中的学生列表
     };
   },
@@ -138,14 +229,19 @@ export default {
   methods: {
     async getList() {
       try {
-        const res = await queryInactive({
-          ...this.searchForm,
+        let { operationDate, ...rest } = this.searchForm;
+        let params = {
+          ...rest,
+          ...getTimes(operationDate, ["operateStartTime", "operateEndTime"]),
           page: this.rules.page,
           rows: this.rules.limit
-        });
+        };
+        const res = await queryInactive(params);
         this.rules.total = res.data.total;
         this.tableList = res.data.rows;
-      } catch (e) {}
+      } catch (e) {
+        console.log(e, "e");
+      }
       queryInactive;
     },
     handleSelectionChange(val) {
@@ -165,6 +261,31 @@ export default {
         return;
       }
       this.giveMemberVisible = true;
+    },
+    resetPay(row) {
+      this.cancelCloudStatus = true;
+      this.reson.ids = row.cloudTeacherOrderId;
+    },
+    async submitDateReset() {
+      try {
+        await cancelInactive(this.reson);
+        this.$message.success("取消激活成功");
+        this.getList();
+      } catch (e) {
+        //
+        console.log(e, "e");
+      }
+    }
+  },
+  filters: {
+    statusEnum(val) {
+      let template = {
+        1: "生效中",
+        2: "已生效",
+        3: "已退 ",
+        4: "已取消"
+      };
+      return template[val];
     }
   }
 };