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

Merge branch 'beta' of https://git.cocorobo.cn/CocoRoboLabs/pbl-teacher-table into beta

lsc 3 дней назад
Родитель
Сommit
4018471beb

+ 1 - 1
dist/index.html

@@ -37,7 +37,7 @@
       width: 100%;
       width: 100%;
       background: #e6eaf0;
       background: #e6eaf0;
       font-family: '黑体';
       font-family: '黑体';
-    }</style><link href=./static/css/app.cdf4f72145a2ca36d69eadf272e68846.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.23ea04dc469b57e2b4f8.js></script><script type=text/javascript src=./static/js/vendor.714ff2bfc93f2f096b79.js></script><script type=text/javascript src=./static/js/app.adef48db8cea8969297d.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.92b97eac7890ac88cd6d9348725b2aea.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.23ea04dc469b57e2b4f8.js></script><script type=text/javascript src=./static/js/vendor.714ff2bfc93f2f096b79.js></script><script type=text/javascript src=./static/js/app.7a56495fe4ee58354057.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {
     document.documentElement.addEventListener("touchstart", function (event) {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.92b97eac7890ac88cd6d9348725b2aea.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.92b97eac7890ac88cd6d9348725b2aea.css.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/workPage.48dddfde3fdf305b6255d571fb2e352b.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/workPage.48dddfde3fdf305b6255d571fb2e352b.css.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.7a56495fe4ee58354057.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.7a56495fe4ee58354057.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/manifest.23ea04dc469b57e2b4f8.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/workPage-manifest.2ece51fa34be51c8610a.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/workPage.0e90d471c8faa3f58f76.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/workPage.fe8a7921aac7bf3bca37.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/workPage.fe8a7921aac7bf3bca37.js.map


+ 1 - 1
dist/workPage.html

@@ -1,4 +1,4 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>工作页面 - CocoFlow</title><link rel=icon href=../static/logo.ico><link href=./static/css/workPage.a0639262caa662f5f810947e1d04d254.css rel=stylesheet></head><body><noscript><strong>We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script type=text/javascript src=./static/js/workPage-manifest.2ece51fa34be51c8610a.js></script><script type=text/javascript src=./static/js/workPage-vendor.e1fc95e471d70a1519e8.js></script><script type=text/javascript src=./static/js/workPage.0e90d471c8faa3f58f76.js></script></body></html><script>function stopSafari() {
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>工作页面 - CocoFlow</title><link rel=icon href=../static/logo.ico><link href=./static/css/workPage.48dddfde3fdf305b6255d571fb2e352b.css rel=stylesheet></head><body><noscript><strong>We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script type=text/javascript src=./static/js/workPage-manifest.2ece51fa34be51c8610a.js></script><script type=text/javascript src=./static/js/workPage-vendor.e1fc95e471d70a1519e8.js></script><script type=text/javascript src=./static/js/workPage.fe8a7921aac7bf3bca37.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {
     document.documentElement.addEventListener("touchstart", function (event) {

+ 94 - 28
src/components/pages/studentManageNew/component/addstu.vue

@@ -168,11 +168,12 @@
               <span class="download-template" @click="downloadTemplate"
               <span class="download-template" @click="downloadTemplate"
                 >{{ lang.ssDownloadTemp }}</span
                 >{{ lang.ssDownloadTemp }}</span
               >
               >
+              <span style="margin-left: 10px;font-weight: 600;">{{ lang.ssAccColOptional }}</span>
             </div>
             </div>
-            <div v-if="boxType == 0" style="margin-top: 10px">
+            <div v-if="boxType == 0" style="margin-top: 10px;font-weight: 600;">
               {{ lang.ssUploadNote }}
               {{ lang.ssUploadNote }}
             </div>
             </div>
-            <div v-else style="margin-top: 10px">
+            <div v-else style="margin-top: 10px;font-weight: 600;">
               {{ lang.ssSyncImportClassInfo }}
               {{ lang.ssSyncImportClassInfo }}
             </div>
             </div>
             <!-- <div style="margin-top: 10px">
             <!-- <div style="margin-top: 10px">
@@ -401,10 +402,10 @@ export default {
           export_json_to_excel,
           export_json_to_excel,
         } = require("../../../../common/Export2Excel");
         } = require("../../../../common/Export2Excel");
         // 增加 colWidths 参数以调整列宽,例如调整为 [20, 35, 20]
         // 增加 colWidths 参数以调整列宽,例如调整为 [20, 35, 20]
-        let tHeader = [this.lang.StudentName];
+        let tHeader = [this.lang.StudentName, this.lang.ssStuAccHd];
             
             
         if (this.boxType == 2) {
         if (this.boxType == 2) {
-           tHeader = [this.lang.StudentName,this.lang.Class];
+           tHeader = [this.lang.StudentName, this.lang.Class, this.lang.ssStuAccHd];
         }
         }
         const data = [];
         const data = [];
         const colWidths = [35]; // 设置每一列的宽度
         const colWidths = [35]; // 设置每一列的宽度
@@ -455,7 +456,7 @@ export default {
           }
           }
           outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); //outdata就是你想要的东西
           outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); //outdata就是你想要的东西
           let da = [...outdata];
           let da = [...outdata];
-          // console.log(da, "da");
+          console.log(da, "da");
           let arr = [];
           let arr = [];
           da.map((v) => {
           da.map((v) => {
             let obj = {};
             let obj = {};
@@ -471,9 +472,20 @@ export default {
                 _this.org &&
                 _this.org &&
                 _this.schoolChar
                 _this.schoolChar
               ) {
               ) {
+                if (Number(v[_this.lang.ssStuAccHd])) {
+                  obj.account = v[_this.lang.ssStuAccHd] + '@' + _this.schoolChar + '.' + _this.userSuffix;
+                } else {
+                  obj.account = '';
+                }
+
                 obj.mail =
                 obj.mail =
                   uuidv4() + "@" + _this.schoolChar + "." + _this.userSuffix;
                   uuidv4() + "@" + _this.schoolChar + "." + _this.userSuffix;
               } else {
               } else {
+                if (Number(v[_this.lang.ssStuAccHd])) {
+                  obj.account = v[_this.lang.ssStuAccHd] + + _this.userSuffix;
+                } else {
+                  obj.account = '';
+                }
                 obj.mail = uuidv4() + "@" + _this.userSuffix;
                 obj.mail = uuidv4() + "@" + _this.userSuffix;
               }
               }
               obj.class = _this.boxType == 2 ? v[_this.lang.Class] : _this.classInfo.id;
               obj.class = _this.boxType == 2 ? v[_this.lang.Class] : _this.classInfo.id;
@@ -611,19 +623,45 @@ export default {
       console.log(box, "box");
       console.log(box, "box");
       this.uploadfileLoading = true;
       this.uploadfileLoading = true;
       this.impbox = box;
       this.impbox = box;
+      let data1 = box.filter(e => !e.account);
+      let data2 = box.filter(e => e.account);
+
+      data2.forEach((e) => {
+        e.mail = e.account;
+      });
+
       const batchSize = 50;
       const batchSize = 50;
-      if (box.length > batchSize) {
-        // 计算总批次数
-        const totalBatches = Math.ceil(box.length / batchSize);
-        for (let i = 0; i < totalBatches; i++) {
-          const batch = box.slice(i * batchSize, (i + 1) * batchSize);
-          await this.uploadBatch(batch); // 假设 uploadBatch 返回 Promise
-          console.log(`第 ${i + 1} 批上传完成`, batch);
+      if (data1.length > 0) {
+        if (data1.length > batchSize) {
+          // 计算总批次数
+          const totalBatches = Math.ceil(data1.length / batchSize);
+          for (let i = 0; i < totalBatches; i++) {
+            const batch = data1.slice(i * batchSize, (i + 1) * batchSize);
+            await this.uploadBatch(batch); // 假设 uploadBatch 返回 Promise
+            console.log(`普通上传第 ${i + 1} 批上传完成`, batch);
+          }
+        } else {
+          // 长度不超过 10,直接上传整个数组
+          await this.uploadBatch(data1);
         }
         }
-      } else {
-        // 长度不超过 10,直接上传整个数组
-        await this.uploadBatch(box);
       }
       }
+
+      if (data2.length > 0) {
+        if (data2.length > batchSize) {
+          // 计算总批次数
+          const totalBatches = Math.ceil(data2.length / batchSize);
+          for (let i = 0; i < totalBatches; i++) {
+            const batch = data2.slice(i * batchSize, (i + 1) * batchSize);
+            await this.uploadBatchAccount (batch); // 假设 uploadBatch 返回 Promise
+            console.log(`自定义账号上传第 ${i + 1} 批上传完成`, batch);
+          }
+        } else {
+          // 长度不超过 10,直接上传整个数组
+          await this.uploadBatchAccount (data2);
+        }
+      }
+
+
       this.$message({
       this.$message({
         message: this.lang.ssAddOk,
         message: this.lang.ssAddOk,
         type: "success",
         type: "success",
@@ -671,21 +709,49 @@ export default {
             }
             }
             if (z == 2) {
             if (z == 2) {
               console.log("添加成功");
               console.log("添加成功");
-              // this.$message({
-              //   message: this.lang.ssAddOk,
-              //   type: "success",
-              // });
-              // this.deltypy = 0;
-              // this.popBoxdia= true;
-              // // this.addStuVisible = false;
-              // console.log('this.selectedStuData',this.selectedStuData);
-              
-              // // this.selectedStuData = [];
-              // this.$emit("getCascaderData");
-              // this.addOp3('1', "", { type: "student_add" }, "success")
             }
             }
             resolve(res);
             resolve(res);
-            // this.uploadfileLoading = false;
+          })
+          .catch((err) => {
+            console.error(err);
+            this.addOp3('1', "", { type: "student_add" }, err)
+            reject(err);
+          });
+        });
+    },
+    async uploadBatchAccount(box){
+      return new Promise((resolve, reject) => {
+        let z = 2;
+        let newArr = JSON.stringify(box);
+        let params = [
+          {
+            arr: newArr,
+            userpassword: "Coco1234",
+            oid: this.oid,
+          },
+        ];
+      console.log(params, "batchRegistrationMoreAcc");
+      // batchRegistrationMoreCopy
+        this.ajax
+          .post(this.$store.state.api + "batchRegistrationMoreAcc", params)
+          .then((res) => {
+            console.log(res, "res");
+            if (res.data.type == 1) {
+              this.$message.error(this.lang.stunumberregistered);
+              z = 1;
+            }
+            if (res.data.type == 2) {
+              this.$message.error(this.lang.stuaccregistered);
+              z = 1;
+            }
+            if (res.data.type == 3) {
+              this.$message.error(this.lang.studuplicateIDs);
+              z = 1;
+            }
+            if (z == 2) {
+              console.log("添加成功");
+            }
+            resolve(res);
           })
           })
           .catch((err) => {
           .catch((err) => {
             console.error(err);
             console.error(err);

+ 4 - 2
src/lang/cn.json

@@ -2016,7 +2016,8 @@
   "ssUploadTip":"支持格式:.xlsx,.xls,大小不超过10MB",
   "ssUploadTip":"支持格式:.xlsx,.xls,大小不超过10MB",
   "ssUploadTempLbl":"上传模板:",
   "ssUploadTempLbl":"上传模板:",
   "ssDownloadTemp":"下载模板",
   "ssDownloadTemp":"下载模板",
-  "ssUploadNote":"提示:请按照模板格式填写学生信息并导入。",
+  "ssUploadNote":"提示:请按照模板填写学生信息。",
+  "ssAccColOptional":"账户列非必填:手动输入则以输入为准,未输入则由系统自动生成。",
   "ssGetSuffixReUp":"正在获取后缀,请重新上传",
   "ssGetSuffixReUp":"正在获取后缀,请重新上传",
   "ssGetSuffixReAdd":"正在获取后缀,请重新添加",
   "ssGetSuffixReAdd":"正在获取后缀,请重新添加",
   "ssCheckStuNameCol":"请检查上传文件学生姓名列是否填写正确",
   "ssCheckStuNameCol":"请检查上传文件学生姓名列是否填写正确",
@@ -2041,6 +2042,7 @@
   "ssPPtUpProgress":"上传进度(*)",
   "ssPPtUpProgress":"上传进度(*)",
   "ssBilibiliVideoSearchKeyword":"请输入关键词",
   "ssBilibiliVideoSearchKeyword":"请输入关键词",
   "ssEditGrade":"编辑年级",
   "ssEditGrade":"编辑年级",
+  "ssStuAccHd":"账户",
   "ssConfirmDeleteClassStudentone":"确认移除*学生?",
   "ssConfirmDeleteClassStudentone":"确认移除*学生?",
   "ssExplanationTip":"解释说明",
   "ssExplanationTip":"解释说明",
   "ssAIGenerate":"AI生成",
   "ssAIGenerate":"AI生成",
@@ -2052,7 +2054,7 @@
   "ssSelectCourseType":"请选择课程类型",
   "ssSelectCourseType":"请选择课程类型",
   "ssSelectedCourse":"已选择 * 个课程",
   "ssSelectedCourse":"已选择 * 个课程",
   "ssSelectedApp":"已选择 * 个应用",
   "ssSelectedApp":"已选择 * 个应用",
-  "ssSyncImportClassInfo":"提示: 如需同步导入班级信息,请于此处下载导入模板,并于【班级】列准确输入年级+班级名称作为学生班级(兴趣班不支持导入学生)。",
+  "ssSyncImportClassInfo":"提示:如需同步导入班级信息,请于模板中的班级列,输入当前年级+班级名称作为学生班级(如六年级01班,兴趣班不支持新建学生)。",
   "ssNoSettingAnswer":"未设置正确答案",
   "ssNoSettingAnswer":"未设置正确答案",
   "allGrades": "全部年级",
   "allGrades": "全部年级",
   "ssVoteTopic": "投票主题"
   "ssVoteTopic": "投票主题"

+ 4 - 2
src/lang/en.json

@@ -2015,7 +2015,8 @@
   "ssUploadTip":"Supported: xlsx, xls , up to 10MB",
   "ssUploadTip":"Supported: xlsx, xls , up to 10MB",
   "ssUploadTempLbl":"Upload template:",
   "ssUploadTempLbl":"Upload template:",
   "ssDownloadTemp":"Download template",
   "ssDownloadTemp":"Download template",
-  "ssUploadNote":"Tip: Please fill in student information according to the template format to avoid import failure",
+  "ssUploadNote":"Tip: Please fill in student information according to the template format.",
+  "ssAccColOptional":"Account column is optional: manual input takes priority; if empty, it will be auto-generated by the system.",
   "ssGetSuffixReUp":"Getting suffix, please re-upload",
   "ssGetSuffixReUp":"Getting suffix, please re-upload",
   "ssGetSuffixReAdd":"Getting suffix, please re-add",
   "ssGetSuffixReAdd":"Getting suffix, please re-add",
   "ssCheckStuNameCol":"Please check whether the student name column in the uploaded file is correct",
   "ssCheckStuNameCol":"Please check whether the student name column in the uploaded file is correct",
@@ -2040,6 +2041,7 @@
   "ssPPtUpProgress":"Uploading (*)",
   "ssPPtUpProgress":"Uploading (*)",
   "ssBilibiliVideoSearchKeyword":"Please enter a keyword",
   "ssBilibiliVideoSearchKeyword":"Please enter a keyword",
   "ssEditGrade":"Edit Grade",
   "ssEditGrade":"Edit Grade",
+  "ssStuAccHd":"Account",
   "ssConfirmDeleteClassStudentone":"Confirm remove * student?",
   "ssConfirmDeleteClassStudentone":"Confirm remove * student?",
   "ssExplanationTip":"Explanation",
   "ssExplanationTip":"Explanation",
   "ssAIGenerate":"AI Generate",
   "ssAIGenerate":"AI Generate",
@@ -2052,7 +2054,7 @@
   "ssSelectedCourse":"Selected * courses",
   "ssSelectedCourse":"Selected * courses",
   "ssSelectedApp":"Selected * apps",
   "ssSelectedApp":"Selected * apps",
   "ssNoSettingAnswer":"No correct answer set",
   "ssNoSettingAnswer":"No correct answer set",
-  "ssSyncImportClassInfo":"Tip: If you need to synchronize import class information, please download the import template here, and accurately enter the grade + class name as the student class in the [Class] column (interest classes do not support importing students).",
+  "ssSyncImportClassInfo":"Tip: For importing class information, please enter the grade + class name in the [Class] column as the student class (e.g., 6th grade 01 class, interest classes do not support importing students).",
   "allGrades": "All Grades",
   "allGrades": "All Grades",
   "ssVoteTopic": "Voting Theme"
   "ssVoteTopic": "Voting Theme"
 }
 }

+ 4 - 2
src/lang/hk.json

@@ -2015,7 +2015,8 @@
   "ssUploadTip":"支持格式:.xlsx,.xls,大小不超過10MB",
   "ssUploadTip":"支持格式:.xlsx,.xls,大小不超過10MB",
   "ssUploadTempLbl":"上傳模板:",
   "ssUploadTempLbl":"上傳模板:",
   "ssDownloadTemp":"下載模板",
   "ssDownloadTemp":"下載模板",
-  "ssUploadNote":"提示:請按照模板格式填寫學生信息,避免導入失敗",
+  "ssUploadNote":"提示:請按照模板格式填寫學生信息。",
+  "ssAccColOptional":"賬戶列非必填:手動輸入則以輸入為準,未輸入則由系統自動生成。",
   "ssGetSuffixReUp":"正在獲取後綴,請重新上傳",
   "ssGetSuffixReUp":"正在獲取後綴,請重新上傳",
   "ssGetSuffixReAdd":"正在獲取後綴,請重新添加",
   "ssGetSuffixReAdd":"正在獲取後綴,請重新添加",
   "ssCheckStuNameCol":"請檢查上傳文件學生姓名列是否填寫正確",
   "ssCheckStuNameCol":"請檢查上傳文件學生姓名列是否填寫正確",
@@ -2040,6 +2041,7 @@
   "ssPPtUpProgress":"上傳進度(*)",
   "ssPPtUpProgress":"上傳進度(*)",
   "ssBilibiliVideoSearchKeyword":"請輸入關鍵詞",
   "ssBilibiliVideoSearchKeyword":"請輸入關鍵詞",
   "ssEditGrade":"修改年級",
   "ssEditGrade":"修改年級",
+  "ssStuAccHd":"賬戶",
   "ssConfirmDeleteClassStudentone":"確定移除 * 名學生嗎?",
   "ssConfirmDeleteClassStudentone":"確定移除 * 名學生嗎?",
   "ssExplanationTip":"解釋說明",
   "ssExplanationTip":"解釋說明",
   "ssAIGenerate":"AI生成",
   "ssAIGenerate":"AI生成",
@@ -2053,7 +2055,7 @@
   "ssSelectedApp":"已選擇 * 個應用",
   "ssSelectedApp":"已選擇 * 個應用",
   "ssCocoNoteUpdateTips":"協同建構不支持修改基本信息,只支持加入分組。",
   "ssCocoNoteUpdateTips":"協同建構不支持修改基本信息,只支持加入分組。",
   "ssNoSettingAnswer":"未設置正確答案",
   "ssNoSettingAnswer":"未設置正確答案",
-  "ssSyncImportClassInfo":"提示: 如需同步導入班級信息,請於此處下載導入模板,並於【班級】列準確輸入年級+班級名稱作為學生班級(興趣班不支持導入學生)。",
+  "ssSyncImportClassInfo":"提示:如需同步導入班級信息,請於模板中的班級列,輸入當前年級+班級名稱作為學生班級(如六年級01班,興趣班不支持導入學生)。",
   "allGrades": "全部年級",
   "allGrades": "全部年級",
   "ssVoteTopic": "投票主題"
   "ssVoteTopic": "投票主題"
 }
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов