Ver Fonte

提交排课

1
mo há 4 anos atrás
pai
commit
6db4581ed9

+ 5 - 5
src/views/teamDetail/componentCourse/addCompound.vue

@@ -95,9 +95,12 @@
             >
 
             <el-button type="primary" @click="resetClass" size="mini"
+              v-permission="'courseSchedule/batchCourseAdjust'"
+
               >课程调整</el-button
             >
             <el-button type="primary" @click="submitClass" size="mini"
+            v-permission="'courseSchedule/courseMerge'"
               >课程合并</el-button
             >
           </div>
@@ -246,7 +249,6 @@ export default {
     },
     resetClass() {
       // 判断条件
-      console.log(this.dataList);
       if (!this.checkCourseTimer()) {
         this.$message.error("请选择相同的课程时长");
       }
@@ -256,7 +258,7 @@ export default {
       let  idList =[];
       this.dataList.forEach((course) => {
         idList.push(course.id)
-        arr.push(course.classGroupId);
+        arr.push(course.musicGroupId);
         if (course.status != "NOT_START") {
           isNotStart = true;
         }
@@ -265,6 +267,7 @@ export default {
         this.$message.error("请选择未开始的课程");
         return;
       }
+
       if ((arr = [...new Set(arr)].length != 1)) {
         this.$message.error("请选择相同的课程组");
         return;
@@ -295,9 +298,6 @@ export default {
     compoundList(val) {
       this.dataList = val;
     },
-    isLook(val) {
-      console.log(val);
-    },
   },
 };
 </script>

+ 115 - 4
src/views/teamDetail/componentCourse/modals/coursePostpone.vue

@@ -1,12 +1,123 @@
 <template>
   <div>
+    <el-form :model="postponeForm" ref="postponeForm" :rules="postponeRules">
+      <el-form-item label="开始日期" prop="pauseDate">
+        <el-date-picker
+          v-model.trim="postponeForm.pauseDate"
+          type="date"
+          :disabled="true"
+          :picker-options="{
+            firstDayOfWeek: 1,
+          }"
+          value-format="yyyy-MM-dd"
+          placeholder="选择日期"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="顺延日期" prop="recoveryDate">
+        <el-date-picker
+          v-model.trim="postponeForm.recoveryDate"
+          type="date"
+          :picker-options="processDate()"
+          value-format="yyyy-MM-dd"
+          placeholder="选择日期"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="跳过节假日">
+        <el-checkbox v-model.trim="postponeForm.holiday"></el-checkbox>
+      </el-form-item>
+      <span style="color: #f56c6c"
+        >注意:课程顺延会将「开始日期」之后的全部未开始课程;<br />
+        调整到「顺延日期」之后重新排课 支持将课程批量提前;</span
+      >
+    </el-form>
 
+    <div class="buttonWrap">
+      <el-button @click="gotoNext" type="primary">下一步</el-button>
+          <el-button @click="()=>{$emit('cancaleMerge')}" >取 消</el-button>
+    </div>
   </div>
 </template>
 <script>
 export default {
-  data(){
-    return
-  }
-}
+  props: ["idList", "dataList"],
+  data() {
+    return {
+      postponeForm: {
+        pauseDate: "",
+        recoveryDate: "",
+        holiday: "",
+      },
+      postponeRules: {
+        pauseDate: [
+          { required: true, message: "请选择开始日期", trigger: "blur" },
+        ],
+        recoveryDate: [
+          { required: true, message: "请选择顺延日期", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  mounted() {
+    this.getFirstDate();
+  },
+  methods: {
+    processDate() {
+      //提出结束时间必须大于提出开始时间
+      return {
+        firstDayOfWeek: 1,
+        disabledDate(time) {
+          return time.getTime() + 86400000 <= Date.now();
+          //开始时间不选时,结束时间最大值小于等于当天
+        },
+      };
+    },
+    gotoNext() {
+      this.$refs.postponeForm.validate((reset) => {
+        if (reset) {
+          let obj = {
+            courseScheduleIds: this.idList,
+            changeMainTeacher: false,
+            changeTeachingTeacher: false,
+            startDate: null,
+            startTime: "",
+            pauseDate:this.$helpers.dayjs(this.postponeForm.pauseDate).format('YYYY-MM-DD'),
+            recoveryDate:this.postponeForm.recoveryDate,
+            classGroupTeacherMapperList:null,
+            teachMode: null,
+            allowZeroSalary: false,
+            schoolId: null,
+            confirmGenerate: false,
+            holiday: this.postponeForm.holiday,
+          };
+          this.$emit("submit", obj);
+        }
+      });
+    },
+    getFirstDate() {
+      // this.postponeForm.pauseDate
+      this.dataList.forEach((course, index) => {
+        if (index == 0) {
+          this.postponeForm.pauseDate = course.classDate;
+        } else {
+          let dayjs = this.$helpers.dayjs;
+          dayjs(course.classDate).valueOf() -
+            dayjs(this.postponeForm.pauseDate).valueOf() >
+          0
+            ? this.postponeForm.pauseDate
+            : (this.postponeForm.pauseDate = course.classDate);
+        }
+      });
+    },
+  },
+};
 </script>
+<style  lang="scss" scoped>
+.buttonWrap {
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-end;
+}
+</style>

+ 1 - 0
src/views/teamDetail/componentCourse/modals/resetCoursePreview.vue

@@ -77,3 +77,4 @@ export default {
   }
 };
 </script>
+

+ 148 - 0
src/views/teamDetail/componentCourse/modals/resetCourses.vue

@@ -0,0 +1,148 @@
+<template>
+  <div>
+    <el-form :inline="true" v-model="timeForm" ref="timeForm">
+      <el-form-item label="开始时间" prop="starttime">
+        <el-time-picker
+          v-model="timeForm.starttime"
+          @change="changeStartTime"
+          format="HH:mm"
+          value-format="HH:mm"
+          :picker-options="{
+            selectableRange: `04:00:00 - 23:59:00`,
+          }"
+          placeholder="选择时间"
+        ></el-time-picker>
+      </el-form-item>
+      <el-form-item label="结束时间" prop="endTime">
+        <el-time-picker
+          v-model="timeForm.endTime"
+          format="HH:mm"
+          value-format="HH:mm"
+          :disabled="true"
+          placeholder="选择时间"
+        ></el-time-picker>
+      </el-form-item>
+      <el-form-item label=" 上课模式" prop="teachMode">
+        <el-select
+          v-model.trim="timeForm.teachMode"
+          style="width: 220px !important"
+        >
+          <el-option label="线上课" value="ONLINE"></el-option>
+          <el-option label="线下课" value="OFFLINE"></el-option>
+          <el-option label="不修改" value=""></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label=" 教学地点" prop="address">
+        <el-select
+          v-model.trim="timeForm.address"
+          style="width: 220px !important"
+          filterable
+          clearable
+        >
+          <el-option label="不修改" :value="''"></el-option>
+          <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 class="buttonWrap">
+      <el-button @click="gotoNext" type="primary">下一步</el-button>
+      <el-button @click="()=>{$emit('cancaleMerge')}" >取 消</el-button>
+    </div>
+  </div>
+</template>
+<script>
+import { diffTimerFormMinute, addTimerFormMinute } from "@/utils/date";
+import { getSchool } from "@/api/systemManage";
+export default {
+  props: ["idList", "dataList"],
+  data() {
+    return {
+      timeForm: {
+        starttime: null,
+        endTime: "",
+        teachMode: "",
+        address: "",
+      },
+      timeRules: {
+        endTime: [
+          { required: true, message: "请选择结束时间", trigger: "blur" },
+        ],
+      },
+      schoolList: [],
+    };
+  },
+  mounted() {
+    getSchool().then((res) => {
+      if (res.code == 200) {
+        this.schoolList = res.data;
+      }
+    });
+  },
+  methods: {
+    changeStartTime(val) {
+      let dayjs = this.$helpers.dayjs;
+      const time = diffTimerFormMinute(
+        dayjs(this.dataList[0]?.classDate).format("YYYY-MM-DD"),
+        dayjs(this.dataList[0]?.startClassTime).format("HH:mm"),
+        dayjs(this.dataList[0]?.endClassTime).format("HH:mm")
+      );
+
+      if (val) {
+        this.$nextTick((res) => {
+          this.$set(this.timeForm, "starttime", val);
+        });
+
+        this.$set(
+          this.timeForm,
+          "endTime",
+          addTimerFormMinute(
+            dayjs(this.dataList[0]?.classDate).format("YYYY-MM-DD"),
+            this.timeForm.starttime,
+            time
+          )
+        );
+      } else {
+        this.$set(this.timeForm, "endTime", "");
+      }
+    },
+    gotoNext() {
+
+        if(!this.timeForm.starttime){
+          this.$message.error('请选择开始时间')
+          return
+        }
+          let obj = {
+            courseScheduleIds: this.idList,
+            changeMainTeacher: false,
+            changeTeachingTeacher: false,
+            startDate: null,
+            startTime: this.timeForm.starttime+":00",
+            pauseDate: null,
+            recoveryDate: null,
+            classGroupTeacherMapperList: null,
+            teachMode: this.timeForm.teachMode,
+            allowZeroSalary: false,
+            schoolId: this.timeForm.address,
+            confirmGenerate: false,
+            holiday: null,
+          };
+          this.$emit("submit", obj);
+
+
+    },
+  },
+};
+</script>
+<style  lang="scss" scoped>
+.buttonWrap {
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-end;
+}
+</style>

+ 1 - 0
src/views/teamDetail/componentCourse/modals/resetTeacher.vue

@@ -34,6 +34,7 @@
     </el-form>
     <div class="buttonWrap">
       <el-button @click="gotoNext" type="primary">下一步</el-button>
+          <el-button @click="()=>{$emit('cancaleMerge')}" >取 消</el-button>
     </div>
   </div>
 </template>

+ 17 - 7
src/views/teamDetail/componentCourse/resetCourse.vue

@@ -11,9 +11,20 @@
           @submit="submit"
         />
       </el-tab-pane>
-      <el-tab-pane label="课程顺延" name="second"> </el-tab-pane>
-      <el-tab-pane label="课程调整" name="third"> </el-tab-pane>
+      <el-tab-pane label="课程顺延" name="second">
+        <couresPostpone   v-if="activeName == 'second'"  @cancaleMerge="cancaleMerge"
+          :idList="idList"
+          :dataList="dataList"
+          @submit="submit"/>
+      </el-tab-pane>
+      <el-tab-pane label="课程调整" name="third">
+        <courseResets  v-if="activeName == 'third'" @cancaleMerge="cancaleMerge"
+          :idList="idList"
+          :dataList="dataList"
+          @submit="submit"/>
+      </el-tab-pane>
     </el-tabs>
+
     <el-dialog
       title="班级预览"
       :visible.sync="previewVisible"
@@ -30,10 +41,12 @@
 </template>
 <script>
 import resetTeacher from "./modals/resetTeacher";
+import couresPostpone from './modals/coursePostpone'
+import courseResets from './modals/resetCourses'
 import { batchCourseAdjust } from "@/api/buildTeam";
 import preview from "./modals/resetCoursePreview";
 export default {
-  components: { resetTeacher, preview },
+  components: { resetTeacher, preview,couresPostpone,courseResets },
   props: ["dataList", "idList"],
   data() {
     return {
@@ -45,14 +58,12 @@ export default {
   },
   methods: {
     handleClick(val) {
-      // console.log(val)
-      // this.activeName = val
+
     },
     cancaleMerge() {
       this.$emit("cancaleMerge");
     },
     async submit(form) {
-      console.log(form);
       try {
         const res = await batchCourseAdjust(form);
         if (res.code == 206) {
@@ -77,7 +88,6 @@ export default {
           this.$emit("closeReset");
         }
         if(res.code == 207){
-          console.log(207)
            await this.$confirm(
           res.msg || `当前课程课酬预计为0,是否继续`,
           "提示",