Bladeren bron

学生管理

11wqe1 2 weken geleden
bovenliggende
commit
a40a170755

+ 122 - 122
src/components/pages/studentManage/class.vue

@@ -15,11 +15,11 @@
               )
             ">
           <span class="icon gradeI"></span>
-          <span class="name">年级管理</span>
+          <span class="name">{{lang.GradeManagement}}</span>
         </div>
         <div class="nav active">
           <span class="icon classI"></span>
-          <span class="name">班级管理</span>
+          <span class="name">{{lang.ClassManagement}}</span>
         </div>
         <div class="nav" @click="
               goTo(
@@ -34,7 +34,7 @@
               )
             ">
           <span class="icon studentI"></span>
-          <span class="name">学生管理</span>
+          <span class="name">{{lang.StudentManagement}}</span>
         </div>
       </div>
       <div class="sm_right">
@@ -46,19 +46,19 @@
       ">
           <div class="pb_head top">
             <div style="display: flex; align-items: center">
-              <span>班级管理</span>
+              <span>{{lang.ClassManagement}}</span>
             </div>
             <div style="border-radius: 4px">
-              <el-button type="primary" class="bgColor student_button" @click="dialogVisible = true">添加班级</el-button>
+              <el-button type="primary" class="bgColor student_button" @click="dialogVisible = true">{{lang.AddClass}}</el-button>
             </div>
           </div>
           <div class="student_head">
             <div class="student_search">
               <span>
-                <el-input placeholder="请输入班级名称" v-model="sClassName" clearable class="student_input">
+                <el-input :placeholder="lang.EnterClassName" v-model="sClassName" clearable class="student_input">
                 </el-input>
               </span>
-              <el-button type="primary" @click="searchClass" class="student_button">查询</el-button>
+              <el-button type="primary" @click="searchClass" class="student_button">{{lang.Search}}</el-button>
             </div>
           </div>
         </div>
@@ -67,22 +67,22 @@
             <el-table v-if="ctype == 1" ref="table" :key="1" :data="tableData" border :height="tableHeight" :fit="true"
               v-loading="isLoading" style="width: 100%; height: 60%" :header-cell-style="{ background: '#f1f1f1' }"
               :row-class-name="tableRowClassName">
-              <el-table-column prop="name" label="班级名称" align="center">
+              <el-table-column prop="name" :label="lang.ClassName" align="center">
               </el-table-column>
-              <el-table-column label="所属年级" align="center">
+              <el-table-column :label="lang.Grade" align="center">
                 <template slot-scope="{ row }">
                   {{ getGrade(row.pid) }}
                 </template>
               </el-table-column>
-              <el-table-column prop="pnum" label="人数" align="center">
+              <el-table-column prop="pnum" :label="lang.NumberofStudents" align="center">
               </el-table-column>
-              <el-table-column label="操作" width="600px">
+              <el-table-column :label="lang.Operate" width="600px">
                 <template slot-scope="scope">
                   <div class="classButtonBox">
-                    <el-button type="primary" size="small" @click="getStudent(scope.row.id)">查看学生</el-button>
-                    <el-button type="primary" size="small" @click="updateG(scope.row.pid, scope.row.id)">修改年级</el-button>
+                    <el-button type="primary" size="small" @click="getStudent(scope.row.id)">{{lang.ViewStudents}}</el-button>
+                    <el-button type="primary" size="small" @click="updateG(scope.row.pid, scope.row.id)">{{lang.EditGrade}}</el-button>
                     <el-button type="primary" size="small"
-                      @click="openUpdate(scope.row.id, scope.row.name)">修改名称</el-button>
+                      @click="openUpdate(scope.row.id, scope.row.name)">{{lang.EditName}}</el-button>
                     <el-button class="de_button" type="primary" size="small" v-show="false" @click="
                       goTo(
                         '/studentEva?userid=' +
@@ -98,8 +98,8 @@
                         '&fathType=' +
                         '0'
                       )
-                      ">查看评价</el-button>
-                    <el-button type="primary" size="small" @click="deleteClass(scope.row.id)">删除</el-button>
+                      ">{{lang.Viewreviews}}</el-button>
+                    <el-button type="primary" size="small" @click="deleteClass(scope.row.id)">{{lang.Delete}}</el-button>
                   </div>
                 </template>
               </el-table-column>
@@ -118,23 +118,23 @@
         border-radius: 5px;
       ">
           <div class="pb_head top">
-            <span>查看学生</span>
+            <span>{{lang.ViewStudents}}</span>
             <div style="border-radius: 4px">
-              <el-button type="primary" class="bgColor student_button" @click="(ctype = 1), getClass()">返回</el-button>
+              <el-button type="primary" class="bgColor student_button" @click="(ctype = 1), getClass()">{{lang.Back}}</el-button>
             </div>
           </div>
           <div class="student_head">
             <div class="head_left">
-              <el-input v-model="sPhoneUser" class="student_input" placeholder="请输入用户名"></el-input>
-              <el-select disabled v-model="cid" placeholder="请选择班级" class="student_input" @change="searchStudent">
-                <el-option label="所有人" value=""></el-option>
+              <el-input v-model="sPhoneUser" class="student_input" :placeholder="lang.Enterusername"></el-input>
+              <el-select disabled v-model="cid" :placeholder="lang.SelectClass" class="student_input" @change="searchStudent">
+                <el-option :label="lang.AllPeople" value=""></el-option>
                 <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name"
                   :value="item.id"></el-option>
               </el-select>
-              <el-button type="primary" class="student_button" @click="searchStudent">查询</el-button>
+              <el-button type="primary" class="student_button" @click="searchStudent">{{lang.Search}}</el-button>
             </div>
             <div class="head_right">
-              <el-button @click="addStudent" class="student_button">添加学生</el-button>
+              <el-button @click="addStudent" class="student_button">{{lang.AddStudent}}</el-button>
             </div>
           </div>
         </div>
@@ -143,7 +143,7 @@
             <el-table v-if="ctype == 2" :key="2" ref="table2" :data="tableData2" border :height="tableHeight" :fit="true"
               v-loading="isLoading" style="width: 100%" :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }"
               :row-class-name="tableRowClassName">
-              <el-table-column label="姓名" min-width="10" align="center">
+              <el-table-column :label="lang.Name" min-width="10" align="center">
                 <template slot-scope="scope">
                   <div class="userImg">
                     <div class="tx">
@@ -164,22 +164,22 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column label="学生账号" min-width="15" align="center">
+              <el-table-column :label="lang.StudentAccount" min-width="15" align="center">
                 <template slot-scope="scope">
                   <div>{{ scope.row.un ? scope.row.un : "" }}</div>
                 </template>
               </el-table-column>
-              <el-table-column prop="classname2" label="班级" min-width="15" align="center">
+              <el-table-column prop="classname2" :label="lang.Class" min-width="15" align="center">
               </el-table-column>
-              <el-table-column label="操作" width="250px">
+              <el-table-column :label="lang.Operate" width="250px">
                 <template slot-scope="scope">
                   <div class="btnBox">
                     <el-button class="de_button" type="primary" size="small"
-                      @click="iniPassword(scope.row.userid)">初始化密码</el-button>
+                      @click="iniPassword(scope.row.userid)">{{lang.InitialPassword}}</el-button>
                     <el-button class="de_button" type="primary" size="small"
-                      @click="updateStudentA(scope.row)">修改</el-button>
+                      @click="updateStudentA(scope.row)">{{lang.Modified}}</el-button>
                     <el-button class="de_button" type="primary" size="small"
-                      @click="deleteClassStudent(scope.row.userid)">移除</el-button>
+                      @click="deleteClassStudent(scope.row.userid)">{{lang.Remove}}</el-button>
                     <!-- <div class="delete">
                   <img src="../../../assets/remove.png" alt @click="deleteStudent(scope.row.userid, scope.row.state)" />
                 </div> -->
@@ -201,43 +201,43 @@
         <div class="logoImg">
           <img src="../../../assets/logo.png" alt />
         </div>
-        <div class="title_add_student">添加学生</div>
+        <div class="title_add_student">{{lang.AddStudent}}</div>
       </div>
       <el-form>
-        <el-form-item label="学生姓名" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentName" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生姓名" clearable v-model="sName" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuname" clearable v-model="sName" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生学号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生学号" clearable v-model="sId" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterStudentNumber" clearable v-model="sId" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生手机号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentPhoneNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生手机号" clearable v-model="sPhone" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterStudentPhoneNumber" clearable v-model="sPhone" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生账号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentAccount" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生账号" clearable v-model="sMail" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuacc" clearable v-model="sMail" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="所属学校" :label-width="formLabelWidth">
+        <el-form-item :label="lang.AffiliatedSchool" :label-width="formLabelWidth">
           <el-input disabled style="width: 300px" v-model="schoolName"></el-input>
         </el-form-item>
-        <el-form-item label="班级" :label-width="formLabelWidth">
-          <el-select v-model="cid" placeholder="请选择班级" disabled>
+        <el-form-item :label="lang.Class" :label-width="formLabelWidth">
+          <el-select v-model="cid" :placeholder="lang.SelectClass" disabled>
             <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <div style="text-align: center; color: #adb3b7">
-          注:添加学生的账号密码为Coco1234
+          {{lang.NoteTdpfnsai}}
         </div>
       </el-form>
       <span slot="footer" class="dialog-footer flex">
-        <el-button class="right" @click="insertStudent">确认</el-button>
+        <el-button class="right" @click="insertStudent">{{lang.confirm}}</el-button>
       </span>
     </el-dialog>
     <el-dialog :visible.sync="dialogVisibleUpdate" :append-to-body="true" width="700px" :before-close="handleClose"
@@ -246,110 +246,110 @@
         <div class="logoImg">
           <img src="../../../assets/logo.png" alt />
         </div>
-        <div class="title_add_student">修改学生</div>
+        <div class="title_add_student">{{lang.EditStudent}}</div>
       </div>
       <el-form>
-        <el-form-item label="学生名称" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentName" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生姓名" clearable v-model="userinfo.name" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuname" clearable v-model="userinfo.name" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生学号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生学号" clearable v-model="userinfo.studentid" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterStudentNumber" clearable v-model="userinfo.studentid" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生手机号" :label-width="formLabelWidth">
+        <el-form-item label="lang.StudentPhoneNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生手机号" clearable v-model="userinfo.phonenumber" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterStudentPhoneNumber" clearable v-model="userinfo.phonenumber" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生账号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentAccount" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生账号" clearable v-model="userinfo.un" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuacc" clearable v-model="userinfo.un" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="所属学校" :label-width="formLabelWidth">
+        <el-form-item :label="lang.AffiliatedSchool" :label-width="formLabelWidth">
           <el-input disabled style="width: 300px" v-model="schoolName"></el-input>
         </el-form-item>
-        <el-form-item label="班级" :label-width="formLabelWidth">
-          <el-select multiple collapse-tags v-model="userinfo.classid" placeholder="请选择班级">
+        <el-form-item :label="lang.Class" :label-width="formLabelWidth">
+          <el-select multiple collapse-tags v-model="userinfo.classid" :placeholder="lang.SelectClass">
             <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <div style="text-align: center; color: #adb3b7">
-          注:添加学生的账号密码为Coco1234
+          {{lang.NoteTdpfnsai}}
         </div>
       </el-form>
       <span slot="footer" class="dialog-footer flex">
-        <el-button class="right" @click="updateStudent">修改</el-button>
+        <el-button class="right" @click="updateStudent">{{lang.Modified}}</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="添加班级" :visible.sync="dialogVisible" :append-to-body="true" width="25%" :before-close="handleClose"
+    <el-dialog :title="lang.AddClass" :visible.sync="dialogVisible" :append-to-body="true" width="25%" :before-close="handleClose"
       class="dialog_diy">
       <el-form>
-        <el-form-item label="班级名称" :label-width="formLabelWidth">
-          <el-input v-model="className" auto-complete="off" placeholder="请输入班级..."></el-input>
+        <el-form-item :label="lang.ClassName" :label-width="formLabelWidth">
+          <el-input v-model="className" auto-complete="off" :placeholder="lang.Enterclass"></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="insertClass">确 定</el-button>
+        <el-button @click="dialogVisible = false">{{lang.Cancel}}</el-button>
+        <el-button type="primary" @click="insertClass">{{lang.Confirm}}</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="修改年级" :visible.sync="dialogVisibleGrade" :append-to-body="true" width="25%"
+    <el-dialog :title="lang.EditGrade" :visible.sync="dialogVisibleGrade" :append-to-body="true" width="25%"
       :before-close="handleClose" class="dialog_diy">
       <el-form>
-        <el-form-item label="选择年级" :label-width="formLabelWidth">
-          <el-select v-model="gid" placeholder="请选择班级" class="student_input" clearable>
+        <el-form-item :label="lang.SelectGrade" :label-width="formLabelWidth">
+          <el-select v-model="gid" :placeholder="lang.SelectClass" class="student_input" clearable>
             <el-option v-for="(item, index) in grade" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleGrade = false">取 消</el-button>
-        <el-button type="primary" @click="updateGrade">确 定</el-button>
+        <el-button @click="dialogVisibleGrade = false">{{lang.Cancel}}</el-button>
+        <el-button type="primary" @click="updateGrade">{{lang.Confirm}}</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="修改班级" :visible.sync="dialogVisible1" :append-to-body="true" width="25%" :before-close="handleClose"
+    <el-dialog :title="lang.EditClass" :visible.sync="dialogVisible1" :append-to-body="true" width="25%" :before-close="handleClose"
       class="dialog_diy">
       <el-form>
-        <el-form-item label="班级名称" :label-width="formLabelWidth">
-          <el-input v-model="className1" auto-complete="off" placeholder="请输入班级..."></el-input>
+        <el-form-item :label="lang.ClassName" :label-width="formLabelWidth">
+          <el-input v-model="className1" auto-complete="off" :placeholder="lang.Enterclass"></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible1 = false">取 消</el-button>
-        <el-button type="primary" @click="updateClass">确 定</el-button>
+        <el-button @click="dialogVisible1 = false">{{lang.Cancel}}</el-button>
+        <el-button type="primary" @click="updateClass">{{lang.Confirm}}</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="添加学生" :visible.sync="dialogVisibleMember" :append-to-body="true" width="500px" height="80%"
+    <el-dialog :title="lang.AddStudent" :visible.sync="dialogVisibleMember" :append-to-body="true" width="500px" height="80%"
       :before-close="handleClose" class="addNewPP">
       <div class="people">
         <div class="people_top">
           <div class="people_top_right">
             <div class="people_search">
-              <el-input placeholder="搜索学生姓名" v-model="searchTN" @keyup.enter.native="getClassStudent"></el-input>
+              <el-input :placeholder="lang.Searchstudentname" v-model="searchTN" @keyup.enter.native="getClassStudent"></el-input>
               <div class="search_img" @click="getClassStudent">
                 <img src="../../../assets/icon/search.png" alt />
               </div>
             </div>
           </div>
-          <div class="people_nav">选择成员</div>
+          <div class="people_nav">{{lang.SelectMembers}}</div>
         </div>
         <div class="t_j_box" style="
             padding: 20px 0 0 25px;
             width: calc(100% - 55px);
             margin-left: 25px;
           ">
-          <span>姓名</span>
-          <span>账号</span>
+          <span>{{lang.Name}}</span>
+          <span>{{lang.Account}}</span>
         </div>
         <el-checkbox-group v-model="checkboxList3" class="people_name" v-if="teacherJuri.length" v-loading="isLoading2">
           <el-checkbox v-for="item in teacherJuri" :key="item.userid" :label="item.userid">
             <div class="t_j_box">
-              <el-tooltip placement="top" :content="item.name ? item.name : '暂无姓名'">
-                <span>{{ item.name ? item.name : "暂无姓名" }}</span>
+              <el-tooltip placement="top" :content="item.name ? item.name : lang.Noname">
+                <span>{{ item.name ? item.name : lang.Noname }}</span>
               </el-tooltip>
               <el-tooltip placement="top" :content="item.username">
                 <span>{{ item.username }}</span>
@@ -357,7 +357,7 @@
             </div>
           </el-checkbox>
         </el-checkbox-group>
-        <div style="text-align: center; margin-top: 10px" v-else>暂无数据</div>
+        <div style="text-align: center; margin-top: 10px" v-else>{{lang.Nodata}}</div>
       </div>
       <div style="margin-top: 10px">
         <el-pagination background layout="prev, pager, next" :page-size="pageSize3" :total="total3"
@@ -365,15 +365,15 @@
           @current-change="handleCurrentChange3"></el-pagination>
       </div>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleMember = false">取 消</el-button>
-        <el-button type="primary" @click="addClassStudent">确定</el-button>
+        <el-button @click="dialogVisibleMember = false">{{lang.Cancel}}</el-button>
+        <el-button type="primary" @click="addClassStudent">{{lang.Confirm}}</el-button>
       </span>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import TaskListHeader from "gantt-elastic/src/components/TaskList/TaskListHeader.vue";
+// import TaskListHeader from "gantt-elastic/src/components/TaskList/TaskListHeader.vue";
 
 export default {
   data() {
@@ -441,7 +441,7 @@ export default {
             name = element.name;
           }
         });
-        return name ? name : "暂无";
+        return name ? name : lang.None;
       };
     },
   },
