lsc 1 week ago
parent
commit
a3d632e1e4
2 changed files with 139 additions and 1 deletions
  1. 34 1
      src/components/pages/pptEasy/addCourse3.vue
  2. 105 0
      src/mixins/mixin.js

+ 34 - 1
src/components/pages/pptEasy/addCourse3.vue

@@ -1272,6 +1272,7 @@ export default {
   watch: {
     steps(newValue) {
       if (newValue == 4) {
+        this.saveBeiKe()
         if (this.org == "16ace517-b5c7-4168-a9bb-a9e0035df840") {
           try {
             window.topU.U.UF.F.closeWindow(window.topU.$("#openCourseUpdate"));
@@ -3783,6 +3784,37 @@ export default {
       }
       this.courseUrl = url + "/pbl-student-table/dist/#/courseDetail?userid=" + this.userid + "&oid=" + this.oid + "&org=" + this.org + "&courseId=" + this.courseId + "&tType=1&cid=&screenType=2&noLogin=3"
     },
+    async saveBeiKe(){
+      let userArray = ['6fbc6471-1d48-11ed-8c78-005056b86db5','333d0dfc-1cd9-11ef-bee5-005056b86db5','6fbce5ef-1d48-11ed-8c78-005056b86db5','66feffcc-ad35-11ed-b13d-005056b86db5']
+      let endTime = await this.getServerTime()
+      let courseTime = Math.max(1, Math.ceil((new Date(endTime) - new Date(this.startTime)) / (1000 * 60)))
+      if (this.courseDetail.userid == this.userid && (this.org == '16ace517-b5c7-4168-a9bb-a9e0035df840' || userArray.includes(this.userid))) {
+        this.syncClassData2({
+          courseId: this.cid,
+          title: this.courseName,
+          ctitle: this.courseName,
+          courseGrade: '',
+          courseTime: courseTime,
+          startTime: this.startTime,
+          endTime: endTime,
+        }, 'selectUser')
+        console.log('同步数据')
+      }
+      let params = [
+        {
+          uid: this.userid,
+          cid: this.id,
+          type: "5",
+          time: courseTime * 60,
+        },
+      ];
+      this.ajax
+        .post(this.$store.state.api + "addOperationTimeT2", params)
+        .then((res) => { })
+        .catch((err) => {
+          console.error(err);
+        });
+    }
   },
   beforeDestroy() {
 
@@ -3797,7 +3829,8 @@ export default {
       this.selectCourseDetail();
     }, 500);
   },
-  mounted() {
+  async mounted() {
+    this.startTime = await this.getServerTime()
     // if (this.mergedList.includes(this.org)) {
     //   this.isTeacherSee = true
     // }

+ 105 - 0
src/mixins/mixin.js

@@ -11,6 +11,22 @@ export const myMixin = {
     };
   },
   methods: {
+    async getServerTime() {
+      try {
+        let res = await this.ajax.get(this.$store.state.api + 'getServerTime'); 
+        console.log(res)
+        let time = res.data.time
+        return new Date(time).toLocaleString("zh-CN", {
+          hour12: false,
+          timeZone: "Asia/Shanghai"
+        }).replace(/\//g, "-")
+      } catch (error) {
+        return new Date().toLocaleString("zh-CN", {
+          hour12: false,
+          timeZone: "Asia/Shanghai"
+        }).replace(/\//g, "-")
+      }
+    },
     detectBrowser() {
       const ua = navigator.userAgent;
 
@@ -226,6 +242,95 @@ export const myMixin = {
           })
         })
       })
+    },
+    // 新增:上课/备课数据实时同步接口
+    async syncClassData2(classData,api = 'selectUser') {
+      if (!this.$route.query.userid) return
+      try {
+        if(!this.userJson || !this.userJson.accountNumber){
+            let res = await this.ajax.get(this.$store.state.api + api, {
+            userid: this.$route.query.userid
+            });
+            this.userJson = res.data[0][0]
+        }
+      } catch (e) {
+        console.log(e);
+        setTimeout(() => {
+          this.syncClassData2(classData,'selectUser2');
+        }, 10000);
+        return;
+      }
+
+      
+      if(!this.packageArray || this.packageArray.length == 0){
+        let res = await this.ajax.get(this.$store.state.api + "selectai6AllCourse");
+        this.packageArray = res.data[0].map(item => {
+          let json = JSON.parse(item.package);
+          return json;
+        });
+        console.log(this.packageArray);
+      }
+      console.log(this.packageArray);
+
+      
+      let coursePackageName2 = '';
+      let courseName = '';
+      let courseGrade2 = '';
+
+      for(let item of this.packageArray){
+        if(classData.ctitle.includes(item.courseName)){
+          coursePackageName2 = item.coursePackage;
+          courseName = item.courseName;
+          courseGrade2 = item.grade;
+          break;
+        }
+      }
+
+      let courseGrade = classData.courseGrade ? await this.ajax.get(this.$store.state.api + "getClassById", { id: classData.courseGrade }) : '';
+      let coursePackageName = await this.ajax.get(this.$store.state.api + "getCopyCourseName", { id: classData.courseId });
+
+      if(courseGrade && !courseGrade2){
+        let array = this.packageArray.sort((a, b) => a.sort - b.sort)
+        for(let item2 of array){
+          if(courseGrade.data && courseGrade.data[0] && courseGrade.data[0][0] && courseGrade.data[0][0].grade.includes(item2.grade)){
+            coursePackageName2 = item2.coursePackage;
+            courseName = item2.courseName;
+            courseGrade2 = item2.grade;
+            break;
+          }
+        }
+      }
+
+      let area = this.areaJson.find(item => this.userJson.schooldest.includes(item.code) || this.userJson.schooldest.includes(item.name));
+      let dest = area ? area.name : '未知';
+
+      let params = {
+        "serverName": "深教AI6",
+        "dataType": 0,
+        "teacherName": this.userJson.username,
+        "teacherAccount": this.userJson.accountNumber,
+        "teacherPhone": this.userJson.phonenumber,
+        "eduId": this.userJson.eduid || this.userJson.sessionid,
+        "schoolName": this.userJson.schoolName,
+        "area": dest,
+        "coursePackageName": coursePackageName2 ? coursePackageName2 : coursePackageName.data[0][0].title,
+        "courseId": classData.courseId,
+        "courseName": courseName || classData.title,
+        "courseGrade": courseGrade2 ? courseGrade2 : courseGrade.data && courseGrade.data[0] && courseGrade.data[0][0] ? courseGrade.data[0][0].name : '无年级',
+        "courseTime": classData.courseTime,
+        "startTime": classData.startTime,
+        "endTime": classData.endTime
+      }
+      try {
+        const response = await this.ajax.post(
+          this.$store.state.apiSz + 'sync/class',
+          params
+        );
+        return { success: true, data: response.data };
+      } catch (error) {
+        console.error("同步失败:", error);
+        return { success: false, msg: error };
+      }
     }
   }
 };