Просмотр исходного кода

feat: add course creation limit check and multilingual prompt

add per-term 5-course creation limit check for specific org,
add corresponding multilingual texts for cn/hk/en locales
lsc 3 дней назад
Родитель
Сommit
7816784679
4 измененных файлов с 42 добавлено и 5 удалено
  1. 36 2
      src/components/main/courseSelect.vue
  2. 2 1
      src/lang/cn.json
  3. 2 1
      src/lang/en.json
  4. 2 1
      src/lang/hk.json

+ 36 - 2
src/components/main/courseSelect.vue

@@ -291,6 +291,7 @@ import selectTeachingClassDialog from '../dialog/selectTeachingClassDialog.vue'
 // import { dataType } from 'element-plus/es/components/table-v2/src/common';
 import axios from 'axios';
 import { openCourseIframe } from '@/composables/useCourseIframe'
+import { ElMessage } from 'element-plus'
 
 const lang = inject('lang')
 
@@ -430,6 +431,23 @@ const getImageUrl = (url) => {
   return new URL(url, import.meta.url).href
 }
 
+const checkClass = async () => {
+  if(user.user.org == '16ace517-b5c7-4168-a9bb-a9e0035df840'){
+    let params = {
+      userid: user.user.userid,
+    };
+    try {
+      const res = await axios.get('https://pbl.cocorobo.cn/api/pbl/checkClass', params)
+      let data = res.data[0][0]
+      return data
+    } catch (err) {
+      console.error(err);
+    }
+  }else {
+    return 2
+  }
+}
+
 // 新课备课 获取id
 const getCourseid = (id) => {
 // 会返回复制得课程
@@ -438,13 +456,21 @@ const getCourseid = (id) => {
     headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
     withCredentials: true
   })
-    .then(res => {
+    .then(async res => {
         console.log(res);
         console.log(res.data[0]);
         // console.log(res.data[0][0].courseId);
         if (res.data[0].length > 0) {
           DialogRef.value.getClasslist(res.data[0][0])
         } else {
+          let classResult = await checkClass()
+          if(classResult == 1){
+            ElMessage({
+              message: lang.ssCreateCourseLimit,
+              type: 'warning',
+            })
+            return
+          }
           getCourseid2(id, "studyDetail")
         }
     })
@@ -477,7 +503,7 @@ const openCourseDetail = (id) => {
     headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
     withCredentials: true
   })
-  .then(res => {
+  .then(async res => {
     console.log('openCourseDetail',res)
     if (res.data[0].length > 0) {
       return getCourseUrl(res.data[0][0])
@@ -500,6 +526,14 @@ const openCourseDetail = (id) => {
       // top.U.MD.D.I.openInApplication("studyDetail", res.value[0][0].courseId, 2, user.user.type);
       top.U.MD.D.I.openInApplication('setUrl',{url:url2,title:'课程详情',id:new Date().getTime()})
     } else {
+      let classResult = await checkClass()
+      if(classResult == 1){
+        ElMessage({
+          message: lang.ssCreateCourseLimit,
+          type: 'warning',
+        })
+        return
+      }
       updateCourseId(id, "studyDetail")
     }
   })

+ 2 - 1
src/lang/cn.json

@@ -68,5 +68,6 @@
   "ssOtherIssue": "其他问题",
   "ssFeedbackPlaceholder": "请描述你使用过程遇到的问题,我们会持续修改优化",
   "ssFeedbackSuccess": "反馈问题提交成功",
-  "ssFeedbackEmptyTip": "请输入您要反馈的意见"
+  "ssFeedbackEmptyTip": "请输入您要反馈的意见",
+  "ssCreateCourseLimit":"创建课程每学期仅创建5次"
 }

+ 2 - 1
src/lang/en.json

@@ -68,5 +68,6 @@
   "ssOtherIssue": "Other Issues",
   "ssFeedbackPlaceholder": "Please describe the issues you encountered. We will keep improving.",
   "ssFeedbackSuccess": "Feedback submitted successfully",
-  "ssFeedbackEmptyTip": "Please enter your feedback"
+  "ssFeedbackEmptyTip": "Please enter your feedback",
+  "ssCreateCourseLimit":"Create course limit per term is 5"
 }

+ 2 - 1
src/lang/hk.json

@@ -68,5 +68,6 @@
   "ssOtherIssue": "其他問題",
   "ssFeedbackPlaceholder": "請描述你使用過程遇到的問題,我們會持續修改優化",
   "ssFeedbackSuccess": "反饋問題提交成功",
-  "ssFeedbackEmptyTip": "請輸入您要反饋的意見"
+  "ssFeedbackEmptyTip": "請輸入您要反饋的意見",
+  "ssCreateCourseLimit":"創建課程每学期僅創建5次"
 }