@@ -519,9 +519,9 @@ export default {
       this.dialogVisibleGrade = true;
     },
     updateGrade() {
-      this.$confirm("确定修改吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(lang.makechanges, lang.tip, {
+        confirmButtonText: lang.Confirm,
+        cancelButtonText: lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -562,12 +562,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他班级名称相同!",
+              message: lang.Cannotsameothercla,
               type: "error",
             });
           } else {
             this.$message({
-              message: "新增成功",
+              message: lang.AddSuccessful,
               type: "success",
             });
             this.dialogVisible = false;
@@ -578,7 +578,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "新增失败",
+            message: lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -596,12 +596,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他班级名称相同!",
+              message: lang.Cannotsameothercla,
               type: "error",
             });
           } else {
             this.$message({
-              message: "修改成功",
+              message: lang.Editsuccessful,
               type: "success",
             });
             this.dialogVisible1 = false;
@@ -612,7 +612,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "修改失败",
+            message: lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -646,9 +646,9 @@ export default {
         id: id,
       };
       if (this.time()) {
-        this.$confirm("确定删除此班级吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
+        this.$confirm(lang.Aystdtc, lang.tip, {
+          confirmButtonText: lang.Confirm,
+          cancelButtonText: lang.Cancel,
           type: "warning",
         })
           .then(() => {
@@ -656,7 +656,7 @@ export default {
               .get(this.$store.state.api + "deleteClass", params)
               .then((res) => {
                 this.$message({
-                  message: "删除成功",
+                  message: lang.Successfullydelete,
                   type: "success",
                 });
                 if (this.page != 1 && this.tableData.length == 1) {
@@ -665,7 +665,7 @@ export default {
                 this.getClass();
               })
               .catch((err) => {
-                this.$message.error("删除失败");
+                this.$message.error(lang.Deletefailed);
                 console.error(err);
               });
           })
@@ -683,18 +683,18 @@ export default {
     //新增学生
     insertStudent() {
       if (this.sName === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(lang.Stucannotempty);
         return;
       } else if (
         this.sPhone != "" &&
         !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.sPhone)
       ) {
-        this.$message.error("手机号格式不正确");
+        this.$message.error(lang.phonenumberincorrect);
         return;
       } else if (
         !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(this.sMail)
       ) {
-        this.$message.error("邮箱格式不正确");
+        this.$message.error(lang.Emailformatincorrect);
         return;
       }
 
@@ -704,7 +704,7 @@ export default {
           .get(this.$store.state.api + "findMail", params)
           .then((res) => {
             if (res.data[0].length > 0) {
-              this.$message.error("此学生账号已被注册");
+              this.$message.error(lang.accalreadyregistered);
             } else {
               this.add_Student();
             }
@@ -751,7 +751,7 @@ export default {
               console.error(err);
             });
           this.$message({
-            message: "新增成功",
+            message: lang.AddSuccessful,
             type: "success",
           });
           this.dialogVisibleAddStudent = false;
@@ -764,7 +764,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "新增失败",
+            message: lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -778,23 +778,23 @@ export default {
     },
     updateStudent() {
       if (this.userinfo.name === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(lang.Stucannotempty);
         return;
       } else if (!this.userinfo.classid) {
-        this.$message.error("请为学生选择班级");
+        this.$message.error(lang.chooseclastudents);
         return;
       } else if (
         this.userinfo.phonenumber &&
         !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.userinfo.phonenumber)
       ) {
-        this.$message.error("手机号格式不正确");
+        this.$message.error(lang.phonenumberincorrect);
         return;
       } else if (
         !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(
           this.userinfo.un
         )
       ) {
-        this.$message.error("邮箱格式不正确");
+        this.$message.error(lang.Emailformatincorrect);
         return;
       }
 
@@ -805,7 +805,7 @@ export default {
             .get(this.$store.state.api + "findMail", params)
             .then((res) => {
               if (res.data[0].length > 0) {
-                this.$message.error("此学生账号已被注册");
+                this.$message.error(lang.accalreadyregistered);
               } else {
                 this.update_Student();
               }
@@ -833,7 +833,7 @@ export default {
         .post(this.$store.state.api + "updateStudentInfo", params)
         .then((res) => {
           this.$message({
-            message: "修改成功",
+            message: lang.Editsuccessful,
             type: "success",
           });
           this.dialogVisibleUpdate = false;
@@ -842,7 +842,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "修改失败",
+            message: lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -850,9 +850,9 @@ export default {
     },
     deleteClassStudent(id) {
       let params = [{ uid: id, cid: this.cid }];
-      this.$confirm("确定移除此学生在本班级吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(lang.removestu, lang.tip, {
+        confirmButtonText: lang.Confirm,
+        cancelButtonText: lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -860,13 +860,13 @@ export default {
             .post(this.$store.state.api + "deleteClassStudent", params)
             .then((res) => {
               this.$message({
-                message: "操作成功",
+                message: lang.OperateSuccessful,
                 type: "success",
               });
               this.getStudent(this.cid);
             })
             .catch((err) => {
-              this.$message.error("操作失败");
+              this.$message.error(lang.operationfailed);
               console.error(err);
             });
         })
@@ -958,7 +958,7 @@ export default {
     },
     addClassStudent() {
       if (!this.checkboxList3.length) {
-        this.$message.error("请选择要添加班级的学生");
+        this.$message.error(lang.selectstuaddcla);
         return;
       }
       let params = [
@@ -979,9 +979,9 @@ export default {
         });
     },
     iniPassword(id) {
-      this.$confirm("确定" + "初始化" + "此学生的密码吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(lang.Aystrtp, lang.tip, {
+        confirmButtonText: lang.Confirm,
+        cancelButtonText: lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -995,7 +995,7 @@ export default {
             .post(this.$store.state.api + "iniPassword", params)
             .then((res) => {
               this.$message({
-                message: "初始化密码成功!",
+                message: lang.Resetsuccessful,
                 type: "success",
               });
             })

+ 102 - 102
src/components/pages/studentManage/grade/index.vue

@@ -4,7 +4,7 @@
       <div class="sm_left">
         <div class="nav active">
           <span class="icon gradeI"></span>
-          <span class="name">年级管理</span>
+          <span class="name">{{ lang.GradeManagement }}</span>
         </div>
         <div class="nav" @click="
               goTo(
@@ -19,7 +19,7 @@
               )
             ">
           <span class="icon classI"></span>
-          <span class="name">班级管理</span>
+          <span class="name">{{ lang.ClassManagement }}</span>
         </div>
         <div class="nav" @click="
               goTo(
@@ -34,7 +34,7 @@
               )
             ">
           <span class="icon studentI"></span>
-          <span class="name">学生管理</span>
+          <span class="name">{{lang.StudentManagement}}</span>
         </div>
       </div>
       <div class="sm_right">
@@ -49,19 +49,19 @@
             display: flex;
             align-items: center;
         ">
-              <span>年级管理</span>
+              <span>{{ lang.GradeManagement }}</span>
             </div>
             <div style="border-radius: 4px">
-              <el-button type="primary" class="bgColor student_button" @click="dialogVisible = true">添加年级</el-button>
+              <el-button type="primary" class="bgColor student_button" @click="dialogVisible = true">{{ lang.AddGrade }}</el-button>
             </div>
           </div>
           <div class="student_head">
             <div class="student_search">
               <span>
-                <el-input class="student_input" placeholder="请输入年级名称" v-model="sClassName" clearable>
+                <el-input class="student_input" :placeholder="lang.EnterGradeName" v-model="sClassName" clearable>
                 </el-input>
               </span>
-              <el-button class="student_button" type="primary" @click="searchClass">查询</el-button>
+              <el-button class="student_button" type="primary" @click="searchClass">{{ lang.Search }}</el-button>
             </div>
           </div>
         </div>
@@ -70,15 +70,15 @@
             <el-table v-if="ctype == 1" ref="table" :key="1" :data="tableData" border :height="tableHeight" :fit="true"
               v-loading="isLoading" style="width: 100%; height: 60%" :header-cell-style="{ background: '#f1f1f1' }"
               :row-class-name="tableRowClassName">
-              <el-table-column prop="name" label="年级名称" min-width="40%" align="center">
+              <el-table-column prop="name" :label="lang.GradeName" min-width="40%" align="center">
               </el-table-column>
-              <el-table-column prop="pnum" label="班级数" min-width="40%" align="center">
+              <el-table-column prop="pnum" :label="lang.NumberofClasses" min-width="40%" align="center">
               </el-table-column>
-              <el-table-column label="操作" width="250px">
+              <el-table-column :label="lang.Operate" width="250px">
                 <template slot-scope="scope">
-                  <el-button type="primary" size="small" @click="getStudent(scope.row.id)">查看班级</el-button>
-                  <el-button type="primary" size="small" @click="openUpdate(scope.row.id, scope.row.name)">修改</el-button>
-                  <el-button type="primary" size="small" @click="deleteGrade(scope.row.id)">删除</el-button>
+                  <el-button type="primary" size="small" @click="getStudent(scope.row.id)">{{lang.ViewClasses}}</el-button>
+                  <el-button type="primary" size="small" @click="openUpdate(scope.row.id, scope.row.name)">{{lang.Modified}}</el-button>
+                  <el-button type="primary" size="small" @click="deleteGrade(scope.row.id)">{{lang.Delete}}</el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -96,20 +96,20 @@
         border-radius: 5px;
       ">
           <div class="pb_head top">
-            <span>查看班级-{{ getGrade(cid) }} </span>
+            <span>{{lang.ViewClasses}}-{{ getGrade(cid) }} </span>
             <div class="student_button" style="border-radius: 4px">
-              <el-button type="primary" class="bgColor student_button" @click="(ctype = 1), getClass()">返回</el-button>
+              <el-button type="primary" class="bgColor student_button" @click="(ctype = 1), getClass()">{{lang.Back}}</el-button>
             </div>
           </div>
           <div class="student_head">
             <div class="student_search">
               <span>
-                <el-input class="student_input" v-model="sPhoneUser" placeholder="请输入班级"></el-input>
+                <el-input class="student_input" v-model="sPhoneUser" :placeholder="lang.Enterclass"></el-input>
               </span>
-              <el-button class="student_button" @click="searchStudent">查询</el-button>
+              <el-button class="student_button" @click="searchStudent">{{lang.Search}}</el-button>
             </div>
             <div>
-              <el-button @click="addStudent" class="student_button">添加班级</el-button>
+              <el-button @click="addStudent" class="student_button">{{lang.AddClass}}</el-button>
             </div>
           </div>
         </div>
@@ -118,20 +118,20 @@
             <el-table v-if="ctype == 2" :key="2" ref="table2" :data="tableData2" border :height="tableHeight" :fit="true"
               v-loading="isLoading" style="width: 100%" :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }"
               :row-class-name="tableRowClassName">
-              <el-table-column label="班级" min-width="10" align="center">
+              <el-table-column :label="lang.Classes" min-width="10" align="center">
                 <template slot-scope="scope">
                   <div>
                     {{ scope.row.name }}
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column prop="pnum" label="学生数" min-width="15" align="center">
+              <el-table-column prop="pnum" :label="lang.numberstu" min-width="15" align="center">
               </el-table-column>
-              <el-table-column label="操作" width="250px">
+              <el-table-column :label="lang.Operate" width="250px">
                 <template slot-scope="scope">
                   <div class="btnBox">
                     <el-button class="de_button" type="primary" size="small"
-                      @click="deleteClassStudent(scope.row.id)">移除</el-button>
+                      @click="deleteClassStudent(scope.row.id)">{{lang.Remove}}</el-button>
                     <!-- <div class="delete">
                     <img src="../../../../assets/remove.png" alt @click="deleteStudent(scope.row.userid, scope.row.state)" />
                   </div> -->
@@ -153,43 +153,43 @@
         <div class="logoImg">
           <img src="../../../../assets/logo.png" alt />
         </div>
-        <div class="title_add_student">添加学生</div>
+        <div class="title_add_student">{{ lang.AddStudents }}</div>
       </div>
       <el-form>
-        <el-form-item label="学生姓名" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentName" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生姓名" clearable v-model="sName" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuname" clearable v-model="sName" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生学号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生学号" clearable v-model="sId" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterStudentNumber" clearable v-model="sId" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生手机号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentPhoneNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生手机号" clearable v-model="sPhone" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterStudentPhoneNumber" clearable v-model="sPhone" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生账号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentAccount" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生账号" clearable v-model="sMail" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuacc" clearable v-model="sMail" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="所属学校" :label-width="formLabelWidth">
+        <el-form-item :label="lang.AffiliatedSchool" :label-width="formLabelWidth">
           <el-input disabled style="width: 300px" v-model="schoolName"></el-input>
         </el-form-item>
-        <el-form-item label="班级" :label-width="formLabelWidth">
-          <el-select v-model="cid" placeholder="请选择班级" disabled>
+        <el-form-item :label="lang.Classes" :label-width="formLabelWidth">
+          <el-select v-model="cid" :placeholder="lang.SelectClass" disabled>
             <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <div style="text-align: center; color: #adb3b7">
-          注:添加学生的账号密码为Coco1234
+         {{lang.NoteTdpfnsai}}
         </div>
       </el-form>
       <span slot="footer" class="dialog-footer flex">
-        <el-button class="right" @click="insertStudent">确认</el-button>
+        <el-button class="right" @click="insertStudent">{{lang.confirm}}</el-button>
       </span>
     </el-dialog>
     <el-dialog :visible.sync="dialogVisibleUpdate" :append-to-body="true" width="700px" :before-close="handleClose"
@@ -198,82 +198,82 @@
         <div class="logoImg">
           <img src="../../../../assets/logo.png" alt />
         </div>
-        <div class="title_add_student">修改学生</div>
+        <div class="title_add_student">{{lang.EditStudent}}</div>
       </div>
       <el-form>
-        <el-form-item label="学生名称" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentName" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生姓名" clearable v-model="userinfo.name" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuname" clearable v-model="userinfo.name" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生学号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生学号" clearable v-model="userinfo.studentid" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterStudentNumber" clearable v-model="userinfo.studentid" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生手机号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentPhoneNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生手机号" clearable v-model="userinfo.phonenumber" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterStudentPhoneNumber" clearable v-model="userinfo.phonenumber" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生账号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentAccount" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生账号" clearable v-model="userinfo.un" class="add_input"></el-input>
+            <el-input :placeholder="lamg.enterstuacc" clearable v-model="userinfo.un" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="所属学校" :label-width="formLabelWidth">
+        <el-form-item :label="lang.AffiliatedSchool" :label-width="formLabelWidth">
           <el-input disabled style="width: 300px" v-model="schoolName"></el-input>
         </el-form-item>
-        <el-form-item label="班级" :label-width="formLabelWidth">
-          <el-select multiple collapse-tags v-model="userinfo.classid" placeholder="请选择班级">
+        <el-form-item :label="lang.Classes" :label-width="formLabelWidth">
+          <el-select multiple collapse-tags v-model="userinfo.classid" :placeholder="lang.SelectClass">
             <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <div style="text-align: center; color: #adb3b7">
-          注:添加学生的账号密码为Coco1234
+         {{lang.NoteTdpfnsai}}
         </div>
       </el-form>
       <span slot="footer" class="dialog-footer flex">
-        <el-button class="right" @click="updateStudent">修改</el-button>
+        <el-button class="right" @click="updateStudent">{{lang.Modified}}</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="添加年级" :visible.sync="dialogVisible" :append-to-body="true" width="400px" :before-close="handleClose"
+    <el-dialog :title="lang.AddGrade" :visible.sync="dialogVisible" :append-to-body="true" width="400px" :before-close="handleClose"
       class="dialog_diy">
       <el-form>
-        <el-form-item label="添加年级" :label-width="formLabelWidth">
-          <el-input v-model="className" auto-complete="off" placeholder="请输入年级..."></el-input>
+        <el-form-item :label="lang.AddGrade" :label-width="formLabelWidth">
+          <el-input v-model="className" auto-complete="off" :placeholder="lang.EnterGrade"></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="insertGrade">确 定</el-button>
+        <el-button @click="dialogVisible = false">{{lang.Cancel}}</el-button>
+        <el-button type="primary" @click="insertGrade">{{lang.Confirm}}</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="修改年级" :visible.sync="dialogVisible1" :append-to-body="true" width="25%" :before-close="handleClose"
+    <el-dialog :title="lang.EditGrade" :visible.sync="dialogVisible1" :append-to-body="true" width="25%" :before-close="handleClose"
       class="dialog_diy">
       <el-form>
-        <el-form-item label="年级名称" :label-width="formLabelWidth">
-          <el-input v-model="className1" auto-complete="off" placeholder="请输入年级..."></el-input>
+        <el-form-item :label="lang.GradeName" :label-width="formLabelWidth">
+          <el-input v-model="className1" auto-complete="off" :placeholder="lang.EnterGrade"></el-input>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible1 = false">取 消</el-button>
-        <el-button type="primary" @click="updateGrade">确 定</el-button>
+        <el-button @click="dialogVisible1 = false">{{lang.Cancel}}</el-button>
+        <el-button type="primary" @click="updateGrade">{{lang.Confirm}}</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="选择班级" :visible.sync="dialogVisibleMember" :append-to-body="true" width="500px" height="80%"
+    <el-dialog :title="lang.SelectClasses" :visible.sync="dialogVisibleMember" :append-to-body="true" width="500px" height="80%"
       :before-close="handleClose" class="addNewPP">
       <div class="people">
         <div class="people_top">
           <div class="people_top_right">
             <div class="people_search">
-              <el-input placeholder="搜索班级名称" v-model="searchTN" @keyup.enter.native="handleCurrentChange3(1)"></el-input>
+              <el-input :placeholder="lang.SearchforClassName" v-model="searchTN" @keyup.enter.native="handleCurrentChange3(1)"></el-input>
               <div class="search_img" @click="handleCurrentChange3(1)">
                 <img src="../../../../assets/icon/search.png" alt />
               </div>
             </div>
           </div>
-          <div class="people_nav">选择班级</div>
+          <div class="people_nav">{{lang.SelectClasses}}</div>
         </div>
         <!-- <div
           class="t_j_box"
@@ -283,7 +283,7 @@
             margin-left: 25px;
           "
         >
-          <span>班级</span>
+          <span>lang.Classes</span>
         </div> -->
         <el-checkbox-group v-model="checkboxList3" class="people_name" v-if="teacherJuri.length" v-loading="isLoading2">
           <el-checkbox v-for="item in teacherJuri" :key="item.id" :label="item.id">
@@ -292,7 +292,7 @@
             </div>
           </el-checkbox>
         </el-checkbox-group>
-        <div style="text-align: center; margin-top: 10px" v-else>暂无数据</div>
+        <div style="text-align: center; margin-top: 10px" v-else>{{lang.Nodata}}</div>
       </div>
       <div style="margin-top: 10px">
         <el-pagination background layout="prev, pager, next" :page-size="pageSize3" :total="total3"
@@ -300,8 +300,8 @@
           @current-change="handleCurrentChange3"></el-pagination>
       </div>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisibleMember = false">取 消</el-button>
-        <el-button type="primary" @click="addClassStudent">确定</el-button>
+        <el-button @click="dialogVisibleMember = false">{{lang.Cancel}}</el-button>
+        <el-button type="primary" @click="addClassStudent">{{lang.Confirm}}</el-button>
       </span>
     </el-dialog>
   </div>
@@ -371,7 +371,7 @@ export default {
             name = element.name;
           }
         });
-        return name ? name : "暂无";
+        return name ? name : lang.None;
       };
     },
   },
@@ -446,12 +446,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他年级名称相同!",
+              message: "lang.Cannotsameother",
               type: "error",
             });
           } else {
             this.$message({
-              message: "新增成功",
+              message: lang.AddSuccessful,
               type: "success",
             });
             this.dialogVisible = false;
@@ -462,7 +462,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "新增失败",
+            message: lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -480,12 +480,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他年级名称相同!",
+              message: "lang.Cannotsameother",
               type: "error",
             });
           } else {
             this.$message({
-              message: "修改成功",
+              message: lang.Editsuccessful,
               type: "success",
             });
             this.dialogVisible1 = false;
@@ -496,7 +496,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "修改失败",
+            message: lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -530,9 +530,9 @@ export default {
         id: id,
       };
       if (this.time()) {
-        this.$confirm("确定删除此年级吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
+        this.$confirm(lang.Aystdtg, lang.tip, {
+          confirmButtonText: lang.Confirm,
+          cancelButtonText: lang.Cancel,
           type: "warning",
         })
           .then(() => {
@@ -540,7 +540,7 @@ export default {
               .get(this.$store.state.api + "deleteGrade", params)
               .then((res) => {
                 this.$message({
-                  message: "删除成功",
+                  message: lang.Successfullydelete,
                   type: "success",
                 });
                 if (this.page != 1 && this.tableData.length == 1) {
@@ -549,7 +549,7 @@ export default {
                 this.getClass();
               })
               .catch((err) => {
-                this.$message.error("删除失败");
+                this.$message.error(lang.Deletefailed);
                 console.error(err);
               });
           })
@@ -568,18 +568,18 @@ export default {
     //新增学生
     insertStudent() {
       if (this.sName === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(lang.Stucannotempty);
         return;
       } else if (
         this.sPhone != "" &&
         !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.sPhone)
       ) {
-        this.$message.error("手机号格式不正确");
+        this.$message.error(lang.phonenumberincorrect);
         return;
       } else if (
         !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(this.sMail)
       ) {
-        this.$message.error("邮箱格式不正确");
+        this.$message.error(lang.Emailformatincorrect);
         return;
       }
 
@@ -589,7 +589,7 @@ export default {
           .get(this.$store.state.api + "findMail", params)
           .then((res) => {
             if (res.data[0].length > 0) {
-              this.$message.error("此学生账号已被注册");
+              this.$message.error(lang.accalreadyregistered);
             } else {
               this.add_Student();
             }
@@ -636,7 +636,7 @@ export default {
               console.error(err);
             });
           this.$message({
-            message: "新增成功",
+            message: lang.AddSuccessful,
             type: "success",
           });
           this.dialogVisibleAddStudent = false;
@@ -649,7 +649,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "新增失败",
+            message: lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -663,23 +663,23 @@ export default {
     },
     updateStudent() {
       if (this.userinfo.name === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(lang.Stucannotempty);
         return;
       } else if (!this.userinfo.classid) {
-        this.$message.error("请为学生选择年级");
+        this.$message.error(lang.selectgradestu);
         return;
       } else if (
         this.userinfo.phonenumber &&
         !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.userinfo.phonenumber)
       ) {
-        this.$message.error("手机号格式不正确");
+        this.$message.error(lang.phonenumberincorrect);
         return;
       } else if (
         !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(
           this.userinfo.un
         )
       ) {
-        this.$message.error("邮箱格式不正确");
+        this.$message.error(lang.Emailformatincorrect);
         return;
       }
 
@@ -690,7 +690,7 @@ export default {
             .get(this.$store.state.api + "findMail", params)
             .then((res) => {
               if (res.data[0].length > 0) {
-                this.$message.error("此学生账号已被注册");
+                this.$message.error(lang.accalreadyregistered);
               } else {
                 this.update_Student();
               }
@@ -718,7 +718,7 @@ export default {
         .post(this.$store.state.api + "updateStudentInfo", params)
         .then((res) => {
           this.$message({
-            message: "修改成功",
+            message: lang.Editsuccessful,
             type: "success",
           });
           this.dialogVisibleUpdate = false;
@@ -727,7 +727,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "修改失败",
+            message: lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -735,9 +735,9 @@ export default {
     },
     deleteClassStudent(id) {
       let params = [{ uid: id, cid: this.cid }];
-      this.$confirm("确定在本年级移除此班级吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(lang.Aystrtcftg, lang.tip, {
+        confirmButtonText: lang.Confirm,
+        cancelButtonText: lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -745,13 +745,13 @@ export default {
             .post(this.$store.state.api + "deleteGradeClass", params)
             .then((res) => {
               this.$message({
-                message: "操作成功",
+                message: lang.OperateSuccessful,
                 type: "success",
               });
               this.getStudent(this.cid);
             })
             .catch((err) => {
-              this.$message.error("操作失败");
+              this.$message.error(lang.operationfailed);
               console.error(err);
             });
         })
@@ -845,7 +845,7 @@ export default {
     },
     addClassStudent() {
       if (!this.checkboxList3.length) {
-        this.$message.error("请选择要添加的班级");
+        this.$message.error(lang.selectclassadd);
         return;
       }
       let params = [
@@ -866,9 +866,9 @@ export default {
         });
     },
     iniPassword(id) {
-      this.$confirm("确定" + "初始化" + "此学生的密码吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(lang.Aystrtp, lang.tip, {
+        confirmButtonText: lang.Confirm,
+        cancelButtonText: lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -882,7 +882,7 @@ export default {
             .post(this.$store.state.api + "iniPassword", params)
             .then((res) => {
               this.$message({
-                message: "初始化密码成功!",
+                message: lang.Resetsuccessful,
                 type: "success",
               });
             })

+ 100 - 100
src/components/pages/studentManage/student.vue

@@ -15,7 +15,7 @@
               )
             ">
           <span class="icon gradeI"></span>
-          <span class="name">年级管理</span>
+          <span class="name">{{lang.GradeManagement}}</span>
         </div>
         <div class="nav" @click="
               goTo(
@@ -30,11 +30,11 @@
               )
             ">
           <span class="icon classI"></span>
-          <span class="name">班级管理</span>
+          <span class="name">{{lang.ClassManagement}}</span>
         </div>
         <div class="nav active">
           <span class="icon studentI"></span>
-          <span class="name">学生管理</span>
+          <span class="name">{{lang.StudentManagement}}</span>
         </div>
       </div>
       <div class="sm_right">
@@ -49,30 +49,30 @@
             display: flex;
             align-items: center;
         ">
-              <span>学生管理</span>
+              <span>{{lang.StudentManagement}}</span>
             </div>
           </div>
           <div class="student_head">
             <div class="head_left">
-              <el-input v-model="sPhoneUser" class="student_input" placeholder="请输入用户名"></el-input>
-              <el-select v-model="cid" placeholder="请选择班级" class="student_input" @change="searchStudent">
-                <el-option label="所有人" value=""></el-option>
+              <el-input v-model="sPhoneUser" class="student_input" :placeholder="lang.Enterusername"></el-input>
+              <el-select v-model="cid" :placeholder="lang.SelectClass" class="student_input" @change="searchStudent">
+                <el-option :label="lang.AllPeople" value=""></el-option>
                 <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name"
                   :value="item.id"></el-option>
               </el-select>
-              <el-button class="student_button" @click="searchStudent" type="primary">查询</el-button>
+              <el-button class="student_button" @click="searchStudent" type="primary">{{lang.Search}}</el-button>
             </div>
             <div class="head_right">
-              <el-button @click="addStudent" type="primary" class="student_button">添加学生</el-button>
+              <el-button @click="addStudent" type="primary" class="student_button">{{lang.AddStudents}}</el-button>
               <el-upload class="upload-demo newCss" :http-request="handleChange" :on-remove="handleRemove" action="#"
                 :file-list="fileListUpload" accept=".xlsx">
-                <el-button size="primary" type="primary">批量添加</el-button>
+                <el-button size="primary" type="primary">{{lang.BatchAdd}}</el-button>
                 <div slot="tip" class="el-upload__tip" style="margin-left: 10px">
-                  只能上传xlsx文件,且不超过500kb
+                  {{lang.XLSXMax}}
                 </div>
               </el-upload>
               <!-- <el-button @click="exportExcel">导出学生</el-button> -->
-              <div @click="getExcel">xls 上传样例</div>
+              <div @click="getExcel">{{lang.EXffu}}</div>
             </div>
           </div>
         </div>
@@ -81,7 +81,7 @@
             <el-table ref="table" :data="tableData" border :height="tableHeight" :fit="true" v-loading="isLoading"
               style="width: 100%" :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }"
               :row-class-name="tableRowClassName">
-              <el-table-column label="姓名" min-width="10" align="center">
+              <el-table-column :label="lang.Name" min-width="10" align="center">
                 <template slot-scope="scope">
                   <div class="userImg">
                     <div class="tx">
@@ -102,7 +102,7 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column label="学生账号" min-width="15" align="center">
+              <el-table-column :label="lang.StudentAccount" min-width="15" align="center">
                 <template slot-scope="scope">
                   <div>{{ scope.row.un ? scope.row.un : "" }}</div>
                 </template>
@@ -112,7 +112,7 @@
                 <div>{{scope.row.phonenumber ? scope.row.phonenumber : "" }}</div>
               </template>
             </el-table-column> -->
-              <!-- <el-table-column prop="studentid" label="学号" min-width="10" align="center"></el-table-column> -->
+              <!-- <el-table-column prop="studentid" label=lang.studentIDL min-width="10" align="center"></el-table-column> -->
               <!-- <el-table-column
               prop="school"
               label="学校"
@@ -120,18 +120,18 @@
               align="center"
             >
             </el-table-column>-->
-              <el-table-column prop="classname2" label="班级" min-width="15" align="center">
+              <el-table-column prop="classname2" :label="lang.Class" min-width="15" align="center">
               </el-table-column>
-              <el-table-column label="操作" width="250px">
+              <el-table-column :label="lang.Operate" width="250px">
                 <template slot-scope="scope">
                   <div class="btnBox">
                     <el-button class="de_button" type="primary" size="small" style="
                       width: auto;
                       padding: 5px !important;
                       line-height: 15px;
-                    " @click="iniPassword(scope.row.userid)">初始化密码</el-button>
+                    " @click="iniPassword(scope.row.userid)">{{lang.InitialPassword}}</el-button>
                     <el-button class="de_button" type="primary" size="small"
-                      @click="updateStudentA(scope.row)">修改</el-button>
+                      @click="updateStudentA(scope.row)">{{lang.Modified}}</el-button>
                     <div class="delete">
                       <img src="../../../assets/remove.png" alt
                         @click="deleteStudent(scope.row.userid, scope.row.state)" />
@@ -154,12 +154,12 @@
         <div class="logoImg">
           <img src="../../../assets/logo.png" alt />
         </div>
-        <div class="title_add_student">添加学生</div>
+        <div class="title_add_student">{{lang.AddStudents}}</div>
       </div>
       <el-form>
-        <el-form-item label="学生姓名" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentName" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生姓名" clearable v-model="sName" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuname" clearable v-model="sName" class="add_input"></el-input>
           </span>
         </el-form-item>
         <!-- <el-form-item label="学生学号" :label-width="formLabelWidth">
@@ -172,7 +172,7 @@
             ></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生手机号" :label-width="formLabelWidth">
+        <el-form-item label=lang.StudentPhoneNumber :label-width="formLabelWidth">
           <span>
             <el-input
               placeholder="请输入学生手机号"
@@ -182,25 +182,25 @@
             ></el-input>
           </span>
         </el-form-item> -->
-        <el-form-item label="学生账号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentAccount" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生账号" clearable v-model="sMail" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuacc" clearable v-model="sMail" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="所属学校" :label-width="formLabelWidth">
+        <el-form-item :label="lang.AffiliatedSchool" :label-width="formLabelWidth">
           <el-input disabled style="width: 300px" v-model="schoolName"></el-input>
         </el-form-item>
-        <el-form-item label="班级" :label-width="formLabelWidth">
-          <el-select multiple collapse-tags v-model="sByClass" placeholder="请选择班级" filterable>
+        <el-form-item :label="lang.Class" :label-width="formLabelWidth">
+          <el-select multiple collapse-tags v-model="sByClass" :placeholder="lang.SelectClass" filterable>
             <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <div style="text-align: center; color: #adb3b7">
-          注:添加学生的账号密码为Coco1234
+          {{lang.NoteTdpfnsai}}
         </div>
       </el-form>
       <span slot="footer" class="dialog-footer flex">
-        <el-button class="right" @click="insertStudent">确认</el-button>
+        <el-button class="right" @click="insertStudent">{{lang.confirm}}</el-button>
       </span>
     </el-dialog>
     <el-dialog :visible.sync="dialogVisibleUpdate" :append-to-body="true" width="700px" :before-close="handleClose"
@@ -209,12 +209,12 @@
         <div class="logoImg">
           <img src="../../../assets/logo.png" alt />
         </div>
-        <div class="title_add_student">修改学生</div>
+        <div class="title_add_student">{{lang.EditStudent}}</div>
       </div>
       <el-form>
-        <el-form-item label="学生名称" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentName" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生姓名" clearable v-model="userinfo.name" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuname" clearable v-model="userinfo.name" class="add_input"></el-input>
           </span>
         </el-form-item>
         <!-- <el-form-item label="学生学号" :label-width="formLabelWidth">
@@ -222,30 +222,30 @@
             <el-input placeholder="请输入学生学号" clearable v-model="userinfo.studentid" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生手机号" :label-width="formLabelWidth">
+        <el-form-item label=lang.StudentPhoneNumber :label-width="formLabelWidth">
           <span>
             <el-input placeholder="请输入学生手机号" clearable v-model="userinfo.phonenumber" class="add_input"></el-input>
           </span>
         </el-form-item> -->
-        <el-form-item label="学生账号" :label-width="formLabelWidth">
+        <el-form-item :label="lang.StudentAccount" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入学生账号" clearable v-model="userinfo.un" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterstuacc" clearable v-model="userinfo.un" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="所属学校" :label-width="formLabelWidth">
+        <el-form-item :label="lang.AffiliatedSchool" :label-width="formLabelWidth">
           <el-input disabled style="width: 300px" v-model="schoolName"></el-input>
         </el-form-item>
-        <el-form-item label="班级" :label-width="formLabelWidth">
-          <el-select multiple collapse-tags v-model="userinfo.classid" placeholder="请选择班级">
+        <el-form-item :label="lang.Class" :label-width="formLabelWidth">
+          <el-select multiple collapse-tags v-model="userinfo.classid" :placeholder="lang.SelectClass">
             <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <div style="text-align: center; color: #adb3b7">
-          注:添加学生的账号密码为Coco1234
+          {{lang.NoteTdpfnsai}}
         </div>
       </el-form>
       <span slot="footer" class="dialog-footer flex">
-        <el-button class="right" @click="updateStudent">修改</el-button>
+        <el-button class="right" @click="updateStudent">{{lang.Modified}}</el-button>
       </span>
     </el-dialog>
   </div>
@@ -353,10 +353,10 @@ export default {
       require.ensure([], () => {
         const { export_json_to_excel } = require("../../../common/Export2Excel");
         // 增加 colWidths 参数以调整列宽,例如调整为 [20, 35, 20]
-        const tHeader = ["学生姓名", "学生账号(建议直接使用学号)", "班级"];
+        const tHeader = [lang.StudentName, lang.StudentaccountAdd, lang.Class];
         const data = [];
         const colWidths = [20, 45, 20]; // 设置每一列的宽度
-        export_json_to_excel(tHeader, data, "上传学生样例", colWidths);
+        export_json_to_excel(tHeader, data, lang.Uploadstusamples, colWidths);
       });
     },
     handleCurrentChange(val) {
@@ -381,23 +381,23 @@ export default {
     insertStudent() {
       this.dialogVisible = true;
       if (this.sName === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(lang.Stucannotempty);
         return;
       } else if (this.sByClass === "") {
-        this.$message.error("请为学生选择班级");
+        this.$message.error(lang.chooseclastudents);
         return;
       } else if (
         this.sPhone != "" &&
         !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.sPhone)
       ) {
-        this.$message.error("手机号格式不正确");
+        this.$message.error(lang.phonenumberincorrect);
         return;
       } else if (
         // !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(this.sMail)
         this.sMail === ""
       ) {
-        // this.$message.error("邮箱格式不正确");
-        this.$message.error("学生账号不能为空");
+        // this.$message.error(lang.Emailformatincorrect);
+        this.$message.error(lang.acccannotempty);
         return;
       }
 
@@ -432,7 +432,7 @@ export default {
           .get(this.$store.state.api + "findMail", params)
           .then((res) => {
             if (res.data[0].length > 0) {
-              this.$message.error("此学生账号已被注册");
+              this.$message.error(lang.accalreadyregistered);
             } else {
               // let params = { un: this.sId };
               // this.ajax
@@ -512,7 +512,7 @@ export default {
           //     console.error(err);
           //   });
           this.$message({
-            message: "新增成功",
+            message: lang.AddSuccessful,
             type: "success",
           });
 
@@ -531,7 +531,7 @@ export default {
           this.addOp3('1', "", { type: "student_user_add" }, err)
 
           this.$message({
-            message: "新增失败",
+            message: lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -603,16 +603,16 @@ export default {
           this.importfxx(this.fileTemp);
           this.addOp3('1', "", { type: "student_user_adds" }, "success")
         } else {
-          this.addOp3('1', "", { type: "student_user_adds" }, "附件格式错误")
+          this.addOp3('1', "", { type: "student_user_adds" }, lang.formaterror)
           this.$message({
             type: "warning",
-            message: "附件格式错误,请删除后重新上传!",
+            message: lang.uploadagain,
           });
         }
       } else {
         this.$message({
           type: "warning",
-          message: "请上传附件!",
+          message: lang.uploadattachment,
         });
       }
     },
@@ -633,9 +633,9 @@ export default {
             var array = [];
             for (var i = 0; i < res.length; i++) {
               var _json = {};
-              _json["用户名"] = res[i].username;
-              _json["姓名"] = res[i].alias ? res[i].alias : "";
-              _json["班级"] = res[i].classid ? res[i].classid : "";
+              _json[lang.Username] = res[i].username;
+              _json[lang.Name] = res[i].alias ? res[i].alias : "";
+              _json[lang.Class] = res[i].classid ? res[i].classid : "";
               array.push(_json);
             }
 
@@ -649,12 +649,12 @@ export default {
               { wch: 50 },
             ];
             XLSX.utils.book_append_sheet(workbook, ws, "sheet1"); //把sheet添加到workbook里,第三个参数是sheet名
-            XLSX.writeFile(workbook, "学生信息.xlsx");
+            XLSX.writeFile(workbook, lang.studentinformation + ".xlsx");
             // const wopts = { bookType: "xlsx", bookSST: false, type: "array" };//写入的样式bookType:输出的文件类型,type:输出的数据类型,bookSST: 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
             // const wbout = XLSX.write(workbook, wopts);// 浏览器端和node共有的API,实际上node可以直接使用xlsx.writeFile来写入文件,但是浏览器没有该API
             // FileSaver.saveAs(new Blob([wbout], { type: "application/octet-stream" }), `${title} demo.xlsx`);//保存文件
             this.$message({
-              message: "导出成功",
+              message: lang.Exportsuccessful,
               type: "success",
             });
           })
@@ -714,20 +714,20 @@ export default {
               num += Math.floor(Math.random() * 10);
             }
             // a =
-            //   pinyin.getFullChars(v["学生姓名"]).toLowerCase() +
+            //   pinyin.getFullChars(v[lang.StudentName]).toLowerCase() +
             //   num +
             //   "@cocorobo.cc";
              a =
-              pinyin.getFullChars(v["学生姓名"]).toLowerCase() +
+              pinyin.getFullChars(v[lang.StudentName]).toLowerCase() +
               num + _this.userSuffix;
-            obj.sId = v["学号"];
-            obj.name = v["学生姓名"];
-            // obj.mail = v["学生账号"] ? v["学生账号"] : a;
-            // console.log('v["学生账号"]',v["学生账号"]==true,v["学生账号"]);
+            obj.sId = v[lang.studentIDL];
+            obj.name = v[lang.StudentName];
+            // obj.mail = v[lang.StudentAccount] ? v[lang.StudentAccount] : a;
+            // console.log('v[lang.StudentAccount]',v[lang.StudentAccount]==true,v[lang.StudentAccount]);
             // 兼容“学生账号(建议直接使用学号)”和“学生账号”两种表头
-            let accountValue = v["学生账号(建议直接使用学号)"] !== undefined && v["学生账号(建议直接使用学号)"] !== "" 
-              ? v["学生账号(建议直接使用学号)"] 
-              : v["学生账号"];
+            let accountValue = v[lang.StudentaccountAdd] !== undefined && v[lang.StudentaccountAdd] !== "" 
+              ? v[lang.StudentaccountAdd] 
+              : v[lang.StudentAccount];
             if (accountValue) {
               if(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(accountValue)){
                 obj.mail = accountValue;
@@ -742,13 +742,13 @@ export default {
             }else{
               obj.mail = a;
             }
-            obj.phone = v["学生手机号"];
-            obj.class = v["班级"];
+            obj.phone = v[lang.StudentPhoneNumber];
+            obj.class = v[lang.Class];
             arr.push(obj);
           });
           console.log(arr);
           if(arr.length > 70){
-            _this.$message.error("限制上传学生数量不能超过70个");
+            _this.$message.error(lang.Limitmore);
             _this.fileListUpload = [];
             loading.close();
             return;
@@ -758,15 +758,15 @@ export default {
             let item = arr[i];
             if (item.class === "") {
               _b = 2;
-              _this.$message.error("学生班级不能为空,请重新上传");
+              _this.$message.error(lang.Studentcannotempty);
               break;
             } else if (item.name === "") {
               _b = 2;
-              _this.$message.error("学生姓名不能为空,请重新上传");
+              _this.$message.error(lang.Stuuploadagain);
               break;
             } else if (item.sId === "") {
               _b = 2;
-              _this.$message.error("学生学号不能为空,请重新上传");
+              _this.$message.error(lang.StudIDuploadagain);
             }
             // else if (item.phone === "") {
             //   _b = 1;
@@ -779,7 +779,7 @@ export default {
             // }
             else if (item.mail === "") {
               _b = 2;
-              _this.$message.error("学生账号不能为空,请重新上传");
+              _this.$message.error(lang.Stuaccuploadagain);
               break;
             } else if (
               !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(
@@ -787,7 +787,7 @@ export default {
               )
             ) {
               _b = 2;
-              _this.$message.error("有学生账号格式不正确,请重新上传");
+              _this.$message.error(lang.stuaccformatuploadagain);
               break;
             }
             //#region 
@@ -883,7 +883,7 @@ export default {
             //         beforeSend: function (xhr) {},
             //         success: function (res, textStatus, jqXHR) {
             //           if (res[0].length > 0) {
-            //             _this.$message.error("有学生手机号码已被注册");
+            //             _this.$message.error(lang.stunumberregistered);
             //             _a = 1;
             //           }
             //         },
@@ -910,7 +910,7 @@ export default {
             //         beforeSend: function (xhr) {},
             //         success: function (res, textStatus, jqXHR) {
             //           if (res[0].length > 0) {
-            //             _this.$message.error("有学生账号已被注册");
+            //             _this.$message.error(lang.stuaccregistered);
             //             _a = 1;
             //           }
             //         },
@@ -937,7 +937,7 @@ export default {
             //         beforeSend: function (xhr) {},
             //         success: function (res, textStatus, jqXHR) {
             //           if (res[0].length > 0) {
-            //             _this.$message.error("有学生学号重复");
+            //             _this.$message.error(lang.studuplicateIDs);
             //             _a = 1;
             //           }
             //         },
@@ -996,7 +996,7 @@ export default {
             //         });
             //       loading.close();
             //       // _this.$message({
-            //       //   message: "新增成功",
+            //       //   message: lang.AddSuccessful,
             //       //   type: "success",
             //       // });
             //       _this.getStudent();
@@ -1036,20 +1036,20 @@ export default {
             .post(_this.$store.state.api + "batchRegistrationMore", params)
             .then((res) => {
               if (res.data.type == 1) {
-                _this.$message.error("有学生手机号码已被注册");
+                _this.$message.error(lang.stunumberregistered);
                 z = 1;
               }
               if (res.data.type == 2) {
-                _this.$message.error("有学生账号已被注册");
+                _this.$message.error(lang.stuaccregistered);
                 z = 1;
               }
               if (res.data.type == 3) {
-                _this.$message.error("有学生学号重复");
+                _this.$message.error(lang.studuplicateIDs);
                 z = 1;
               }
               if (z == 2) {
                 _this.$message({
-                  message: "新增成功",
+                  message: lang.AddSuccessful,
                   type: "success",
                 });
                 setTimeout(() => {
@@ -1094,9 +1094,9 @@ export default {
     deleteStudent(id, state) {
       state = 0;
       let params = [{ uid: id, state: state }];
-      this.$confirm("确定" + "删除" + "此学生吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(lang.Aystd, lang.tip, {
+        confirmButtonText: lang.Confirm,
+        cancelButtonText: lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -1104,22 +1104,22 @@ export default {
             .post(this.$store.state.api + "deleteStudent", params)
             .then((res) => {
               this.$message({
-                message: "操作成功",
+                message: lang.OperateSuccessful,
                 type: "success",
               });
               this.getStudent();
             })
             .catch((err) => {
-              this.$message.error("操作失败");
+              this.$message.error(lang.operationfailed);
               console.error(err);
             });
         })
         .catch(() => { });
     },
     iniPassword(id) {
-      this.$confirm("确定" + "初始化" + "此学生的密码吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(lang.Aystrtp, lang.tip, {
+        confirmButtonText: lang.Confirm,
+        cancelButtonText: lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -1133,7 +1133,7 @@ export default {
             .post(this.$store.state.api + "iniPassword", params)
             .then((res) => {
               this.$message({
-                message: "初始化密码成功!",
+                message: lang.Resetsuccessful,
                 type: "success",
               });
             })
@@ -1151,23 +1151,23 @@ export default {
     },
     updateStudent() {
       if (this.userinfo.name === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(lang.Stucannotempty);
         return;
       } else if (!this.userinfo.classid) {
-        this.$message.error("请为学生选择班级");
+        this.$message.error(lang.chooseclastudents);
         return;
       } else if (
         this.userinfo.phonenumber &&
         !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.userinfo.phonenumber)
       ) {
-        this.$message.error("手机号格式不正确");
+        this.$message.error(lang.phonenumberincorrect);
         return;
       } else if (
         !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(
           this.userinfo.un
         )
       ) {
-        this.$message.error("邮箱格式不正确");
+        this.$message.error(lang.Emailformatincorrect);
         return;
       }
 
@@ -1178,7 +1178,7 @@ export default {
             .get(this.$store.state.api + "findMail", params)
             .then((res) => {
               if (res.data[0].length > 0) {
-                this.$message.error("此学生账号已被注册");
+                this.$message.error(lang.accalreadyregistered);
               } else {
                 this.update_Student();
               }
@@ -1206,7 +1206,7 @@ export default {
         .post(this.$store.state.api + "updateStudentInfo", params)
         .then((res) => {
           this.$message({
-            message: "修改成功",
+            message: lang.Editsuccessful,
             type: "success",
           });
           this.dialogVisibleUpdate = false;
@@ -1215,7 +1215,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "修改失败",
+            message: lang.Modificationfailed,
             type: "error",
           });
           console.error(err);

+ 181 - 75
src/lang/cn.json

@@ -55,7 +55,7 @@
   "EnterStudentID":"请输入学生账户",
   "AffiliatedSchool":"所属学校",
   "SelectClass":"请选择班级",
-  "NoteTdpfnsai":"注:添加学生的账户密码为123456",
+  "NoteTdpfnsai":"注:添加学生的账户密码为Coco1234",
   "EditStudent":"修改学生",
   "Editsuccessful":"修改成功",
   "Aystd":"确定删除此学生吗?",
@@ -75,7 +75,6 @@
   "EnterStudentPhoneNumber":"请输入学生手机号",
   "Aystrtsftc":"确定移出学生在本班级吗?",
   "SelectGrade":"选择年级",
-  "Selectclass":"请选择班级",
   "EditClass":"修改班级",
   "ClassName":"班级名称",
   "Aystdtc":"确定删除此班级吗?",
@@ -121,7 +120,7 @@
   "Creategroups":"添加分组",
   "Deletegroups":"删除分组",
   "GroupSettings":"分组设置",
-  "GroupName":"第*组名称",
+  "GroupName1":"第*组名称",
   "GroupName2":"第*组名称",
   "GroupName3":"第*组名称",
   "GroupName4":"第*组名称",
@@ -181,7 +180,6 @@
   "teacher":"老师",
   "student":"学生",
   "fillincoursename":"请补充填写课程名称",
-  "Savechangesbeforeclosing":"是否保存已编辑内容?",
   "saveCoco":"保存",
   "Donotsave":"不保存",
   "Noncannotedit":"非管理员和创建者不可编辑",
@@ -270,7 +268,7 @@
   "AddCourse": "添加课程",
   "CoursePlanning": "课程管理",
   "EnterCourseName": "请输入课程名称",
-  "Publish": "是否公开此课程",
+  "Publish": "是否公开此课程",
   "UploadCover": "上传封面",
   "UploadImage": "上传图片",
   "SelectLocalImage": "选择本地文件",
@@ -363,7 +361,7 @@
   "Next": "下一步",
   "Uploadquestions": "请上传题目",
   "Optioncannotbeempty": "添加的选项不能为空",
-  "Duplicateoptions": "选项1和选项2重复了,请修改!",
+  "Duplicateoptions": "选项*和选项$重复了,请修改!",
   "SelectCorrectOption": "设置每道题目的正确选项",
   "MatchAnswerstoQuestions": "根据题目选择正确答案",
   "SelectCorrectOptionL": "请选择正确答案",
@@ -395,13 +393,13 @@
   "Description": "描述",
   "Enterdescription": "填写评价描述",
   "Pleasecompleteallassessmentfields": "请把评价信息填写完整",
-  "TrainingPlatform": "问卷调查",
+  "questionnaire": "问卷调查",
   "SourceCodeEditing": "源码编辑",
   "TurtleProgramming": "海龟编程",
   "AIAgent": "AI智能体",
   "Translation": "翻译",
   "DigitalCanvas": "数字画板",
-  "LaTeX": "公式编",
+  "LaTeX": "公式编",
   "Timetable": "时间轴",
   "EnglishWriting": "英语写作",
   "EnglishSpeaking": "英语口语",
@@ -486,8 +484,7 @@
   "Objective": "目标名称",
   "OwnerL": "负责人",
   "Operate": "操作",
-  "Import": "添加目标",
-  "AddObjective": "导入",
+  "Import": "导入",
   "SuccessfullyImport": "导入成功",
   "ObjectiveManagementSettings": "目标管理设置",
   "Created": "创建时间",
@@ -513,7 +510,7 @@
   "MoralEducationEvaluation": "德育评价",
   "NewStage": "新建阶段",
   "SelectCourseTemplate": "选择课程模板",
-  "Stage": "阶段*",
+  "Stage": "第*阶段",
   "enterStageName": "请输入阶段名称",
   "deletestage": "确定删除此阶段吗?",
   "3SEtemplate": "3SE模板",
@@ -565,74 +562,183 @@
   "LearningProgress": "学习过程",
   "LearningProformance": "学习表现",
   "SearchforResources": "搜索资源",
-  "NoItemsFound": "暂无内容"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  
+  "NoItemsFound": "暂无内容",
+  "SwitchMode": "切换模式",
+  "Unnamedstage": "未命名阶段",
+  "Stagesequence": "阶段顺序",
+  "enterstagetitle": "请输入阶段标题",
+  "entertaskdescription": "请输入任务描述",
+  "AIapplication": "AI应用",
+  "Intelligentapplication": "智能应用",
+  "CodeEditor": "代码编辑器",
+  "instructionaldesign": "教学设计",
+
+  "Teachingcourseware": "教学课件",
+  "Teachingvideos": "教学视频",
+  "Teachingaudio": "教学音频",
+  "worksheet": "学习单",
+  "Practicecontent": "练习内容",
+  "EvaluationContent": "评价内容",
+  "ApplicationCenter": "应用中心",
+  "TrainingPlatform": "训练平台",
+  "Selected": "已选择",
+  "target": "目标",
+  "resource": "资源",
+  "Addresourcetemplate": "添加资源模板",
+  "Putawaythetarget": "收起目标",
+  "ExpandGoals": "展开目标",
+  "choosecoursetemplate": "请选择合适的课程模板",
+  "BlankTemplate": "空白模板",
+  "SimpleTemplate": "简易模板",
+  "IntelligentPasteMode": "智能粘贴模式",
+  "success": "成功",
+  "copycollaborativeediting": "请复制该链接邀请协同编辑",
+  "Copylinkandshare": "复制链接分享",
+  "Viewdocument": "查看文档",
+  "documenttitle": "文档标题",
+  "entertitledocument": "请输入文档标题名...",
+  "DocumentIntroduction": "文档简介",
+  "documentcontent": "文档内容",
+  "Modifyresources": "修改资源",
+  "Addresources": "添加资源",
+  "Addcoursemembers": "添加课程成员",
+  "Searchmembernames": "搜索成员名称",
+  "Nostudentsavailable": "暂无学生可选",
+  "other": "其他",
+  "CreateMultipleChoiceQuestions": "创建选择题",
+  "MaterialLibrary": "素材库",
+  "note": "便签",
+  "Collaborativedocument": "协同文档",
+  "Mathematicaldrawingboard": "数学画板",
+  "Gaugerating": "量规评分",
+  "Addquestions": "添加问题",
+  "enterwantanswer": "请输入您想要回答的问题",
+  "Selectsystemfiles": "选择系统文件",
+  "painting": "绘画",
+  "scienceandtechnology": "科技",
+  "humanity": "人文",
+  "art": "艺术",
+  "correctorder": "正确顺序",
+  "TableContent": "表格内容",
+  "Setrandomcode": "设置随机码",
+  "randomcode": "随机码",
+  "enterrandomcode": "请输入随机码",
+  "Importtarget": "导入目标",
+  "Selectsecondaryclassification": "选择二级分类",
+  "addtoolsentirety": "请把工具添加完整",
+  "switchtaskmode": "确定切换成任务模式吗?",
+  "deletealltoolsubmissions": "切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
+  "underdevelopment": "功能正在开发中",
+  "Successfullclipboard": "获取剪贴板成功:",
+  "Pastesuccessful": "粘贴成功",
+  "Embedcode": "嵌入代码",
+  "notfindthepasted": "系统没有找到粘贴对象,请首先复制可用于粘贴的链接。",
+  "Failedclipboard": "获取剪贴板失败:",
+  "selectresourcesupload": "请选择要上传的资源",
+  "Uploadfailed": "上传失败",
+  "Systemimage": "系统图片",
+  "Networkimages": "网络图片",
+  "deleteitbeforeuploadingagain": "课程封面仅支持上传一张,请删除后再进行上传",
+  "selectnewfile": "上传文件大于80兆,请重新选择文件!",
+  "Cantdownloadpictures": "还不能下载图片喔",
+  "Switchingorder": "切换工具顺序将删除此工具的提交成果,是否继续此操作?",
+  "addcoursemembers": "请添加课程成员",
+  "useAI": "请使用AI共创生成",
+  "selecttemplate": "请选择模板",
+  "chooseemptytemplate": "确定选择空模板吗?修改课程时无法重置课程模板。",
+  "choosesimpletemplate": "确定选择简易模板吗?修改课程时无法重置课程模板。",
+  "choosingfutureelementaryschool": "确定选择未来小学课程设计吗?",
+  "addingtemplates": "添加时不能添加模板,请添加课程后再修改添加模板",
+  "operationirreversible": "此操作不可撤销,是否继续?",
+  "Titlecannotbeempty": "标题不能为空!",
+  "filltitle": "请将题目*填写完整。",
+  "optioncannotempty": "题目*选项不能为空!",
+  "pleasemodify": "第*题的选项&和选项$重复了,请修改!",
+
+  "Eachquestion": "每道题目至少需要设置2个选项。",
+  "correctoptions": "请将题目*的正确选项设置完整",
+  "AItococreate": "请使用AI共创生成题目",
+  "smartpastetemplate": "确定选择智能粘贴模板吗?修改课程时无法重置课程模板。",
+  "stagesequencewilldelete": "切换阶段顺序将删除所有工具的提交成果,是否继续此操作?",
+  "enterquestion": "请输入您想要问的问题",
+  "Pleaseaddoptions": "请添加选项",
+  "newlyadded": "这是新增课程",
+  "need": "需要",
+  "restoreit": "您所修改的阶段已经被其他老师删除了,需要恢复嘛?",
+  "clearagain": "内容已经清空了,请勿重复清空",
+  "deletethistarget": "确定删除此目标吗?",
+  "goandaddit": "请选择二级分类,如没有二级分类请前往添加!",
+  "cannotexceed": "卡片内容字数不能超过10位",
+  "Cannotaddduplicate": "不能添加重复的卡片内容!",
+  "Uploadsuccessful": "上传成功",
+  "combinationEnglish": "请输入至少四位数字或英文组合的随机码",
+  "cannotrepeated": "已有此随机码,不能重复",
+  "enterthename": "请输入要修改的名称",
+  "SwitchingStageSequence": "切换阶段顺序",
+  "recoverywassuccessful": "恢复成功",
+
+  "coursedesign": "课程设计",
+  "simplemode": "简易模式",
+  "Taskname": "任务名称",
+  "taskdescription": "任务描述",
+  "Addfile": "添加文件",
+  "Addimagesandtext": "添加图文",
+  "interactivevideo": "交互视频",
+  "AIExperience": "AI体验",
+  "Magicboxliteracy": "魔盒识字",
+  "points": "24点",
+  "Simulateddriving": "模拟驾驶",
+  "Route": "路径搜索",
+  "Deeplearning": "深度学习",
+  "Theentirehistory": "全历史",
+  "EvaluationName": "评价名称:",
+  "Evaluationdescription": "评价描述:",
+  "usingtarget": "当前使用目标管理",
+  "fold": "折叠",
+  "expand": "展开",
+  "deleteunit": "确定删除此单元吗?",
+  "choosethistemplate": "确定选择此模板吗?",
+  "choemptytemplate": "确定选择空模板吗?",
+  "choosesimplemode": "确定选择简易模式吗?",
+  "choosesmartpastemode": "确定选择智能粘贴模式吗?",
 
 
 
   
+  "data11_5": "11.5",
+  "enterstuname":"请输入学生姓名",  
+  "enterstuacc":"请输入学生账号",
+  "numberstu":"学生数",
+  "Cannotsameother":"不能与其他年级名称相同!",
+  "Stucannotempty":"学生姓名不能为空",
+  "accalreadyregistered":"此学生账号已被注册",
+  "selectgradestu":"请为学生选择年级",
+  "selectclassadd":"请选择要添加的班级",
+  "Viewreviews":"查看评价",
+  "Cannotsameothercla":"不能与其他班级名称相同!",
+  "chooseclastudents":"请为学生选择班级",
+  "removestu":"确定移除此学生在本班级吗?",
+  "selectstuaddcla":"请选择要添加班级的学生",
+  "StudentaccountAdd":"学生账号(建议直接使用学号)",
+  "Uploadstusamples":"上传学生样例",
+  "acccannotempty":"学生账号不能为空",
+  "uploadagain":"附件格式错误,请删除后重新上传!",
+  "uploadattachment":"请上传附件!",
+  "formaterror":"附件格式错误",
+  "Username":"用户名",
+  "studentinformation":"学生信息",
+  "Exportsuccessful":"导出成功",
+  "studentIDL":"学号",
+  "Limitmore":"限制上传学生数量不能超过70个",
+  "Studentcannotempty":"学生班级不能为空,请重新上传",
+  "Stuuploadagain":"学生姓名不能为空,请重新上传",
+  "StudIDuploadagain":"学生学号不能为空,请重新上传",
+  "Stuaccuploadagain":"学生账号不能为空,请重新上传",
+  "stuaccformatuploadagain":"有学生账号格式不正确,请重新上传",
+  "stunumberregistered":"有学生手机号码已被注册",
+  "stuaccregistered":"有学生账号已被注册",
+  "studuplicateIDs":"有学生学号重复",
+  "val":""
 
 
 

+ 184 - 9
src/lang/en.json

@@ -19,17 +19,17 @@
   "TeacherAccount":"Teacher Account",
   "Nodata":"No data",
   "AddTeachers":"Add Teachers",
-  "Searchteachername":"Search teacher name",
+  "Searchteachername":"Search teacher's name",
   "SelectMembers":"Select Members",
-  "Account ":"Account ",
+  "Account":"Account ",
   "Cancel":"Cancel ",
   "Confirm":"Confirm ",
   "AddSuccessful":"Add Successful",
-  "Aystrttfta":"Are you sure to remove this teacher from this apartment?",
+  "Aystrttfta":"Are you sure to remove this teacher from this department?",
   "Remove":"Remove",
   "EditDepartment":"Edit Department",
   "OperateSuccessful":"Operate Successful",
-  "Aystdtd":"Are you sure to delete this department?",
+  "Aystdtd":"Are you sure you want to delete this department?",
   "Enterdepartmenttype":"Enter department type",
   "DeleteSuccessful":"Delete Successful",
   "Adddepartmenttype":"Add department type",
@@ -75,7 +75,6 @@
   "EnterStudentPhoneNumber":"Enter Student Phone Number",
   "Aystrtsftc":"Are you sure to remove this student from this class?",
   "SelectGrade":"Select Grade",
-  "Selectclass":"Select class",
   "EditClass":"Edit Class",
   "ClassName":"Class Name",
   "Aystdtc":"re you sure to delete this class?",
@@ -395,7 +394,7 @@
   "Description": "Description",
   "Enterdescription": "Enter description",
   "Pleasecompleteallassessmentfields": "Please complete all assessment fields.",
-  "TrainingPlatform": "Training Platform",
+  "questionnaire": "questionnaire",
   "SourceCodeEditing": "Source Code Editing",
   "TurtleProgramming": "Turtle Programming",
   "AIAgent": "AI Agent",
@@ -487,12 +486,12 @@
   "OwnerL": "Owner",
   "Operate": "Operate",
   "Import": "Import",
-  "AddObjective": "Add Objective",
+
   "SuccessfullyImport": "Successfully Import",
   "ObjectiveManagementSettings": "Objective Management Settings",
   "Created": "Created",
   "Duplicate": "Duplicate",
-  "AddObjectiveL": "AddObjectiveL",
+  "AddObjectiveL": "Add Objective",
   "Searchname": "Searchname",
   "NameL": "Name",
   "EnterObjectivetitle": "Enter title..",
@@ -565,6 +564,182 @@
   "LearningProgress": "Learning Progress",
   "LearningProformance": "Learning Proformance",
   "SearchforResources": "Search for Resources",
-  "NoItemsFound": "No Items Found"
+  "NoItemsFound": "No Items Found",
+  "SwitchMode": "Switch Mode",
+  "Unnamedstage": "Unnamed stage",
+  "Stagesequence": "Stagesequence",
+  "enterstagetitle": "Please enter the stage title",
+  "entertaskdescription": "Please enter task description",
+  "AIapplication": "AI application",
+  "Intelligentapplication": "Intelligent application",
+  "CodeEditor": "Code Editor",
+  "instructionaldesign": "instructionaldesign",
+  "target": "target",
+  "resource": "resource",
+  "Addresourcetemplate": "Add resource template",
+  "Putawaythetarget": "Put away the target",
+  "ExpandGoals": "Expand Goals",
+  "choosecoursetemplate": "Please choose a suitable course template",
+
+  "Teachingcourseware": "Teaching courseware",
+  "Teachingvideos": "Teaching videos",
+  "Teachingaudio": "Teaching audio",
+  "worksheet": "worksheet",
+  "Practicecontent": "Practice content",
+  "EvaluationContent": "Evaluation Content",
+  "ApplicationCenter": "Application Center",
+  "TrainingPlatform": "Training Platform",
+  "Selected": "Selected",
+  "BlankTemplate": "Blank Template",
+  "SimpleTemplate": "Simple Template",
+  "IntelligentPasteMode": "Intelligent Paste Mode",
+  "success": "success",
+  "copycollaborativeediting": "Please copy the link to invite collaborative editing",
+  "Copylinkandshare": "Copy link and share",
+  "Viewdocument": "View document",
+  "documenttitle": "document title",
+  "entertitledocument": "Please enter the title of the document ..",
+  "DocumentIntroduction": "Document Introduction",
+  "documentcontent": "document content",
+  "Modifyresources": "Modify resources",
+  "Addresources": "Add resources",
+  "Addcoursemembers": "Add course members",
+  "Searchmembernames": "Search for member names",
+  "Nostudentsavailable": "No students available at the moment",
+  "other": "other",
+  "CreateMultipleChoiceQuestions": "Create Multiple Choice Questions",
+  "MaterialLibrary": "Material Library",
+  "note": "note",
+  "Collaborativedocument": "Collaborative document",
+  "Mathematicaldrawingboard": "Mathematical drawing board",
+  "Gaugerating": "Gauge rating",
+  "Addquestions": "Add questions",
+  "enterwantanswer": "Please enter the question you want to answer",
+  "Selectsystemfiles": "Select system files",
+  "painting": "painting",
+  "scienceandtechnology": "science and technology",
+  "humanity": "humanity",
+  "art": "art",
+  "correctorder": "correct order",
+  "TableContent": "Table Content",
+  "Setrandomcode": "Set random code",
+  "randomcode": "random code",
+  "enterrandomcode": "Please enter the random code",
+  "Importtarget": "Import target",
+  "Selectsecondaryclassification": "Select secondary classification",
+  "addtoolsentirety": "Please add the tools in their entirety",
+  "switchtaskmode": "Are you sure to switch to task mode?",
+  "deletealltoolsubmissions": "Switching task order will delete all tool submissions. Do you want to continue with this operation?",
+  "underdevelopment": "The function is under development",
+  "Successfullclipboard": "Successfully obtained clipboard:",
+  "Pastesuccessful": "Paste successful",
+  "Embedcode": "Embed code",
+  "notfindthepasted": "The system did not find the pasted object. Please first copy the link that can be used for pasting.",
+  "Failedclipboard": "Failed to retrieve clipboard:",
+  "selectresourcesupload": "Please select the resources to upload",
+  "Uploadfailed": "Upload failed",
+  "Systemimage": "System image",
+  "Networkimages": "Network images",
+  "deleteitbeforeuploadingagain": "The course cover only supports uploading one page. Please delete it before uploading again",
+  "selectnewfile": "The uploaded file is larger than 80 MB, please select a new file!",
+  "Cantdownloadpictures": "Can't download pictures yet",
+  "Switchingorder": "Switching the order of tools will delete the submitted results of this tool. Do you want to continue with this operation?",
+  "addcoursemembers": "Please add course members",
+  "useAI": "Please use AI to co create and generate",
+  "selecttemplate": "Please select a template",
+  "chooseemptytemplate": "Are you sure to choose an empty template? The course template cannot be reset when modifying the course.",
+  "choosesimpletemplate": "Are you sure to choose a simple template? The course template cannot be reset when modifying the course.",
+  "choosingfutureelementaryschool": "Are you sure about choosing the future elementary school curriculum design?",
+  "addingtemplates": "Cannot add templates when adding, please add courses before modifying and adding templates",
+  "operationirreversible": "This operation is irreversible. Do you want to continue?",
+  "Titlecannotbeempty": "The title cannot be empty!",
+  "filltitle": "Please fill in the title * completely.",
+  "optioncannotempty": "Question * option cannot be empty!",
+  "pleasemodify": "Option&and option $in question * are duplicated, please modify!",
+
+  "Eachquestion": "Each question requires at least 2 options to be set.",
+  "correctoptions": "Please complete the correct options for question *",
+  "AItococreate": "Please use AI to co create and generate questions",
+  "smartpastetemplate": "Are you sure to choose the smart paste template? The course template cannot be reset when modifying the course.",
+  "stagesequencewilldelete": "Switching the stage sequence will delete all submitted results of the tools. Do you want to continue with this operation?",
+  "enterquestion": "Please enter the question you want to ask",
+  "Pleaseaddoptions": "Please add options",
+  "newlyadded": "This is a newly added course",
+  "need": "need",
+  "restoreit": "The stage you modified has already been deleted by another teacher. Do you need to restore it?",
+  "clearagain": "The content has been cleared, please do not clear again",
+  "deletethistarget": "Are you sure to delete this target?",
+  "goandaddit": "Please select a secondary category. If there is no secondary category, please go and add it!",
+  "cannotexceed": "The word count of the card content cannot exceed 10 characters",
+  "Cannotaddduplicate": "Cannot add duplicate card content!",
+  "Uploadsuccessful": "Upload successful",
+  "combinationEnglish": "Please enter a random code consisting of at least four digits or a combination of English characters",
+  "cannotrepeated": "This random code already exists and cannot be repeated",
+  "enterthename": "Please enter the name to be modified",
+  "SwitchingStageSequence": "Switching Stage Sequence",
+  "recoverywassuccessful": "recovery was successful",
+
+  "coursedesign": "course design",
+  "simplemode": "simple mode",
+  "Taskname": "Task name",
+  "taskdescription": "task description",
+  "Addfile": "Add file",
+  "Addimagesandtext": "Add images and text",
+  "interactivevideo": "interactive video",
+  "AIExperience": "AI Experience",
+  "Magicboxliteracy": "Magic box literacy",
+  "points": "24-Point",
+  "Simulateddriving": "Simulated driving",
+  "Route": "Route",
+  "Deeplearning": "deep learning",
+  "Theentirehistory": "The entire history",
+  "EvaluationName": "Evaluation Name:",
+  "Evaluationdescription": "Evaluation description:",
+  "usingtarget": "Currently using target management",
+  "fold": "fold",
+  "expand": "expand",
+  "deleteunit": "Are you sure to delete this unit?",
+  "choosethistemplate": "Are you sure to choose this template?",
+  "choemptytemplate": "Are you sure to choose an empty template?",
+  "choosesimplemode": "Are you sure to choose the simple mode?",
+  "choosesmartpastemode": "Are you sure to choose the smart paste mode?",
+
+
+  "data11_5": "11.5",
+  "enterstuname": "Please enter student name",
+  "enterstuacc": "Please enter student account",
+  "numberstu": "Number of students",
+  "Cannotsameother": "Cannot be the same as other grade names!",
+  "Stucannotempty": "Student name cannot be empty",
+  "accalreadyregistered": "This student account has already been registered",
+  "selectgradestu": "Please select a grade for the student",
+  "selectclassadd": "Please select the class to add",
+  "Viewreviews": "View Reviews",
+  "Cannotsameothercla": "Class name cannot be the same as others!",
+  "chooseclastudents": "Please select a class for the student",
+  "removestu": "Are you sure to remove this student from the class?",
+  "selectstuaddcla": "Please select students to add to the class",
+  "StudentaccountAdd": "Student Account (recommended to use student ID directly)",
+  "Uploadstusamples": "Upload Student Sample",
+  "acccannotempty": "Student account cannot be empty",
+  "uploadagain": "Attachment format error, please delete and re-upload!",
+  "uploadattachment": "Please upload an attachment!",
+  "formaterror": "Attachment format error",
+  "Username": "Username",
+  "studentinformation": "Student Information",
+  "Exportsuccessful": "Export successful",
+  "studentIDL": "Student ID",
+  "Limitmore": "The number of students uploaded cannot exceed 70",
+  "Studentcannotempty": "Student class cannot be empty, please re-upload",
+  "Stuuploadagain": "Student name cannot be empty, please re-upload",
+  "StudIDuploadagain": "Student ID cannot be empty, please re-upload",
+  "Stuaccuploadagain": "Student account cannot be empty, please re-upload",
+  "stuaccformatuploadagain": "Some student account formats are incorrect, please re-upload",
+  "stunumberregistered": "Some student phone numbers are already registered",
+  "stuaccregistered": "Some student accounts are already registered",
+  "studuplicateIDs": "Some student IDs are duplicated"
+
+
+
 
 }

+ 187 - 8
src/lang/hk.json

@@ -75,7 +75,6 @@
   "EnterStudentPhoneNumber": "請輸入學生手機號",
   "Aystrtsftc": "確定移出學生在本班級嗎?",
   "SelectGrade": "選擇年級",
-  "Selectclass": "請選擇班級",
   "EditClass": "修改班級",
   "ClassName": "班級名稱",
   "Aystdtc": "確定刪除此班級嗎?",
@@ -270,7 +269,7 @@
   "AddCourse": "添加課程",  
   "CoursePlanning": "課程管理",  
   "EnterCourseName": "請輸入課程名稱",  
-  "Publish": "是否公開此課程",  
+  "Publish": "是否公開此課程",  
   "UploadCover": "上傳封面",  
   "UploadImage": "上傳圖片",  
   "SelectLocalImage": "選擇本地文件",  
@@ -395,13 +394,13 @@
   "Description": "描述",
   "Enterdescription": "填寫評價描述",
   "Pleasecompleteallassessmentfields": "請把評價信息填寫完整",
-  "TrainingPlatform": "問卷調查",
+  "questionnaire": "問卷調查",
   "SourceCodeEditing": "源碼編輯",
   "TurtleProgramming": "海龜編程",
   "AIAgent": "AI智能體",
   "Translation": "翻譯",
   "DigitalCanvas": "數字畫板",
-  "LaTeX": "公式編",
+  "LaTeX": "公式編",
   "Timetable": "時間軸",
   "EnglishWriting": "英語寫作",
   "EnglishSpeaking": "英語口語",
@@ -486,8 +485,8 @@
   "Objective": "目標名稱",
   "OwnerL": "負責人",
   "Operate": "操作",
-  "Import": "添加目標",
-  "AddObjective": "導入",
+  "Import": "導入",
+
   "SuccessfullyImport": "導入成功",
   "ObjectiveManagementSettings": "目標管理設置",
   "Created": "創建時間",
@@ -513,7 +512,7 @@
   "MoralEducationEvaluation": "德育評價",
   "NewStage": "新建階段",
   "SelectCourseTemplate": "選擇課程模板",
-  "Stage": "階段*",
+  "Stage": "第*階段",
   "enterStageName": "請輸入階段名稱",
   "deletestage": "確定刪除此階段嗎?",
   "3SEtemplate": "3SE模板",
@@ -565,7 +564,187 @@
   "LearningProgress": "學習歷程",
   "LearningProformance": "學習表現",
   "SearchforResources": "搜尋資源",
-  "NoItemsFound": "暫無內容"
+  "NoItemsFound": "暫無內容",
+  "SwitchMode": "切換模式",
+  "Unnamedstage": "未命名階段",
+  "Stagesequence": "階段順序",
+  "enterstagetitle": "請輸入階段標題",
+  "entertaskdescription": "請輸入任務描述",
+  "AIapplication": "AI application",
+  "Intelligentapplication": "智慧應用",
+  "CodeEditor": "代碼編輯器",
+  "instructionaldesign": "教學設計",
+  "target": "目標",
+  "resource": "資源",
+  "Addresourcetemplate": "添加資源範本",
+  "Putawaythetarget": "收起目標",
+  "ExpandGoals": "展開目標",
+  "choosecoursetemplate": "請選擇合適的課程範本",
+
+  "Teachingcourseware": "教學課件",
+  "Teachingvideos": "教學視頻",
+  "Teachingaudio": "教學音頻",
+  "worksheet": "學習單",
+  "Practicecontent": "練習內容",
+  "EvaluationContent": "評價內容",
+  "ApplicationCenter": "應用中心",
+  "TrainingPlatform": "訓練平台",
+  "Selected": "已選擇",
+  "BlankTemplate": "空白模板",
+  "SimpleTemplate": "簡易模板",
+  "IntelligentPasteMode": "智能粘貼模式",
+  "success": "成功",
+  "copycollaborativeediting": "請複製該鏈接邀請協同編輯",
+  "Copylinkandshare": "複製鏈接分享",
+  "Viewdocument": "查看文檔",
+  "documenttitle": "文檔標題",
+  "entertitledocument": "請輸入文檔標題名...",
+  "DocumentIntroduction": "文檔簡介",
+  "documentcontent": "文檔內容",
+  "Modifyresources": "修改資源",
+  "Addresources": "添加資源",
+  "Addcoursemembers": "添加課程成員",
+  "Searchmembernames": "搜索成員名稱",
+  "Nostudentsavailable": "暫無學生可選",
+  "other": "其他",
+  "CreateMultipleChoiceQuestions": "創建選擇題",
+  "MaterialLibrary": "素材庫",
+  "note": "便簽",
+  "Collaborativedocument": "協同文檔",
+  "Mathematicaldrawingboard": "數學畫板",
+  "Gaugerating": "量規評分",
+  "Addquestions": "添加問題",
+  "enterwantanswer": "請輸入您想要回答的問題",
+  "Selectsystemfiles": "選擇系統文件",
+  "painting": "繪畫",
+  "scienceandtechnology": "科技",
+  "humanity": "人文",
+  "art": "藝術",
+  "correctorder": "正確順序",
+  "TableContent": "表格內容",
+  "Setrandomcode": "設置隨機碼",
+  "randomcode": "隨機碼",
+  "enterrandomcode": "請輸入隨機碼",
+  "Importtarget": "導入目標",
+  "Selectsecondaryclassification": "選擇二級分類",
+  "addtoolsentirety": "請把工具添加完整",
+  "switchtaskmode": "確定切換成任務模式嗎?",
+  "deletealltoolsubmissions": "切換任務順序將刪除所有工具的提交成果,是否繼續此操作?",
+  "underdevelopment": "功能正在開發中",
+  "Successfullclipboard": "獲取剪貼板成功:",
+  "Pastesuccessful": "粘貼成功",
+  "Embedcode": "嵌入代碼",
+  "notfindthepasted": "系統沒有找到粘貼對象,請首先複製可用於粘貼的鏈接。",
+  "Failedclipboard": "獲取剪貼板失敗:",
+  "selectresourcesupload": "請選擇要上傳的資源",
+  "Uploadfailed": "上傳失敗",
+  "Systemimage": "系統圖片",
+  "Networkimages": "網絡圖片",
+  "deleteitbeforeuploadingagain": "課程封面僅支持上傳一張,請刪除後再進行上傳",
+  "selectnewfile": "上傳文件大於80兆,請重新選擇文件!",
+  "Cantdownloadpictures": "還不能下載圖片喔",
+  "Switchingorder": "切換工具順序將刪除此工具的提交成果,是否繼續此操作?",
+  "addcoursemembers": "請添加課程成員",
+  "useAI": "請使用AI共創生成",
+  "selecttemplate": "請選擇模板",
+  "chooseemptytemplate": "確定選擇空模板嗎?修改課程時無法重置課程模板。",
+  "choosesimpletemplate": "確定選擇簡易模板嗎?修改課程時無法重置課程模板。",
+  "choosingfutureelementaryschool": "確定選擇未來小學課程設計嗎?",
+  "addingtemplates": "添加時不能添加模板,請添加課程後再修改添加模板",
+  "operationirreversible": "此操作不可撤銷,是否繼續?",
+  "Titlecannotbeempty": "標題不能為空!",
+  "filltitle": "請將題目填寫完整。",
+  "optioncannotempty": "題目選項不能為空!",
+  "pleasemodify": "第*題的選項&和選項$重複了,請修改!",
+
+  "Eachquestion": "每道題目至少需要設置2個選項。",
+  "correctoptions": "請將題目*的正確選項設置完整",
+  "AItococreate": "請使用AI共創生成題目",
+  "smartpastetemplate": "確定選擇智能粘貼模板嗎?修改課程時無法重置課程模板。",
+  "stagesequencewilldelete": "切換階段順序將刪除所有工具的提交成果,是否繼續此操作?",
+  "enterquestion": "請輸入您想要問的問題",
+  "Pleaseaddoptions": "請添加選項",
+  "newlyadded": "這是新增課程",
+  "need": "需要",
+  "restoreit": "您所修改的階段已經被其他老師刪除了,需要恢復嘛?",
+  "clearagain": "內容已經清空了,請勿重復清空",
+  "deletethistarget": "確定刪除此目標嗎?",
+  "goandaddit": "請選擇二級分類,如沒有二級分類請前往添加!",
+  "cannotexceed": "卡片內容字數不能超過10位",
+  "Cannotaddduplicate": "不能添加重復的卡片內容!",
+  "Uploadsuccessful": "上傳成功",
+  "combinationEnglish": "請輸入至少四位數字或英文組合的隨機碼",
+  "cannotrepeated": "已有此隨機碼,不能重復",
+  "enterthename": "請輸入要修改的名稱",
+  "SwitchingStageSequence": "切換階段順序",
+  "recoverywassuccessful": "恢復成功",
+  "coursedesign": "課程設計",
+  "simplemode": "簡易模式",
+  "Taskname": "任務名稱",
+  "taskdescription": "任務描述",
+  "Addfile": "添加文件",
+  "Addimagesandtext": "添加圖文",
+  "interactivevideo": "交互視頻",
+  "AIExperience": "AI體驗",
+  "Magicboxliteracy": "魔盒識字",
+  "points": "24點",
+  "Simulateddriving": "模擬駕駛",
+  "Route": "路徑搜索",
+  "Deeplearning": "深度學習",
+  "Theentirehistory": "全歷史",
+  "EvaluationName": "評價名稱:",
+  "Evaluationdescription": "評價描述:",
+  "usingtarget": "當前使用目標管理",
+  "fold": "折疊",
+  "expand": "展開",
+  "deleteunit": "確定刪除此單元嗎?",
+  "choosethistemplate": "確定選擇此模板嗎?",
+  "choemptytemplate": "確定選擇空模板嗎?",
+  "choosesimplemode": "確定選擇簡易模式嗎?",
+  "choosesmartpastemode": "確定選擇智能粘貼模式嗎?",
+
+
+  
+  "data11_5": "11.5",
+  "enterstuname": "請輸入學生姓名",
+  "enterstuacc": "請輸入學生賬號",
+  "numberstu": "學生數",
+  "Cannotsameother": "不能與其他年級名稱相同!",
+  "Stucannotempty": "學生姓名不能為空",
+  "accalreadyregistered": "此學生賬號已被註冊",
+  "selectgradestu": "請為學生選擇年級",
+  "selectclassadd": "請選擇要添加的班級",
+  "Viewreviews": "查看評價",
+  "Cannotsameothercla": "不能與其他班級名稱相同!",
+  "chooseclastudents": "請為學生選擇班級",
+  "removestu": "確定移除此學生在本班級嗎?",
+  "selectstuaddcla": "請選擇要添加班級的學生",
+  "StudentaccountAdd": "學生賬號(建議直接使用學號)",
+  "Uploadstusamples": "上傳學生範例",
+  "acccannotempty": "學生賬號不能為空",
+  "uploadagain": "附件格式錯誤,請刪除後重新上傳!",
+  "uploadattachment": "請上傳附件!",
+  "formaterror": "附件格式錯誤",
+  "Username": "用戶名",
+  "studentinformation": "學生資訊",
+  "Exportsuccessful": "導出成功",
+  "studentIDL": "學號",
+  "Limitmore": "限制上傳學生數量不能超過70個",
+  "Studentcannotempty": "學生班級不能為空,請重新上傳",
+  "Stuuploadagain": "學生姓名不能為空,請重新上傳",
+  "StudIDuploadagain": "學生學號不能為空,請重新上傳",
+  "Stuaccuploadagain": "學生賬號不能為空,請重新上傳",
+  "stuaccformatuploadagain": "有學生賬號格式不正確,請重新上傳",
+  "stunumberregistered": "有學生手機號碼已被註冊",
+  "stuaccregistered": "有學生賬號已被註冊",
+  "studuplicateIDs": "有學生學號重複"
+
+
+
+
+
+
+  
 
 
 }