lex 2 years ago
parent
commit
6106acebc2

+ 19 - 0
src/views/liveClassManager/api.js

@@ -310,3 +310,22 @@ export const findTeacherByTenantId = data => {
     params: data
   });
 };
+
+// vip退费查询
+export function getStudentSurplusCourseFee(data) {
+  return request({
+    url: "/api-web/vipGroupManage/getStudentSurplusCourseFee",
+    method: "get",
+    params: data
+  });
+}
+
+// 根据vipid和学生id 退学
+export function leaveSchool(data) {
+  return request({
+    url: "/api-web/vipGroupManage/applyRefundForStudent",
+    method: "POST",
+    requestType: "form",
+    data
+  });
+}

+ 172 - 10
src/views/liveClassManager/liveClassTwo/components/courseAdjust.vue

@@ -24,10 +24,23 @@
         <el-table-column align="center" prop="classDate" label="上课日期">
           <template slot-scope="scope">
             {{ scope.row.classDate | dayjsFormat }}
+            {{ scope.row.startClassTime | dayjsFormat('HH:mm') }}~{{ scope.row.endClassTime | dayjsFormat('HH:mm') }}
+          </template>
+        </el-table-column>
+        <!-- <el-table-column align="center" prop="startClassTime" label="开始时间"></el-table-column>
+        <el-table-column align="center" prop="endClassTime" label="结束时间"></el-table-column> -->
+        <el-table-column label="操作" width="180" align="center">
+          <template slot-scope="scope">
+            <div>
+              <el-button type="text" v-if="scope.row.id &&
+                !scope.row.isSettlement &&
+                $helpers.permission(
+                  'courseSchedule/classStartDateAdjust/liveReset'
+                )
+                " @click="resetClass(scope.row)">调整</el-button>
+            </div>
           </template>
         </el-table-column>
-        <el-table-column align="center" prop="startClassTime" label="开始时间"></el-table-column>
-        <el-table-column align="center" prop="endClassTime" label="结束时间"></el-table-column>
       </el-table>
     </div>
 
@@ -38,17 +51,17 @@
           <el-input disabled v-model.trim="adjustmentForm.count"></el-input>
         </el-form-item>
 
-        <el-form-item label="课程类型" prop="courseType">
+        <!-- <el-form-item label="课程类型" prop="courseType">
           <el-select clearable v-model.trim="adjustmentForm.courseType" disabled>
             <el-option label="线上课" value="ONLINE"></el-option>
             <el-option label="线下课" value="OFFLINE"></el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item label="教学地点" v-if="adjustmentForm.courseType == 'OFFLINE'">
+        </el-form-item> -->
+        <!-- <el-form-item label="教学地点" v-if="adjustmentForm.courseType == 'OFFLINE'">
           <el-select v-model.trim="adjustmentForm.address" filterable clearable>
             <el-option v-for="(item, index) in schoolList" :key="index" :value="item.id" :label="item.name"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <br />
         <el-form-item label="排课起始时间" prop="courseTime">
           <el-date-picker v-model.trim="adjustmentForm.courseTime" :picker-options="pickerOptions()"
@@ -89,13 +102,48 @@
         <el-button type="primary" @click="submitAdjustment">确 定</el-button>
       </div>
     </el-dialog>
+
+    <el-dialog title="课程调整" width="400px" :before-close="handleClose" :visible.sync="courseVisible">
+      <el-form :model="maskForm" class="maskForm" ref="maskForm" :rules="maskRules" label-position="right"
+        label-width="80px" :inline="true">
+        <el-form-item label="上课日期" prop="date">
+          <el-date-picker v-model.trim="maskForm.date" type="date" :picker-options="coursesDate()"
+            value-format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker>
+        </el-form-item>
+        <el-form-item label="开始时间" prop="startTime">
+          <el-time-picker placeholder="起始时间" v-model.trim="startTime" @change="changeStartTime" format="HH:mm"
+            value-format="HH:mm" :picker-options="{
+              selectableRange: `${nowTime} - 23:30:00`
+            }"></el-time-picker>
+        </el-form-item>
+        <el-form-item label="结束时间" prop="endTime">
+          <el-time-picker placeholder="结束时间" format="HH:mm" value-format="HH:mm" v-model="maskForm.endTime" disabled>
+          </el-time-picker>
+        </el-form-item>
+        <!--v-if="maskForm.teachMode=='OFFLINE'"-->
+        <!-- <el-form-item label="课程类型" prop="courseType">
+            <el-select clearable v-model.trim="maskForm.teachMode">
+              <el-option label="线上课" value="ONLINE"></el-option>
+              <el-option label="线下课" value="OFFLINE"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="教学地点" v-if="maskForm.teachMode == 'OFFLINE'">
+            <el-select v-model.trim="maskForm.address" filterable clearable>
+              <el-option v-for="(item, index) in schoolList" :key="index" :value="item.id" :label="item.name"></el-option>
+            </el-select>
+          </el-form-item> -->
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="courseVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submitResetClass">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import {
-  vipCourseAdjust
-} from "@/api/vipSeting";
+import { resetCourse } from "@/api/buildTeam";
+import { vipCourseAdjust } from "@/api/vipSeting";
 import { liveCourseList } from '../../api'
 import { diffTimerFormMinute, addTimerFormMinute } from "@/utils/date";
 import dayjs from 'dayjs';
