Sfoglia il codice sorgente

添加团练宝功能

lex-xin 3 anni fa
parent
commit
8293b9a833

+ 8 - 0
src/constant/index.js

@@ -361,3 +361,11 @@ export const tenantStatus = {
   "TENANT_RENEW": '机构续费',
   "CLOUD_TEACHER": '激活团练宝'
 }
+
+export const cloudGroupActive = {
+  1: '固定天数',
+  2: '月度',
+  3: '季度',
+  4: '半年',
+  5: '年度'
+}

+ 11 - 0
src/utils/vueFilter.js

@@ -773,4 +773,15 @@ Vue.filter('couponTypeFilter', (value) => {
 
 Vue.filter('tenantStatus', value => {
   return constant.tenantStatus[value]
+})
+
+Vue.filter('cloudGroupActive', value => {
+  let template = {
+    1: '天数',
+    2: '月度',
+    3: '季度',
+    4: '半年',
+    5: '年度'
+  }
+  return template[value]
 })

+ 14 - 14
src/views/businessManager/orderManager/payRecord.vue

@@ -89,7 +89,7 @@
             <el-option v-for="item in paymentChannelStatus" :key="item.value" :label="item.label" :value="item.value"></el-option>
           </el-select>
         </el-form-item> -->
-        <el-form-item>
+        <!-- <el-form-item>
           <el-date-picker
             style="width: 410px"
             v-model.trim="searchForm.orderDate"
@@ -102,7 +102,7 @@
             :picker-options="{ firstDayOfWeek: 1 }"
           >
           </el-date-picker>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item>
           <el-button native-type="submit" type="danger">搜索</el-button>
           <el-button native-type="reset" type="primary">重置</el-button>
@@ -332,7 +332,7 @@ export default {
         dingtalkProcessNo: "",
         financialProcessNo: "",
         cooperationOrganId: null,
-        orderDate: [],
+        // orderDate: [],
       },
       headers: {
         Authorization: getToken(),
@@ -352,15 +352,15 @@ export default {
     };
   },
   created(){
-        if (this.searchForm.orderDate?.length < 1) {
-      var now = new Date();
-      var startDate = dayjs().format("YYYY-MM-DD");
-      var endDate = dayjs().format("YYYY-MM-DD");
-      this.searchForm.orderDate = [];
-      this.searchForm.orderDate.push(startDate);
-      this.searchForm.orderDate.push(endDate);
-      this.searchOrderDate(this.searchForm.orderDate);
-    }
+    // if (this.searchForm.orderDate?.length < 1) {
+    //   var now = new Date();
+    //   var startDate = dayjs().format("YYYY-MM-DD");
+    //   var endDate = dayjs().format("YYYY-MM-DD");
+    //   this.searchForm.orderDate = [];
+    //   this.searchForm.orderDate.push(startDate);
+    //   this.searchForm.orderDate.push(endDate);
+    //   this.searchOrderDate(this.searchForm.orderDate);
+    // }
   },
   mounted() {
     // getEmployeeOrgan().then(res => {
@@ -452,13 +452,13 @@ export default {
       });
     },
     getList() {
-      let { orderDate,organId, ...ruset } = this.searchForm;
+      let { organId, ...ruset } = this.searchForm;
       let params = {
         ...ruset,
         page: this.pageInfo.page,
         rows: this.pageInfo.limit,
         organId:this.searchForm.organId.join(','),
-        ...getTimes(orderDate, ["startTime", "endTime"]),
+        // ...getTimes(orderDate, ["startTime", "endTime"]),
       };
       getFinancialExpenditure(params).then((res) => {
         let result = res.data;

+ 7 - 0
src/views/resetTeaming/api.js

@@ -99,4 +99,11 @@ export const getAllmemberRank = (data) => request2({
   params: data
 })
 
+// 查询未激活团练宝用户
+export const queryInactive = (data) => request2({
+  url: '/api-web//cloudTeacherOrder/queryInactive',
+  method: 'post',
+  data
+})
+
 

+ 44 - 20
src/views/resetTeaming/components/giveMemberList.vue

@@ -33,7 +33,7 @@
     <!-- <div class="newBand"
          @click="resetPays"
          v-permission="'musicGroupStudentFee/batchUpdateCourseFee'">修改缴费金额</div> -->
-    <el-button @click="addMember" type="primary">激活会员</el-button>
+    <el-button @click="addMember" type="primary" style="margin-bottom: 20px">激活会员</el-button>
 
     <div class="tableWrap">
       <el-table
@@ -41,28 +41,17 @@
         :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
         :data="tableList"
         ref="multipleTable"
-        max-height="300"
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55"> </el-table-column>
         <el-table-column
           align="center"
-          prop="userId"
+          prop="studentId"
           label="学员编号"
         ></el-table-column>
         <el-table-column align="center" prop="name" label="学员姓名">
-          <!-- <template slot-scope="scope">
-            <div v-if="scope.row.sysUser">
-              {{scope.row.sysUser.username}}
-            </div>
-          </template> -->
         </el-table-column>
-        <el-table-column align="center" prop="studentId" label="联系电话">
-          <template slot-scope="scope">
-            <div v-if="scope.row.sysUser">
-              {{ scope.row.sysUser.phone }}
-            </div>
-          </template>
+        <el-table-column align="center" prop="phone" label="联系电话">
         </el-table-column>
         <el-table-column
           align="center"
@@ -71,19 +60,26 @@
         ></el-table-column>
         <el-table-column
           align="center"
-          prop="courseFee"
+          prop="type"
           label="团练宝类型"
-        ></el-table-column>
+        >
+          <template slot-scope="scope">
+            {{ scope.row.type | cloudGroupActive }}
+          </template>
+        </el-table-column>
         <el-table-column
           align="center"
-          prop="courseFee"
+          prop="time"
           label="数量"
         ></el-table-column>
         <el-table-column
           align="center"
-          prop="courseFee"
           label="缴费金额(元)"
-        ></el-table-column>
+        >
+          <template slot-scope="scope">
+            {{ scope.row.amount | hasMoneyFormat }}
+          </template>
+        </el-table-column>
         <!-- <el-table-column align="center"
                          label="操作">
           <template slot-scope="scope">
@@ -108,10 +104,14 @@
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
+import { findSound } from '@/api/buildTeam'
+import { queryInactive } from '../api'
 export default {
   components: { pagination },
   data() {
+    let musicGroupId = this.$route.query.id;
     return {
+      musicGroupId,
       searchForm: {
         search: "",
         subjectId: "",
@@ -127,8 +127,32 @@ export default {
       },
     };
   },
-  mounted() {},
+  mounted() {
+    this.__init()
+    this.getList()
+  },
   methods: {
+    async __init() {
+      try {
+        let res = await findSound({ musicGroupId: this.musicGroupId })
+        if (res.code == 200) {
+          this.soundList = res.data;
+        }
+      } catch(e) {}
+    },
+    async getList() {
+      try {
+        const res = await queryInactive({
+          ...this.searchForm,
+          page: this.rules.page,
+          rows: this.rules.limit,
+        });
+        console.log(res)
+        this.rules.total = res.data.total;
+        this.tableList = res.data.rows;
+      } catch (e) { }
+      queryInactive
+    },
     handleSelectionChange(val) {},
     search() {},
     onReSet() {},

+ 8 - 0
src/views/teamDetail/api.js

@@ -30,3 +30,11 @@ export const updateMemberExperience = data => request2({
   method: 'post',
   requestType: 'form'
 })
+
+
+// 添加会员
+export const cloudAddStudents = data => request2({
+  url: '/api-web/cloudTeacherOrder/addStudents',
+  data,
+  method: 'post'
+})

+ 91 - 0
src/views/teamDetail/components/modals/createMember.vue

@@ -0,0 +1,91 @@
+<template>
+  <div>
+    <!-- <p class="title">已选择{{ multipleSelection.length }}名学员</p> -->
+    <el-form :model="memberForm" label-width="120px" ref="memberForm">
+      <el-form-item
+        label="赠送会员类型"
+        prop="addType"
+        :rules="[
+          { required: true, message: '请选择赠送会员类型', trigger: 'blur' },
+        ]"
+      >
+        <el-select
+          placeholder="赠送会员类型"
+          clearable
+          v-model.trim="memberForm.addType"
+          style="width: 100% !important"
+        >
+          <el-option label="月度" :value="2"></el-option>
+          <el-option label="季度" :value="3"></el-option>
+          <el-option label="半年" :value="4"></el-option>
+          <el-option label="年度" :value="5"></el-option>
+          <el-option label="固定天数" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item
+        label="赠送数量"
+        prop="times"
+        :rules="[
+          { required: true, message: '请输入赠送数量', trigger: 'blur' },
+        ]"
+      >
+        <el-input
+          type="number"
+          onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
+          v-model="memberForm.times"
+          placeholder="请输入赠送数量"
+        >
+        </el-input>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+<script>
+import { cloudAddStudents } from "../../api";
+export default {
+  props: ["multipleSelection"],
+  data() {
+    return {
+      memberForm: {
+        times: null,
+        addType: null,
+      },
+      studentIds: [],
+    };
+  },
+  mounted() {
+    this.studentIds = this.multipleSelection
+      .map((stu) => {
+        return stu.userId;
+      });
+  },
+  methods: {
+    submit() {
+      this.$refs.memberForm.validate(async (res) => {
+        if (res) {
+          try {
+            const { times, addType } = this.memberForm
+            await cloudAddStudents({
+              times: Number(times),
+              addType,
+              studentIds: this.studentIds,
+            });
+            this.$message.success('添加会员成功')
+            this.$emit("close");
+            this.$emit("submited");
+          } catch (e) {
+            console.log(e);
+          }
+        }
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.title {
+  margin-bottom: 30px;
+  font-size: 16px;
+  color: #000;
+}
+</style>

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

@@ -1,21 +1,27 @@
 <template>
   <div class="stu-container">
     <div class="studentListWrap">
-      <div
+      <!-- <div
         v-if="team_status == 'PROGRESS'"
         class="newBand"
         v-permission="'studentRegistration/insertStudent'"
         @click="createStudentFrom"
       >
         新增学员
-      </div>
-      <div
+      </div> -->
+      <!-- <div
         class="newBand"
         v-permission="'studentManage/updateMemberExperience'"
         @click="addTryTime"
       >
         增加会员试用期
-      </div>
+      </div> -->
+      <el-button  style="margin-bottom: 20px;" type="primary"
+        v-if="team_status == 'PROGRESS'"
+        v-permission="'studentRegistration/insertStudent'"
+        @click="createStudentFrom" icon="el-icon-plus">新增学员</el-button>
+      <el-button  style="margin-bottom: 20px;" type="primary"
+        @click="addStudentMember" icon="el-icon-plus">添加会员</el-button>
     </div>
 
     <!-- 搜索类型 -->
@@ -932,7 +938,7 @@
         >
       </div>
     </el-dialog>
-    <el-dialog
+    <!-- <el-dialog
       title="新增会员试用期"
       width="600px"
       :visible.sync="addTryVisible"
@@ -949,6 +955,23 @@
         <el-button @click="addTryVisible = false">取 消</el-button>
         <el-button type="primary" @click="submitAddTryTime">确 定</el-button>
       </div>
+    </el-dialog> -->
+    <el-dialog
+      title="添加会员"
+      width="500px"
+      :visible.sync="memberVisible"
+    >
+      <createMember
+        ref="addMember"
+        v-if="memberVisible"
+        :multipleSelection="multipleSelection"
+        @close="memberVisible = false"
+        @submited="getList"
+      />
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="memberVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submitAddMember">确 定</el-button>
+      </div>
     </el-dialog>
   </div>
 </template>
@@ -996,6 +1019,7 @@ import visit from "@/views/withdrawal-application/modals/visit";
 import mergeMusic from "@/views/teamBuild/components/merge-music";
 import quiteTeam from "@/views/teamDetail/components/modals/quite-team";
 import addTryList from "@/views/teamDetail/components/modals/addTryList";
+import createMember from "@/views/teamDetail/components/modals/createMember";
 export default {
   name: "tstudentList",
   data() {
@@ -1184,8 +1208,9 @@ export default {
       multipleSelection: [],
       isCanReg: false,
       organId: "",
-      addTryVisible: false,
-      memberRankList: [],
+      memberVisible: false,
+      // addTryVisible: false,
+      // memberRankList: [],
       isManage: false,
       gradeListObj: {},
     };
@@ -1203,6 +1228,7 @@ export default {
     mergeMusic,
     quiteTeam,
     addTryList,
+    createMember
   },
   created() {},
   filters: {
@@ -1238,12 +1264,12 @@ export default {
       });
       this.organizationCourseUnitPriceSettings = res.data.rows;
     } catch (error) {}
-    try {
-      const res = await getAllmemberRank({ isDefault: 0 });
-      this.memberRankList = res.data;
-    } catch (e) {
-      console.log(e);
-    }
+    // try {
+    //   const res = await getAllmemberRank({ isDefault: 0 });
+    //   this.memberRankList = res.data;
+    // } catch (e) {
+    //   console.log(e);
+    // }
     this.init();
   },
   methods: {
@@ -1958,16 +1984,26 @@ export default {
         params: { search: search },
       });
     },
-    addTryTime() {
+    addStudentMember() {
       if (this.multipleSelection.length > 0) {
-        this.addTryVisible = true;
+        this.memberVisible = true;
       } else {
         this.$message.error("请至少选择一名学员");
       }
     },
-    submitAddTryTime() {
-      this.$refs.addTry.submit();
+    submitAddMember() {
+      this.$refs.addMember.submit();
     },
+    // addTryTime() {
+    //   if (this.multipleSelection.length > 0) {
+    //     this.addTryVisible = true;
+    //   } else {
+    //     this.$message.error("请至少选择一名学员");
+    //   }
+    // },
+    // submitAddTryTime() {
+    //   this.$refs.addTry.submit();
+    // },
   },
   watch: {
     createUserPayVisible(val) {

+ 6 - 0
src/views/tenantSetting/api.js

@@ -5,3 +5,9 @@ export const tenantOrderRecordQueryPage = (data) => request2({
   method: 'post',
   data,
 })
+
+export const cloudTeacherOrderQueryActive = (data) => request2({
+  url: '/api-web/cloudTeacherOrder/queryActive',
+  method: 'post',
+  data,
+})

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

@@ -13,20 +13,20 @@
       :saveKey="'tenantTradeManager'"
       :model.sync="searchForm"
     >
-      <el-form-item prop="transNo">
+      <el-form-item prop="queryCondition">
         <el-input
           placeholder="学员编号/姓名/手机号"
           clearable
           type="text"
-          v-model.trim="searchForm.transNo"
+          v-model.trim="searchForm.queryCondition"
         ></el-input>
       </el-form-item>
-      <el-form-item prop="orderNo">
+      <el-form-item prop="order">
         <el-input
           placeholder="订单号"
           clearable
           type="text"
-          v-model.trim="searchForm.orderNo"
+          v-model.trim="searchForm.order"
         ></el-input>
       </el-form-item>
       <el-form-item prop="createTimer">
@@ -51,17 +51,17 @@
         :data="tableList"
         :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
       >
-        <el-table-column align="center" prop="transNo" label="交易流水号">
+        <el-table-column align="center" label="交易流水号" prop="transNo">
         </el-table-column>
         <el-table-column align="center" label="订单号" prop="orderNo">
         </el-table-column>
         <el-table-column align="center" label="订单时间" prop="createdTime">
         </el-table-column>
-        <el-table-column align="center" label="学员编号" prop="tenantId">
+        <el-table-column align="center" label="学员编号" prop="studentId">
         </el-table-column>
-        <el-table-column align="center" label="学员名称" prop="tenantName">
+        <el-table-column align="center" label="学员名称" prop="name">
         </el-table-column>
-        <el-table-column align="center" label="手机号码" prop="tenantName">
+        <el-table-column align="center" label="手机号码" prop="phone">
         </el-table-column>
         <el-table-column align="center" label="交易类型">
           <template slot-scope="scope">
@@ -77,12 +77,12 @@
         </el-table-column> -->
         <el-table-column align="center" label="数量">
           <template slot-scope="scope">
-            {{ scope.row.actualAmount | moneyFormat }}
+            {{ scope.row.time }}
           </template>
         </el-table-column>
         <el-table-column align="center" label="激活费用(元)">
           <template slot-scope="scope">
-            {{ scope.row.orderState | tenantOrderStatus }}
+            {{ scope.row.amount | moneyFormat }}
           </template>
         </el-table-column>
       </el-table>
@@ -101,24 +101,18 @@
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
-import { tenantInfoQueryPage } from "../organManager/api";
-import { tenantOrderRecordQueryPage } from "./api";
+import { cloudTeacherOrderQueryActive } from "./api";
 import { tenantStatus, dealStatus } from "@/utils/searchArray";
 import { getTimes } from "@/utils";
 const initSearch = {
-  transNo: null,
-  orderNo: null,
-  tenantId: [],
-  orderType: null,
-  orderState: null,
+  queryCondition: null,
+  order: null,
   createTimer: [],
 };
 export default {
   components: { pagination },
   data() {
-    const baseTenantId = sessionStorage.getItem('baseTenantId')
     return {
-      baseTenantId,
       tenantStatus,
       dealStatus,
       tableList: [],
@@ -129,33 +123,25 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50], // 选择限制显示条数
       },
-      searchForm: { ...initSearch },
-      tenantList: []
+      searchForm: { ...initSearch }
     };
   },
   async mounted() {
-    await this.getTenant()
     this.getList();
   },
   methods: {
-    async getTenant() {
-      try {
-        const res = await tenantInfoQueryPage({ page: 1, rows: 999 }, )
-        this.tenantList = res.data?.rows || []
-      } catch(e) {}
-    },
     async getList() {
       try {
-        let { createTimer, tenantId, ...reset } = this.searchForm;
-        const res = await tenantOrderRecordQueryPage({
+        let { createTimer, ...reset } = this.searchForm;
+        const res = await cloudTeacherOrderQueryActive({
           ...reset,
-          tenantId: tenantId.join(','),
           ...getTimes(createTimer, ["startDate", "endDate"], "YYYY-MM-DD"),
           page: this.pageInfo.page,
           rows: this.pageInfo.limit,
         });
-        this.pageInfo.total = res.total;
-        this.tableList = res.rows;
+        console.log(res)
+        this.pageInfo.total = res.data.total;
+        this.tableList = res.data.rows;
       } catch (e) {}
     },
     search() {