@@ -147,7 +195,20 @@ export default {
           endTime: "",
           moid: new Date().getTime()
         }
-      ]
+      ],
+      courseVisible: false,
+      maskForm: {
+        date: "",
+        startTime: "",
+        endTime: "",
+        id: "",
+        address: "",
+        teachMode: ""
+      },
+      maskRules: {
+        date: [{ required: true, message: "请选择上课时间", trigger: "blur" }]
+      },
+      startTime: "",
     };
   },
   mounted() {
@@ -205,6 +266,15 @@ export default {
         this.adjustmentVisible = true;
       }
     },
+    coursesDate(dateStr) {
+      let self = this;
+      return {
+        firstDayOfWeek: 1,
+        disabledDate: time => {
+          return time.getTime() + 86400000 <= new Date().getTime();
+        }
+      };
+    },
     pickerOptions(dateStr) {
       return {
         firstDayOfWeek: 1,
@@ -213,6 +283,71 @@ export default {
         }
       };
     },
+    resetClass(row) {
+      /**
+       * maskForm.startTime
+       */
+      this.maskForm.date = row.classDate.split(" ")[0];
+      this.startTime = row.startClassTimeStr.substring(0, 5);
+      this.maskForm.endTime = row.endClassTimeStr.substring(0, 5);
+      // this.maskForm.endTime = row.endClassTimeStr;
+      this.maskForm.id = row.id;
+      this.maskForm.address = row.schoolId || null;
+      this.maskForm.teachMode = row.teachMode;
+      // 修改课时
+      this.courseVisible = true;
+    },
+    handleClose() {
+      this.courseVisible = false;
+      this.startTime = "";
+      this.maskForm = {
+        date: "",
+        startTime: "",
+        endTime: "",
+        id: "",
+        address: "",
+        teachMode: ""
+      };
+      this.$refs["maskForm"].resetFields();
+    },
+    submitResetClass() {
+      //   endClassTimeStr: this.maskForm.endTime,
+      if (!this.startTime) {
+        this.$message.error("请填写修改时间");
+        return;
+      }
+      let classTime = this.maskForm.date
+        ? new Date(this.maskForm.date)
+        : new Date();
+      let ymd =
+        classTime.getFullYear() +
+        "-" +
+        (classTime.getMonth() + 1) +
+        "-" +
+        classTime.getDate();
+      let tempStartTime = this.startTime;
+      if (this.startTime.length <= 5) {
+        tempStartTime = tempStartTime + ":00";
+      }
+      let obj = {
+        startClassTime: ymd + " " + this.startTime,
+        // startClassTimeStr: this.startTime,
+        id: this.maskForm.id,
+        classDate: this.maskForm.date,
+        schoolId: this.maskForm.address || null,
+        teachMode: this.maskForm.teachMode || null,
+        groupType: "VIP"
+      };
+      resetCourse(obj).then(res => {
+        if (res.code == 200) {
+          this.$message.success("修改成功");
+          this.courseVisible = false;
+          this.getList();
+        } //else {
+        //   this.$message.error(res.msg)
+        // }
+      });
+    },
     submitAdjustment() {
       this.$refs["adjustmentForm"].validate(item => {
         if (item) {
@@ -246,6 +381,22 @@ export default {
         }
       });
     },
+    changeStartTime(val) {
+      this.$nextTick(res => {
+        if (val) {
+          this.$set(
+            this.maskForm,
+            "endTime",
+            addTimerFormMinute(this.maskForm.date, val, this.courseTime)
+          );
+        } else {
+          this.$set(this.maskForm, "endTime", "");
+        }
+        if (!this.maskForm.endTime) {
+          this.$set(this, "startTime", "");
+        }
+      });
+    },
     changeStartTimes(val, item) {
       this.$nextTick(res => {
         if (val) {
@@ -265,6 +416,17 @@ export default {
       });
     },
   },
+  computed: {
+    nowTime() {
+      // console.log(that.maskForm.date)
+      let str = "06:00:00";
+      if (this.maskForm.date == dayjs(new Date()).format("YYYY-MM-DD")) {
+        str = dayjs(new Date()).format("HH:mm:ss");
+      }
+
+      return str;
+    }
+  },
   filters: {
     formatterTime(val) {
       let result;

+ 10 - 43
src/views/liveClassManager/liveClassTwo/components/studentList.vue

@@ -47,11 +47,7 @@
 </template>
 
 <script>
-import {
-  leaveSchool,
-  getStudentSurplusCourseFee
-} from "@/api/vipSeting";
-import { liveStudentList } from '../../api';
+import { liveStudentList, leaveSchool, getStudentSurplusCourseFee } from '../../api';
 import pagination from "@/components/Pagination/index";
 export default {
   components: {
@@ -101,11 +97,11 @@ export default {
         //
       }
     },
-    leaveSchool(scope) {
+    async leaveSchool(scope) {
       let studentId = scope.row.studentId;
       let vipGroupId = this.id;
       let amount = scope.row.fee;
-      leaveSchool({ studentId, vipGroupId, amount }).then(res => {
+      await leaveSchool({ studentId, vipGroupId, amount }).then(res => {
         if (res.code == 200) {
           this.$message.success("退学成功");
           this.getStudents();
@@ -131,52 +127,23 @@ export default {
       });
     },
     lookFee(scope) {
-      this.$confirm(`确定是否退学?`, "提示", {
+      this.$confirm(`是否确认将该学员退学?<p style="color: red;marginTop:20px">如需退款请在OA中操作</p>`, "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
+        dangerouslyUseHTMLString: true,
         type: "warning"
       })
-        .then(() => {
+        .then(async () => {
           let id = scope.row.studentId;
           if (scope.row.studentStatus == 3) {
             this.leaveSchool(scope);
           } else {
-            getStudentSurplusCourseFee({
+            const { data } = await getStudentSurplusCourseFee({
               studentId: id,
               vipGroupId: this.id
-            }).then(res => {
-              if (res.code == 200) {
-                scope.row.fee = res.data.suplusCourseFee;
-                const h = this.$createElement;
-                this.$msgbox({
-                  title: "消息",
-                  closeOnClickModal: false,
-                  message: h("p", null, [
-                    h("p", null, "请输入退课金额 "),
-                    h("input", {
-                      class: "el-input__inner",
-                      attrs: { value: res.data.suplusCourseFee },
-                      on: {
-                        input: function (event) {
-                          scope.row.fee = event.target.value;
-                          this.$emit("input", event.target.value);
-                        }.bind(this)
-                      }
-                    }),
-                    h(
-                      "p",
-                      { style: "color: red;marginTop:20px" },
-                      "退费金额暂不进入账户余额"
-                    )
-                  ]),
-                  showCancelButton: true,
-                  confirmButtonText: "确定",
-                  cancelButtonText: "取消"
-                }).then(action => {
-                  this.leaveSchool(scope);
-                });
-              }
-            });
+            })
+            scope.row.fee = data.suplusCourseFee;
+            this.leaveSchool(scope);
           }
         })
         .catch(() => { });

+ 1 - 1
src/views/liveClassManager/modals/addLiveCourse.vue

@@ -47,7 +47,7 @@
       </div>
       <div class="planCore" v-if="lookList.length > 0">
         <div v-for="(item, index) in lookList" class="row" :key="index">
-          <div class="name">{{ item.type }}</div>
+          <!-- <div class="name">{{ item.type }}</div> -->
           <div class="week">{{ item.week }}</div>
           <div class="time">{{ item.time }}</div>
           <div class="operation">