Browse Source

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

SanHQin 1 month ago
parent
commit
77ecd625c1

+ 127 - 136
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.return}}</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.Action" 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.Edit}}</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,42 +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">
+          {{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"
@@ -245,109 +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">
+          {{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.Edit}}</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>
@@ -355,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.Norecordsfound}}</div>
       </div>
       <div style="margin-top: 10px">
         <el-pagination background layout="prev, pager, next" :page-size="pageSize3" :total="total3"
@@ -363,22 +365,22 @@
           @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() {
     return {
       tableHeight: "500px",
       isLoading: false,
-      formLabelWidth: "100px",
+      formLabelWidth: "155px",
       sClassName: "",
       className: "",
       className1: "",
@@ -439,7 +441,7 @@ export default {
             name = element.name;
           }
         });
-        return name ? name : "暂无";
+        return name ? name : this.lang.None;
       };
     },
   },
@@ -517,9 +519,9 @@ export default {
       this.dialogVisibleGrade = true;
     },
     updateGrade() {
-      this.$confirm("确定修改吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.makechanges, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -560,12 +562,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他班级名称相同!",
+              message: this.lang.Cannotsameothercla,
               type: "error",
             });
           } else {
             this.$message({
-              message: "新增成功",
+              message: this.lang.AddSuccessful,
               type: "success",
             });
             this.dialogVisible = false;
@@ -576,7 +578,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "新增失败",
+            message: this.lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -594,12 +596,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他班级名称相同!",
+              message: this.lang.Cannotsameothercla,
               type: "error",
             });
           } else {
             this.$message({
-              message: "修改成功",
+              message: this.lang.Editsuccessful,
               type: "success",
             });
             this.dialogVisible1 = false;
@@ -610,7 +612,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "修改失败",
+            message: this.lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -644,9 +646,9 @@ export default {
         id: id,
       };
       if (this.time()) {
-        this.$confirm("确定删除此班级吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
+        this.$confirm(this.lang.Aystdtc, this.lang.tip, {
+          confirmButtonText: this.lang.Confirm,
+          cancelButtonText: this.lang.Cancel,
           type: "warning",
         })
           .then(() => {
@@ -654,7 +656,7 @@ export default {
               .get(this.$store.state.api + "deleteClass", params)
               .then((res) => {
                 this.$message({
-                  message: "删除成功",
+                  message: this.lang.Successfullydelete,
                   type: "success",
                 });
                 if (this.page != 1 && this.tableData.length == 1) {
@@ -663,7 +665,7 @@ export default {
                 this.getClass();
               })
               .catch((err) => {
-                this.$message.error("删除失败");
+                this.$message.error(this.lang.Deletefailed);
                 console.error(err);
               });
           })
@@ -681,18 +683,18 @@ export default {
     //新增学生
     insertStudent() {
       if (this.sName === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(this.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(this.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(this.lang.Emailformatincorrect);
         return;
       }
 
@@ -702,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(this.lang.accalreadyregistered);
             } else {
               this.add_Student();
             }
@@ -716,7 +718,7 @@ export default {
       let params = [
         {
           username: this.sMail,
-          password: '',
+          userpassword: 'Coco1234',
           alias: this.sName,
           oid: this.oid,
           ph: this.sPhone,
@@ -749,7 +751,7 @@ export default {
               console.error(err);
             });
           this.$message({
-            message: "新增成功",
+            message: this.lang.AddSuccessful,
             type: "success",
           });
           this.dialogVisibleAddStudent = false;
@@ -762,7 +764,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "新增失败",
+            message: this.lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -776,23 +778,23 @@ export default {
     },
     updateStudent() {
       if (this.userinfo.name === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(this.lang.Stucannotempty);
         return;
       } else if (!this.userinfo.classid) {
-        this.$message.error("请为学生选择班级");
+        this.$message.error(this.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(this.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(this.lang.Emailformatincorrect);
         return;
       }
 
@@ -803,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(this.lang.accalreadyregistered);
               } else {
                 this.update_Student();
               }
@@ -831,7 +833,7 @@ export default {
         .post(this.$store.state.api + "updateStudentInfo", params)
         .then((res) => {
           this.$message({
-            message: "修改成功",
+            message: this.lang.Editsuccessful,
             type: "success",
           });
           this.dialogVisibleUpdate = false;
@@ -840,7 +842,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "修改失败",
+            message: this.lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -848,9 +850,9 @@ export default {
     },
     deleteClassStudent(id) {
       let params = [{ uid: id, cid: this.cid }];
-      this.$confirm("确定移除此学生在本班级吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.removestu, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -858,13 +860,13 @@ export default {
             .post(this.$store.state.api + "deleteClassStudent", params)
             .then((res) => {
               this.$message({
-                message: "操作成功",
+                message: this.lang.OperateSuccessful,
                 type: "success",
               });
               this.getStudent(this.cid);
             })
             .catch((err) => {
-              this.$message.error("操作失败");
+              this.$message.error(this.lang.operationfailed);
               console.error(err);
             });
         })
@@ -956,7 +958,7 @@ export default {
     },
     addClassStudent() {
       if (!this.checkboxList3.length) {
-        this.$message.error("请选择要添加班级的学生");
+        this.$message.error(this.lang.selectstuaddcla);
         return;
       }
       let params = [
@@ -977,23 +979,23 @@ export default {
         });
     },
     iniPassword(id) {
-      this.$confirm("确定" + "初始化" + "此学生的密码吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.Aystrtp, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
           let params = [
             {
               uid: id,
-              pa: '',
+              pa: 'Coco1234',
             },
           ];
           this.ajax
             .post(this.$store.state.api + "iniPassword", params)
             .then((res) => {
               this.$message({
-                message: "初始化密码成功!",
+                message: this.lang.Resetsuccessful,
                 type: "success",
               });
             })
@@ -1069,18 +1071,7 @@ export default {
   align-items: center;
 }
 
-.student_search span {
-  /* margin: 0 10px 0 0; */
-}
-
-.student_button {
-  /* display: flex; */
-  /* height: 40px; */
-}
 
-.student_button .el-button--primary {
-  /* margin-right: 10px; */
-}
 
 .upload-demo {
   display: flex;
@@ -1385,9 +1376,9 @@ export default {
 .student_button {
   color: #fff;
   background: #2268bc;
-  width: 60px;
+  /* width: 60px; */
   height: 30px;
-  padding: 0 !important;
+  padding: 0 10px !important;
   font-size: 12px;
   line-height: 30px;
 }

+ 104 - 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.Action" width="350px">
                 <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.Edit}}</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,42 +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">
+         {{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"
@@ -197,81 +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="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.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">
+         {{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"
@@ -281,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">
@@ -290,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"
@@ -298,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>
@@ -369,7 +371,7 @@ export default {
             name = element.name;
           }
         });
-        return name ? name : "暂无";
+        return name ? name : this.lang.None;
       };
     },
   },
@@ -444,12 +446,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他年级名称相同!",
+              message: this.lang.Cannotsameother,
               type: "error",
             });
           } else {
             this.$message({
-              message: "新增成功",
+              message: this.lang.AddSuccessful,
               type: "success",
             });
             this.dialogVisible = false;
@@ -460,7 +462,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "新增失败",
+            message: this.lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -478,12 +480,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他年级名称相同!",
+              message: this.lang.Cannotsameother,
               type: "error",
             });
           } else {
             this.$message({
-              message: "修改成功",
+              message: this.lang.Editsuccessful,
               type: "success",
             });
             this.dialogVisible1 = false;
@@ -494,7 +496,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "修改失败",
+            message: this.lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -528,9 +530,9 @@ export default {
         id: id,
       };
       if (this.time()) {
-        this.$confirm("确定删除此年级吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
+        this.$confirm(this.lang.Aystdtg, this.lang.tip, {
+          confirmButtonText: this.lang.Confirm,
+          cancelButtonText: this.lang.Cancel,
           type: "warning",
         })
           .then(() => {
@@ -538,7 +540,7 @@ export default {
               .get(this.$store.state.api + "deleteGrade", params)
               .then((res) => {
                 this.$message({
-                  message: "删除成功",
+                  message: this.lang.Successfullydelete,
                   type: "success",
                 });
                 if (this.page != 1 && this.tableData.length == 1) {
@@ -547,7 +549,7 @@ export default {
                 this.getClass();
               })
               .catch((err) => {
-                this.$message.error("删除失败");
+                this.$message.error(this.lang.Deletefailed);
                 console.error(err);
               });
           })
@@ -566,18 +568,18 @@ export default {
     //新增学生
     insertStudent() {
       if (this.sName === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(this.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(this.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(this.lang.Emailformatincorrect);
         return;
       }
 
@@ -587,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(this.lang.accalreadyregistered);
             } else {
               this.add_Student();
             }
@@ -601,7 +603,7 @@ export default {
       let params = [
         {
           username: this.sMail,
-          password: '',
+          userpassword: 'Coco1234',
           alias: this.sName,
           oid: this.oid,
           ph: this.sPhone,
@@ -634,7 +636,7 @@ export default {
               console.error(err);
             });
           this.$message({
-            message: "新增成功",
+            message: this.lang.AddSuccessful,
             type: "success",
           });
           this.dialogVisibleAddStudent = false;
@@ -647,7 +649,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "新增失败",
+            message: this.lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -661,23 +663,23 @@ export default {
     },
     updateStudent() {
       if (this.userinfo.name === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(this.lang.Stucannotempty);
         return;
       } else if (!this.userinfo.classid) {
-        this.$message.error("请为学生选择年级");
+        this.$message.error(this.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(this.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(this.lang.Emailformatincorrect);
         return;
       }
 
@@ -688,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(this.lang.accalreadyregistered);
               } else {
                 this.update_Student();
               }
@@ -716,7 +718,7 @@ export default {
         .post(this.$store.state.api + "updateStudentInfo", params)
         .then((res) => {
           this.$message({
-            message: "修改成功",
+            message: this.lang.Editsuccessful,
             type: "success",
           });
           this.dialogVisibleUpdate = false;
@@ -725,7 +727,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "修改失败",
+            message: this.lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -733,9 +735,9 @@ export default {
     },
     deleteClassStudent(id) {
       let params = [{ uid: id, cid: this.cid }];
-      this.$confirm("确定在本年级移除此班级吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.Aystrtcftg, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -743,13 +745,13 @@ export default {
             .post(this.$store.state.api + "deleteGradeClass", params)
             .then((res) => {
               this.$message({
-                message: "操作成功",
+                message: this.lang.OperateSuccessful,
                 type: "success",
               });
               this.getStudent(this.cid);
             })
             .catch((err) => {
-              this.$message.error("操作失败");
+              this.$message.error(this.lang.operationfailed);
               console.error(err);
             });
         })
@@ -843,7 +845,7 @@ export default {
     },
     addClassStudent() {
       if (!this.checkboxList3.length) {
-        this.$message.error("请选择要添加的班级");
+        this.$message.error(this.lang.selectclassadd);
         return;
       }
       let params = [
@@ -864,23 +866,23 @@ export default {
         });
     },
     iniPassword(id) {
-      this.$confirm("确定" + "初始化" + "此学生的密码吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.Aystrtp, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
           let params = [
             {
               uid: id,
-              pa: '',
+              pa: 'Coco1234',
             },
           ];
           this.ajax
             .post(this.$store.state.api + "iniPassword", params)
             .then((res) => {
               this.$message({
-                message: "初始化密码成功!",
+                message: this.lang.Resetsuccessful,
                 type: "success",
               });
             })

+ 111 - 107
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.Action" 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.Edit}}</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,24 +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">
+          {{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"
@@ -208,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">
@@ -221,29 +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">
+          {{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>
@@ -261,7 +263,7 @@ export default {
     return {
       tableHeight: "500px",
       isLoading: false,
-      formLabelWidth: "100px",
+      formLabelWidth: "140px",
       tableData: [],
       dialogVisible: false,
       dialogVisibleUpdate: false,
@@ -351,10 +353,10 @@ export default {
       require.ensure([], () => {
         const { export_json_to_excel } = require("../../../common/Export2Excel");
         // 增加 colWidths 参数以调整列宽,例如调整为 [20, 35, 20]
-        const tHeader = ["学生姓名", "学生账号(建议直接使用学号)", "班级"];
+        const tHeader = [this.lang.StudentName, this.lang.StudentaccountAdd, this.lang.Class];
         const data = [];
         const colWidths = [20, 45, 20]; // 设置每一列的宽度
-        export_json_to_excel(tHeader, data, "上传学生样例", colWidths);
+        export_json_to_excel(tHeader, data, this.lang.Uploadstusamples, colWidths);
       });
     },
     handleCurrentChange(val) {
@@ -379,23 +381,23 @@ export default {
     insertStudent() {
       this.dialogVisible = true;
       if (this.sName === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(this.lang.Stucannotempty);
         return;
       } else if (this.sByClass === "") {
-        this.$message.error("请为学生选择班级");
+        this.$message.error(this.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(this.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(this.lang.Emailformatincorrect);
+        this.$message.error(this.lang.acccannotempty);
         return;
       }
 
@@ -430,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(this.lang.accalreadyregistered);
             } else {
               // let params = { un: this.sId };
               // this.ajax
@@ -471,7 +473,7 @@ export default {
       let params = [
         {
           username: mail,
-          password: '',
+          userpassword: 'Coco1234',
           alias: this.sName,
           oid: this.oid,
           ph: this.sPhone,
@@ -510,7 +512,7 @@ export default {
           //     console.error(err);
           //   });
           this.$message({
-            message: "新增成功",
+            message: this.lang.AddSuccessful,
             type: "success",
           });
 
@@ -529,7 +531,7 @@ export default {
           this.addOp3('1', "", { type: "student_user_add" }, err)
 
           this.$message({
-            message: "新增失败",
+            message: this.lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -601,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" }, this.lang.formaterror)
           this.$message({
             type: "warning",
-            message: "附件格式错误,请删除后重新上传!",
+            message: this.lang.uploadagain,
           });
         }
       } else {
         this.$message({
           type: "warning",
-          message: "请上传附件!",
+          message: this.lang.uploadattachment,
         });
       }
     },
@@ -631,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[this.lang.Username] = res[i].username;
+              _json[this.lang.Name] = res[i].alias ? res[i].alias : "";
+              _json[this.lang.Class] = res[i].classid ? res[i].classid : "";
               array.push(_json);
             }
 
@@ -647,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, this.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: this.lang.Exportsuccessful,
               type: "success",
             });
           })
@@ -712,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[_this.lang.StudentName]).toLowerCase() +
               num + _this.userSuffix;
-            obj.sId = v["学号"];
-            obj.name = v["学生姓名"];
-            // obj.mail = v["学生账号"] ? v["学生账号"] : a;
-            // console.log('v["学生账号"]',v["学生账号"]==true,v["学生账号"]);
-            // 兼容“学生账号(建议直接使用学号)”和“学生账号”两种表头
-            let accountValue = v["学生账号(建议直接使用学号)"] !== undefined && v["学生账号(建议直接使用学号)"] !== "" 
-              ? v["学生账号(建议直接使用学号)"] 
-              : v["学生账号"];
+            obj.sId = v[_this.lang.studentIDL];
+            obj.name = v[_this.lang.StudentName];
+            // obj.mail = v[_this.lang.StudentAccount] ? v[_this.lang.StudentAccount] : a;
+            // console.log('v[_this.lang.StudentAccount]',v[_this.lang.StudentAccount]==true,v[_this.lang.StudentAccount]);
+            // 兼容"学生账号(建议直接使用学号)"和"学生账号"两种表头
+            let accountValue = v[_this.lang.StudentaccountAdd] !== undefined && v[_this.lang.StudentaccountAdd] !== "" 
+              ? v[_this.lang.StudentaccountAdd] 
+              : v[_this.lang.StudentAccount];
             if (accountValue) {
               if(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(accountValue)){
                 obj.mail = accountValue;
@@ -740,13 +742,13 @@ export default {
             }else{
               obj.mail = a;
             }
-            obj.phone = v["学生手机号"];
-            obj.class = v["班级"];
+            obj.phone = v[_this.lang.StudentPhoneNumber];
+            obj.class = v[_this.lang.Class];
             arr.push(obj);
           });
           console.log(arr);
           if(arr.length > 70){
-            _this.$message.error("限制上传学生数量不能超过70个");
+            _this.$message.error(_this.lang.Limitmore);
             _this.fileListUpload = [];
             loading.close();
             return;
@@ -756,15 +758,15 @@ export default {
             let item = arr[i];
             if (item.class === "") {
               _b = 2;
-              _this.$message.error("学生班级不能为空,请重新上传");
+              _this.$message.error(_this.lang.Studentcannotempty);
               break;
             } else if (item.name === "") {
               _b = 2;
-              _this.$message.error("学生姓名不能为空,请重新上传");
+              _this.$message.error(_this.lang.Stuuploadagain);
               break;
             } else if (item.sId === "") {
               _b = 2;
-              _this.$message.error("学生学号不能为空,请重新上传");
+              _this.$message.error(_this.lang.StudIDuploadagain);
             }
             // else if (item.phone === "") {
             //   _b = 1;
@@ -777,7 +779,7 @@ export default {
             // }
             else if (item.mail === "") {
               _b = 2;
-              _this.$message.error("学生账号不能为空,请重新上传");
+              _this.$message.error(_this.lang.Stuaccuploadagain);
               break;
             } else if (
               !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(
@@ -785,7 +787,7 @@ export default {
               )
             ) {
               _b = 2;
-              _this.$message.error("有学生账号格式不正确,请重新上传");
+              _this.$message.error(_this.lang.stuaccformatuploadagain);
               break;
             }
             //#region 
@@ -881,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;
             //           }
             //         },
@@ -908,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;
             //           }
             //         },
@@ -935,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;
             //           }
             //         },
@@ -994,7 +996,7 @@ export default {
             //         });
             //       loading.close();
             //       // _this.$message({
-            //       //   message: "新增成功",
+            //       //   message: lang.AddSuccessful,
             //       //   type: "success",
             //       // });
             //       _this.getStudent();
@@ -1026,7 +1028,7 @@ export default {
           let params = [
             {
               arr: newArr,
-              password: '',
+              userpassword: 'Coco1234',
               oid: _this.oid,
             },
           ];
@@ -1034,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(_this.lang.stunumberregistered);
                 z = 1;
               }
               if (res.data.type == 2) {
-                _this.$message.error("有学生账号已被注册");
+                _this.$message.error(_this.lang.stuaccregistered);
                 z = 1;
               }
               if (res.data.type == 3) {
-                _this.$message.error("有学生学号重复");
+                _this.$message.error(_this.lang.studuplicateIDs);
                 z = 1;
               }
               if (z == 2) {
                 _this.$message({
-                  message: "新增成功",
+                  message: _this.lang.AddSuccessful,
                   type: "success",
                 });
                 setTimeout(() => {
@@ -1092,9 +1094,9 @@ export default {
     deleteStudent(id, state) {
       state = 0;
       let params = [{ uid: id, state: state }];
-      this.$confirm("确定" + "删除" + "此学生吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.Aystd, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -1102,36 +1104,36 @@ export default {
             .post(this.$store.state.api + "deleteStudent", params)
             .then((res) => {
               this.$message({
-                message: "操作成功",
+                message: this.lang.OperateSuccessful,
                 type: "success",
               });
               this.getStudent();
             })
             .catch((err) => {
-              this.$message.error("操作失败");
+              this.$message.error(this.lang.operationfailed);
               console.error(err);
             });
         })
         .catch(() => { });
     },
     iniPassword(id) {
-      this.$confirm("确定" + "初始化" + "此学生的密码吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.Aystrtp, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
           let params = [
             {
               uid: id,
-              pa: '',
+              pa: 'Coco1234',
             },
           ];
           this.ajax
             .post(this.$store.state.api + "iniPassword", params)
             .then((res) => {
               this.$message({
-                message: "初始化密码成功!",
+                message: this.lang.Resetsuccessful,
                 type: "success",
               });
             })
@@ -1149,23 +1151,23 @@ export default {
     },
     updateStudent() {
       if (this.userinfo.name === "") {
-        this.$message.error("学生姓名不能为空");
+        this.$message.error(this.lang.Stucannotempty);
         return;
       } else if (!this.userinfo.classid) {
-        this.$message.error("请为学生选择班级");
+        this.$message.error(this.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(this.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(this.lang.Emailformatincorrect);
         return;
       }
 
@@ -1176,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(this.lang.accalreadyregistered);
               } else {
                 this.update_Student();
               }
@@ -1204,7 +1206,7 @@ export default {
         .post(this.$store.state.api + "updateStudentInfo", params)
         .then((res) => {
           this.$message({
-            message: "修改成功",
+            message: this.lang.Editsuccessful,
             type: "success",
           });
           this.dialogVisibleUpdate = false;
@@ -1213,7 +1215,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "修改失败",
+            message: this.lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -1277,9 +1279,11 @@ export default {
 .student_button {
   color: #fff;
   background: #2268bc;
-  width: 60px;
+  /* width: 60px; */
   height: 30px;
-  padding: 0 !important;
+  /* padding: 0 !important; */
+  padding: 0 10px !important;
+  box-sizing: border-box;
   font-size: 12px;
   line-height: 30px;
 }
@@ -1287,9 +1291,9 @@ export default {
 .head_right>button:nth-child(1) {
   color: #fff;
   background: #2268bc;
-  width: 70px;
+  /* width: 70px; */
   height: 30px;
-  padding: 0 !important;
+  /* padding: 0 !important; */
   font-size: 12px;
   line-height: 30px;
 }

+ 78 - 87
src/components/pages/synergyCourse/addCourse.vue

@@ -16,16 +16,14 @@
                     '&org=' +
                     org +
                     '&role=' +
-                    role +
-                    '&person=' +
-                    this.person,
-                }"> {{this.person ? '跨学科学习平台' : '协同建构'}}</el-breadcrumb-item>
+                    role,
+                }">{{ lang.CocoNote }}</el-breadcrumb-item>
                 <el-breadcrumb-item>
-                  <span style="color: rgb(15, 126, 255)">{{this.person ? '创建项目' : '创建协同建构'}} </span>
+                  <span style="color: rgb(15, 126, 255)">{{ lang.EditCoconote }}</span>
                 </el-breadcrumb-item>
               </el-breadcrumb>
             </div>
-            <div class="r_pub_button_retrun" @click="lastSteps()">返回</div>
+            <div class="r_pub_button_retrun" @click="lastSteps()">{{ lang.Back }}</div>
           </div>
           <div class="rightBox" style="padding: 0;"
             :style="{ height: (!isBtnDisplay) ? 'calc(100% - 50px)' : 'calc(100% - 120px)' }" v-if="this.steps == 1">
@@ -47,7 +45,7 @@
                         <div style="width: 100%;">
                           <div class="course_input_box">
                             <div class="bb_courseIcon"><img src="../../../assets/icon/new/course.png" /></div>
-                            <input type="text" placeholder="项目名称" class="binfo_input" v-model="courseName"
+                            <input type="text" :placeholder="lang.NoteName" class="binfo_input" v-model="courseName"
                               style="border: 1.5px solid rgb(202, 209, 220);margin: 0px 10px 0px 0px;border-radius: 5px;font-weight: 600;padding: 12px 14px 12px 71px;"
                               @change="changeName" />
                             <!-- background: #f6f6f6; -->
@@ -57,7 +55,7 @@
                         </div>
                       </div>
                       <div class="pType_box all_choose" v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'">
-                        <span>类型</span>
+                        <span>{{ lang.type }}</span>
                         <!-- 学科+ 主题+  未来+ -->
                         <el-radio-group @change="CourseType2Change" v-model="pTypeCheckName"
                           style="display: flex; align-items: center">
@@ -98,11 +96,11 @@
                       <!-- <div class="ai_box">
                       <div class="ai_content" @click="openAI"><img src="../../assets/icon/new/ai.png"/><span>AI共创</span></div>
                     </div> -->
-                      <div class="c_info_title" style="padding: 0 0 15px;margin: 0 auto 0 0;">上传封面</div>
+                      <div class="c_info_title" style="padding: 0 0 15px;margin: 0 auto 0 0;">{{ lang.Cover }}</div>
                       <div style="width: 100%;">
                         <div class="uploadFm" @click="choosePicVisible = true" v-if="cover.length == 0">
                           <img src="../../../assets/icon/addPoster.png" alt="" />
-                          <div>点击添加封面</div>
+                          <div>{{ lang.AddCoverimage }}</div>
                         </div>
                         <el-upload :class="{ disUoloadSty: noneBtnImg }" class="upCss" action="#" list-type="picture"
                           v-loading="uploadLoading1" :http-request="beforeUpload1" ref="upload1"
@@ -120,26 +118,26 @@
               <div class="wb_j_box">
                 <div class="wb_j_box_content">
                   <div class="wb_j_box_btn" @click="openMember">
-                    <div class="wb_j_box_title">协同人员</div>
+                    <div class="wb_j_box_title">{{ lang.Collaborator }}</div>
                     <div class="wb_j_box_btn_c">
                       <el-tooltip effect="dark" :content="getListMan2(checkboxList3)" placement="top"
                         v-if="checkboxList3.length" popper-class="text_tooltip2">
                         <div class="wb_j_box_span">{{ getListMan2(checkboxList3) }}</div>
                       </el-tooltip>
-                      <div v-else class="wb_j_box_span">请选择协同人员</div>
+                      <div v-else class="wb_j_box_span">{{ lang.Psac }}</div>
                       <div class="wb_j_box_arrow"></div>
                     </div>
                   </div>
                 </div>
                 <div style="margin-left: auto;">
-                  <button class="c_pub_button_add pub_btn_paste_img" @click="pasteTask" v-if="isPasteTask">智能粘贴</button>
+                  <button class="c_pub_button_add pub_btn_paste_img" @click="pasteTask" v-if="isPasteTask"> {{ lang.SMARTPaste }}</button>
                 </div>
               </div>
             </div>
             <div class="whiteBg" style="margin-top: 10px">
               <groupBox :cid="cid" :people="checkboxList3" :classList="classList" :courseDetail="courseDetail"
                 :userid="userid" :type="1" classId="" :oid="oid" v-if="cid" @open2="open2"></groupBox>
-              <div v-else class="tipsBox">请添加课程名称后才能设置分组</div>
+              <div v-else class="tipsBox">{{ lang.Pleaseaddgroups }}</div>
             </div>
             <div class="whiteBg" style="border-radius: 0; background:#F0F2F5;" v-if="false">
               <div style="display: flex">
@@ -1541,11 +1539,11 @@
             </div>
             <div class="info_btnBox3">
               <button class="c_pub_button_return pub_btn_return_img" @click="lastSteps">
-                返回首页
+                {{ lang.returnHomepage }}
               </button>
               <button class="c_pub_button_confirm pub_btn_finish_img" @click="nextSteps"
                 v-if="!(cid && userid != courseUserid && role != '1')">
-                确认创建
+                {{ lang.Confirmcreation }}
               </button>
             </div>
           </div>
@@ -1750,41 +1748,41 @@
         <el-button type="primary" @click="isAddPPTeacher">确定</el-button>
       </span>
     </el-dialog> -->
-    <el-dialog title="添加协同成员" :visible.sync="dialogVisibleMember" :append-to-body="true" width="25%" height="80%"
+    <el-dialog :title="lang.Addmembers" :visible.sync="dialogVisibleMember" :append-to-body="true" width="25%" height="80%"
       :before-close="handleClose" class="addNewPP customWidth" >
       <div v-loading="teacherLoading">
         <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="getTeacher"></el-input>
+                <el-input :placeholder="lang.Searchforaccount" v-model="searchTN" @keyup.enter.native="getTeacher"></el-input>
                 <div class="search_img" @click="getTeacher">
                   <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>账号</span>
-            <span>学校</span>
+            <span>{{ lang.Name }}</span>
+            <span>{{ lang.identity }}</span>
+            <span>{{ lang.Account }}</span>
+            <span>{{ lang.school }}</span>
           </div>
           <div style="margin-left:25px;">
-            <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange" style="display: flex;align-items: center;">全选</el-checkbox>
+            <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange" style="display: flex;align-items: center;">{{ lang.SelectAll }}</el-checkbox>
           </div>
           <el-checkbox-group v-model="checkboxList3" @change="handleCheckedTeacherJuriChange" class="people_name" v-if="teacherJuri.length">
             <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>
-                <span>{{ item.type == "1" ? "老师" : "学生" }}</span>
+                <span>{{ item.type == "1" ? lang.teacher : lang.student }}</span>
                 <el-tooltip placement="top" :content="item.username">
                   <span>{{ item.username }}</span>
                 </el-tooltip>
@@ -1794,7 +1792,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="pageSize" :total="total"
@@ -1803,8 +1801,8 @@
         </div>
       </div>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="page = 0;dialogVisibleMember = false;">取 消</el-button>
-        <el-button type="primary" @click="isAddPPTeacher">确定</el-button>
+        <el-button @click="page = 0;dialogVisibleMember = false;">{{ lang.Cancel }}</el-button>
+        <el-button type="primary" @click="isAddPPTeacher">{{ lang.Confirm }}</el-button>
       </span>
     </el-dialog>
     <el-dialog title="创建问卷" :visible.sync="dialogVisible5" :append-to-body="true" width="800px"
@@ -2274,16 +2272,16 @@
         <el-button type="primary" @click="addMp3Answer">确 定</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="上传图片" :visible.sync="choosePicVisible" :append-to-body="true" width="600px"
+    <el-dialog :title="lang.uploadpictures" :visible.sync="choosePicVisible" :append-to-body="true" width="600px"
       :before-close="handleClose" class="dialog_diy">
       <div>
         <div class="fileCss" style="padding-top: 20px">
           <div>
             <button class="info_btn" @click="addImg($event)">
-              选择本地文件
+              {{ lang.Selectlocalfile }}
               <input type="file" accept="image/*" style="display: none" @change="beforeUpload1" />
             </button>
-            <div class="spanName">选择本地文件</div>
+            <div class="spanName"> {{ lang.Selectlocalfile }}</div>
           </div>
           <!-- <div>
             <el-button @click="getAllBanner" v-if="isSysPic == false">选择系统文件</el-button>
@@ -2296,14 +2294,14 @@
             <div class="spanName">选择系统文件</div>
           </div> -->
           <div>
-            <el-button @click="searchImageValue = courseName, resetImage()" v-if="isSysPic2 == false">选择网络文件</el-button>
+            <el-button @click="searchImageValue = courseName, resetImage()" v-if="isSysPic2 == false"> {{ lang.Selectnetworkfiles }}</el-button>
             <div class="isSysPic" v-if="isSysPic2 == true && cover.length > 0">
               <img :src="cover[0].url" alt="" />
               <div class="deletePic" @click="deleteSysPic">
                 <img src="../../../assets/icon/delete.png" alt="" />
               </div>
             </div>
-            <div class="spanName">选择网络文件</div>
+            <div class="spanName"> {{ lang.Selectnetworkfiles }}</div>
           </div>
         </div>
         <!-- <div class="fileCss">
@@ -2312,8 +2310,8 @@
         </div> -->
       </div>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="choosePicVisible = false">取 消</el-button>
-        <el-button type="primary" @click="choosePicVisible = false">确 定</el-button>
+        <el-button @click="choosePicVisible = false">{{ lang.Cancel }}</el-button>
+        <el-button type="primary" @click="choosePicVisible = false">{{ lang.Confirm }}</el-button>
       </span>
     </el-dialog>
     <el-dialog title="选择系统文件" :visible.sync="sysPicVisible" :append-to-body="true" width="710px"
@@ -2338,21 +2336,21 @@
         </div>
       </div>
     </el-dialog>
-    <el-dialog title="选择网络文件" :visible.sync="sysPicVisible2" :append-to-body="true" width="710px"
+    <el-dialog :title="lang.Selectnetworkfiles" :visible.sync="sysPicVisible2" :append-to-body="true" width="710px"
       :before-close="handleClose" class="dialog_diy">
       <div>
         <div class="people_top_right" style="display: flex;align-items: center;">
           <div style="position: relative; width: 100%;">
-            <el-input style="height: 100%" placeholder="搜索图片关键字" v-model="searchImageValue"
+            <el-input style="height: 100%" :placeholder="lang.Searchimagekeywords" v-model="searchImageValue"
               @keyup.enter.native="resetImage()"></el-input>
             <div class="search_img" @click="resetImage" style="right: 10px;">
               <img src="../../../assets/icon/search.png" alt />
             </div>
           </div>
-          <el-button type="primary" size="default" style="margin-left: 10px;" @click="changePicture">换一组</el-button>
+          <el-button type="primary" size="default" style="margin-left: 10px;" @click="changePicture">{{ lang.Changeanothergroup }}</el-button>
         </div>
         <div class="sysPicBox" v-loading="imageloading">
-          <div class="picNone" v-if="!imageList.length">请输入关键词搜索图片</div>
+          <div class="picNone" v-if="!imageList.length">{{ lang.enterkeywordsimages }}</div>
           <div v-for="(sys, sysIndex) in imageList" :key="sysIndex" class="sysPic">
             <img :src="sys.url" alt="" @click="chooseSysPic2(sys.url)" />
           </div>
@@ -2730,7 +2728,6 @@ export default {
   },
   data() {
     return {
-      person: this.$route.query.person,
       checkAll: false,
       chooseType: 1,
       checkedCities: [],
@@ -3168,7 +3165,7 @@ export default {
             // this.courseId = this.cid;
           })
           .catch((err) => {
-            this.$message.error("网络不佳");
+            this.$message.error(this.lang.Poorinternetconnection);
             console.error(err);
           });
       }
@@ -3183,9 +3180,7 @@ export default {
           "&org=" +
           this.org +
           "&role=" +
-          this.role+
-          '&person=' +
-          this.person
+          this.role
         );
       }
     },
@@ -3339,9 +3334,9 @@ export default {
     },
     closeConfirm(tool) {
       this
-        .$confirm("是否保存已编辑内容?", "提示", {
-          confirmButtonText: "保存",
-          cancelButtonText: "不保存",
+        .$confirm(this.lang.wantsavecontent, this.lang.tip, {
+          confirmButtonText: this.lang.saveCoco,
+          cancelButtonText: this.lang.notsave,
           distinguishCancelAndClose: true,
           type: "warning",
         })
@@ -3429,29 +3424,27 @@ export default {
           "&org=" +
           this.org +
           "&role=" +
-          this.role +
-          '&person=' +
-          this.person
+          this.role
         );
       } else {
         this
-          .$confirm("是否保存已编辑内容?", "提示", {
-            confirmButtonText: "保存",
-            cancelButtonText: "不保存",
+          .$confirm(this.lang.wantsavecontent, this.lang.tip, {
+            confirmButtonText: this.lang.saveCoco,
+            cancelButtonText: this.lang.notsave,
             distinguishCancelAndClose: true,
             type: "warning",
           })
           .then(() => {
             if (this.cid == "" || this.cid == undefined) {
               if (this.courseName == "") {
-                this.$message.error("请补充填写课程名称");
+                this.$message.error(this.lang.fillincoursename);
                 return;
               } else {
                 this.addWork();
               }
             } else {
               if (this.courseName == "") {
-                this.$message.error("请补充填写课程名称");
+                this.$message.error(this.lang.fillincoursename);
                 return;
               } else {
                 // if (this.userid != this.courseUserid && this.role != "1") {
@@ -3473,9 +3466,7 @@ export default {
                 "&org=" +
                 this.org +
                 "&role=" +
-                this.role+
-                '&person=' +
-                this.person
+                this.role
               );
             }
 
@@ -3485,14 +3476,14 @@ export default {
     nextSteps() {
       if (this.cid == "" || this.cid == undefined) {
         if (this.courseName == "") {
-          this.$message.error("请补充填写课程名称");
+          this.$message.error(this.lang.fillincoursename);
           return;
         } else {
           this.addWork();
         }
       } else {
         if (this.courseName == "") {
-          this.$message.error("请补充填写课程名称");
+          this.$message.error(this.lang.fillincoursename);
           return;
         } else {
           // if (this.userid != this.courseUserid && this.role != "1") {
@@ -3507,14 +3498,14 @@ export default {
     changeName() {
       if (this.cid == "" || this.cid == undefined) {
         if (this.courseName == "") {
-          this.$message.error("请补充填写课程名称");
+          this.$message.error(this.lang.fillincoursename);
           return;
         } else {
           this.addWork(2);
         }
       } else {
         if (this.courseName == "") {
-          this.$message.error("请补充填写课程名称");
+          this.$message.error(this.lang.fillincoursename);
           return;
         } else {
           this.updateWork(2);
@@ -3572,14 +3563,14 @@ export default {
         .post(this.$store.state.api + "deleteWork", params)
         .then((res) => {
           this.$message({
-            message: "删除成功",
+            message: this.lang.DeleteSuccessful,
             type: "success",
           });
           this.unitJson.splice(this.unitIndex, 1);
           this.unitIndex = this.unitIndex - 1;
         })
         .catch((err) => {
-          this.$message.error("网络不佳");
+          this.$message.error(this.lang.Poorinternetconnection);
           console.error(err);
         });
     },
@@ -3596,7 +3587,7 @@ export default {
             _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson[
               itemTaskIndex
             ].toolChoose.splice(i, 1);
-            _this.$message.success("删除成功");
+            _this.$message.success(this.lang.DeleteSuccessful);
           })
           .catch(() => {
             return;
@@ -3613,7 +3604,7 @@ export default {
         })
         .then(() => {
           _this.sentenceList.splice(i, 1);
-          _this.$message.success("删除成功");
+          _this.$message.success(this.lang.DeleteSuccessful);
         })
         .catch(() => {
           return;
@@ -3651,7 +3642,7 @@ export default {
           }
           _this.$forceUpdate();
           _this.unitJson[_this.unitIndex].chapterInfo[0].taskJson.splice(i, 1);
-          _this.$message.success("删除成功");
+          _this.$message.success(this.lang.DeleteSuccessful);
 
           // this.$nextTick(() => {
           //   $('.stepsBottom2')[0].style.transition = 'unset'
@@ -4872,7 +4863,7 @@ export default {
                 !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
                   .length
               ) {
-                this.$message.error("请把工具添加完整");
+                this.$message.error(this.lang.addtoolsentirety);
                 cPan = 2;
                 break;
               }
@@ -4932,7 +4923,7 @@ export default {
           console.log(this.steps);
           // if (this.steps != 1 && this.steps != 2 && this.steps != 3) {
           this.$message({
-            message: "新增成功",
+            message: this.lang.AddSuccessful,
             type: "success",
           });
           // }
@@ -4948,7 +4939,7 @@ export default {
           }
         })
         .catch((err) => {
-          this.$message.error("网络不佳");
+          this.$message.error(this.lang.Poorinternetconnection);
           console.error(err);
         });
     },
@@ -5002,13 +4993,13 @@ export default {
         .post(this.$store.state.api + "updateWorkNew4", params)
         .then((res) => {
           this.$message({
-            message: "修改成功",
+            message: this.lang.Editsuccessful,
             type: "success",
           });
           this.courseId = this.cid;
         })
         .catch((err) => {
-          this.$message.error("网络不佳");
+          this.$message.error(this.lang.Poorinternetconnection);
           console.error(err);
         });
     },
@@ -5036,7 +5027,7 @@ export default {
                 !this.unitJson[i].chapterInfo[0].taskJson[j].toolChoose[z].tool
                   .length
               ) {
-                this.$message.error("请把工具添加完整");
+                this.$message.error(this.lang.addtoolsentirety);
                 cPan = 2;
                 break;
               }
@@ -5095,12 +5086,12 @@ export default {
           that.open(that.cid,that.userid);  
           if (this.cidType == 1) {
             this.$message({
-              message: "修改成功",
+              message: this.lang.Editsuccessful,
               type: "success",
             });
           } else {
             this.$message({
-              message: "新增成功",
+              message: this.lang.AddSuccessful,
               type: "success",
             });
           }
@@ -5112,7 +5103,7 @@ export default {
           }
         })
         .catch((err) => {
-          this.$message.error("网络不佳");
+          this.$message.error(this.lang.Poorinternetconnection);
           console.error(err);
         });
     },
@@ -5171,7 +5162,7 @@ export default {
           }
         })
         .catch((err) => {
-          this.$message.error("网络不佳");
+          this.$message.error(this.lang.Poorinternetconnection);
           console.error(err);
         });
     },
@@ -7096,7 +7087,7 @@ export default {
           }, 1000);
         })
         .catch((err) => {
-          this.$message.error("网络不佳");
+          this.$message.error(this.lang.Poorinternetconnection);
           console.error(err);
         });
     },
@@ -7118,9 +7109,9 @@ export default {
           }
           this.CourseType = res.data;
           this.CourseType2 = [
-            { name: "智见课程", id: [] },
-            { name: "智行课程", id: [] },
-            { name: "智创课程", id: [] },
+            { name: this.lang.ZhijianCourse, id: [] },
+            { name: this.lang.ZhixingCourse, id: [] },
+            { name: this.lang.IntelligentCreationCourse, id: [] },
           ];
 
           for (var cti = 0; cti < res.data[0].length; cti++) {
@@ -7136,11 +7127,11 @@ export default {
               this.CourseType2[2].id.push(res.data[0][cti].id);
             }
             if (res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86db5" || res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86ac5") {
-              res.data[0][cti].name = "年级";
+              res.data[0][cti].name = this.lang.GradeL;
             } else if (res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86db5" || res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86ac5") {
-              res.data[0][cti].name = "学科";
+              res.data[0][cti].name = this.lang.Subject;
             } else if (res.data[0][cti].id == "34629bcc-d02f-11ec-8c78-005056b86db5") {
-              res.data[0][cti].name = "主题";
+              res.data[0][cti].name = this.lang.Theme;
             }
           }
           let _courseTypeId = [];
@@ -7287,7 +7278,7 @@ export default {
     },
     openMember() {
       if (this.cid && this.userid != this.courseUserid && this.role != '1') {
-        this.$message.error('非管理员和创建者不可编辑')
+        this.$message.error(this.lang.Noncannotedit)
         return;
       }
       this.searchTN = "";

+ 32 - 84
src/components/pages/synergyCourse/course.vue

@@ -1,34 +1,21 @@
 <template>
   <div class="pb_content" style="height: auto; width: 94%; margin: 10px auto;background: unset;box-sizing: border-box;" :class="[gotype ? 'liyuan' :'']" >
     <backPage style="padding: 40px 0 0;" v-if="gotype" tit="协同建构"></backPage>
-    <div class="topL"  v-if="person">
-        <div class="topBlock">
-            <div class="topTit">
-                <div>欢迎使用</div>
-                <div style="color: #0354D7;margin: 0 15px;">荔园・博通 跨学科学习平台</div>
-                <!-- <div style="color: #0354D7;margin: 0 15px;"><span v-if="roleUser.orgName">{{roleUser.orgName}}—</span>{{ roleUser.schoolName }}</div>
-                <div>AI平台!</div> -->
-            </div>
-            <div class="topDetail">
-                  博采众科之长,贯通知识万象
-            </div>
-        </div>
-        <img style="width: 150px;object-fit: cover;transform: scaleX(-1);" src="../../../assets/icon/liyuan/cocoloading.gif" alt="">
-    </div>
+    
     <div style="width:100%;padding:0 21px;background:#fff;border-radius: 5px;box-sizing: border-box;">
       <div class="pb_head top">
         <div style="
     display: flex;
     align-items: center;
 ">
-          <span>{{this.person ? '跨学科学习平台' : '协同建构'}}</span>
+          <span>{{ lang.CocoNote }}</span>
         </div>
         <div class="student_button">
           <button class="r_pub_button_course" @mouseenter="btnDisplay = true" @mouseleave="btnDisplay = false">
-            <span>{{this.person ? '创建项目' : '创建协同建构'}}</span>
+            <span>{{ lang.EditCoconote }}</span>
             <div v-show="btnDisplay" class="buttonBox">
-              <div type="primary" @click="goToCourse3()">标准创建</div>
-              <div type="primary" @click="goToCourseSimple()">快速创建</div>
+              <div type="primary" @click="goToCourse3()">{{ lang.Standardcreation }}</div>
+              <div type="primary" @click="goToCourseSimple()">{{ lang.QuicklyCreate }}</div>
             </div>
           </button>
         </div>
@@ -52,13 +39,13 @@
               <div class="search">
                 <img src="../../../assets/icon/search.png" alt="" />
               </div>
-              <input class="sInput" type="text" placeholder="请输入关键字" v-model="courseName" @change="getCourse()" @input="getCourse()" />
+              <input class="sInput" type="text" :placeholder="lang.SearchNote" v-model="courseName" @change="getCourse()" @input="getCourse()" />
             </div>
-            <el-button type="primary" class="bgColor" style="margin-left: 10px;" @click="reset">重置</el-button>
+            <el-button type="primary" class="bgColor" style="margin-left: 10px;" @click="reset">{{ lang.ResetNote }}</el-button>
           </div>
         </div>
         <div class="pType_box all_choose" v-if="oid == '69893dca-1d47-11ed-8c78-005056b86db5'">
-          <span><span>类型</span></span>
+          <span><span>{{ lang.type }}</span></span>
           <el-radio-group v-model="pTypeCheckName" style="display: flex; align-items: center">
             <div class="all_choose" style="width: 100px" v-for="(item, index) in CourseType2" :key="index">
               <el-radio :label="item.name" @click.native.prevent="CourseType2Click(item.name)">{{ item.name }}</el-radio>
@@ -80,7 +67,7 @@
               ">
               <div class="cName" @click="getCourse2(item.name, '', item.id, 1)"
                 :class="typeE.indexOf(item.id) != -1 ? 'isCType' : ''">
-                全部
+                {{ lang.All }}
               </div>
               <div v-for="(item1, index1) in CourseTypeJson[item.id]" :key="index + '-' + index1" :label="item1.id"
                 @click="getCourse2(item.name, item.id, item1.id, 2)">
@@ -160,14 +147,14 @@
       <div class="student_table">
         <div class="course_box">
           <div class="out_box" v-for="(item, index) in course" :key="index">
-            <div class="myCourse" v-if="item.userid == userid">我的创建</div>
+            <div class="myCourse" v-if="item.userid == userid">{{ lang.MyNote }}</div>
             <div class="myCourse" style="background: #4187f0" v-else-if="!item.course_teacher ||
               (item.course_teacher &&
                 item.course_teacher.indexOf(userid) == -1)
               ">
-              他人创建
+              {{ lang.Shared }}
             </div>
-            <div class="xtCourse" v-else>协同建构</div>
+            <div class="xtCourse" v-else>{{ lang.CocoNote }}</div>
             <div class="tup" @click="open(item.courseId, item.userid)" style="cursor: pointer;">
               <img :src="item.cover != null && item.cover != ''
                 ? JSON.parse(item.cover).length > 0
@@ -196,7 +183,7 @@
             </div>
             <div class="three_bottom">
               <!-- v-if="role == '1'" @click="get(item)"-->
-              <div @click="open(item.courseId, item.userid)">打开</div>
+              <div @click="open(item.courseId, item.userid)">{{ lang.Open }}</div>
               <!-- <div @click="jump(item.courseId)" v-else>评课</div> -->
               <!-- <div v-if="((item.userid == userid) ||
                 (item.course_teacher &&
@@ -218,7 +205,7 @@
               <div v-if="((item.userid == userid)) &&
                 item.state == 1
                 " @click="goToCourse3(item.courseId)">
-                修改
+                {{ lang.Modified }}
               </div>
               <!-- <div v-if="groupA == '0'" @click="
                 goTo(
@@ -237,11 +224,11 @@
                 评价
               </div> -->
               <div v-if="((item.userid == userid))" @click="copyCourse(item.courseId)">
-                复制
+                {{ lang.Copy }}
               </div>
               <!-- v-if="item.isCourseType == 1 || role == '1'" -->
               <div v-if="((item.userid == userid))" @click="deleteCourse(item.courseId)">
-                删除
+                {{ lang.Delete }}
               </div>
               <!-- <div class="more">
                 <span style="font-size: 18px; font-weight: 700">...</span>
@@ -254,7 +241,7 @@
               </div> -->
             </div>
           </div>
-          <div class="course_empty" v-if="course.length == 0">暂无数据</div>
+          <div class="course_empty" v-if="course.length == 0">{{ lang.Nodata }}</div>
         </div>
       </div>
     </div>
@@ -262,8 +249,6 @@
       <el-pagination background layout="prev, pager, next" :page-size="pageSize" :total="total"
         v-if="page && course.length" style="padding-bottom: 20px" @current-change="handleCurrentChange"></el-pagination>
     </div>
-      
-
     <el-dialog :visible.sync="dialogVisible1" size="tiny">
       <img width="100%" :src="dialogImageUrl" alt />
     </el-dialog>
@@ -324,7 +309,6 @@ export default {
   components: { EditorBar,backPage },
   data() {
     return {
-      person: this.$route.query.person,
       gotype:(window.topU && window.topU.gotype) ?  window.topU.gotype : '',
       itemCount: 1,
       courseTitle: "",
@@ -521,9 +505,7 @@ export default {
           "&org=" +
           this.org +
           "&role=" +
-          this.role +
-          "&person=" +
-          this.person
+          this.role
         );
       } else {
         this.$router.push(
@@ -534,9 +516,7 @@ export default {
           "&org=" +
           this.org +
           "&role=" +
-          this.role +
-          "&person=" +
-          this.person
+          this.role
         );
         this.addOp3('1', "", { type: "CocoNote_standard_add" }, "success")
       }
@@ -610,7 +590,7 @@ export default {
       if (uid == this.userid ||  window.topU.US.userInfo.role==1) {
          window.topU.postMessage(
           {
-            tools: this.person ? "opencCscl2" : "opencCscl",
+            tools: "opencCscl",
             cid: cid,
             gid: '',
           },
@@ -638,7 +618,7 @@ export default {
             if (groupCid) {
                window.topU.postMessage(
                 {
-                  tools: this.person ? "opencCscl2" : "opencCscl",
+                  tools: "opencCscl",
                   cid: cid,
                   gid: groupCid,
                 },
@@ -1031,9 +1011,9 @@ export default {
     // },
     deleteCourse(cid) {
       // if (this.time()) {
-      this.$confirm("确定删除吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.Aystdi, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText:  this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -1049,7 +1029,7 @@ export default {
             .then((res) => {
               loading.close();
               this.isLoading = false;
-              this.$message.success("删除成功");
+              this.$message.success(this.lang.DeleteSuccessful);
               this.getCourse();
             })
             .catch((err) => {
@@ -1077,9 +1057,9 @@ export default {
           }
           this.CourseType = res.data;
           this.CourseType2 = [
-            { name: "智见课程", id: [] },
-            { name: "智行课程", id: [] },
-            { name: "智创课程", id: [] },
+            { name: this.lang.ZhijianCourse, id: [] },
+            { name: this.lang.ZhixingCourse, id: [] },
+            { name: this.lang.IntelligentCreationCourse, id: [] },
           ];
 
           for (var cti = 0; cti < res.data[0].length; cti++) {
@@ -1095,11 +1075,11 @@ export default {
               this.CourseType2[2].id.push(res.data[0][cti].id);
             }
             if (res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86db5" || res.data[0][cti].id == "34628934-d02f-11ec-8c78-005056b86ac5") {
-              res.data[0][cti].name = "年级";
+              res.data[0][cti].name = this.lang.GradeL;
             } else if (res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86db5" || res.data[0][cti].id == "34629907-d02f-11ec-8c78-005056b86ac5") {
-              res.data[0][cti].name = "学科";
+              res.data[0][cti].name = this.lang.Subject;
             } else if (res.data[0][cti].id == "34629bcc-d02f-11ec-8c78-005056b86db5") {
-              res.data[0][cti].name = "主题";
+              res.data[0][cti].name = this.lang.Theme;
             }
           }
           for (var i = 0; i < res.data[0].length; i++) {
@@ -1260,7 +1240,7 @@ export default {
           } else {
             this.groupA = "0";
           }
-          this.$message.success("复制成功")
+          this.$message.success(this.lang.Successfullycopy)
           this.clear();
         })
         .catch((err) => {
@@ -2065,36 +2045,4 @@ export default {
   box-sizing: border-box !important;
   margin: 0 !important;
 }
-.topL{
-    display: flex;
-    height: 154px;
-    justify-content: space-between;
-    background-color: #fff;
-    align-items: center;
-    padding: 24px;
-    box-sizing: border-box;
-    margin-bottom: 14px;
-    border-radius: 10px;
-    box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)
-}
-
-/* 顶部区域 */
-.topBlock{
-    display: flex;
-    flex-direction: column;
-    justify-content: space-between;
-}
-.topTit{
-    display: flex;
-    font-size: 30px;
-    height: 100%;
-    /* align-items: center; */
-    color: #000;
-    align-items: baseline;
-    font-weight: 600;
-}
-.topDetail{
-    color: #64748B;
-    margin-top: 16px;
-}
 </style>

+ 105 - 99
src/components/pages/synergyCourse/group/group.vue

@@ -16,7 +16,7 @@
                 <!-- || (courseDetail.course_teacher && courseDetail.course_teacher.indexOf(userid) != -1) -->
                 <div class="btn_right" v-if="courseDetail.userid == userid">
                     <div style="color: rgb(171 171 171); margin: 0 10px 0 0" v-show="false">
-                        提示:开启【开放选座】,能够自由加入和退出小组。
+                        {{ lang.OpenSeatSelectionTip }}
                     </div>
                     <!-- 开放选座 -->
                     <!-- <div type="primary" v-if="groupJson.islock == 1 && groupJson.group.length" class="returnBtn"
@@ -28,26 +28,26 @@
                             解锁位置
                         </div> -->
                     <div class="group_switch" v-show="false">
-                        <span>开放选座</span>
+                        <span>{{ lang.OpenSeatSelection }}</span>
                         <el-switch v-model="islock" active-text="" class="switchCss" @change="lockChair"></el-switch>
                     </div>
                     <div class="group_switch" v-show="false">
-                        <span>开启分组</span>
+                        <span>{{ lang.Enablegrouping }}</span>
                         <el-switch v-model="isopen" class="switchCss" @change="openChair"></el-switch>
                     </div>
                     <div type="primary" @click="updateGroup" class="returnBtn" style="background-color: #225bc7">
-                        添加分组
+                        {{ lang.Creategroups }}
                     </div>
                     <div type="primary" @click="deleteCourseGroup" class="returnBtn" style="background-color: #225bc7">
-                        删除分组
+                         {{ lang.Deletegroups }}
                     </div>
                 </div>
                 <div class="btn_right" v-else>
                     <div style="color: rgb(171 171 171); margin: 0 10px 0 0">
-                        提示:开启【开放选座】,能够自由加入和退出小组。
+                        {{ lang.OpenSeatSelectionTip }}
                     </div>
                     <div class="group_switch">
-                        <span>开放选座</span>
+                        <span>{{ lang.OpenSeatSelection }}</span>
                         <el-switch v-model="islock" active-text="" class="switchCss" @change="lockChair"
                             disabled></el-switch>
                     </div>
@@ -68,12 +68,12 @@
                                         groupStudent[g.id][0] &&
                                         groupJson.islock == 2,
                                 }"><span class="updateChairBtn"
-                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][0])">修改</span></span><span>{{
+                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][0])">{{ lang.Edit }}</span></span><span>{{
                                             groupStudent[g.id] &&
                                             groupStudent[g.id][0]
                                             ? groupStudent[g.id] &&
                                             groupStudent[g.id][0].name
-                                            : "空位置" }}</span>
+                                            : lang.emptyplaces }}</span>
                             </div>
                             <div v-if="groupJson.number > 4">
                                 <span :class="{
@@ -86,12 +86,12 @@
                                         groupStudent[g.id][4] &&
                                         groupJson.islock == 2,
                                 }"><span class="updateChairBtn"
-                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][4])">修改</span></span><span>{{
+                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][4])">{{ lang.Edit }}</span></span><span>{{
                                             groupStudent[g.id] &&
                                             groupStudent[g.id][4]
                                             ? groupStudent[g.id] &&
                                             groupStudent[g.id][4].name
-                                            : "空位置" }}</span>
+                                            : lang.emptyplaces }}</span>
                             </div>
                             <div v-if="groupJson.number > 8">
                                 <span :class="{
@@ -104,12 +104,12 @@
                                         groupStudent[g.id][8] &&
                                         groupJson.islock == 2,
                                 }"><span class="updateChairBtn"
-                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][8])">修改</span></span><span>{{
+                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][8])">{{ lang.Edit }}</span></span><span>{{
                                             groupStudent[g.id] &&
                                             groupStudent[g.id][8]
                                             ? groupStudent[g.id] &&
                                             groupStudent[g.id][8].name
-                                            : "空位置" }}</span>
+                                            : lang.emptyplaces }}</span>
                             </div>
                         </div>
                         <div class="g_d_group_tableBox">
@@ -125,12 +125,12 @@
                                             groupStudent[g.id][2] &&
                                             groupJson.islock == 2,
                                     }"><span class="updateChairBtn"
-                                            @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][2])">修改</span></span><span>{{
+                                            @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][2])">{{ lang.Edit }}</span></span><span>{{
                                                 groupStudent[g.id] &&
                                                 groupStudent[g.id][2]
                                                 ? groupStudent[g.id] &&
                                                 groupStudent[g.id][2].name
-                                                : "空位置" }}</span>
+                                                : lang.emptyplaces }}</span>
                                 </div>
                                 <div v-if="groupJson.number > 6">
                                     <span :class="{
@@ -143,12 +143,12 @@
                                             groupStudent[g.id][6] &&
                                             groupJson.islock == 2,
                                     }"><span class="updateChairBtn"
-                                            @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][6])">修改</span></span><span>{{
+                                            @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][6])">{{ lang.Edit }}</span></span><span>{{
                                                 groupStudent[g.id] &&
                                                 groupStudent[g.id][6]
                                                 ? groupStudent[g.id] &&
                                                 groupStudent[g.id][6].name
-                                                : "空位置" }}</span>
+                                                : lang.emptyplaces }}</span>
                                 </div>
                             </div>
                             <div class="g_d_group_table">
@@ -158,11 +158,11 @@
                                 <div>
                                     <!-- && groupJson.islock == 2 -->
                                     <div v-if="courseDetail.userid == userid" @click="deleteGroupChair(g.id, gindex)">
-                                        移除组员
+                                        {{ lang.Removeteammembers }}
                                     </div>
                                     <div @click="selectGroup(g.id)"
                                         v-if="groupStudentUid && groupStudentUid[g.id].indexOf(userid) == -1 && courseDetail.userid !== userid">
-                                        加入分组
+                                        {{ lang.JoinGroup }}
                                     </div>
                                     <div @click="
                                         exitGroup(groupStudent[g.id] &&
@@ -170,12 +170,12 @@
                                                 groupStudentUid[g.id].indexOf(userid)
                                             ].id)
                                         " v-else-if="groupStudentUid && groupStudentUid[g.id].indexOf(userid) != -1">
-                                        退出分组
+                                        {{ lang.Exitgroup }}
                                     </div>
                                     <div style="margin-top:10px"
                                         v-if="(courseDetail.userid == userid) && groupStudent[g.id].length < groupJson.number"
                                         @click="addGroupStudent(g.id)">
-                                        添加组员
+                                        {{ lang.Addteammembers }}
                                         <!-- || (courseDetail.course_teacher && courseDetail.course_teacher.indexOf(userid) != -1) -->
                                     </div>
                                 </div>
@@ -192,12 +192,12 @@
                                             groupStudent[g.id][3] &&
                                             groupJson.islock == 2,
                                     }"><span class="updateChairBtn"
-                                            @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][3])">修改</span></span><span>{{
+                                            @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][3])">{{ lang.Edit }}</span></span><span>{{
                                                 groupStudent[g.id] &&
                                                 groupStudent[g.id][3]
                                                 ? groupStudent[g.id] &&
                                                 groupStudent[g.id][3].name
-                                                : "空位置" }}</span>
+                                                : lang.emptyplaces }}</span>
                                 </div>
                                 <div v-if="groupJson.number > 7">
                                     <span :class="{
@@ -210,12 +210,12 @@
                                             groupStudent[g.id][7] &&
                                             groupJson.islock == 2,
                                     }"><span class="updateChairBtn"
-                                            @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][7])">修改</span></span><span>{{
+                                            @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][7])">{{ lang.Edit }}</span></span><span>{{
                                                 groupStudent[g.id] &&
                                                 groupStudent[g.id][7]
                                                 ? groupStudent[g.id] &&
                                                 groupStudent[g.id][7].name
-                                                : "空位置" }}</span>
+                                                : lang.emptyplaces }}</span>
                                 </div>
                             </div>
                         </div>
@@ -231,12 +231,12 @@
                                         groupStudent[g.id][1] &&
                                         groupJson.islock == 2,
                                 }"><span class="updateChairBtn"
-                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][1])">修改</span></span><span>{{
+                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][1])">{{ lang.Edit }}</span></span><span>{{
                                             groupStudent[g.id] &&
                                             groupStudent[g.id][1]
                                             ? groupStudent[g.id] &&
                                             groupStudent[g.id][1].name
-                                            : "空位置" }}</span>
+                                            : lang.emptyplaces }}</span>
                             </div>
                             <div v-if="groupJson.number > 5">
                                 <span :class="{
@@ -249,12 +249,12 @@
                                         groupStudent[g.id][5] &&
                                         groupJson.islock == 2,
                                 }"><span class="updateChairBtn"
-                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][5])">修改</span></span><span>{{
+                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][5])">{{ lang.Edit }}</span></span><span>{{
                                             groupStudent[g.id] &&
                                             groupStudent[g.id][5]
                                             ? groupStudent[g.id] &&
                                             groupStudent[g.id][5].name
-                                            : "空位置" }}</span>
+                                            : lang.emptyplaces }}</span>
                             </div>
                             <div v-if="groupJson.number > 9">
                                 <span :class="{
@@ -267,64 +267,70 @@
                                         groupStudent[g.id][9] &&
                                         groupJson.islock == 2,
                                 }"><span class="updateChairBtn"
-                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][9])">修改</span></span><span>{{
+                                        @click="updateGroupChair(groupStudent[g.id] && groupStudent[g.id][9])">{{ lang.Edit }}</span></span><span>{{
                                             groupStudent[g.id] &&
                                             groupStudent[g.id][9]
                                             ? groupStudent[g.id] &&
                                             groupStudent[g.id][9].name
-                                            : "空位置" }}</span>
+                                            : lang.emptyplaces }}</span>
                             </div>
                         </div>
                     </div>
                 </div>
                 <div v-else-if="!groupJson.group.length" style="text-align: center;">{{ courseDetail.userid == userid ?
-                    "暂无分组,请点击右上角设置分组" :
-                    "老师暂未添加分组" }}</div>
-                <div v-else-if="!isopen" style="text-align: center;">{{ "已关闭分组" }}</div>
+                    lang.Pleasesetupgroups :
+                    lang.Teachernotaddedgroups }}</div>
+                <div v-else-if="!isopen" style="text-align: center;">{{ lang.Groupinghasbeenclosed }}</div>
             </div>
         </div>
-        <el-dialog title="分组设置" :visible.sync="dialogVisibleGroup2" :append-to-body="true" width="650px"
+        <el-dialog :title="lang.GroupSettings" :visible.sync="dialogVisibleGroup2" :append-to-body="true" width="650px"
             :before-close="handleClose" class="dialog_diy">
             <div class="groupBox">
                 <div v-if="groupJson2.group" class="groupContent">
-                    <div class="groupTitle">请设置小组数量及名称</div>
+                    <div class="groupTitle">{{ lang.GroupNames }}</div>
                     <div v-for="(item, index) in groupJson2.group" :key="index" class="groupName">
-                        <span class="groupn">第{{ index + 1 }}组名称:</span>
-                        <el-input v-model="item.name" placeholder="请输入名称..." style="width: 250px"></el-input>
+                        <span class="groupn">
+                            <!-- 第{{ index + 1 }}组名称: -->
+                            <span v-if="index == 0">{{ (lang.GroupName1).replace(/\*/g, index + 1) }}:</span>
+                            <span v-if="index == 1">{{ (lang.GroupName2).replace(/\*/g, index + 1) }}:</span>
+                            <span v-if="index == 2">{{ (lang.GroupName3).replace(/\*/g, index + 1) }}:</span>
+                            <span v-if="index >= 3">{{ (lang.GroupName4).replace(/\*/g, index + 1) }}:</span>
+                        </span>
+                        <el-input v-model="item.name" :placeholder="lang.Pleaseenteraname" style="width: 250px"></el-input>
                         <div class="groupBtn">
                             <el-button type="primary" size="small" @click="addGroup(index)"
                                 v-if="(groupJson2.group.length - 1) == index">
-                                添加</el-button>
+                                {{ lang.AddGroup }}</el-button>
                             <el-button type="primary" size="small" @click="deleteGroup(index)"
-                                v-if="groupJson2.group && groupJson2.group.length > 1">删除</el-button>
+                                v-if="groupJson2.group && groupJson2.group.length > 1">{{ lang.Delete }}</el-button>
                         </div>
                     </div>
                     <div class="batch_add_group">
-                        <span>批量添加小组:</span>
-                        <el-input-number v-model="addGroupNum" :min="0" label="批量添加小组"></el-input-number>
+                        <span>{{ lang.Addgroupsinbatch }}:</span>
+                        <el-input-number v-model="addGroupNum" :min="0" :label="lang.Addgroupsinbatch"></el-input-number>
                         <el-button style="margin-left:5px" type="primary" size="small" @click="handleAddGroupNumChange()">
-                            批量添加</el-button>
+                            {{ lang.BatchAdd }}</el-button>
                     </div>
                 </div>
                 <div class="groupContent">
-                    <div class="groupTitle">请设置每组人数</div>
-                    <el-input v-model="groupJson2.number" style="width:150px" placeholder="请输入2-10的数字"
+                    <div class="groupTitle">{{ lang.Groupsize }}</div>
+                    <el-input v-model="groupJson2.number" style="width:250px" :placeholder="lang.EnterInteger"
                         @change="numberPan"></el-input>
                 </div>
             </div>
             <span slot="footer" class="dialog-footer">
-                <el-button @click="dialogVisibleGroup2 = false; addGroupNum = 0;">取 消</el-button>
-                <el-button type="primary" @click="updateGroupJson(2)">确定</el-button>
+                <el-button @click="dialogVisibleGroup2 = false; addGroupNum = 0;">{{ lang.Cancel }}</el-button>
+                <el-button type="primary" @click="updateGroupJson(2)">{{ lang.Save }}</el-button>
             </span>
         </el-dialog>
-        <el-dialog title="移除组员" :visible.sync="dialogVisibleDeleteGroup" :append-to-body="true" width="350px"
+        <el-dialog :title="lang.Removeteammembers" :visible.sync="dialogVisibleDeleteGroup" :append-to-body="true" width="350px"
             :before-close="handleClose" class="dialog_diy">
             <div>
                 <h2>
                     {{ this.deleteGroupArray.name }}
                 </h2>
                 <div style="color: rgb(171 171 171); margin-top: 10px">
-                    请选择要删除的组员
+                    {{ lang.selectteamdelete }}
                 </div>
                 <el-checkbox-group v-model="checkDeleteGroup">
                     <el-checkbox style="display: flex; margin-top: 20px" v-for="(item, index) in deleteGroupUser"
@@ -332,18 +338,18 @@
                 </el-checkbox-group>
             </div>
             <span slot="footer" class="dialog-footer">
-                <el-button @click="dialogVisibleDeleteGroup = false">取 消</el-button>
-                <el-button type="primary" @click="deleteChair">确定</el-button>
+                <el-button @click="dialogVisibleDeleteGroup = false">{{ lang.Cancel}}</el-button>
+                <el-button type="primary" @click="deleteChair">{{ lang.Confirm}}</el-button>
             </span>
         </el-dialog>
-        <el-dialog title="修改分组" :visible.sync="dialogVisibleUpdateGroup" :append-to-body="true" width="350px"
+        <el-dialog :title="lang.Modifygrouping" :visible.sync="dialogVisibleUpdateGroup" :append-to-body="true" width="350px"
             :before-close="handleClose" class="dialog_diy">
             <div>
                 <h2>
                     {{ this.updateGroupUser.name }}
                 </h2>
                 <div style="color: rgb(171 171 171); margin-top: 10px">
-                    请选择要进入的分组
+                    {{ lang.selectgroupenter }}
                 </div>
                 <el-radio-group v-model="checkChair">
                     <el-radio style="display: block; margin-top: 20px" v-for="(item, index) in updateGroupArray"
@@ -351,23 +357,23 @@
                 </el-radio-group>
             </div>
             <span slot="footer" class="dialog-footer">
-                <el-button @click="dialogVisibleUpdateGroup = false">取 消</el-button>
-                <el-button type="primary" @click="updateChair">确定</el-button>
+                <el-button @click="dialogVisibleUpdateGroup = false">{{ lang.Cancel}}</el-button>
+                <el-button type="primary" @click="updateChair">{{ lang.Confirm}}</el-button>
             </span>
         </el-dialog>
-        <el-dialog title="添加组员" :visible.sync="dialogVisibleMember" :append-to-body="true" width="540px" height="80%"
+        <el-dialog :title="lang.Addteammembers" :visible.sync="dialogVisibleMember" :append-to-body="true" width="540px" height="80%"
             :before-close="handleClose" class="addNewPP" v-loading="loading">
             <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="getStudent"></el-input>
+                            <el-input :placeholder="lang.Searchstudentname" v-model="searchTN" @keyup.enter.native="getStudent"></el-input>
                             <div class="search_img" @click="getStudent">
                                 <img src="../../../../assets/icon/search.png" alt />
                             </div>
                         </div>
                     </div>
-                    <div class="people_nav">选择成员</div>
+                    <div class="people_nav">{{ lang.Choosemembers }}</div>
                 </div>
                 <!-- <div class="t_j_box" style="
                             padding: 20px 0 0 25px;
@@ -392,13 +398,13 @@
                 <div class="i_box_login2" v-if="classJuri.length">
                     <div :class="{ active: checkboxList3.indexOf(item.userid) != -1 }" v-for="item in classJuri"
                         :key="item.userid" :label="item.userid" @click="addGroupUser(item.userid)">
-                        <el-tooltip placement="top" :content="`${item.name ? item.name : '暂无姓名'}${item.group.length > 0 ? '在'+item.group.join('、') : ''}`">
-                            <span>{{ item.name ? item.name : "暂无姓名" }}</span>
+                        <el-tooltip placement="top" :content="`${item.name ? item.name : lang.Noname}${item.group.length > 0 ? this.lang.exist+item.group.join('、') : ''}`">
+                            <span>{{ item.name ? item.name : lang.Noname }}</span>
                         </el-tooltip>
                         <div class="grouplBox" v-if="item.group.length">{{ item.group.length }}</div>
                     </div>
                 </div>
-                <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="pageSize" :total="total"
@@ -406,8 +412,8 @@
                     @current-change="handleCurrentChange"></el-pagination>
             </div> -->
             <span slot="footer" class="dialog-footer">
-                <el-button @click="dialogVisibleMember = false">取 消</el-button>
-                <el-button type="primary" @click="joinGroup2">确定</el-button>
+                <el-button @click="dialogVisibleMember = false">{{ lang.Cancel}}</el-button>
+                <el-button type="primary" @click="joinGroup2">{{ lang.Confirm}}</el-button>
             </span>
         </el-dialog>
     </div>
@@ -457,7 +463,7 @@ export default {
         handleAddGroupNumChange() {
             for (let i = 0; i < this.addGroupNum; i++) {
                 this.groupJson2.group.push({
-                    name: "第" + (this.groupJson2.group.length + 1) + "组",
+                    name: (this.lang.Group).replace(/\*/g, this.groupJson2.group.length + 1),
                     id: this.guid()
                 });
             }
@@ -574,7 +580,7 @@ export default {
             this.groupJson2 = JSON.parse(JSON.stringify(this.groupJson));
             if (!this.groupJson2.group.length) {
                 this.groupJson2.group.push({
-                    name: "第" + (this.groupJson2.group.length + 1) + "组",
+                    name: (this.lang.Group).replace(/\*/g, this.groupJson2.group.length + 1),
                     id: this.guid()
                 });
             }
@@ -583,11 +589,11 @@ export default {
         deleteCourseGroup() {
             this.$confirm(
                 // "您确定要删除该分组吗? 分组删除后将被清空并且无法恢复。",
-                "是否确定删除已有分组?删除后分组数据将被清空!",
-                "提示",
+                this.lang.Areyousuredeletegroup,
+                this.lang.tip,
                 {
-                    confirmButtonText: "确定",
-                    cancelButtonText: "取消",
+                    confirmButtonText: this.lang.Confirm,
+                    cancelButtonText: this.lang.Cancel,
                     type: "warning",
                 }
             )
@@ -605,7 +611,7 @@ export default {
                             }
                             this.islock = false
                             this.isopen = true
-                            this.$message.success("操作成功");
+                            this.$message.success(this.OperateSuccessful);
                             this.getCourseGroup();
                             this.$forceUpdate()
                         })
@@ -617,7 +623,7 @@ export default {
         },
         addGroup() {
             this.groupJson2.group.push({
-                name: "第" + (this.groupJson2.group.length + 1) + "组",
+                name: (this.lang.Group).replace(/\*/g, this.groupJson2.group.length + 1),
                 id: this.guid()
             });
         },
@@ -627,7 +633,7 @@ export default {
         lockChair() {
             this.groupJson2 = JSON.parse(JSON.stringify(this.groupJson));
             if (this.groupJson2.isopen == 2) {
-                this.$message.error("请开启分组后才能开放选座")
+                this.$message.error(this.lang.enablegroupingbefor)
                 this.islock = false
                 return
             } else {
@@ -637,7 +643,7 @@ export default {
         },
         numberPan() {
             if (/[^\d]/.test(this.groupJson2.number) || this.groupJson2.number < 2 || this.groupJson2.number > 10) {
-                this.$message.error('请输入2-10的数字')
+                this.$message.error(this.lang.EnterInteger)
                 this.groupJson2.number = ''
             }
         },
@@ -658,12 +664,12 @@ export default {
         updateGroupJson(type) {
             for (var i = 0; i < this.groupJson2.group.length; i++) {
                 if (!this.groupJson2.group[i].name) {
-                    this.$message.error("请将信息填写完整!");
+                    this.$message.error(this.lang.fillincompletely);
                     return;
                 }
             }
             if (!this.groupJson2.number) {
-                this.$message.error("请将信息填写完整!");
+                this.$message.error(this.lang.fillincompletely);
                 return;
             }
             for (var i = 0; i < this.groupJson2.group.length; i++) {
@@ -671,7 +677,7 @@ export default {
                     this.groupStudentUid[this.groupJson2.group[i].id] && this.groupStudentUid[this.groupJson2.group[i].id].length >
                     this.groupJson2.number
                 ) {
-                    this.$message.error("已经有小组比你设置的人数多,请重新设置");
+                    this.$message.error(this.lang.pleaseresetgroup);
                     return;
                 }
             }
@@ -687,12 +693,12 @@ export default {
                 .then((res) => {
                     if (this.groupJson2.isopen == 1) {
                         if (type == 2) {
-                            this.$message.success("设置成功");
+                            this.$message.success(this.lang.Settingsuccessful);
                         } else {
-                            this.$message.success("开启分组成功");
+                            this.$message.success(this.lang.Successfullystartedgrouping);
                         }
                     } else if (this.groupJson2.isopen == 2) {
-                        this.$message.success("关闭分组成功");
+                        this.$message.success(this.lang.Successfullyclosedgrouping);
                     }
                     // 开启分组成功/关闭分组成功
                     this.dialogVisibleGroup2 = false;
@@ -701,7 +707,7 @@ export default {
                     this.$forceUpdate();
                 })
                 .catch((err) => {
-                    this.$message.error("网络不佳");
+                    this.$message.error(this.lang.Poorinternetconnection);
                     console.error(err);
                 });
         },
@@ -749,7 +755,7 @@ export default {
                     }
                 })
                 .catch((err) => {
-                    this.$message.error("网络不佳");
+                    this.$message.error(this.lang.Poorinternetconnection);
                     console.error(err);
                 });
         },
@@ -768,7 +774,7 @@ export default {
                 this.groupStudent[this.checkChair].length ==
                 this.groupJson.number
             ) {
-                this.$message.error("位置已满,无法加入");
+                this.$message.error(this.lang.Locationisfull);
                 return;
             }
             let params = [
@@ -781,7 +787,7 @@ export default {
             this.ajax
                 .post(this.$store.state.api + "joinCourseGroup", params)
                 .then((res) => {
-                    this.$message.success("修改成功");
+                    this.$message.success(this.lang.Editsuccessful);
                     this.updateGroupUser = {};
                     this.checkChair = "";
                     this.updateGroupArray = {};
@@ -789,7 +795,7 @@ export default {
                     this.getCourseGroup();
                 })
                 .catch((err) => {
-                    this.$message.error("网络不佳");
+                    this.$message.error(this.lang.Poorinternetconnection);
                     console.error(err);
                 });
         },
@@ -817,7 +823,7 @@ export default {
                 ];
                 var a = await this.deleteChairA(params);
                 if (i == this.checkDeleteGroup.length - 1) {
-                    this.$message.success("退出成功");
+                    this.$message.success(this.lang.Exitsuccessful);
                     this.dialogVisibleDeleteGroup = false;
                     this.deleteGroupUser = [];
                     this.deleteGroupArray = {};
@@ -835,7 +841,7 @@ export default {
                         resolve(1);
                     })
                     .catch((err) => {
-                        this.$message.error("网络不佳");
+                        this.$message.error(this.lang.Poorinternetconnection);
                         console.error(err);
                     });
             });
@@ -843,11 +849,11 @@ export default {
         selectGroup(gid) {
             this.$confirm(
                 // "您确定要删除该分组吗? 分组删除后将被清空并且无法恢复。",
-                "确认加入分组?确认后将直接打开协同构建",
-                "提示",
+                this.lang.confirmjointhegroup,
+                this.lang.tip,
                 {
-                    confirmButtonText: "确定",
-                    cancelButtonText: "取消",
+                    confirmButtonText: this.lang.Confirm,
+                    cancelButtonText: this.lang.Cancel,
                     type: "warning",
                 }
             ).then(() => {
@@ -856,7 +862,7 @@ export default {
         },
         joinGroup(gid) {
             if (this.groupJson.islock == 2) {
-                this.$message.error("位置已被锁定,无法加入");
+                this.$message.error(this.lang.Locationlocked);
                 return;
             }
             if (
@@ -864,7 +870,7 @@ export default {
                 this.groupJson.number ||
                 this.groupStudent[gid].length == this.groupJson.number
             ) {
-                this.$message.error("位置已满,无法加入");
+                this.$message.error(this.lang.Locationisfull);
                 return;
             }
             let params = [
@@ -877,13 +883,13 @@ export default {
             this.ajax
                 .post(this.$store.state.api + "joinCourseGroup", params)
                 .then((res) => {
-                    this.$message.success("加入成功");
+                    this.$message.success(this.lang.Joinsuccessfully);
                     this.$emit('open2')
                     this.$emit('getGroup')
                     this.getCourseGroup();
                 })
                 .catch((err) => {
-                    this.$message.error("网络不佳");
+                    this.$message.error(this.lang.Poorinternetconnection);
                     console.error(err);
                 });
         },
@@ -899,7 +905,7 @@ export default {
                 this.groupStudent[this.gid].length + this.checkboxList3.length >
                 this.groupJson.number
             ) {
-                this.$message.error("位置已满,无法加入");
+                this.$message.error(this.lang.Locationisfull);
                 return;
             }
             for (let i = 0; i < this.checkboxList3.length; i++) {
@@ -912,7 +918,7 @@ export default {
                 ];
                 const res = await this.ajax.post(this.$store.state.api + "joinCourseGroup", params)
                 if (i == this.checkboxList3.length - 1) {
-                    this.$message.success("加入成功");
+                    this.$message.success(this.lang.Joinsuccessfully);
                     this.dialogVisibleMember = false
                     this.getCourseGroup();
                 }
@@ -920,7 +926,7 @@ export default {
         },
         exitGroup(id) {
             if (this.groupJson.islock == 2) {
-                this.$message.error("位置已被锁定,无法退出");
+                this.$message.error(this.lang.unabletoexit);
                 return;
             }
             let params = [
@@ -931,12 +937,12 @@ export default {
             this.ajax
                 .post(this.$store.state.api + "exitCourseGroup", params)
                 .then((res) => {
-                    this.$message.success("退出成功");
+                    this.$message.success(this.lang.Exitsuccessful);
                     this.$emit('getGroup')
                     this.getCourseGroup();
                 })
                 .catch((err) => {
-                    this.$message.error("网络不佳"); s
+                    this.$message.error(this.lang.Poorinternetconnection);
                     console.error(err);
                 });
         },

+ 127 - 126
src/components/pages/teacherOffice/index.vue

@@ -10,7 +10,7 @@
               ">
       <div class="pb_head top">
         <div style="display: flex;align-items: center;">
-          <span class="sub_head">教研室管理</span>
+          <span class="sub_head">{{ lang.DepartmentManagement }}</span>
           <span class="subClick" @click="
             goTo(
               '/teacherType?userid=' +
@@ -20,43 +20,43 @@
               '&org=' +
               org
             )
-            ">教研室类型管理</span>
+            ">{{ lang.DepartmentTypeManagement }}</span>
         </div>
         <div class="student_button" style="border-radius: 4px;">
-          <el-button type="primary" class="bgColor" @click="openAddTeacher">添加教研室</el-button>
+          <el-button type="primary" class="bgColor" @click="openAddTeacher">{{ lang.AddDepartment }}</el-button>
         </div>
       </div>
       <div class="student_head">
         <div class="student_search">
           <span>
-            <el-input placeholder="请输入教研室名称" v-model="sClassName" clearable>
+            <el-input :placeholder="lang.Enterdepartmentname" v-model="sClassName" clearable>
             </el-input>
           </span>
-          <el-button type="primary" @click="searchClass">查询</el-button>
+          <el-button type="primary" @click="searchClass">{{ lang.Search }}</el-button>
         </div>
       </div>
     </div>
     <div class="pb_content_body" v-if="ctype == 1">
       <div class="student_table">
-        <el-table v-if="ctype == 1" ref="table" :key="1" :data="tableData" border :height="tableHeight" :fit="true"
+        <el-table v-if="ctype == 1" :empty-text="lang.Nodata" 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.DepartmentName" align="center">
           </el-table-column>
-          <el-table-column prop="typeName" label="教研室类型" align="center">
+          <el-table-column prop="typeName" :label="lang.DepartmentType" align="center">
             <template slot-scope="scope">
-              <span v-if="scope.row.parentid == 6">教研室</span>
+              <span v-if="scope.row.parentid == 6">{{ lang.Department }}</span>
               <span v-else>{{ scope.row.typeName }}</span>
             </template>
           </el-table-column>
           <!-- <el-table-column prop="pnum" label="人数" align="center">
           </el-table-column> -->
-          <el-table-column label="操作" width="400px">
+          <el-table-column :label="lang.Action" width="400px">
             <template slot-scope="scope">
-              <el-button type="primary" size="small" @click="getStudent(scope.row.id)">查看老师</el-button>
+              <el-button type="primary" size="small" @click="getStudent(scope.row.id)">{{ lang.ViewTeacher }}</el-button>
               <!-- <el-button type="primary" size="small" @Sclick="updateG(scope.row.pid, scope.row.id)">修改年级</el-button> -->
-              <el-button type="primary" size="small" @click="openUpdate(scope.row.id, scope.row.name, scope.row.parentid)">修改</el-button>
-              <el-button type="primary" size="small" @click="deleteClass(scope.row.id)">删除</el-button>
+              <el-button type="primary" size="small" @click="openUpdate(scope.row.id, scope.row.name, scope.row.parentid)">{{ lang.Edit }}</el-button>
+              <el-button type="primary" size="small" @click="deleteClass(scope.row.id)">{{ lang.Delete }}</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -74,32 +74,32 @@
                 border-radius: 5px;
               ">
       <div class="pb_head top">
-        <span>查看老师-{{ getGrade(cid) }}</span>
+        <span>{{ lang.ViewTeacher }}-{{ getGrade(cid) }}</span>
         <div class="student_button" style="border-radius: 4px;">
-          <el-button type="primary" class="bgColor" @click="ctype = 1, getClass()">返回</el-button>
+          <el-button type="primary" class="bgColor" @click="ctype = 1, getClass()">{{ lang.return }}</el-button>
         </div>
       </div>
       <div class="student_head">
         <div class="head_left">
-          <el-input v-model="sPhoneUser" class="student_input" placeholder="请输入用户名" style="margin:0 10px"></el-input>
+          <el-input v-model="sPhoneUser" class="student_input" :placeholder="lang.Enterusername" style="margin:0 10px"></el-input>
           <!-- <el-select disabled v-model="cid" placeholder="请选择教研室" class="student_input" @change="searchStudent"
               style="margin:0 10px">
               <el-option label="所有人" 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">查询</el-button>
+          <el-button class="student_button" @click="searchStudent">{{ lang.Search }}</el-button>
         </div>
         <div class="head_right">
-          <el-button @click="addStudent">添加老师</el-button>
+          <el-button @click="addStudent">{{ lang.AddTeacher }}</el-button>
         </div>
       </div>
     </div>
     <div class="pb_content_body" v-if="ctype == 2">
       <div class="student_table">
-        <el-table v-if="ctype == 2" :key="2" ref="table2" :data="tableData2" border :height="tableHeight" :fit="true"
+        <el-table v-if="ctype == 2" :empty-text="lang.Nodata" :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">
@@ -120,21 +120,21 @@
               </div>
             </template>
           </el-table-column>
-          <el-table-column label="老师账号" min-width="15" align="center">
+          <el-table-column :label="lang.TeacherAccount" 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.Department" min-width="15" align="center">
           </el-table-column>
-          <el-table-column label="操作" width="250px">
+          <el-table-column :label="lang.Action" width="250px">
             <template slot-scope="scope">
               <div class="btnBox">
                 <el-button class="de_button" type="primary" size="small" @click="iniPassword(scope.row.userid)"
-                  v-show="false">初始化密码</el-button>
+                  v-show="false">{{ lang.InitialPassword }}</el-button>
                 <!-- <el-button class="de_button" type="primary" size="small" @click="updateStudentA(scope.row)">修改</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> -->
@@ -154,42 +154,43 @@
         <div class="logoImg">
           <img src="../../../assets/logo.png" alt />
         </div>
-        <div class="title_add_student">添加老师</div>
+        <div class="title_add_student">{{ lang.AddTeachers }}</div>
       </div>
       <el-form>
-        <el-form-item label="老师姓名" :label-width="formLabelWidth">
+        <el-form-item :label="lang.Teachername" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入老师姓名" clearable v-model="sName" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterteachername" 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.TeacherNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入老师学号" clearable v-model="sId" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterteacherID" 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.Teacherphonenumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入老师手机号" clearable v-model="sPhone" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterTeacherPhoneNumber" 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.Teacheraccount" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入老师账号" clearable v-model="sMail" class="add_input"></el-input>
+            <el-input :placeholder="lang.Teacheraccount" 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.Department" :label-width="formLabelWidth">
+          <el-select v-model="cid" :placeholder="lang.selectdepartment" 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">
+          {{ lang.teacherpassword }}
         </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,119 +199,120 @@
         <div class="logoImg">
           <img src="../../../assets/logo.png" alt />
         </div>
-        <div class="title_add_student">修改老师</div>
+        <div class="title_add_student">{{ lang.Modifyteacher }}</div>
       </div>
       <el-form>
-        <el-form-item label="老师名称" :label-width="formLabelWidth">
+        <el-form-item :label="lang.Teachername" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入老师姓名" clearable v-model="userinfo.name" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterteachername" 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.TeacherNumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入老师学号" clearable v-model="userinfo.studentid" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterteacherID" 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.Teacherphonenumber" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入老师手机号" clearable v-model="userinfo.phonenumber" class="add_input"></el-input>
+            <el-input :placeholder="lang.EnterTeacherPhoneNumber" 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.Teacheraccount" :label-width="formLabelWidth">
           <span>
-            <el-input placeholder="请输入老师账号" clearable v-model="userinfo.un" class="add_input"></el-input>
+            <el-input :placeholder="lang.enterteacheraccount" 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.Department" :label-width="formLabelWidth">
+          <el-select multiple collapse-tags v-model="userinfo.classid" :placeholder="lang.selectdepartment">
             <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">
+         {{ lang.teacherpassword }}
         </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.Edit }}</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="添加教研室" :visible.sync="dialogVisible" :append-to-body="true" width="25%"
+    <el-dialog :title="lang.AddDepartment" :visible.sync="dialogVisible" :append-to-body="true" width="450px"
       :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.DepartmentName" :label-width="formLabelWidth">
+          <el-input v-model="className" auto-complete="off" :placeholder="lang.enterdepartment"></el-input>
         </el-form-item>
-        <el-form-item label="教研室类型" :label-width="formLabelWidth">
-          <el-select v-model="typeId" placeholder="类型">
+        <el-form-item :label="lang.DepartmentType" :label-width="formLabelWidth">
+          <el-select v-model="typeId" :placeholder="lang.type">
             <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="handleCancel">取 消</el-button>
-        <el-button type="primary" @click="insertClass">确 定</el-button>
+        <el-button @click="handleCancel">{{ 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="450px"
       :before-close="handleClose" class="dialog_diy">
       <el-form>
-        <el-form-item label="选择年级" :label-width="formLabelWidth">
-          <el-select v-model="gid" placeholder="请选择教研室" class="student_input" style="margin:0 10px" clearable>
+        <el-form-item :label="lang.SelectGrade" :label-width="formLabelWidth">
+          <el-select v-model="gid" :placeholder="lang.selectdepartment" class="student_input" style="margin:0 10px" 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%"
+    <el-dialog :title="lang.EditDepartment" :visible.sync="dialogVisible1" :append-to-body="true" width="450px"
       :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.DepartmentName"  :label-width="formLabelWidth">
+          <el-input v-model="className1" auto-complete="off" :placeholder="lang.enterdepartment"></el-input>
         </el-form-item>
-        <el-form-item label="教研室类型" :label-width="formLabelWidth">
-          <el-select v-model="typeId2" placeholder="类型">
+        <el-form-item :label="lang.DepartmentType"  :label-width="formLabelWidth">
+          <el-select v-model="typeId2" :placeholder="lang.type">
             <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </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.AddTeacher" :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.Searchteachername" 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.split('@')[0]">
                 <span>{{ item.username.split('@')[0] }}</span>
@@ -318,7 +320,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.Noname }}</div>
       </div>
       <div style="margin-top: 10px;">
         <el-pagination background layout="prev, pager, next" :page-size="pageSize3" :total="total3"
@@ -326,8 +328,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>
@@ -342,10 +344,10 @@ export default {
 
   data() {
     return {
-      gotype:(window.topU && window.topU.gotype) ?  window.topU.gotype : '',
+      gotype:sessionStorage.getItem('gotype'),
       tableHeight: "500px",
       isLoading: false,
-      formLabelWidth: "100px",
+      formLabelWidth: "150px",
       sClassName: "",
       className: "",
       className1: "",
@@ -414,7 +416,7 @@ export default {
             name = element.name
           }
         });
-        return name ? name : '暂无'
+        return name ? name : this.lang.None
       }
     }
   },
@@ -469,7 +471,7 @@ export default {
           this.options.push(
             {
               id: '6',
-              name:'教研室'
+              name: this.lang.Department
             }
           )
         })
@@ -520,9 +522,9 @@ export default {
       this.dialogVisibleGrade = true;
     },
     updateGrade() {
-      this.$confirm("确定修改吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.makechanges, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -556,7 +558,7 @@ export default {
       // 检查是否选择了教研室类型
       if (this.typeId == "") {
         this.$message({
-          message: "请选择教研室类型",
+          message: this.lang.selectthetypeofteaching,
           type: "warning",
         });
         return; // 停止继续执行
@@ -572,12 +574,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他教研室名称相同!",
+              message: this.lang.nameasother,
               type: "error",
             });
           } else {
             this.$message({
-              message: "新增成功",
+              message: this.lang.AddSuccessful,
               type: "success",
             });
             this.dialogVisible = false;
@@ -588,7 +590,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "新增失败",
+            message: this.lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -612,12 +614,12 @@ export default {
         .then((res) => {
           if (res.data[0] && res.data[0][0].classname == 1) {
             this.$message({
-              message: "不能与其他教研室名称相同!",
+              message: this.lang.nameasother,
               type: "error",
             });
           } else {
             this.$message({
-              message: "修改成功",
+              message: this.lang.Editsuccessful,
               type: "success",
             });
             this.dialogVisible1 = false;
@@ -628,7 +630,7 @@ export default {
         })
         .catch((err) => {
           this.$message({
-            message: "修改失败",
+            message: this.lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -665,9 +667,9 @@ export default {
         id: id,
       };
       if (this.time()) {
-        this.$confirm("确定删除此教研室吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
+        this.$confirm(this.lang.Aystdtd, this.lang.tip, {
+          confirmButtonText: this.lang.Confirm,
+          cancelButtonText: this.lang.Cancel,
           type: "warning",
         })
           .then(() => {
@@ -675,7 +677,7 @@ export default {
               .get(this.$store.state.api + "deleteClass", params)
               .then((res) => {
                 this.$message({
-                  message: "删除成功",
+                  message: this.lang.DeleteSuccessful,
                   type: "success",
                 });
                 if (this.page != 1 && this.tableData.length == 1) {
@@ -684,7 +686,7 @@ export default {
                 this.getClass();
               })
               .catch((err) => {
-                this.$message.error("删除失败");
+                this.$message.error(this.lang.Deletefailed);
                 console.error(err);
               });
           })
@@ -702,18 +704,18 @@ export default {
     //新增老师
     insertStudent() {
       if (this.sName === "") {
-        this.$message.error("老师姓名不能为空");
+        this.$message.error(this.lang.Teachercannotempty);
         return;
       } else if (
         this.sPhone != "" &&
         !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.sPhone)
       ) {
-        this.$message.error("手机号格式不正确");
+        this.$message.error(this.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(this.lang.Emailformatincorrect);
         return;
       }
 
@@ -723,7 +725,7 @@ export default {
           .get(this.$store.state.api + "findMail", params)
           .then((res) => {
             if (res.data[0].length > 0) {
-              this.$message.error("此老师账号已被注册");
+              this.$message.error(this.lang.alreadybeenregistered);
             } else {
               this.add_Student();
             }
@@ -737,7 +739,7 @@ export default {
       let params = [
         {
           username: this.sMail,
-          password: '',
+          userpassword: 'Coco1234',
           alias: this.sName,
           oid: this.oid,
           ph: this.sPhone,
@@ -771,7 +773,7 @@ export default {
               console.error(err);
             });
           this.$message({
-            message: "新增成功",
+            message: this.lang.AddSuccessful,
             type: "success",
           });
           this.dialogVisibleAddStudent = false;
@@ -784,7 +786,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "新增失败",
+            message: this.lang.Additionfailed,
             type: "error",
           });
           console.error(err);
@@ -798,23 +800,23 @@ export default {
     },
     updateStudent() {
       if (this.userinfo.name === "") {
-        this.$message.error("老师姓名不能为空");
+        this.$message.error(this.lang.Teachercannotempty);
         return;
       } else if (!this.userinfo.classid) {
-        this.$message.error("请为老师选择教研室");
+        this.$message.error(this.lang.chooseateaching);
         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(this.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(this.lang.Emailformatincorrect);
         return;
       }
 
@@ -825,7 +827,7 @@ export default {
             .get(this.$store.state.api + "findMail", params)
             .then((res) => {
               if (res.data[0].length > 0) {
-                this.$message.error("此老师账号已被注册");
+                this.$message.error(this.lang.alreadybeenregistered);
               } else {
                 this.update_Student();
               }
@@ -853,7 +855,7 @@ export default {
         .post(this.$store.state.api + "updateStudentInfo", params)
         .then((res) => {
           this.$message({
-            message: "修改成功",
+            message: this.lang.Editsuccessful,
             type: "success",
           });
           this.dialogVisibleUpdate = false;
@@ -862,7 +864,7 @@ export default {
         .catch((err) => {
           this.isLoading = false;
           this.$message({
-            message: "修改失败",
+            message: this.lang.Modificationfailed,
             type: "error",
           });
           console.error(err);
@@ -870,9 +872,9 @@ export default {
     },
     deleteClassStudent(id) {
       let params = [{ uid: id, cid: this.cid }];
-      this.$confirm("确定在本教研室移除此老师吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.Aystrttfta, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -880,13 +882,13 @@ export default {
             .post(this.$store.state.api + "deleteClassTeacher", params)
             .then((res) => {
               this.$message({
-                message: "操作成功",
+                message: this.lang.OperateSuccessful,
                 type: "success",
               });
               this.getStudent(this.cid);
             })
             .catch((err) => {
-              this.$message.error("操作失败");
+              this.$message.error(this.lang.operationfailed);
               console.error(err);
             });
         })
@@ -978,7 +980,7 @@ export default {
     },
     addClassStudent() {
       if (!this.checkboxList3.length) {
-        this.$message.error('请选择要添加教研室的老师');
+        this.$message.error(this.lang.selecttheteacher);
         return;
       }
       let params = [{
@@ -988,7 +990,7 @@ export default {
       this.ajax
         .post(this.$store.state.api + "addClassTeacher", params)
         .then((res) => {
-          this.$message.success("添加成功")
+          this.$message.success(this.lang.Addedsuccessfully)
           this.checkboxList3 = []
           this.dialogVisibleMember = false
           this.getStudent(this.cid)
@@ -998,23 +1000,23 @@ export default {
         });
     },
     iniPassword(id) {
-      this.$confirm("确定" + "初始化" + "此老师的密码吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.initializepasswordteacher, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
           let params = [
             {
               uid: id,
-              pa: '',
+              pa: 'Coco1234',
             },
           ];
           this.ajax
             .post(this.$store.state.api + "iniPassword", params)
             .then((res) => {
               this.$message({
-                message: "初始化密码成功!",
+                message: this.lang.Resetsuccessful,
                 type: "success",
               });
             })
@@ -1033,7 +1035,6 @@ export default {
   background: #3d67bc !important;
   padding: 15px 20px;
 }
-
 .dialog_diy>>>.el-dialog__title {
   color: #fff;
 }

+ 115 - 113
src/components/pages/teacherOffice/teacherType.vue

@@ -17,20 +17,20 @@
                 '&org=' +
                 org
               )
-              ">教研室管理</span>
-            <span class="sub_head">教研室类型管理</span>
+              ">{{ lang.DepartmentManagement }}</span>
+            <span class="sub_head">{{ lang.DepartmentTypeManagement }}</span>
           </div>
           <div class="student_button" style="border-radius: 4px;">
-            <el-button type="primary" class="bgColor" @click="dialogVisible = true">添加教研室类型</el-button>
+            <el-button type="primary" class="bgColor" @click="dialogVisible = true">{{ lang.Adddepartmenttype }}</el-button>
           </div>
         </div>
         <div class="student_head">
           <div class="student_search">
             <span>
-              <el-input placeholder="请输入教研室类型" v-model="sClassName" clearable>
+              <el-input :placeholder="lang.Enterdepartmenttype" v-model="sClassName" clearable>
               </el-input>
             </span>
-            <el-button type="primary" @click="searchClass">查询</el-button>
+            <el-button type="primary" @click="searchClass">{{ lang.Search }}</el-button>
           </div>
         </div>
       </div>
@@ -39,16 +39,16 @@
           <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.DepartmentType" align="center">
             </el-table-column>
             <!-- <el-table-column prop="pnum" label="人数" align="center">
             </el-table-column> -->
-            <el-table-column label="操作" width="400px">
+            <el-table-column :label="lang.Action" width="400px">
               <template slot-scope="scope">
                 <!-- <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="openUpdate(scope.row.id, scope.row.name)">修改</el-button>
-                <el-button type="primary" size="small" @click="deleteClass(scope.row.id)">删除</el-button>
+                <el-button type="primary" size="small" @click="openUpdate(scope.row.id, scope.row.name)">{{ lang.Edit }}</el-button>
+                <el-button type="primary" size="small" @click="deleteClass(scope.row.id)">{{ lang.Delete }}</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -66,23 +66,23 @@
                 border-radius: 5px;
               ">
         <div class="pb_head top">
-          <span>查看老师-{{ getGrade(cid) }}</span>
+          <span>{{ lang.ViewTeacher }}-{{ getGrade(cid) }}</span>
           <div class="student_button" style="border-radius: 4px;">
-            <el-button type="primary" class="bgColor" @click="ctype = 1, getClass()">返回</el-button>
+            <el-button type="primary" class="bgColor" @click="ctype = 1, getClass()">{{ lang.return }}</el-button>
           </div>
         </div>
         <div class="student_head">
           <div class="head_left">
-            <el-input v-model="sPhoneUser" class="student_input" placeholder="请输入用户名" style="margin:0 10px"></el-input>
+            <el-input v-model="sPhoneUser" class="student_input" :placeholder="lang.Pleaseenteryourusername" style="margin:0 10px"></el-input>
             <!-- <el-select disabled v-model="cid" placeholder="请选择教研室" class="student_input" @change="searchStudent"
               style="margin:0 10px">
               <el-option label="所有人" 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">查询</el-button>
+            <el-button class="student_button" @click="searchStudent">{{ lang.Search }}</el-button>
           </div>
           <div class="head_right">
-            <el-button @click="addStudent">添加老师</el-button>
+            <el-button @click="addStudent">{{ lang.AddTeacher }}</el-button>
           </div>
         </div>
       </div>
@@ -91,7 +91,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">
@@ -112,21 +112,21 @@
                 </div>
               </template>
             </el-table-column>
-            <el-table-column label="老师账号" min-width="15" align="center">
+            <el-table-column :label="lang.TeacherAccount" 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.Department" min-width="15" align="center">
             </el-table-column>
-            <el-table-column label="操作" width="250px">
+            <el-table-column :label="lang.Action" width="250px">
               <template slot-scope="scope">
                 <div class="btnBox">
                   <el-button class="de_button" type="primary" size="small"
-                    @click="iniPassword(scope.row.userid)" v-show="false">初始化密码</el-button>
+                    @click="iniPassword(scope.row.userid)" v-show="false">{{ lang.InitialPassword }}</el-button>
                   <!-- <el-button class="de_button" type="primary" size="small" @click="updateStudentA(scope.row)">修改</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> -->
@@ -146,42 +146,43 @@
           <div class="logoImg">
             <img src="../../../assets/logo.png" alt />
           </div>
-          <div class="title_add_student">添加老师</div>
+          <div class="title_add_student">{{ lang.AddTeacher }}</div>
         </div>
         <el-form>
-          <el-form-item label="老师姓名" :label-width="formLabelWidth">
+          <el-form-item :label="lang.Teachername" :label-width="formLabelWidth">
             <span>
-              <el-input placeholder="请输入老师姓名" clearable v-model="sName" class="add_input"></el-input>
+              <el-input :placeholder="lang.enterteachername" 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.TeacherNumber" :label-width="formLabelWidth">
             <span>
-              <el-input placeholder="请输入老师学号" clearable v-model="sId" class="add_input"></el-input>
+              <el-input :placeholder="lang.enterteacherID" 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.Teacherphonenumber" :label-width="formLabelWidth">
             <span>
-              <el-input placeholder="请输入老师手机号" clearable v-model="sPhone" class="add_input"></el-input>
+              <el-input :placeholder="lang.EnterTeacherPhoneNumber" 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.Teacheraccount" :label-width="formLabelWidth">
             <span>
-              <el-input placeholder="请输入老师账号" clearable v-model="sMail" class="add_input"></el-input>
+              <el-input :placeholder="lang.enterteacheraccount" 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.Department" :label-width="formLabelWidth">
+            <el-select v-model="cid" :placeholder="lang.selectdepartment" 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">
+            {{ lang.teacherpassword }}
           </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"
@@ -190,110 +191,111 @@
           <div class="logoImg">
             <img src="../../../assets/logo.png" alt />
           </div>
-          <div class="title_add_student">修改老师</div>
+          <div class="title_add_student">{{ lang.Modifyteacher }}</div>
         </div>
         <el-form>
-          <el-form-item label="老师名称" :label-width="formLabelWidth">
+          <el-form-item :label="lang.Modifyteacher" :label-width="formLabelWidth">
             <span>
-              <el-input placeholder="请输入老师姓名" clearable v-model="userinfo.name" class="add_input"></el-input>
+              <el-input :placeholder="lang.enterteachername" 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.TeacherNumber" :label-width="formLabelWidth">
             <span>
-              <el-input placeholder="请输入老师学号" clearable v-model="userinfo.studentid" class="add_input"></el-input>
+              <el-input :placeholder="lang.enterteacherID" 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.Teacherphonenumber" :label-width="formLabelWidth">
             <span>
-              <el-input placeholder="请输入老师手机号" clearable v-model="userinfo.phonenumber" class="add_input"></el-input>
+              <el-input :placeholder="lang.EnterTeacherPhoneNumber" 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.Teacheraccount" :label-width="formLabelWidth">
             <span>
-              <el-input placeholder="请输入老师账号" clearable v-model="userinfo.un" class="add_input"></el-input>
+              <el-input :placeholder="lang.enterteacheraccount" 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.Department" :label-width="formLabelWidth">
+            <el-select multiple collapse-tags v-model="userinfo.classid" :placeholder="lang.selectdepartment">
               <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">
+            {{ lang.teacherpassword }}
           </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.Edit }}</el-button>
         </span>
       </el-dialog>
-      <el-dialog title="添加教研室类型" :visible.sync="dialogVisible" :append-to-body="true" width="25%" :before-close="handleClose"
+      <el-dialog :title="lang.Adddepartmenttype" :visible.sync="dialogVisible" :append-to-body="true" width="450px" :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.DepartmentType" :label-width="formLabelWidth">
+            <el-input v-model="className" auto-complete="off" :placeholder="lang.Enterdepartmenttype+'...'"></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="450px"
         :before-close="handleClose" class="dialog_diy">
         <el-form>
-          <el-form-item label="选择年级" :label-width="formLabelWidth">
-            <el-select v-model="gid" placeholder="请选择教研室" class="student_input" style="margin:0 10px" clearable>
+          <el-form-item :label="lang.SelectGrade" :label-width="formLabelWidth">
+            <el-select v-model="gid" :placeholder="lang.selectdepartment" class="student_input" style="margin:0 10px" 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.EditDepartment" :visible.sync="dialogVisible1" :append-to-body="true" width="450px" :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.DepartmentName" :label-width="formLabelWidth">
+            <el-input v-model="className1" auto-complete="off" :placeholder="lang.enterdepartment"></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.AddTeacher" :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.Searchteachername" 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.split('@')[0]">
                   <span>{{ item.username.split('@')[0] }}</span>
@@ -301,7 +303,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"
@@ -309,8 +311,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>
@@ -324,7 +326,7 @@
       return {
         tableHeight: "500px",
         isLoading: false,
-        formLabelWidth: "100px",
+        formLabelWidth: "150px",
         sClassName: "",
         className: "",
         className1: "",
@@ -383,7 +385,7 @@
               name = element.name
             }
           });
-          return name ? name : '暂无'
+          return name ? name : this.lang.None
         }
       }
     },
@@ -461,9 +463,9 @@
         this.dialogVisibleGrade = true;
       },
       updateGrade() {
-        this.$confirm("确定修改吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
+        this.$confirm(this.lang.makechanges, this.lang.tip, {
+          confirmButtonText: this.lang.Confirm,
+          cancelButtonText: this.lang.Cancel,
           type: "warning",
         })
           .then(() => {
@@ -503,12 +505,12 @@
           .then((res) => {
             if (res.data[0] && res.data[0][0].classname == 1) {
               this.$message({
-                message: "不能与其他教研室类型名称相同!",
+                message: this.lang.othertypesofteaching,
                 type: "error",
               });
             } else {
               this.$message({
-                message: "新增成功",
+                message:  this.lang.AddSuccessful,
                 type: "success",
               });
               this.dialogVisible = false;
@@ -519,7 +521,7 @@
           })
           .catch((err) => {
             this.$message({
-              message: "新增失败",
+              message: this.lang.Additionfailed,
               type: "error",
             });
             console.error(err);
@@ -537,12 +539,12 @@
           .then((res) => {
             if (res.data[0] && res.data[0][0].classname == 1) {
               this.$message({
-                message: "不能与其他教研室名称相同!",
+                message: this.lang.nameasother,
                 type: "error",
               });
             } else {
               this.$message({
-                message: "修改成功",
+                message: this.lang.Editsuccessful,
                 type: "success",
               });
               this.dialogVisible1 = false;
@@ -553,7 +555,7 @@
           })
           .catch((err) => {
             this.$message({
-              message: "修改失败",
+              message: this.lang.Modificationfailed,
               type: "error",
             });
             console.error(err);
@@ -607,9 +609,9 @@
           id: id,
         };
         if (this.time()) {
-          this.$confirm("确定删除此教研室吗?", "提示", {
-            confirmButtonText: "确定",
-            cancelButtonText: "取消",
+          this.$confirm(this.lang.Aystdtd, this.lang.tip, {
+            confirmButtonText: this.lang.Confirm,
+            cancelButtonText: this.lang.Cancel,
             type: "warning",
           })
             .then(() => {
@@ -617,7 +619,7 @@
                 .get(this.$store.state.api + "deleteClass", params)
                 .then((res) => {
                   this.$message({
-                    message: "删除成功",
+                    message: this.lang.DeleteSuccessful,
                     type: "success",
                   });
                   if (this.page != 1 && this.tableData.length == 1) {
@@ -626,7 +628,7 @@
                   this.getClass();
                 })
                 .catch((err) => {
-                  this.$message.error("删除失败");
+                  this.$message.error(this.lang.Deletefailed);
                   console.error(err);
                 });
             })
@@ -644,18 +646,18 @@
       //新增老师
       insertStudent() {
         if (this.sName === "") {
-          this.$message.error("老师姓名不能为空");
+          this.$message.error(this.lang.Teachercannotempty);
           return;
         } else if (
           this.sPhone != "" &&
           !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.sPhone)
         ) {
-          this.$message.error("手机号格式不正确");
+          this.$message.error(this.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(this.lang.Emailformatincorrect);
           return;
         }
 
@@ -665,7 +667,7 @@
             .get(this.$store.state.api + "findMail", params)
             .then((res) => {
               if (res.data[0].length > 0) {
-                this.$message.error("此老师账号已被注册");
+                this.$message.error(this.lang.alreadybeenregistered);
               } else {
                 this.add_Student();
               }
@@ -679,7 +681,7 @@
         let params = [
           {
             username: this.sMail,
-            password: '',
+            userpassword: 'Coco1234',
             alias: this.sName,
             oid: this.oid,
             ph: this.sPhone,
@@ -713,7 +715,7 @@
                 console.error(err);
               });
             this.$message({
-              message: "新增成功",
+              message: this.lang.AddSuccessful,
               type: "success",
             });
             this.dialogVisibleAddStudent = false;
@@ -726,7 +728,7 @@
           .catch((err) => {
             this.isLoading = false;
             this.$message({
-              message: "新增失败",
+              message: this.lang.Additionfailed,
               type: "error",
             });
             console.error(err);
@@ -740,23 +742,23 @@
       },
       updateStudent() {
         if (this.userinfo.name === "") {
-          this.$message.error("老师姓名不能为空");
+          this.$message.error(this.lang.Teachercannotempty);
           return;
         } else if (!this.userinfo.classid) {
-          this.$message.error("请为老师选择教研室");
+          this.$message.error(this.lang.chooseateaching);
           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(this.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(this.lang.Emailformatincorrect);
           return;
         }
 
@@ -767,7 +769,7 @@
               .get(this.$store.state.api + "findMail", params)
               .then((res) => {
                 if (res.data[0].length > 0) {
-                  this.$message.error("此老师账号已被注册");
+                  this.$message.error(this.lang.alreadybeenregistered);
                 } else {
                   this.update_Student();
                 }
@@ -795,7 +797,7 @@
           .post(this.$store.state.api + "updateStudentInfo", params)
           .then((res) => {
             this.$message({
-              message: "修改成功",
+              message: this.lang.Editsuccessful,
               type: "success",
             });
             this.dialogVisibleUpdate = false;
@@ -804,7 +806,7 @@
           .catch((err) => {
             this.isLoading = false;
             this.$message({
-              message: "修改失败",
+              message: this.lang.Modificationfailed,
               type: "error",
             });
             console.error(err);
@@ -812,9 +814,9 @@
       },
       deleteClassStudent(id) {
         let params = [{ uid: id, cid: this.cid }];
-        this.$confirm("确定在本教研室移除此老师吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
+        this.$confirm(this.lang.Aystrttfta, this.lang.tip, {
+          confirmButtonText: this.lang.Confirm,
+          cancelButtonText: this.lang.Cancel,
           type: "warning",
         })
           .then(() => {
@@ -822,13 +824,13 @@
               .post(this.$store.state.api + "deleteClassTeacher", params)
               .then((res) => {
                 this.$message({
-                  message: "操作成功",
+                  message: this.lang.OperateSuccessful,
                   type: "success",
                 });
                 this.getStudent(this.cid);
               })
               .catch((err) => {
-                this.$message.error("操作失败");
+                this.$message.error(this.lang.operationfailed);
                 console.error(err);
               });
           })
@@ -923,7 +925,7 @@
       },
       addClassStudent() {
         if (!this.checkboxList3.length) {
-          this.$message.error('请选择要添加教研室的老师');
+          this.$message.error(this.lang.selecttheteacher);
           return;
         }
         let params = [{
@@ -933,7 +935,7 @@
         this.ajax
           .post(this.$store.state.api + "addClassTeacher", params)
           .then((res) => {
-            this.$message.success("添加成功")
+            this.$message.success(this.lang.Addedsuccessfully)
             this.checkboxList3 = []
             this.dialogVisibleMember = false
             this.getStudent(this.cid)
@@ -943,23 +945,23 @@
           });
       },
       iniPassword(id) {
-        this.$confirm("确定" + "初始化" + "此老师的密码吗?", "提示", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
+        this.$confirm(this.lang.initializepasswordteacher, this.lang.tip, {
+          confirmButtonText: this.lang.Confirm,
+          cancelButtonText: this.lang.Cancel,
           type: "warning",
         })
           .then(() => {
             let params = [
               {
                 uid: id,
-                pa: '',
+                pa: 'Coco1234',
               },
             ];
             this.ajax
               .post(this.$store.state.api + "iniPassword", params)
               .then((res) => {
                 this.$message({
-                  message: "初始化密码成功!",
+                  message: this.lang.Resetsuccessful,
                   type: "success",
                 });
               })

+ 760 - 193
src/lang/cn.json

@@ -1,200 +1,767 @@
-{
+ {
   "lang": "cn",
-  "courseManage": "课程管理",
-  "addCourse": "添加课程",
-  "return": "返回",
-  "pleaseEnterCourseName": "请输入课程名称",
-  "whetherPublicThisCourse": "是否公开此课程",
-  "type": "类型",
-  "uploadCover": "上传封面",
-  "clickAddCover": "点击添加封面",
-  "modifyCover": "修改封面",
-  "teachClass": "授课班级",
-  "pleaseSelectTeachClass": "请选择授课班级",
-  "collaboratePersonnel": "协同人员",
-  "pleaseSelectCollaboratePersonnel": "请选择协同人员",
-  "smartPaste": "智能粘贴",
-  "pasteMode": "智能粘贴模式",
-  "courseBriefDescription": "课程简要描述",
-  "task": "任务",
-  "unnamedTask": "未命名任务",
-  "tool": "工具",
-  "learnContent": "学习内容",
-  "pleaseAddLearnContent": "请添加学习内容",
-  "link": "链接",
-  "aiApp": "Ai应用",
-  "codeUpload": "代码上传",
-  "file": "文件",
-  "imageText": "图文",
-  "code": "代码",
-  "resource": "资源",
-  "smartApp": "智能应用",
-  "codeEditor": "代码编辑器",
-  "otherAttachment": "其他附件",
-  "uploadingPleaseWait": "上传中,请稍后",
-  "taskOverview": "任务概述",
-  "inputTaskName": "输入任务名称",
-  "pleaseEnterTaskDescription": "请输入任务描述",
-  "interact": "互动类",
-  "think": "思维类",
-  "collab": "协作类",
-  "assess": "测评类",
-  "eval": "评价类",
-  "program": "编程类",
-  "subject": "学科类",
-  "other": "其他",
-  "moveUp": "上移",
-  "moveDown": "下移",
-  "material": "素材库",
-  "learnData": "学习资料",
-  "countdown": "倒计时",
-  "pick": "挑人",
-  "stuGroup": "学生分组",
-  "interVideo": "交互视频",
-  "appCenter": "应用中心",
-  "thinkGrid": "思维网格",
-  "whiteboard": "电子白板",
-  "note": "便签",
-  "collabDoc": "协同文档",
-  "document": "文档",
-  "mindmap": "思维导图",
-  "table": "表格",
-  "rubric": "量规评分",
-  "survey": "问卷调查",
-  "choice": "选择题",
-  "qa": "问答",
-  "homework": "作业提交",
-  "batchUp": "批量上传",
-  "personal": "个人评价",
-  "match": "选择匹配",
-  "sort": "排序",
-  "uploadAud": "上传音频",
-  "trainPlat": "训练平台",
-  "aiExp": "AI体验",
-  "sourceEdit": "源码编辑",
-  "turtle": "海龟编程",
-  "aiAgent": "AI智能体",
-  "translate": "翻译",
-  "digital": "数字画板",
-  "formula": "公式编辑",
-  "selected": "已选择",
-  "addTool": "添加工具",
-  "addToolDesc": "添加工具描述",
-  "expandTask": "展开任务",
-  "collapseTask": "收起任务",
-  "addTask": "添加任务",
-  "returnCourse": "返回课程",
-  "confirmUp": "确认上传",
-  "uploadCont": "上传课程内容",
-  "courseDesign": "课程设计",
-  "targetMgmt": "目标管理",
-  "engWrite": "英语写作",
-  "engSpeak": "英语口语",
-  "selectTemplate": "请选择合适的课程模板",
-  "taskMode": "任务模式",
-  "simpleMode": "简易模式",
-  "stage": "阶段",
+  "DepartmentManagement":"教研室管理",
+  "DepartmentTypeManagement":"教研室类型管理",
+  "Enterdepartmentname":"请输入教研室名称",
+  "Search":"查询",
+  "AddDepartment":"添加教研室",
+  "DepartmentName":"教研室名称",
+  "DepartmentType":"教研室类型",
+  "Action":"操作",
+  "ViewTeacher":"查看老师",
+  "Enterusername":"请输入用户名",
+  "return":"返回",
+  "AddTeacher":"添加老师",
+  "Name":"姓名",
+  "Department":"教研室",
+  "TeacherAccount":"老师账号",
+  "Nodata":"暂无数据",
+  "Norecordsfound":"暂无数据",
+  "AddTeachers":"添加教师",
+  "Searchteachername":"搜索老师姓名",
+  "SelectMembers":"选择成员",
+  "Account":"账号",
+  "Cancel":"取消",
+  "Confirm":"确定",
+  "AddSuccessful":"新增成功",
+  "Edit":"修改",
+  "Delete":"删除",
+  "Aystrttfta":"确定在本教研室移除此老师吗?",
+  "Remove":"移除",
+  "EditDepartment":"修改教研室",
+  "OperateSuccessful":"操作成功",
+  "Aystdtd":"确定删除此教研室吗?",
+  "Enterdepartmenttype":"请输入教研室类型",
+  "DeleteSuccessful":"删除成功",
+  "Adddepartmenttype":"添加教研室类型",
+  "Pleaseenteryourusername":"请输入用户名",
+  "GradeManagement":"年级管理",
+  "ClassManagement":"班级管理",
+  "StudentManagement":"学生管理",
+  "AllPeople":"所有人",
+  "AddStudents":"添加学生",
+  "BatchAdd":"批量添加",
+  "XLSXMax":"只能上传xlsx文件,且不超过500kb",
+  "EXffu":"xlsx上传样例",
+  "StudentAccount":"学生账号",
+  "Class":"班级",
+  "StudentClass":"学生班级",
+  "InitialPassword":"初始化密码",
+  "Aystrtp":"确定初始化此学生的密码吗?",
+  "Reset":"确定",
+  "Resetsuccessful":"初始化密码成功!",
+  "AddStudent":"添加学生",
+  "StudentName":"学生姓名",
+  "StudentID":"学生账号",
+  "EnterStudentID":"请输入学生账户",
+  "AffiliatedSchool":"所属学校",
+  "SelectClass":"请选择班级",
+  "NoteTdpfnsai":"注:添加学生的账户密码为Coco1234",
+  "EditStudent":"修改学生",
+  "Editsuccessful":"修改成功",
+  "Aystd":"确定删除此学生吗?",
+  "EnterClassName":"请输入班级名称",
+  "Grade":"所属年级",
+  "NumberofStudents":"人数",
+  "ViewStudents":"查看学生",
+  "EditGrade":"修改年级",
+  "EditName":"修改名称",
+  "None":"暂无",
+  "AddClass":"添加班级",
+  "Searchstudentname":"搜索学生姓名",
+  "Choosemembers":"选择成员",
+  "StudentNumber":"学生学号",
+  "EnterStudentNumber":"请输入学生学号",
+  "StudentPhoneNumber":"学生手机号",
+  "EnterStudentPhoneNumber":"请输入学生手机号",
+  "Aystrtsftc":"确定移出学生在本班级吗?",
+  "SelectGrade":"选择年级",
+  "EditClass":"修改班级",
+  "ClassName":"班级名称",
+  "Aystdtc":"确定删除此班级吗?",
+  "Enterclass":"请输入班级",
+  "EnterGradeName":"请输入年级名称",
+  "AddGrade":"添加年级",
+  "GradeName":"年级名称",
+  "NumberofClasses":"班级数",
+  "ViewClasses":"查看班级",
+  "Classes":"班级",
+  "AddClasses":"添加班级",
+  "SelectClasses":"选择班级",
+  "SearchforClassName":"搜索班级名称",
+  "Add":"确定",
+  "Aystrtcftg":"确定在本年级移除此班级吗?",
+  "Aystdtg":"确定删除此年级吗?",
+  "EnterGrade":"请输入年级",
+  "CocoNote":"协同建构",
+  "EditCoconote":"创建协同建构",
+  "ResetNote":"重置",
+  "SearchNote":"请输入关键字",
+  "GradeL":"年级",
+  "Theme":"主题",
+  "Subject":"学科",
+  "All":"全部",
+  "Shared":"他人创建",
+  "MyNote":"我的创建",
+  "Open":"打开",
+  "Modified":"修改",
+  "Copy":"复制",
+  "Aystdi":"确定删除吗?",
+  "Successfullycopy":"复制成功",
+  "Standardcreation":"标准创建",
+  "QuicklyCreate":"快速创建",
+  "Back":"返回",
+  "NoteName":"项目名称",
+  "Cover":"上传封面",
+  "AddCoverimage":"点击添加封面",
+  "Collaborator":"协同人员",
+  "Psac":"请选择协同人员",
+  "Pleaseaddgroups":"请添加课程名称后才能设置分组",
+  "Pleasesetupgroups":"暂无分组,请点击右上角设置分组",
+  "Creategroups":"添加分组",
+  "Deletegroups":"删除分组",
+  "GroupSettings":"分组设置",
+  "GroupName1":"第*组名称",
+  "GroupName2":"第*组名称",
+  "GroupName3":"第*组名称",
+  "GroupName4":"第*组名称",
+  "nd":"nd",
+  "rd":"rd",
+  "th":"th",
+  "AddGroup":"添加",
+  "Groupsize":"请设置每组人数",
+  "Addgroupsinbatch":"批量添加小组",
+  "Save":"确定",
+  "UpdateSuccessful":"修改成功",
+  "returnHomepage":"返回首页",
+  "Confirmcreation":"确认创建",
+  "GroupNames":"请设置小组数量及名称",
+  "Pleaseenteraname":"请输入名称...",
+  "Teachernotaddedgroups":"老师暂未添加分组",
+  "emptyplaces":"空位置",
+  "Group":"第*组",
+  "Addteammembers":"添加组员",
+  "Removeteammembers":"移除组员",
+  "selectteamdelete":"请选择要删除的组员",
+  "Areyousuredeletegroup":"是否确定删除已有分组?删除后分组数据将被清空!",
+  "tip":"提示",
+  "OpenSeatSelectionTip":"提示:开启【开放选座】,能够自由加入和退出小组。",
+  "OpenSeatSelection":"开放选座",
+  "Enablegrouping":"开启分组",
+  "JoinGroup":"加入分组",
+  "Exitgroup":"退出分组",
+  "Groupinghasbeenclosed":"已关闭分组",
+  "Modifygrouping":"修改分组",
+  "selectgroupenter":"请选择要进入的分组",
+  "Noname":"暂无姓名",
+  "enablegroupingbefor":"请开启分组后才能开放选座",
+  "fillincompletely":"请将信息填写完整!",
+  "pleaseresetgroup":"已经有小组比你设置的人数多,请重新设置",
+  "Settingsuccessful":"设置成功",
+  "Successfullystartedgrouping":"开启分组成功",
+  "Successfullyclosedgrouping":"关闭分组成功",
+  "Poorinternetconnection":"网络不佳",
+  "Locationisfull":"位置已满,无法加入",
+  "Exitsuccessful":"退出成功",
+  "confirmjointhegroup":"确认加入分组?确认后将直接打开协同构建",
+  "Locationlocked":"位置已被锁定,无法加入",
+  "Joinsuccessfully":"加入成功",
+  "unabletoexit":"位置已被锁定,无法退出",
+  "exist":"在",
+  "SMARTPaste ":"智能粘贴",
+  "uploadpictures":"上传图片",
+  "Selectlocalfile":"选择本地文件",
+  "Selectnetworkfiles":"选择网络文件",
+  "Addmembers":"添加协同成员",
+  "Searchforaccount":"搜索完整的姓名/账号(不含邮箱后缀)",
+  "identity":"身份",
+  "school":"学校",
+  "SelectAll":"全选",
+  "teacher":"老师",
+  "student":"学生",
+  "fillincoursename":"请补充填写课程名称",
+  "saveCoco":"保存",
+  "Donotsave":"不保存",
+  "Noncannotedit":"非管理员和创建者不可编辑",
+  "type":"类型",
+  "Searchimagekeywords":"搜索图片关键字",
+  "enterkeywordsimages":"请输入关键词搜索图片",
+  "Changeanothergroup":"换一组",
+  "Teachername":"老师姓名",
+  "enterteachername":"请输入老师姓名",
+  "TeacherNumber":"老师学号",
+  "enterteacherID":"请输入老师学号",
+  "Teacherphonenumber":"老师手机号",
+  "EnterTeacherPhoneNumber":"请输入老师手机号",
+  "Teacheraccount":"老师账号",
+  "enterteacheraccount":"请输入老师账号",
+  "selectdepartment":"请选择教研室",
+  "teacherpassword":"注:添加老师的账号密码为Coco1234",
+  "confirm":"确认",
+  "Modifyteacher":"修改老师",
+  "enterdepartment":"请输入教研室...",
+  "makechanges":"确定修改吗?",
+  "selectthetypeofteaching":"请选择教研室类型",
+  "nameasother":"不能与其他教研室名称相同!",
+  "Additionfailed":"新增失败",
+  "Modificationfailed":"修改失败",
+  "Deletefailed":"删除失败",
+  "Teachercannotempty":"老师姓名不能为空",
+  "phonenumberincorrect":"手机号格式不正确",
+  "Emailformatincorrect":"邮箱格式不正确",
+  "alreadybeenregistered":"此老师账号已被注册",
+  "chooseateaching":"请为老师选择教研室",
+  "operationfailed":"操作失败",
+  "selecttheteacher":"请选择要添加教研室的老师",
+  "Addedsuccessfully":"添加成功",
+  "initializepasswordteacher":"确定初始化此老师的密码吗?",
+  "othertypesofteaching":"不能与其他教研室类型名称相同!",
+  "CourseManagement":"课程管理",
+  "EvaluationManagement":"评价管理",
+  "CreateCourse":"创建课程",
+  "SimplifiedCourse": "极简式课程",
+  "Classroommode": "上课模式",
+  "MultistageCourse": "阶段式课程",
+  "AIMode": "AI模式",
+  "MyCourse": "我的课程",
+  "CollaborativeCourse": "协同课程",
+  "OthersCourse": "他人课程",
+  "Owner": "所有者",
+  "PleaseEnterKeyword": "请输入关键字",
+  "Preview": "预览",
+  "AiEdit": "Ai一下",
+  "Share": "分享",
+  "CreationDate": "创建日期",
+  "ModificationDate": "修改日期",
+  "StageMode": "阶段模式",
+  "TaskMode": "任务模式",
+  "MinimalMode": "极简模式",
+  "ClassMode": "上课模式",
+  "ViewQuestions": "查看提问",
+  "Close": "关闭",
+  "ViewCollaborativeCourse": "查看协同课程",
+  "ViewContent": "查看内容",
+  "reset": "重置",
+  "Coursescreening": "课程筛选",
+  "Pleaseselect": "请选择",
+  "entercoursename": "请输入课程名称",
+  "CreateTeacher": "创建老师",
+  "edit": "编辑",
+  "deletebeforeuploading": "课程海报仅支持上传一张,请删除后再进行上传",
+  "specialcolumn": "专栏",
+  "column": "栏目",
+  "college": "学院",
+  "deletethiscourse": "确定删除此课程吗?",
+  "ZhijianCourse": "智见课程",
+  "ZhixingCourse": "智行课程",
+  "IntelligentCreationCourse": "智创课程",
+  "xiaokeloading": "小可正在努力生成中,请稍等...",
+  "stop": "停止",
+  "Fillinbasicinformation": "填写基本信息",
+  "Uploadcoursecontent": "上传课程内容",
+  "Uploadcompleted": "上传完成",
+  "wantintelligent": "是否开启智能检索",
+  "OutputLanguage": "输出语言",
+  "SimplifiedChinese": "简体中文",
+  "traditionalChinese": "繁体中文",
+  "English": "English",
+  "AddCourse": "添加课程",
+  "Publish": "是否公开此课程",
+  "UploadCover": "上传封面",
+  "SelectLocalImage": "选择本地文件",
+  "RefreshResults": "换一组",
+  "UpdateCover": "修改封面",
+  "TeachingClasses": "授课班级",
+  "SelectTeachingClasses": "请选择授课班级",
+  "TaskL": "任务*",
+  "UntitledTask": "未命名任务",
+  "ToolL": "工具*",
+  "LearningContent": "学习内容",
+  "AddLearningContent": "请添加学习内容",
+  "Files": "文件",
+  "TextImages": "图文",
+  "Links": "链接",
+  "Code": "代码",
+  "TaskOverview": "任务概述",
+  "EnterTaskName": "输入任务名称",
+  "EnterTaskDescription": "请输入任务概述",
+  "Expand": "展开任务",
+  "AddTask": "添加任务",
+  "BacktoCourse": "返回课程",
+  "ConfirmUpload": "确认上传",
+  "SelectTeacCla": "选择授课班级",
+  "pleasewait": "上传中,请稍后",
+  "Filename": "文件名称",
+  "Deleteitem": "确定删除此项?",
+  "Addtext": "添加富文本",
+  "TextTitle": "文本标题",
+  "EnterTextTitle": "请输入文本标题",
+  "AddaLink": "添加链接",
+  "LinkText": "标题",
+  "Enterlinkdisplaytext": "请输入链接标题",
+  "URL": "链接",
+  "EnterURL": "请输入链接",
+  "Llinktextrequired": "请填写链接标题",
+  "copyvalidlink": "系统没有找到黏贴对象,请首先复制可用于黏贴的链接.",
+  "Interactive": "互动类",
+  "Cognitive": "思维类",
+  "Collaborative": "协作类",
+  "Assessment": "测评类",
+  "Evaluation": "评价类",
+  "Programming": "编程类",
+  "SubjectSpecific": "学科类",
+  "Timer": "倒计时",
+  "Picksomeone": "挑人",
+  "AddToolDescription": "添加工具描述",
+  "AddTool": "添加工具",
+  "CollapseTask": "收起任务",
+  "AddDefaultTime": "添加预设时间",
+  "changetime": "提示:点击“+”或“-”修改倒计时时长",
+  "MindGrid": "思维网格",
+  "EWhiteboard": "电子白板",
+  "Document": "文档",
+  "MindMap": "思维导图",
+  "Table": "表格",
+  "applytemplates": "极简模式添加时不能添加模板,请添加课程后再修改添加模板",
+  "AddFile": "添加文档",
+  "UploadTemplate": "上传模板",
+  "AddTable": "添加表格",
+  "Studentgrouping": "学生分组",
+  "Groupsettings": "分组设置",
+  "EnterInteger": "请输入2-10的数字",
+  "Survey": "问卷调查",
+  "Choicequestion": "选择题",
+  "QA": "问答",
+  "Fileupload": "作业提交",
+  "Batchupload": "批量上传",
+  "Matchingquestion": "选择匹配",
+  "Orderingquestion": "排序",
+  "CreateQuestionnaire": "创建问卷",
+  "EnterTitle": "输入标题",
+  "SingleChoice": "单选题",
+  "MultipleChoice": "多选题",
+  "Enterquestion": "请输入题目",
+  "OptionL": "选项*",
+  "onequestion": "至少填写一个问题",
+  "AddQA": "添加问答",
+  "Question": "问题",
+  "Pleaseenteryourquestion": "请输入您要问的问题",
+  "UploadQuestionImage": "上传题目图片",
+  "TipUpload": "提示:请将所有题目上传为一张图片",
+  "AddOptions": "添加选项",
+  "Tipenteroption": "提示:请输入以上题目的选项内容,此选项为所有题目共享。",
+  "Enteroption": "请输入选项",
+  "Next": "下一步",
+  "Uploadquestions": "请上传题目",
+  "Optioncannotbeempty": "添加的选项不能为空",
+  "Duplicateoptions": "选项*和选项$重复了,请修改!",
+  "SelectCorrectOption": "设置每道题目的正确选项",
+  "MatchAnswerstoQuestions": "根据题目选择正确答案",
+  "SelectCorrectOptionL": "请选择正确答案",
+  "BackL": "上一步",
+  "setcorrectanswers": "请设置答案",
+  "ZoomOut": "缩小",
+  "ZoomIn": "放大",
+  "ResetL": "复位",
+  "Rotateleft": "左转90°",
+  "Rotateright": "右转90°",
+  "Settings": "排序设置",
+  "QuestionSetup": "题目设置",
+  "Entercardcontent": "请输入卡片内容",
+  "Entercards": "请在输入框设置卡片,点击卡片设置顺序",
+  "CorrectOrder": "正确排序",
+  "Noorderset": "暂无排序",
+  "AddQuestion": "添加题目",
+  "completeQuestion": "请将题目*设置完整",
+  "PleaseEntercardcontent": "请填写卡片内容!",
+  "Clickcardtocancelsorting": "点击卡片取消排序设置",
+  "deletethisquestion": "确定删除此题目吗?",
+  "Successfullydelete": "删除成功",
+  "SelfAssessment": "个人评价",
+  "AddAssessment": "添加评价",
+  "EnterSelfAssessmentCriteria": "请输入个人评价指标",
+  "SelfAssessmentcriteria": "个人评价指标",
+  "Enterassessmentname": "请填写评价名称",
+  "Ratinglevel": "评星等级",
+  "Description": "描述",
+  "Enterdescription": "填写评价描述",
+  "Pleasecompleteallassessmentfields": "请把评价信息填写完整",
+  "questionnaire": "问卷调查",
+  "SourceCodeEditing": "源码编辑",
+  "TurtleProgramming": "海龟编程",
+  "AIAgent": "AI智能体",
+  "Translation": "翻译",
+  "DigitalCanvas": "数字画板",
+  "LaTeX": "公式编辑",
+  "Timetable": "时间轴",
+  "EnglishWriting": "英语写作",
+  "EnglishSpeaking": "英语口语",
+  "CreateEssayTopic": "创建作文题目",
+  "EssayTitle": "作文题目",
+  "Enteressaytitlehere": "请填写作文题目",
+  "EssayRequirements": "作文要求",
+  "Enteressayrequirements": "请填写作文要求",
+  "AssessmentSettings": "评价设置",
+  "Preset": "预设",
+  "completethecontent": "请将内容填写完整!",
+  "assessmenttemplate": "点击将下列内容设置成评价模板",
+  "SetEnglishSpeakingInformation": "设置英语口语信息",
+  "Title": "标题",
+  "Entertitle": "设置标题",
+  "DescriptionL": "说明",
+  "Enterquestiondescription": "请输入对该问题的描述",
+  "SetEnglishSpeakingQuestions": "设置英语口语题目",
+  "SelectQuestionType": "题目类型选择",
+  "OralReading": "朗读",
+  "WordsPhrases": "单词/词组",
+  "SentencesText": "句子/短语",
+  "Topic": "题目",
+  "Dialogue": "对话",
+  "CreateRole": "创建角色",
+  "ThemeStatement": "主题陈述",
+  "CreateNewTheme": "新建主题",
+  "AssessmentTopics": "评测题目",
+  "AssessmentOutline": "评测大纲",
+  "pleaseaddtopic": "暂无内容,请添加题目",
+  "Pleaseentertitle": "请输入标题",
+  "Input": "输入内容",
+  "Enterpronounce.": "请输入需学生朗读的单词/词组",
+  "AddImage": "添加图片",
+  "AutoGenerate": "智能获取",
+  "Check": "查看",
+  "Enterpractice.": "请输入需学生朗读的句子/短文",
+  "studentanswer.": "请添加需学生回答的口语问题",
+  "enterCharacterName": "请输入角色名字",
+  "RoleSetting": "测评题目",
+  "CharacterDialogue": "角色对话",
+  "theirroleattributes": "请为学生创设口语助教并设置角色属性",
+  "CharacterName": "角色名字",
+  "CreateCharacter": "创建角色",
+  "CharacterDefinition": "角色定义",
+  "enterdefinition": "请输入对该角色的定义",
+  "CharacterGreeting": "角色问候",
+  "entergreeting": "请输入对该角色的问候话语",
+  "CharacterTest": "角色测试",
+  "enterRoleDefinition": "请输入角色定义",
+  "enterCharacterGreeting": "请输入角色问候",
+  "CharacterTestL": "对话测试",
+  "Recordingnow": "正在录音中,再次点击话筒停止录音...",
+  "SubjectStatement": "主题陈述",
+  "enteroraltopic": "请输入需学生练习的口语主题和要点",
+  "EntertitleL": "输入题目",
+  "Enterkeypoints": "输入要点",
+  "rovidekey": "请输入对该问题的要点",
+  "SpeechTime": "演讲时间",
+  "removetool": "确定删除此工具吗?",
+  "Moveup": "上移",
+  "Movedown": "下移",
+  "removetask": "确定删除此任务吗?",
+  "Hidetask": "收起任务",
+  "Expandtask": "展开任务",
+  "entercoursenameL": "请补充填写课程名称",
+  "Savechanges": "是否保存已编辑内容?",
+  "Successfullyadd": "新增成功",
+  "AdvancedSettings": "高级设置",
+  "CourseAccessSettings": "课程权限设置",
+  "TeachingClass": "授课班级",
+  "SelectTeachingClass": "请选择授课班级",
+  "CourseDescription": "课程简要描述",
+  "EnterCourseDescription": "请输入课程简要描述",
+  "ObjectivesManagement": "目标管理",
+  "enterObjectiveManagement": "请添加目标管理",
+  "DeleteL": "清除",
+  "AddCollaborator": "添加协同人员",
+  "SearchMembers": "搜索协同人员",
+  "ImportObjectives": "输入目标",
+  "Objective": "目标名称",
+  "OwnerL": "负责人",
+  "Operate": "操作",
+  "Import": "导入",
+  "SuccessfullyImport": "导入成功",
+  "ObjectiveManagementSettings": "目标管理设置",
+  "Created": "创建时间",
+  "Duplicate": "复制",
+  "AddObjectiveL": "添加目标",
+  "Searchname": "请输入名称",
+  "NameL": "目标管理名称",
+  "EnterObjectivetitle": "请输入名称",
+  "PrimaryObjective": "一级目标",
+  "Addcontent": "请添加内容...",
+  "AddDescription": "添加目标描述",
+  "SecondaryObjective": "二级目标",
+  "TertiaryObjective": "三级目标",
+  "Viewmode": "查看模式",
+  "TreeView": "目标树",
+  "CompassView": "目标罗盘",
+  "BoardView": "目标看板",
+  "Addcategorized": "添加分类目标,才能识别内容哦!",
+  "Pleaseenterobjectiv": "请输入目标",
+  "SelectTemplate": "选择目标模板",
+  "TeacherPBLTraining": "教师pbl培训",
+  "MoralEducationEvaluation": "德育评价",
+  "NewStage": "新建阶段",
+  "SelectCourseTemplate": "选择课程模板",
   "Stage": "第*阶段",
-  "stageTitle": "阶段标题",
-  "taskName": "任务名称",
-  "taskDesc": "任务描述",
-  "addFile": "添加文件",
-  "addImgText": "添加图文",
-  "addLink": "添加链接",
-  "addResource": "添加资源",
-  "embedCode": "嵌入代码",
-  "teachDesign": "教学设计",
-  "teachCourse": "教学课件",
-  "teachVideo": "教学视频",
-  "teachAudio": "教学音频",
-  "learnSheet": "学习单",
-  "practice": "练习内容",
-  "evalContent": "评价内容",
-  "evalSet": "评价设置",
-  "evalName": "评价名称",
-  "fillEvalName": "填写评价名称",
-  "starLevel": "评星等级",
-  "evalDesc": "评价描述",
-  "fillEvalDesc": "填写评价描述",
+  "enterStageName": "请输入阶段名称",
+  "deletestage": "确定删除此阶段吗?",
+  "3SEtemplate": "3SE模板",
+  "ChineseReading": "语文阅读教学",
+  "EnglishReading": "英语阅读教学",
+  "5EXTeachingMode": "5EX教学模式",
+  "5ETeachingMode": "5E教学模式",
+  "Confirmtemplateselection": "确定选择课程模板吗?此操作将删除所有已编辑课程内容。",
+  "Tool": "工具*",
+  "Preliminaryintroduction": "项目初步介绍",
+  "Tipformula": "提示:如输入数学公式需加$符号包裹。例:$a^2 + b^2 = c^2$",
+  "Dimension": "评价维度",
+  "EnterDimension": "填写评价维度",
+  "DimensionDescription": "维度描述",
+  "EnterDescription": "填写维度描述",
+  "AddResourceTemplate": "添加资源模板",
+  "TemplateName": "模板名称",
+  "Selectcategory": "选择一级分类",
+  "Works": "作品",
+  "Abilities": "能力",
+  "Behaviors": "行为",
+  "AssessmentResource": "评价资源",
+  "PublicResources": "公共资源",
+  "PersonalResources": "个人资源",
+  "OrganizationalResources": "组队资源",
+  "PrimaryClassification": "一级分类",
+  "SecondaryClassification": "二级分类",
+  "Speech": "演讲",
+  "Thesis": "论文",
+  "Promotionalvideo": "宣传视频",
+  "PromotionalposterWebsite": "宣传海报",
+  "Artifacts": "人工制品",
+  "Researchpaper": "探究论文",
+  "website": "网站",
+  "Novel": "小说",
+  "Debate": "辩论",
+  "ResearchReport": "研究报告",
+  "ResearchPlan": "研究计划",
+  "Teamwork": "团队协作",
+  "DigitalLiteracy": "数字素养",
+  "Selfmanagement": "自我管理",
+  "Creativity": "创造力",
+  "Communication": "沟通交流",
+  "CriticalThinking": "批判性思维",
+  "MetaRecognition": "元认知",
+  "Problemsolve": "问题解决",
+  "LiteratureResearch": "文献研究",
+  "DataProcess": "数据处理",
+  "LearningProgress": "学习过程",
+  "LearningProformance": "学习表现",
+  "SearchforResources": "搜索资源",
+  "NoItemsFound": "暂无内容",
+  "SwitchMode": "切换模式",
+  "Unnamedstage": "未命名阶段",
+  "Stagesequence": "阶段顺序",
+  "enterstagetitle": "请输入阶段标题",
+  "entertaskdescription": "请输入任务描述",
+  "AIapplication": "AI应用",
+  "Intelligentapplication": "智能应用",
+  "CodeEditor": "代码编辑器",
+  "instructionaldesign": "教学设计",
+
+  "Teachingcourseware": "教学课件",
+  "Teachingvideos": "教学视频",
+  "Teachingaudio": "教学音频",
+  "worksheet": "学习单",
+  "Practicecontent": "练习内容",
+  "EvaluationContent": "评价内容",
+  "ApplicationCenter": "应用中心",
+  "TrainingPlatform": "训练平台",
+  "Selected": "已选择",
   "target": "目标",
-  "add": "添加",
-  "curTargetMgmt": "当前使用目标管理",
-  "switchMode": "切换模式",
-  "targetTree": "目标树",
-  "targetCompass": "目标罗盘",
-  "targetBoard": "目标看板",
-  "fold": "折叠",
-  "expand": "展开",
-  "stagePrefix": "第",
-  "magicBox": "魔盒识字",
-  "game24": "24点",
-  "mathBoard": "数学画板",
-  "simDrive": "模拟驾驶",
-  "pathSearch": "路径搜索",
-  "deepLearn": "深度学习",
-  "allHistory": "全历史",
+  "resource": "资源",
+  "Addresourcetemplate": "添加资源模板",
+  "Putawaythetarget": "收起目标",
+  "ExpandGoals": "展开目标",
+  "choosecoursetemplate": "请选择合适的课程模板",
+  "BlankTemplate": "空白模板",
+  "SimpleTemplate": "简易模板",
+  "IntelligentPasteMode": "智能粘贴模式",
   "success": "成功",
-  "tip": "提示",
-  "copyLink": "复制链接分享",
-  "cancel": "取消",
-  "viewDoc": "查看文档",
-  "addDoc": "添加文档",
-  "docTitle": "文档标题",
-  "enterDocTitle": "请输入文档标题名",
-  "docIntro": "文档简介",
-  "docContent": "文档内容",
-  "modify": "修改",
-  "confirm": "确定",
-  "addRichText": "添加富文本",
-  "textTitle": "文本标题",
-  "enterTextTitle": "请输入文本标题",
-  "title": "标题",
-  "enterLinkTitle": "请输入链接标题",
-  "enterLink": "请输入链接",
-  "modifyRes": "修改资源",
-  "addMember": "添加课程成员",
-  "selectMem": "选择成员",
-  "searchMem": "搜索成员名称",
-  "noStudent": "暂无学生可选",
-  "copyLinkInvite": "请复制该链接邀请协同编辑",
-  "selectClass": "选择授课班级",
-  "all": "全部",
-  "selectClass2": "选择班级",
-  "checkAll": "全选",
-  "noData": "暂无数据",
-  "noName": "暂无姓名",
-  "addMember2": "添加协同成员",
-  "createSurvey": "创建问卷",
-  "enterTitle": "请输入标题",
-  "singleChoice": "单选题",
-  "multiChoice": "多选题",
-  "enterQuestion": "请输入题目",
-  "enterOption": "请输入选项",
-  "createChoice": "创建选择题",
-  "addQa": "添加问答",
-  "addQuestion": "添加问题",
-  "question": "问题",
-  "enterQuestion2": "请输入您要问的问题",
-  "enterAnswerQ": "请输入您想要回答的问题",
-  "uploadPic": "上传图片",
-  "selectLocal": "选择本地文件",
-  "selectNetwork": "选择网络文件",
-  "selectSystem": "选择系统文件",
-  "drawing": "绘画",
-  "technology": "科技",
+  "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": "艺术",
-  "searchPicKey": "搜索图片关键字",
-  "changeGroup": "换一组",
-  "enterKeySearch": "请输入关键词搜索图片",
-  "uploadQuesPic": "上传题目图片",
-  "tipUploadAll": "提示:请将所有题目上传为一张图片。",
-  "addOption": "添加选项",
-  "tipOptionShare": "提示:请输入以上题目的选项内容,此选项为所有题目共享。",
-  "setCorrect": "设置每道题目的正确选项",
-  "selectAnswer": "根据题目选择对应答案",
-  "selectCorrect": "请选择正确答案",
-  "nextStep": "下一步",
-  "prevStep": "上一步",
-  "delete": "删除"
+  "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":"有学生学号重复",
+
+  "data11_6": "11.6",
+  "PPTmode":"PPT模式",
+  "Codeupload":"代码上传",
+  "StageTitle":"阶段标题",
+
+  "data11_7": "11.7",
+  "reselectfile":"添加成上传文件大于80兆,请重新选择文件!",
+  "Onlyzipfiles":"只支持上传zip文件",
+  "Failedzipfile":"解析zip文件失败",
+  "Nopageselected":"未选择主页面",
+
+  "data11_12": "11.12",
+  "joinone":"没有加入分组请先加入分组",
+  "TaskLOverview":"任务*概述",
+  "Putleacontent":"收起学习内容",
+  "Expandleacontent":"展开学习内容",
+
+  "Menuitems":"教研室"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 }

+ 751 - 131
src/lang/en.json

@@ -1,134 +1,754 @@
 {
   "lang": "com",
-  "courseManage": "Course Management",
-  "addCourse": "Add Course",
-  "return": "Return",
-  "pleaseEnterCourseName": "Please enter course name",
-  "whetherPublicThisCourse": "Whether to make this course public",
-  "type": "Type",
-  "uploadCover": "Upload Cover",
-  "clickAddCover": "Click to add cover",
-  "modifyCover": "Modify Cover",
-  "teachClass": "Teaching Class",
-  "pleaseSelectTeachClass": "Please select teaching class",
-  "collaboratePersonnel": "Collaborative Personnel",
-  "pleaseSelectCollaboratePersonnel": "Please select collaborative personnel",
-  "smartPaste": "Smart Paste",
-  "courseBriefDescription": "Course Brief Description",
-  "task": "Task",
-  "unnamedTask": "Unnamed Task",
-  "tool": "Tool",
-  "learnContent": "Learning Content",
-  "pleaseAddLearnContent": "Please add learning content",
-  "link": "Link",
-  "aiApp": "AI App",
-  "codeUpload": "Code Upload",
-  "file": "File",
-  "imageText": "Image Text",
-  "code": "Code",
-  "resource": "Resource",
-  "smartApp": "Smart App",
-  "codeEditor": "Code Editor",
-  "otherAttachment": "Other Attachment",
-  "uploadingPleaseWait": "Uploading, please wait",
-  "taskOverview": "Task Overview",
-  "inputTaskName": "Input task name",
-  "pleaseEnterTaskDescription": "Please enter task description",
-  "interact": "Interactive",
-  "think": "Thinking",
-  "collab": "Collaborative",
-  "assess": "Assessment",
-  "eval": "Evaluation",
-  "program": "Programming",
-  "subject": "Subject",
-  "other": "Other",
-  "moveUp": "Move Up",
-  "moveDown": "Move Down",
-  "material": "Material Library",
-  "learnData": "Learning Materials",
-  "countdown": "Countdown",
-  "pick": "Pick Person",
-  "stuGroup": "Student Group",
-  "interVideo": "Interactive Video",
-  "appCenter": "App Center",
-  "thinkGrid": "Thinking Grid",
-  "whiteboard": "Whiteboard",
-  "note": "Note",
-  "collabDoc": "Collaborative Doc",
-  "document": "Document",
-  "mindmap": "Mind Map",
-  "table": "Table",
-  "rubric": "Rubric Score",
-  "survey": "Questionnaire",
-  "choice": "Choice Question",
-  "qa": "Q&A",
-  "homework": "Homework Submit",
-  "batchUp": "Batch Upload",
-  "personal": "Personal Eval",
-  "match": "Match",
-  "sort": "Sort",
-  "uploadAud": "Upload Audio",
-  "trainPlat": "Training Platform",
-  "aiExp": "AI Experience",
-  "sourceEdit": "Source Edit",
-  "turtle": "Turtle Program",
-  "aiAgent": "AI Agent",
-  "translate": "Translate",
-  "digital": "Digital Canvas",
-  "formula": "Formula Edit",
-  "selected": "Selected",
-  "addTool": "Add Tool",
-  "addToolDesc": "Add Tool Desc",
-  "expandTask": "Expand Task",
-  "collapseTask": "Collapse Task",
-  "addTask": "Add Task",
-  "returnCourse": "Return Course",
-  "confirmUp": "Confirm Upload",
-  "uploadCont": "Upload Content",
-  "courseDesign": "Course Design",
-  "targetMgmt": "Target Management",
-  "engWrite": "English Writing",
-  "engSpeak": "English Speaking",
-  "selectTemplate": "Please select appropriate course template",
-  "taskMode": "Task Mode",
-  "simpleMode": "Simple Mode",
-  "stage": "Stage",
-  "stagePrefix": "Stage ",
-  "stageTitle": "Stage Title",
-  "taskName": "Task Name",
-  "taskDesc": "Task Description",
-  "addFile": "Add File",
-  "addImgText": "Add Image Text",
-  "addLink": "Add Link",
-  "addResource": "Add Resource",
-  "embedCode": "Embed Code",
-  "teachDesign": "Teaching Design",
-  "teachCourse": "Teaching Courseware",
-  "teachVideo": "Teaching Video",
-  "teachAudio": "Teaching Audio",
-  "learnSheet": "Learning Sheet",
-  "practice": "Practice Content",
-  "evalContent": "Evaluation Content",
-  "evalSet": "Evaluation Settings",
-  "evalName": "Evaluation Name",
-  "fillEvalName": "Fill evaluation name",
-  "starLevel": "Star Level",
-  "evalDesc": "Evaluation Description",
-  "fillEvalDesc": "Fill evaluation description",
-  "target": "Target",
-  "add": "Add",
-  "curTargetMgmt": "Currently using target management",
-  "switchMode": "Switch Mode",
-  "targetTree": "Target Tree",
-  "targetCompass": "Target Compass",
-  "targetBoard": "Target Board",
-  "fold": "Fold",
-  "expand": "Expand",
-  "magicBox": "Magic Box",
-  "game24": "24 Points",
-  "mathBoard": "Math Board",
-  "simDrive": "Sim Drive",
-  "pathSearch": "Path Search",
-  "deepLearn": "Deep Learning",
-  "allHistory": "All History"
+  "DepartmentManagement":"Department Management",
+  "DepartmentTypeManagement":"Department Type Management",
+  "Enterdepartmentname":"Enter department name",
+  "Search":"Search",
+  "AddDepartment":"Add Department",
+  "DepartmentName":"Department Name",
+  "DepartmentType":"Department Type",
+  "Action":"Action",
+  "ViewTeacher":"View Teacher",
+  "Enterusername":"Enter username",
+  "return":"Return",
+  "AddTeacher":"Add Teacher",
+  "Edit":"Edit",
+  "Delete":"Delete",
+  "Name":"Name",
+  "Department":"Department",
+  "TeacherAccount":"Teacher Account",
+  "Nodata":"No data",
+  "AddTeachers":"Add Teachers",
+  "Searchteachername":"Search teacher's name",
+  "SelectMembers":"Select Members",
+  "Account":"Account ",
+  "Cancel":"Cancel ",
+  "Confirm":"Confirm ",
+  "AddSuccessful":"Add Successful",
+  "Aystrttfta":"Are you sure to remove this teacher from this department?",
+  "Remove":"Remove",
+  "EditDepartment":"Edit Department",
+  "OperateSuccessful":"Operate Successful",
+  "Aystdtd":"Are you sure you want to delete this department?",
+  "Enterdepartmenttype":"Enter department type",
+  "DeleteSuccessful":"Delete Successful",
+  "Adddepartmenttype":"Add department type",
+  "Pleaseenteryourusername":"Please enter your username",
+  "GradeManagement":"Grade Management",
+  "ClassManagement":"Class Management",
+  "StudentManagement":"Student Management",
+  "AllPeople":"All People",
+  "AddStudents":"Add Students",
+  "BatchAdd":"Batch Add",
+  "XLSXMax":"XLSX. only(Max 500KB)",
+  "EXffu":"Example XLS file for upload.",
+  "StudentAccount":"Student Account",
+  "Class":"Class",
+  "StudentClass":"Student Class",
+  "InitialPassword":"Initial Password",
+  "Aystrtp":"Are you want to reset the password?",
+  "Reset":"Reset",
+  "Resetsuccessful":"Reset successful",
+  "AddStudent":"Add Student",
+  "StudentName":"Student Name",
+  "StudentID":"Student ID",
+  "EnterStudentID":"Enter Student ID",
+  "AffiliatedSchool":"Affiliated School",
+  "SelectClass":"Select Class",
+  "NoteTdpfnsai":"Note: The default password for new student accounts is 'Coco1234'",
+  "EditStudent":"Edit Student",
+  "Editsuccessful":"Edit successful",
+  "Aystd":"Are you want to delete?",
+  "EnterClassName":"Enter Class Name",
+  "Grade":"Grade",
+  "NumberofStudents":"Number of Students",
+  "ViewStudents":"View Students",
+  "EditGrade":"Edit Grade",
+  "EditName":"Edit Name",
+  "None":"None",
+  "AddClass":"Add Class",
+  "Searchstudentname":"Search student name",
+  "Choosemembers":"Choose members",
+  "StudentNumber":"Student Number",
+  "EnterStudentNumber":"Enter Student Number",
+  "StudentPhoneNumber":"Student Phone Number",
+  "EnterStudentPhoneNumber":"Enter Student Phone Number",
+  "Aystrtsftc":"Are you want to remove this student from this class?",
+  "SelectGrade":"Select Grade",
+  "EditClass":"Edit Class",
+  "ClassName":"Class Name",
+  "Aystdtc":"re you want to delete this class?",
+  "Enterclass":"Enter class",
+  "EnterGradeName":"Enter Grade Name",
+  "AddGrade":"Add Grade",
+  "GradeName":"Grade Name",
+  "NumberofClasses":"Number of Classes",
+  "ViewClasses":"View Classes",
+  "Classes":"Classes",
+  "AddClasses":"Add Classes",
+  "SelectClasses":"Select Classes",
+  "SearchforClassName":"Search for Class Name",
+  "Add":"Add",
+  "Aystrtcftg":"Are you want to remove this class from this grade?",
+  "Aystdtg":"Are you want to delete this grade?",
+  "EnterGrade":"Enter Grade",
+  "CocoNote":"CocoNote",
+  "EditCoconote":"Edit Coconote",
+  "ResetNote":"Reset",
+  "SearchNote":"Search",
+  "GradeL":"Grade",
+  "Theme":"Theme",
+  "Subject":"Subject",
+  "All":"All",
+  "Shared":"Shared",
+  "MyNote":"MyNote",
+  "Open":"Open",
+  "Modified":"Modified",
+  "Copy":"Copy",
+  "Aystdi":"Are you want to delete it?",
+  "Successfullycopy":"Successfully copy",
+  "Standardcreation":"Standard creation",
+  "QuicklyCreate":"Quickly Create",
+  "Back":"Back",
+  "NoteName":"Note Name(Required)",
+  "Cover":"Cover",
+  "AddCoverimage":"Add Cover image",
+  "Collaborator":"Collaborator",
+  "Psac":"Please select collaborators",
+  "Pleaseaddgroups":"Please add the course name before setting up the group",
+  "Pleasesetupgroups":"No groups available at the moment.Click the'Create' button to set up groups",
+  "Creategroups":"Create",
+  "Deletegroups":"Delete",
+  "GroupSettings":"Group Settings",
+  "GroupName1":"*st Group Name",
+  "GroupName2":"*nd Group Name",
+  "GroupName3":"*rd Group Name",
+  "GroupName4":"*th Group Name",
+  "nd":"nd",
+  "rd":"rd",
+  "th":"th",
+  "AddGroup":"Add",
+  "Groupsize":"Group size",
+  "Addgroupsinbatch":"Batch Add",
+  "Save":"Save",
+  "UpdateSuccessful":"Update Successful",
+  "returnHomepage":"return",
+  "Confirmcreation":"Confirm creation",
+  "GroupNames":"Group Names",
+  "Pleaseenteraname":"Please enter a name ..",
+  "Teachernotaddedgroups":"Teacher has not added any groups yet",
+  "emptyplaces":"empty places",
+  "Group": "Group *",
+  "Addteammembers": "Add team members",
+  "Removeteammembers": "Remove team members",
+  "selectteamdelete": "Please select the team member to delete",
+  "Areyousuredeletegroup": "Are you sure to delete the existing group? After deletion, the grouped data will be cleared!",
+  "tip": "Tip",
+  "OpenSeatSelectionTip":"Tip: Turn on 'Open Seat Selection' to freely join and leave the group.",
+  "OpenSeatSelection":"Open Seat Selection",
+  "Enablegrouping":"Enable grouping",
+  "JoinGroup":"Join Group",
+  "Exitgroup":"Exit group",
+  "Groupinghasbeenclosed":"Grouping has been closed",
+  "Modifygrouping":"Modify grouping",
+  "selectgroupenter":"Please select the group to enter",
+  "Noname":"No Name",
+  "enablegroupingbefor":"Please enable grouping before opening seat selection",
+  "fillincompletely":"Please fill in the information completely!",
+  "pleaseresetgroup":"There are already more groups than the number you set, please reset",
+  "Settingsuccessful":"Setting successful",
+  "Successfullystartedgrouping":"Successfully started grouping",
+  "Successfullyclosedgrouping":"Successfully closed grouping",
+  "Poorinternetconnection":"Poor internet connection",
+  "Locationisfull":"Location is full, unable to join",
+  "Exitsuccessful":"Exit successful",
+  "confirmjointhegroup":"Are you sure to join the group? After confirmation, the collaborative build will be opened directly",
+  "Locationlocked":"Location locked, unable to join",
+  "Joinsuccessfully":"Join successfully",
+  "unabletoexit":"Location locked, unable to exit",
+  "exist":"exist",
+  "SMARTPaste ":"SMART Paste",
+  "uploadpictures":"Upload Image",
+  "Selectlocalfile":"Select local file",
+  "Selectnetworkfiles":"Select network files",
+  "Addmembers":"Add collaborative members",
+  "Searchforaccount":"Search for complete name/account (excluding email suffix)",
+  "identity":"identity",
+  "school":"school",
+  "SelectAll":"SelectAll",
+  "teacher":"teacher",
+  "student":"student",
+  "fillincoursename":"Please fill in the course name",
+  "wantsavecontent":"Save changes before closing?",
+  "saveCoco":"save",
+  "notsave":"Do not save",
+  "Noncannotedit":"Non administrators and creators cannot edit",
+  "type":"type",
+  "Searchimagekeywords":"Search for image keywords",
+  "enterkeywordsimages":"Please enter keywords to search for images",
+  "Changeanothergroup":"Change to another group",
+  "Teachername":"Teacher's name",
+  "enterteachername":"Please enter the teacher's name",
+  "TeacherNumber":"Teacher's student ID",
+  "enterteacherID":"Please enter the teacher's student ID",
+  "Teacherphonenumber":"Teacher's mobile phone number",
+  "EnterTeacherPhoneNumber":"Please enter the teacher's phone number",
+  "Teacheraccount":"Teacher account",
+  "enterteacheraccount":"Please enter the teacher account",
+  "selectdepartment":"Please select the teaching and research department",
+  "teacherpassword":"Note: Add the teacher's account password as Coco1234",
+  "confirm":"confirm",
+  "Modifyteacher":"Modify teacher",
+  "enterdepartment":"Enter the department…",
+  "makechanges":"Are you sure to make the changes?",
+  "selectthetypeofteaching":"Please select the type of teaching and research room",
+  "nameasother":"Cannot have the same name as other teaching and research rooms!",
+  "Additionfailed":"Addition failed",
+  "Modificationfailed":"Modification failed",
+  "Deletefailed":"Delete failed",
+  "Teachercannotempty":"Teacher's name cannot be empty",
+  "phonenumberincorrect":"The format of the phone number is incorrect",
+  "Emailformatincorrect":"Email format incorrect",
+  "alreadybeenregistered":"This teacher's account has already been registered",
+  "chooseateaching":"Please choose a teaching and research room for the teacher",
+  "operationfailed":"operation failed",
+  "selecttheteacher":"Please select the teacher to add to the teaching and research room",
+  "Addedsuccessfully":"Added successfully",
+  "initializepasswordteacher":"Are you sure to initialize the password for this teacher?",
+  "othertypesofteaching":"Cannot have the same name as other types of teaching and research rooms!",
+  "CourseManagement":"course management",
+  "EvaluationManagement":"evaluation management",
+  "CreateCourse":"Create Course",
+  "SimplifiedCourse": "Simplified Course",
+  "Classroommode": "Classroom mode",
+  "MultistageCourse": "Multi-stage Course",
+  "AIMode": "AI Mode",
+  "MyCourse": "My Course",
+  "CollaborativeCourse": "Collaborative Course",
+  "OthersCourse": "Others Course",
+  "Owner": "Owner",
+  "PleaseEnterKeyword": "Please enter keywords",
+  "Preview": "Preview",
+  "AiEdit": "Ai, give it a second",
+  "Share": "Share",
+  "CreationDate": "Creation Date",
+  "ModificationDate": "Modification Date",
+  "StageMode": "Stage mode",
+  "TaskMode": "Task mode",
+  "MinimalMode": "Minimal mode",
+  "ClassMode": "Class mode",
+  "ViewQuestions": "View Questions",
+  "Close": "Close",
+  "ViewCollaborativeCourse": "View collaborative courses",
+  "ViewContent": "View Content",
+  "reset": "reset",
+  "Coursescreening": "Course screening",
+  "Pleaseselect": "Please select",
+  "entercoursename": "Please enter the course name",
+  "CreateTeacher": "Create Teacher",
+  "edit": "edit",
+  "deletebeforeuploading": "The course poster only supports uploading one. Please delete it before uploading again",
+  "specialcolumn": "special column",
+  "column": "column",
+  "college": "college",
+  "deletethiscourse": "Are you sure to delete this course?",
+  "ZhijianCourse": "Zhijian Course",
+  "ZhixingCourse": "Zhixing Course",
+  "IntelligentCreationCourse": "Intelligent Creation Course",
+  "xiaokeloading": "Xiaoke is working hard to generate it, please wait a moment..",
+  "stop": "stop",
+  "Fillinbasicinformation": "Fill in basic information",
+  "Uploadcoursecontent": "Upload course content",
+  "Uploadcompleted": "Upload completed",
+  "wantintelligent": "Do you want to enable intelligent retrieval",
+  "OutputLanguage": "Output Language",
+  "SimplifiedChinese": "Simplified Chinese",
+  "traditionalChinese": "traditional Chinese",
+  "English": "English",
+  "AddCourse": "Add Course",
+  "Publish": "Publish",
+  "UploadCover": "Upload Cover",
+  "SelectLocalImage": "Select Local Image",
+  "RefreshResults": "Refresh Results",
+  "UpdateCover": "Update Cover",
+  "TeachingClasses": "Teaching Classes",
+  "SelectTeachingClasses": "Select Teaching Classes",
+  "TaskL": "Task *",
+  "UntitledTask": "Untitled Task",
+  "ToolL": "Tool *",
+  "LearningContent": "Learning Content",
+  "AddLearningContent": "Add Learning Content",
+  "Files": "Files",
+  "TextImages": "Text & Images",
+  "Links": "Links",
+  "Code": "Code",
+  "TaskOverview": "Task Overview",
+  "EnterTaskName": "Enter Task Name",
+  "EnterTaskDescription": "Enter Task Description",
+  "Expand": "Expand",
+  "AddTask": "Add Task",
+  "BacktoCourse": "Back to Course",
+  "ConfirmUpload": "Confirm & Upload",
+  "SelectTeacCla": "Select Teaching Classes",
+  "pleasewait": "Uploading,please wait",
+  "Filename": "Filename",
+  "Deleteitem": "Delete this item?",
+  "Addtext": "Add text",
+  "TextTitle": "Text Title",
+  "EnterTextTitle": "Enter Text Title",
+  "AddaLink": "Add a Link",
+  "LinkText": "Link Text",
+  "Enterlinkdisplaytext": "Enter link display text",
+  "URL": "URL",
+  "EnterURL": "Enter URL",
+  "Llinktextrequired": "Enter link display text",
+  "copyvalidlink": "No paste target found. Please copy a valid link first.",
+  "Interactive": "Interactive",
+  "Cognitive": "Cognitive",
+  "Collaborative": "Collaborative",
+  "Assessment": "Assessment",
+  "Evaluation": "Evaluation",
+  "Programming": "Programming",
+  "SubjectSpecific": "Subject-Specific",
+  "Timer": "Timer",
+  "Picksomeone": "Pick someone",
+  "AddToolDescription": "Add Tool Description",
+  "AddTool": "Add Tool",
+  "CollapseTask": "Collapse Task",
+  "AddDefaultTime": "Add Default Time",
+  "changetime": "Tip: Click “+” or “-” to change the countdown time.",
+  "MindGrid": "Mind Grid",
+  "EWhiteboard": "E-Whiteboard",
+  "Document": "Document",
+  "MindMap": "Mind Map",
+  "Table": "Table",
+  "applytemplates": "Templates cannot be added in Simplified Course. Please add course first, then edit to apply templates.",
+  "AddFile": "Add File",
+  "UploadTemplate": "Upload Template",
+  "AddTable": "Add Table",
+  "Studentgrouping": "Grouping",
+  "Groupsettings": "Group settings",
+  "EnterInteger": "Enter Integer(2-10)",
+  "Survey": "Survey",
+  "Choicequestion": "Choice question",
+  "QA": "Q&A",
+  "Fileupload": "File upload",
+  "Batchupload": "Batch upload",
+  "Matchingquestion": "Matching question",
+  "Orderingquestion": "Ordering question",
+  "CreateQuestionnaire": "Create Questionnaire",
+  "EnterTitle": "Enter Title",
+  "SingleChoice": "Single Choice",
+  "MultipleChoice": "Multiple Choice",
+  "Enterquestion": "Enter question",
+  "OptionL": "OptionL *",
+  "onequestion": "At least one question isrequired",
+  "AddQA": "Add Q&A",
+  "Question": "Question",
+  "Pleaseenteryourquestion": "Please enter your question",
+  "UploadQuestionImage": "Upload Question Image",
+  "TipUpload": "Tip: Upload all questions as a single image",
+  "AddOptions": "Add Options",
+  "Tipenteroption": "Tip: Please enter option content for the above questions; options will be shared for all questions",
+  "Enteroption": "Enter option",
+  "Next": "Next",
+  "Uploadquestions": "Upload questions",
+  "Optioncannotbeempty": "Option cannot be empty.",
+  "Duplicateoptions": "Duplicate options: Option 1 & Option 2. Please modify.",
+  "SelectCorrectOption": "Select Correct Option",
+  "MatchAnswerstoQuestions": "Match Answers to Questions",
+  "SelectCorrectOptionL": "Select Correct Option",
+  "BackL": "Back",
+  "setcorrectanswers": "Please set correct answers.",
+  "ZoomOut": "Zoom Out",
+  "ZoomIn": "Zoom In",
+  "ResetL": "Reset",
+  "Rotateleft​": "Rotate left 90°​",
+  "Rotateright": "Rotate right 90°​",
+  "Settings": "Settings",
+  "QuestionSetup": "Question Setup",
+  "Entercardcontent": "Enter card content",
+  "Entercards": "Enter cards in input box,then click to set card order",
+  "CorrectOrder": "Correct Order",
+  "Noorderset": "No order set",
+  "AddQuestion": "Add Question",
+  "completeQuestion": "Please complete Question * Setup",
+  "PleaseEntercardcontent": "Please Enter card content.",
+  "Clickcardtocancelsorting": "Click card to cancel sorting",
+  "deletethisquestion": "Are you sure to delete this question?",
+  "Successfullydelete": "Successfully delete",
+  "SelfAssessment": "Self-Assessment",
+  "AddAssessment": "Add Assessment",
+  "EnterSelfAssessmentCriteria": "Enter Self-Assessment Criteria",
+  "SelfAssessmentcriteria": "Self-Assessment criteria",
+  "Enterassessmentname": "Enter assessment name",
+  "Ratinglevel": "Rating level",
+  "Description": "Description",
+  "Enterdescription": "Enter description",
+  "Pleasecompleteallassessmentfields": "Please complete all assessment fields.",
+  "questionnaire": "questionnaire",
+  "SourceCodeEditing": "Source Code Editing",
+  "TurtleProgramming": "Turtle Programming",
+  "AIAgent": "AI Agent",
+  "Translation": "Translation",
+  "DigitalCanvas": "DigitalCanvas",
+  "LaTeX": "LaTeX",
+  "Timetable": "Timetable",
+  "EnglishWriting": "English Writing",
+  "EnglishSpeaking": "English Speaking",
+  "CreateEssayTopic": "Create Essay Topic",
+  "EssayTitle": "Essay Title",
+  "Enteressaytitlehere": "Enter essay title here",
+  "EssayRequirements": "Essay Requirements",
+  "Enteressayrequirements": "Enter essay requirements",
+  "AssessmentSettings": "Assessment Settings",
+  "Preset": "Preset",
+  "completethecontent": "Please complete the content.",
+  "assessmenttemplate": "Click to set the following content as an assessment template",
+  "SetEnglishSpeakingInformation": "Set English Speaking Information",
+  "Title": "Title",
+  "Entertitle": "Enter title",
+  "DescriptionL": "Description",
+  "Enterquestiondescription": "Enter question description",
+  "SetEnglishSpeakingQuestions": "Set English Speaking Questions",
+  "SelectQuestionType": "Select Question Type",
+  "OralReading": "Oral Reading",
+  "WordsPhrases": "Words/Phrases",
+  "SentencesText": "Sentences/Short Text",
+  "Topic": "Topic",
+  "Dialogue": "Dialogue",
+  "CreateRole": "Create Role",
+  "ThemeStatement": "Theme Statement",
+  "CreateNewTheme": "Create New Theme",
+  "AssessmentTopics": "Assessment Topics",
+  "AssessmentOutline": "Assessment Outline",
+  "pleaseaddtopic": "No content available, please add a topic",
+  "Pleaseentertitle": "Please enter title",
+  "Input": "Input",
+  "Enterpronounce.": "Enter words/phrases for students to pronounce.",
+  "AddImage": "Add Image",
+  "AutoGenerate": "Auto-Generate",
+  "Check": "Check",
+  "Enterpractice.": "Enter sentences/passages for students to practice.",
+  "studentanswer.": "Please add some oral practice questions for students to answer.",
+  "enterCharacterName": "Please enter Character Name",
+  "RoleSetting": "Role Setting",
+  "CharacterDialogue": "Character Dialogue",
+  "theirroleattributes": "Please create an oral teaching assistant for the students and set their role attributes.",
+  "CharacterName": "Character Name",
+  "CreateCharacter": "Create Character",
+  "CharacterDefinition": "Character Definition",
+  "enterdefinition": "Please enter the definition of this character.",
+  "CharacterGreeting": "Character Greeting",
+  "entergreeting": "Please enter the greeting message for this character.",
+  "CharacterTest": "Character Test",
+  "enterRoleDefinition": "Please enter Role Definition",
+  "enterCharacterGreeting": "Please enter Character Greeting",
+  "CharacterTestL": "Character Test",
+  "Recordingnow": "Recording now. Click the microphone again to stop the recording....",
+  "SubjectStatement": "Subject Statement",
+  "enteroraltopic": "Please enter the oral topic and key points that students need to practice.",
+  "EntertitleL": "Enter title",
+  "Enterkeypoints": "Enter key points",
+  "rovidekey": "Please provide the key points of this topic.",
+  "SpeechTime": "Speech Time",
+  "removetool": "Are you sure to remove this tool?",
+  "Moveup": "Move up",
+  "Movedown": "Move down",
+  "removetask": "Are you sure to remove this task?",
+  "Hidetask": "Hide task",
+  "Expandtask": "Expand task",
+  "entercoursenameL": "Please enter course name",
+  "Savechanges": "Save changes before closing?",
+  "Successfullyadd": "Successfully add",
+  "AdvancedSettings": "Advanced Settings",
+  "CourseAccessSettings": "Course Access Settings",
+  "TeachingClass": "Teaching Class",
+  "SelectTeachingClass": "Select Teaching Class",
+  "CourseDescription": "Course Description",
+  "EnterCourseDescription": "Enter Course Description",
+  "ObjectivesManagement": "Objectives Management",
+  "enterObjectiveManagement": "Please enter Objective Management",
+  "DeleteL": "Delete",
+  "AddCollaborator": "Add Collaborator",
+  "SearchMembers": "Search Members",
+  "ImportObjectives": "Import Objectives",
+  "Objective": "Objective",
+  "OwnerL": "Owner",
+  "Operate": "Operate",
+  "Import": "Import",
+
+  "SuccessfullyImport": "Successfully Import",
+  "ObjectiveManagementSettings": "Objective Management Settings",
+  "Created": "Created",
+  "Duplicate": "Duplicate",
+  "AddObjectiveL": "Add Objective",
+  "Searchname": "Searchname",
+  "NameL": "Name",
+  "EnterObjectivetitle": "Enter title..",
+  "PrimaryObjective": "Primary Objective",
+  "Addcontent": "Add content...",
+  "AddDescription": "Add Description",
+  "SecondaryObjective": "Secondary Objective",
+  "TertiaryObjective": "Tertiary Objective",
+  "Viewmode": "View mode",
+  "TreeView": "Tree View",
+  "CompassView": "Compass View",
+  "BoardView": "Board View",
+  "Addcategorized": "Add categorized objectives for system processing!",
+  "Pleaseenterobjectiv": "Please enter objective.",
+  "SelectTemplate": "Select Template",
+  "TeacherPBLTraining": "Teacher PBL Training",
+  "MoralEducationEvaluation": "Moral Education Evaluation",
+  "NewStage": "New Stage",
+  "SelectCourseTemplate": "Select the Course Template",
+  "Stage": "Stage *",
+  "enterStageName": "Please enter Stage Name",
+  "deletestage": "Are you sure to delete this stage?",
+  "3SEtemplate": "3SE template",
+  "ChineseReading": "Teaching Chinese Reading",
+  "EnglishReading": "Teaching English Reading",
+  "5EXTeachingMode": "5EX Teaching Mode",
+  "5ETeachingMode": "5E Teaching Mode",
+  "Confirmtemplateselection": "Confirm template selection? All content will be deleted.",
+  "Tool": "Tool *",
+  "Preliminaryintroduction": "Preliminary introduction of the project",
+  "Tipformula": "Tip: If entering a mathematical formula, you need to wrap it with a $symbol. Example: $a ^ 2+b ^ 2=c ^ 2$",
+  "Dimension": "Dimension",
+  "EnterDimension": "Enter Dimension",
+  "DimensionDescription": "Description",
+  "EnterDescription": "Enter Description",
+  "AddResourceTemplate": "Add Resource Template",
+  "TemplateName": "Template Name",
+  "Selectcategory": "Select a primary category",
+  "Works": "Works",
+  "Abilities": "Abilities",
+  "Behaviors": "Behaviors",
+  "AssessmentResource": "Assessment Resource",
+  "PublicResources": "Public Resources",
+  "PersonalResources": "Personal Resources",
+  "OrganizationalResources": "Organizational Resources",
+  "PrimaryClassification": "Primary Classification",
+  "SecondaryClassification": "Secondary Classification",
+  "Speech": "Speech",
+  "Thesis": "Thesis",
+  "Promotionalvideo": "Promotional video",
+  "PromotionalposterWebsite": "Promotional poster Website",
+  "Artifacts": "Artifacts",
+  "Researchpaper": "Researchpaper",
+  "website": "website",
+  "Novel": "Novel",
+  "Debate": "Debate",
+  "ResearchReport": "Research Report",
+  "ResearchPlan": "Research Plan",
+  "Teamwork": "Team work",
+  "DigitalLiteracy": "Digital Literacy",
+  "Selfmanagement": "Self-management",
+  "Creativity": "Creativity",
+  "Communication": "Communication",
+  "CriticalThinking": "Critical Thinking",
+  "MetaRecognition": "Meta Recognition",
+  "Problemsolve": "Problem solve",
+  "LiteratureResearch": "Literature Research",
+  "DataProcess": "Data Process",
+  "LearningProgress": "Learning Progress",
+  "LearningProformance": "Learning Proformance",
+  "SearchforResources": "Search for Resources",
+  "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",
+
+  "data11_6": "11.6",
+  "PPTmode":"PPT mode",
+  "Codeupload": "Code Upload",
+  "StageTitle": "Stage Title",
+  
+  "data11_7": "11.7",
+  "reselectfile": "The uploaded file exceeds 80MB, please reselect the file!",
+  "Onlyzipfiles": "Only ZIP files are supported for upload",
+  "Failedzipfile": "Failed to parse the ZIP file",
+  "Nopageselected": "No main page selected",
+
+  "data11_12": "11.12",
+  "joinone": "Please join a group first if you haven't joined one",
+  "TaskLOverview": "Task * Overview",
+  "Putleacontent": "Collapse Learning Content",
+  "Expandleacontent": "Expand Learning Content",
+
+  "Menuitems":"Department",
+  "Norecordsfound":"No records found"
+
+
+
 }

+ 749 - 124
src/lang/hk.json

@@ -1,133 +1,758 @@
 {
   "lang": "hk",
-  "courseManage": "課程管理",
-  "addCourse": "添加課程",
+  "DepartmentManagement": "教研室管理",
+  "DepartmentTypeManagement": "教研室類型管理",
+  "Enterdepartmentname": "請輸入教研室名稱",
+  "Search": "查詢",
+  "AddDepartment": "添加教研室",
+  "DepartmentName": "教研室名稱",
+  "DepartmentType": "教研室類型",
+  "Action": "操作",
+  "ViewTeacher": "查看老師",
+  "Enterusername": "請輸入用戶名",
   "return": "返回",
-  "pleaseEnterCourseName": "請輸入課程名稱",
-  "whetherPublicThisCourse": "是否公開此課程",
-  "type": "類型",
-  "uploadCover": "上傳封面",
-  "clickAddCover": "點擊添加封面",
-  "modifyCover": "修改封面",
-  "teachClass": "授課班級",
-  "pleaseSelectTeachClass": "請選擇授課班級",
-  "collaboratePersonnel": "協同人員",
-  "pleaseSelectCollaboratePersonnel": "請選擇協同人員",
-  "smartPaste": "智能粘貼",
-  "courseBriefDescription": "課程簡要描述",
-  "task": "任務",
-  "unnamedTask": "未命名任務",
-  "tool": "工具",
-  "learnContent": "學習內容",
-  "pleaseAddLearnContent": "請添加學習內容",
-  "link": "鏈接",
-  "aiApp": "Ai應用",
-  "codeUpload": "代碼上傳",
-  "file": "文件",
-  "imageText": "圖文",
-  "code": "代碼",
+  "AddTeacher": "添加老師",
+  "Name": "姓名",
+  "Department": "教研室",
+  "TeacherAccount": "老師賬號",
+  "Nodata": "暫無數據",
+  "Norecordsfound":"暫無數據",
+  "AddTeachers": "添加教師",
+  "Searchteachername": "搜索老師的姓名",
+  "SelectMembers": "選擇成員",
+  "Account": "賬號",
+  "Cancel": "取消",
+  "Confirm": "確定",
+  "AddSuccessful": "新增成功",
+  "Edit": "修改",
+  "Delete": "刪除",
+  "Aystrttfta": "確定在本教研室移除此老師嗎?",
+  "Remove": "移除",
+  "EditDepartment": "修改教研室",
+  "OperateSuccessful": "操作成功",
+  "Aystdtd": "確定刪除此教研室嗎?",
+  "Enterdepartmenttype": "請輸入教研室類型",
+  "DeleteSuccessful": "刪除成功",
+  "Adddepartmenttype": "添加教研室類型",
+  "Pleaseenteryourusername": "請輸入用戶名",
+  "GradeManagement": "年級管理",
+  "ClassManagement": "班級管理",
+  "StudentManagement": "學生管理",
+  "AllPeople": "所有人",
+  "AddStudents": "添加學生",
+  "BatchAdd": "批量添加",
+  "XLSXMax": "只能上傳xlsx文件,且不超過500kb",
+  "EXffu": "xlsx上傳樣例",
+  "StudentAccount": "學生賬號",
+  "Class": "班級",
+  "StudentClass": "學生班級",
+  "InitialPassword": "初始化密碼",
+  "Aystrtp": "確定初始化此學生的密碼嗎?",
+  "Reset": "確定",
+  "Resetsuccessful": "初始化密碼成功!",
+  "AddStudent": "添加學生",
+  "StudentName": "學生姓名",
+  "StudentID": "學生賬號",
+  "EnterStudentID": "請輸入學生賬戶",
+  "AffiliatedSchool": "所屬學校",
+  "SelectClass": "請選擇班級",
+  "NoteTdpfnsai": "註:添加學生的賬戶密碼為123456",
+  "EditStudent": "修改學生",
+  "Editsuccessful": "修改成功",
+  "Aystd": "確定刪除此學生嗎?",
+  "EnterClassName": "請輸入班級名稱",
+  "Grade": "所屬年級",
+  "NumberofStudents": "人數",
+  "ViewStudents": "查看學生",
+  "EditGrade": "修改年級",
+  "EditName": "修改名稱",
+  "None": "暫無",
+  "AddClass": "添加班級",
+  "Searchstudentname": "搜素學生姓名",
+  "Choosemembers": "選擇成員",
+  "StudentNumber": "學生學號",
+  "EnterStudentNumber": "請輸入學生學號",
+  "StudentPhoneNumber": "學生手機號",
+  "EnterStudentPhoneNumber": "請輸入學生手機號",
+  "Aystrtsftc": "確定移出學生在本班級嗎?",
+  "SelectGrade": "選擇年級",
+  "EditClass": "修改班級",
+  "ClassName": "班級名稱",
+  "Aystdtc": "確定刪除此班級嗎?",
+  "Enterclass": "請輸入班級",
+  "EnterGradeName": "請輸入年級名稱",
+  "AddGrade": "添加年級",
+  "GradeName": "年級名稱",
+  "NumberofClasses": "班級數",
+  "ViewClasses": "查看班級",
+  "Classes": "班級",
+  "AddClasses": "添加班級",
+  "SelectClasses": "選擇班級",
+  "SearchforClassName": "搜索班級名稱",
+  "Add": "確定",
+  "Aystrtcftg": "確定在本年級移除此班級嗎?",
+  "Aystdtg": "確定刪除此年級嗎?",
+  "EnterGrade": "請輸入年級",
+  "CocoNote": "協同建構",
+  "EditCoconote": "創建協同建構",
+  "ResetNote": "重置",
+  "SearchNote": "請輸入關鍵字",
+  "GradeL": "年級",
+  "Theme": "主題",
+  "Subject": "學科",
+  "All": "全部",
+  "Shared": "他人創建",
+  "MyNote": "我的創建",
+  "Open": "打開",
+  "Modified": "修改",
+  "Copy": "複製",
+  "Aystdi": "確定刪除嗎?",
+  "Successfullycopy": "複製成功",
+  "Standardcreation": "標準創建",
+  "QuicklyCreate": "快速創建",
+  "Back": "返回",
+  "NoteName": "項目名稱",
+  "Cover": "上傳封面",
+  "AddCoverimage": "點擊添加封面",
+  "Collaborator": "協同人員",
+  "Psac": "請選擇協同人員",
+  "Pleaseaddgroups": "請添加課程名稱後才能設置分組",
+  "Pleasesetupgroups": "暫無分組,請點擊右上角設置分組",
+  "Creategroups": "添加分組",
+  "Deletegroups": "刪除分組",
+  "GroupSettings": "分組設置",
+  "GroupName1": "第*組名稱",
+  "GroupName2": "第*組名稱",
+  "GroupName3": "第*組名稱",
+  "GroupName4": "第*組名稱",
+  "nd": "nd",
+  "rd": "rd",
+  "th": "th",
+  "AddGroup": "添加",
+  "Groupsize": "請設置每組人數",
+  "Addgroupsinbatch": "批量添加小組",
+  "Save": "確定",
+  "UpdateSuccessful": "修改成功",
+  "returnHomepage": "返回首頁",
+  "Confirmcreation": "確認創建",
+  "GroupNames":"請設置小組數量及名稱",
+  "Pleaseenteraname":"請輸入名稱...",
+  "Teachernotaddedgroups":"老師暫未新增分組",
+  "emptyplaces": "空位",
+  "Group": "第*組",
+  "Addteammembers": "新增組員",
+  "Removeteammembers": "移除組員",
+  "selectteamdelete": "請選擇要刪除的組員",
+  "Areyousuredeletegroup": "是否確定刪除現有分組?刪除後分組資料將被清空!",
+  "tip": "提示",
+  "OpenSeatSelectionTip": "提示:開啟【開放選位】,能夠自由加入和退出小組。",
+  "OpenSeatSelection": "開放選位",
+  "Enablegrouping": "開啟分組",
+  "JoinGroup": "加入分組",
+  "Exitgroup": "退出分組",
+  "Groupinghasbeenclosed": "已關閉分組",
+  "Modifygrouping": "修改分組",
+  "selectgroupenter": "請選擇要進入的分組",
+  "Noname": "暫無姓名",
+  "enablegroupingbefor":"請先開啟分組功能,才能開放選位",
+  "fillincompletely":"請將信息填寫完整!",
+  "pleaseresetgroup":"已經有小組比你設置的人數多,請重新設置",
+  "Settingsuccessful":"設置成功",
+  "Successfullystartedgrouping":"開啟分組成功",
+  "Successfullyclosedgrouping":"關閉分組成功",
+  "Poorinternetconnection":"網絡不佳",
+  "Locationisfull":"位置已滿,無法加入",
+  "Exitsuccessful":"退出成功",
+  "confirmjointhegroup":"確認加入分組?確認後將直接打開協同構建",
+  "Locationlocked":"位置已被鎖定,無法加入",
+  "Joinsuccessfully":"加入成功",
+  "unabletoexit":"位置已被鎖定,無法退出",
+  "exist":"在",
+  "SMARTPaste ":"智能粘貼",
+  "uploadpictures":"上傳圖片",
+  "Selectlocalfile":"選擇本地文件",
+  "Selectnetworkfiles":"選擇網絡文件",
+  "Addmembers":"添加協同成員",
+  "Searchforaccount":"搜索完整的姓名/賬號(不含郵箱後綴)",
+  "identity":"身份",
+  "school":"學校",
+  "SelectAll":"全選",
+  "teacher":"老師",
+  "student":"學生",
+  "fillincoursename":"請補充填寫課程名稱",
+  "wantsavecontent":"是否保存已編輯內容?",
+  "saveCoco":"保存",
+  "notsave":"不保存",
+  "Noncannotedit":"非管理員和創建者不可編輯",
+  "type":"類型",
+  "Searchimagekeywords":"搜索圖片關鍵字",
+  "enterkeywordsimages":"請輸入關鍵詞搜索圖片",
+  "Changeanothergroup":"換一組",
+  "Teachername":"老師姓名",
+  "enterteachername":"請輸入老師姓名",
+  "TeacherNumber":"老師學號",
+  "enterteacherID":"請輸入老師學號",
+  "Teacherphonenumber":"老師手機號",
+  "EnterTeacherPhoneNumber":"請輸入老師手機號",
+  "Teacheraccount":"老師賬號",
+  "enterteacheraccount":"請輸入老師賬號",
+  "selectdepartment":"請選擇教研室",
+  "teacherpassword":"註:添加老師的賬號密碼為Coco1234",
+  "confirm":"確認",
+  "Modifyteacher":"修改老師",
+  "enterdepartment":"請輸入教研室...",
+  "makechanges":"確定修改嗎?",
+  "selectthetypeofteaching":"請選擇教研室類型",
+  "nameasother":"不能與其他教研室名稱相同!",
+  "Additionfailed":"新增失敗",
+  "Modificationfailed":"修改失敗",
+  "Deletefailed":"刪除失敗",
+  "Teachercannotempty":"老師姓名不能為空",
+  "phonenumberincorrect":"手機號格式不正確",
+  "Emailformatincorrect":"郵箱格式不正確",
+  "alreadybeenregistered":"此老師賬號已被註冊",
+  "chooseateaching":"請為老師選擇教研室",
+  "operationfailed":"操作失敗",
+  "selecttheteacher":"請選擇要添加教研室的老師",
+  "Addedsuccessfully":"添加成功",
+  "initializepasswordteacher":"確定初始化此老師的密碼嗎?",
+  "othertypesofteaching":"不能與其他教研室類型名稱相同!",
+  "CourseManagement": "課程管理",
+  "EvaluationManagement": "評價管理",
+  "CreateCourse": "創建課程",
+  "SimplifiedCourse": "極簡式課程",
+  "Classroommode": "上課模式",
+  "MultistageCourse": "階段式課程",
+  "AIMode": "AI模式",
+  "MyCourse": "我的課程",
+  "CollaborativeCourse": "協同課程",
+  "OthersCourse": "他人課程",
+  "Owner": "所有者",
+  "PleaseEnterKeyword": "請輸入關鍵字",
+  "Preview": "預覽",
+  "AiEdit": "Ai一下",
+  "Share": "分享",
+  "CreationDate": "創建日期",
+  "ModificationDate": "修改日期",
+  "StageMode": "階段模式",
+  "TaskMode": "任務模式",
+  "MinimalMode": "極簡模式",
+  "ClassMode": "上課模式",
+  "ViewQuestions": "查看提問",
+  "Close": "關閉",
+  "ViewCollaborativeCourse": "查看協同課程",
+  "ViewContent": "查看內容",
+  "reset": "重置",
+  "Coursescreening": "課程篩選",
+  "Pleaseselect": "請選擇",
+  "entercoursename": "請輸入課程名稱",
+  "CreateTeacher": "創建老師",
+  "edit": "編輯",
+  "deletebeforeuploading": "課程海報僅支持上傳一張,請刪除後再進行上傳",
+  "specialcolumn": "專欄",
+  "column": "欄目",
+  "college": "學院",
+  "deletethiscourse": "確定刪除此課程嗎?",
+  "ZhijianCourse": "智見課程",
+  "ZhixingCourse": "智行課程",
+  "IntelligentCreationCourse": "智創課程",
+  "xiaokeloading": "小可正在努力生成中,請稍等...",  
+  "stop": "停止",  
+  "Fillinbasicinformation": "填寫基本信息",  
+  "Uploadcoursecontent": "上傳課程內容",  
+  "Uploadcompleted": "上傳完成",  
+  "wantintelligent": "是否開啟智能檢索",  
+  "OutputLanguage": "輸出語言",  
+  "SimplifiedChinese": "簡體中文",  
+  "traditionalChinese": "繁體中文",  
+  "English": "English",  
+  "AddCourse": "添加課程",  
+  "Publish": "是否公開此課程",  
+  "UploadCover": "上傳封面",  
+  "SelectLocalImage": "選擇本地文件",  
+  "RefreshResults": "換一組",  
+  "UpdateCover": "修改封面",  
+  "TeachingClasses": "授課班級",  
+  "SelectTeachingClasses": "請選擇授課班級",  
+  "TaskL": "任務*",  
+  "UntitledTask": "未命名任務",  
+  "ToolL": "工具*",  
+  "LearningContent": "學習內容",  
+  "AddLearningContent": "請添加學習內容",  
+  "Files": "文件",  
+  "TextImages": "圖文",  
+  "Links": "鏈接",  
+  "Code": "代碼",
+  "TaskOverview": "任務概述",
+  "EnterTaskName": "輸入任務名稱",
+  "EnterTaskDescription": "請輸入任務概述",
+  "Expand": "展開任務",
+  "AddTask": "添加任務",
+  "BacktoCourse": "返回課程",
+  "ConfirmUpload": "確認上傳",
+  "SelectTeacCla": "選擇授課班級",
+  "pleasewait": "上傳中,請稍後",
+  "Filename": "文件名稱",
+  "Deleteitem": "確定刪除此項?",
+  "Addtext": "添加富文本",
+  "TextTitle": "文本標題",
+  "EnterTextTitle": "請輸入文本標題",
+  "AddaLink": "添加鏈接",
+  "LinkText": "標題",
+  "Enterlinkdisplaytext": "請輸入鏈接標題",
+  "URL": "鏈接",
+  "EnterURL": "請輸入鏈接",
+  "Llinktextrequired": "請填寫鏈接標題",
+  "copyvalidlink": "系統沒有找到黏貼對象,請首先複製可用於黏貼的鏈接.",
+  "Interactive": "互動類",
+  "Cognitive": "思維類",
+  "Collaborative": "協作類",
+  "Assessment": "測評類",
+  "Evaluation": "評價類",
+  "Programming": "編程類",
+  "SubjectSpecific": "學科類",
+  "Timer": "倒計時",
+  "Picksomeone": "挑人",
+  "AddToolDescription": "添加工具描述",
+  "AddTool": "添加工具",
+  "CollapseTask": "收起任務",
+  "AddDefaultTime": "添加預設時間",
+  "changetime": "提示:點擊「+」或「-」修改倒計時時長",
+  "MindGrid": "思維網格",
+  "EWhiteboard": "電子白板",
+  "Document": "文檔",
+  "MindMap": "思維導圖",
+  "Table": "表格",
+  "applytemplates": "極簡模式添加時不能添加模板,請添加課程後再修改添加模板",
+  "AddFile": "添加文檔",
+  "UploadTemplate": "上傳模板",
+  "AddTable": "添加表格",
+  "Studentgrouping": "學生分組",
+  "Groupsettings": "分組設置",
+  "EnterInteger": "請輸入2-10的數字",
+  "Survey": "問卷調查",
+  "Choicequestion": "選擇題",
+  "QA": "問答",
+  "Fileupload": "作業提交",
+  "Batchupload": "批量上傳",
+  "Matchingquestion": "選擇匹配",
+  "Orderingquestion": "排序",
+  "CreateQuestionnaire": "創建問卷",
+  "EnterTitle": "輸入標題",
+  "SingleChoice": "單選題",
+  "MultipleChoice": "多選題",
+  "Enterquestion": "請輸入題目",
+  "OptionL": "選項*",
+  "onequestion": "至少填寫一個問題",
+  "AddQA": "添加問答",
+  "Question": "問題",
+  "Pleaseenteryourquestion": "請輸入您要問的問題",
+  "UploadQuestionImage": "上傳題目圖片",
+  "TipUpload": "提示:請將所有題目上傳為一張圖片",
+  "AddOptions": "添加選項",
+  "Tipenteroption": "提示:請輸入以上題目的選項內容,此選項為所有題目共享。",
+  "Enteroption": "請輸入選項",
+  "Next": "下一步",
+  "Uploadquestions": "請上傳題目",
+  "Optioncannotbeempty": "添加的選項不能為空",
+  "Duplicateoptions": "選項1和選項2重複了,請修改!",
+  "SelectCorrectOption": "設置每道題目的正確選項",
+  "MatchAnswerstoQuestions": "根據題目選擇正確答案",
+  "SelectCorrectOptionL": "請選擇正確答案",
+  "BackL": "上一步",
+  "setcorrectanswers": "請設置答案",
+  "ZoomOut": "縮小",
+  "ZoomIn": "放大",
+  "ResetL": "復位",
+  "Rotateleft​": "左轉90°",
+  "Rotateright": "右轉90°",
+  "Settings": "排序設置",
+  "QuestionSetup": "題目設置",
+  "Entercardcontent": "請輸入卡片內容",
+  "Entercards": "請在輸入框設置卡片,點擊卡片設置順序",
+  "CorrectOrder": "正確排序",
+  "Noorderset": "暫無排序",
+  "AddQuestion": "添加題目",
+  "completeQuestion": "請將題目*設置完整",
+  "PleaseEntercardcontent": "請填寫卡片內容",
+  "Clickcardtocancelsorting": "點擊卡片取消排序設置",
+  "deletethisquestion": "確定刪除此題目嗎?",
+  "Successfullydelete": "刪除成功",
+  "SelfAssessment": "個人評價",
+  "AddAssessment": "添加評價",
+  "EnterSelfAssessmentCriteria": "請輸入個人評價指標",
+  "SelfAssessmentcriteria": "個人評價指標",
+  "Enterassessmentname": "請填寫評價名稱",
+  "Ratinglevel": "評星等級",
+  "Description": "描述",
+  "Enterdescription": "填寫評價描述",
+  "Pleasecompleteallassessmentfields": "請把評價信息填寫完整",
+  "questionnaire": "問卷調查",
+  "SourceCodeEditing": "源碼編輯",
+  "TurtleProgramming": "海龜編程",
+  "AIAgent": "AI智能體",
+  "Translation": "翻譯",
+  "DigitalCanvas": "數字畫板",
+  "LaTeX": "公式編輯",
+  "Timetable": "時間軸",
+  "EnglishWriting": "英語寫作",
+  "EnglishSpeaking": "英語口語",
+  "CreateEssayTopic": "創建作文題目",
+  "EssayTitle": "作文題目",
+  "Enteressaytitlehere": "請填寫作文題目",
+  "EssayRequirements": "作文要求",
+  "Enteressayrequirements": "請填寫作文要求",
+  "AssessmentSettings": "評價設置",
+  "Preset": "預設",
+  "completethecontent": "請將內容填寫完整!",
+  "assessmenttemplate": "點擊將下列內容設置成評價模板",
+  "SetEnglishSpeakingInformation": "設置英語口語信息",
+  "Title": "標題",
+  "Entertitle": "設置標題",
+  "DescriptionL": "說明",
+  "Enterquestiondescription": "請輸入對該問題的描述",
+  "SetEnglishSpeakingQuestions": "設置英語口語題目",
+  "SelectQuestionType": "題目類型選擇",
+  "OralReading": "朗讀",
+  "WordsPhrases": "單詞/詞組",
+  "SentencesText": "句子/短語",
+  "Topic": "題目",
+  "Dialogue": "對話",
+  "CreateRole": "創建角色",
+  "ThemeStatement": "主題陳述",
+  "CreateNewTheme": "新建主題",
+  "AssessmentTopics": "測評題目",
+  "AssessmentOutline": "測評大綱",
+  "pleaseaddtopic": "暫無內容,請添加題目",
+  "Pleaseentertitle": "請輸入標題",
+  "Input": "輸入內容",
+  "Enterpronounce.": "請輸入需學生朗讀的單詞/詞組",
+  "AddImage": "添加圖片",
+  "AutoGenerate": "智能獲取",
+  "Check": "查看",
+  "Enterpractice.": "請輸入需學生朗讀的句子/短文",
+  "studentanswer.": "請添加需學生回答的口語問題",
+  "enterCharacterName": "請輸入角色名字",
+  "RoleSetting": "測評題目",
+  "CharacterDialogue": "角色對話",
+  "theirroleattributes": "請為學生創設口語助教並設置角色屬性",
+  "CharacterName": "角色名字",
+  "CreateCharacter": "創建角色",
+  "CharacterDefinition": "角色定義",
+  "enterdefinition": "請輸入對該角色的定義",
+  "CharacterGreeting": "角色問候",
+  "entergreeting": "請輸入對該角色的問候話語",
+  "CharacterTest": "角色測試",
+  "enterRoleDefinition": "請輸入角色定義",
+  "enterCharacterGreeting": "請輸入角色問候",
+  "CharacterTestL": "對話測試",
+  "Recordingnow": "正在錄音中,再次點擊麥克風停止錄音...",
+  "SubjectStatement": "主題陳述",
+  "enteroraltopic": "請輸入需學生練習的口語主題和要點",
+  "EntertitleL": "輸入題目",
+  "Enterkeypoints": "輸入要點",
+  "rovidekey": "請輸入對該問題的要點",
+  "SpeechTime": "演講時間",
+  "removetool": "確定刪除此工具嗎?",
+  "Moveup": "上移",
+  "Movedown": "下移",
+  "removetask": "確定刪除此任務嗎?",
+  "Hidetask": "收起任務",
+  "Expandtask": "展開任務",
+  "entercoursenameL": "請補充填寫課程名稱",
+  "Savechanges": "是否保存已編輯內容?",
+  "Successfullyadd": "新增成功",
+  "AdvancedSettings": "高級設置",
+  "CourseAccessSettings": "課程權限設置",
+  "TeachingClass": "授課班級",
+  "SelectTeachingClass": "請選擇授課班級",
+  "CourseDescription": "課程簡要描述",
+  "EnterCourseDescription": "請輸入課程簡要描述",
+  "ObjectivesManagement": "目標管理",
+  "enterObjectiveManagement": "請添加目標管理",
+  "DeleteL": "清除",
+  "AddCollaborator": "添加協同人員",
+  "SearchMembers": "搜索協同人員",
+  "ImportObjectives": "輸入目標",
+  "Objective": "目標名稱",
+  "OwnerL": "負責人",
+  "Operate": "操作",
+  "Import": "導入",
+
+  "SuccessfullyImport": "導入成功",
+  "ObjectiveManagementSettings": "目標管理設置",
+  "Created": "創建時間",
+  "Duplicate": "複製",
+  "AddObjectiveL": "添加目標",
+  "Searchname": "請輸入名稱",
+  "NameL": "目標管理名稱",
+  "EnterObjectivetitle": "請輸入名稱",
+  "PrimaryObjective": "一級目標",
+  "Addcontent": "請添加內容...",
+  "AddDescription": "添加目標描述",
+  "SecondaryObjective": "二級目標",
+  "TertiaryObjective": "三級目標",
+  "Viewmode": "查看模式",
+  "TreeView": "目標樹",
+  "CompassView": "目標羅盤",
+  "BoardView": "目標看板",
+  "Addcategorized": "添加分類目標,才能識別內容哦!",
+  "Pleaseenterobjectiv": "請輸入目標",
+  "SelectTemplate": "選擇目標模板",
+  "TeacherPBLTraining": "教師PBL培訓",
+  "MoralEducationEvaluation": "德育評價",
+  "NewStage": "新建階段",
+  "SelectCourseTemplate": "選擇課程模板",
+  "Stage": "第*階段",
+  "enterStageName": "請輸入階段名稱",
+  "deletestage": "確定刪除此階段嗎?",
+  "3SEtemplate": "3SE模板",
+  "ChineseReading": "語文閱讀教學",
+  "EnglishReading": "英語閱讀教學",
+  "5EXTeachingMode": "5EX教學模式",
+  "5ETeachingMode": "5E教學模式",
+  "Confirmtemplateselection": "確定選擇課程模板嗎?此操作將刪除所有已編輯課程內容。",
+  "Tool": "工具*",
+  "Preliminaryintroduction": "項目初步介紹",
+  "Tipformula": "提示:如輸入數學公式需加符號包裹。例:符號包裹。例:a^2 + b^2 = c^2$",
+  "Dimension": "評價維度",
+  "EnterDimension": "填寫評價維度",
+  "DimensionDescription": "維度描述",
+  "EnterDescription": "填寫維度描述",
+  "AddResourceTemplate": "添加資源模板",
+  "TemplateName": "模板名稱",
+  "Selectcategory": "選擇一級分類",
+  "Works": "作品",
+  "Abilities": "能力",
+  "Behaviors": "行為",
+  "AssessmentResource": "評價資源",
+  "PublicResources": "公共資源",
+  "PersonalResources": "個人資源",
+  "OrganizationalResources": "組隊資源",
+  "PrimaryClassification": "一級分類",
+  "SecondaryClassification": "二級分類",
+  "Speech": "演講",
+  "Thesis": "論文",
+  "Promotionalvideo": "宣傳影片",
+  "PromotionalposterWebsite": "宣傳海報",
+  "Artifacts": "人工製品",
+  "Researchpaper": "探究論文",
+  "website": "網站",
+  "Novel": "小說",
+  "Debate": "辯論",
+  "ResearchReport": "研究報告",
+  "ResearchPlan": "研究計畫",
+  "Teamwork": "團隊協作",
+  "DigitalLiteracy": "數位素養",
+  "Selfmanagement": "自我管理",
+  "Creativity": "創造力",
+  "Communication": "溝通交流",
+  "CriticalThinking": "批判性思考",
+  "MetaRecognition": "後設認知",
+  "Problemsolve": "問題解決",
+  "LiteratureResearch": "文獻研究",
+  "DataProcess": "資料處理",
+  "LearningProgress": "學習歷程",
+  "LearningProformance": "學習表現",
+  "SearchforResources": "搜尋資源",
+  "NoItemsFound": "暫無內容",
+  "SwitchMode": "切換模式",
+  "Unnamedstage": "未命名階段",
+  "Stagesequence": "階段順序",
+  "enterstagetitle": "請輸入階段標題",
+  "entertaskdescription": "請輸入任務描述",
+  "AIapplication": "AI application",
+  "Intelligentapplication": "智慧應用",
+  "CodeEditor": "代碼編輯器",
+  "instructionaldesign": "教學設計",
+  "target": "目標",
   "resource": "資源",
-  "smartApp": "智能應用",
-  "codeEditor": "代碼編輯器",
-  "otherAttachment": "其他附件",
-  "uploadingPleaseWait": "上傳中,請稍後",
-  "taskOverview": "任務概述",
-  "inputTaskName": "輸入任務名稱",
-  "pleaseEnterTaskDescription": "請輸入任務描述",
-  "interact": "互動類",
-  "think": "思維類",
-  "collab": "協作類",
-  "assess": "測評類",
-  "eval": "評價類",
-  "program": "編程類",
-  "subject": "學科類",
+  "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": "其他",
-  "moveUp": "上移",
-  "moveDown": "下移",
-  "material": "素材庫",
-  "learnData": "學習資料",
-  "countdown": "倒計時",
-  "pick": "挑人",
-  "stuGroup": "學生分組",
-  "interVideo": "交互視頻",
-  "appCenter": "應用中心",
-  "thinkGrid": "思維網格",
-  "whiteboard": "電子白板",
+  "CreateMultipleChoiceQuestions": "創建選擇題",
+  "MaterialLibrary": "素材庫",
   "note": "便簽",
-  "collabDoc": "協同文檔",
-  "document": "文檔",
-  "mindmap": "思維導圖",
-  "table": "表格",
-  "rubric": "量規評分",
-  "survey": "問卷調查",
-  "choice": "選擇題",
-  "qa": "問答",
-  "homework": "作業提交",
-  "batchUp": "批量上傳",
-  "personal": "個人評價",
-  "match": "選擇匹配",
-  "sort": "排序",
-  "uploadAud": "上傳音頻",
-  "trainPlat": "訓練平台",
-  "aiExp": "AI體驗",
-  "sourceEdit": "源碼編輯",
-  "turtle": "海龜編程",
-  "aiAgent": "AI智能體",
-  "translate": "翻譯",
-  "digital": "數字畫板",
-  "formula": "公式編輯",
-  "selected": "已選擇",
-  "addTool": "添加工具",
-  "addToolDesc": "添加工具描述",
-  "expandTask": "展開任務",
-  "collapseTask": "收起任務",
-  "addTask": "添加任務",
-  "returnCourse": "返回課程",
-  "confirmUp": "確認上傳",
-  "uploadCont": "上傳課程內容",
-  "courseDesign": "課程設計",
-  "targetMgmt": "目標管理",
-  "engWrite": "英語寫作",
-  "engSpeak": "英語口語",
-  "selectTemplate": "請選擇合適的課程模板",
-  "taskMode": "任務模式",
-  "simpleMode": "簡易模式",
-  "stage": "階段",
-  "stageTitle": "階段標題",
-  "taskName": "任務名稱",
-  "taskDesc": "任務描述",
-  "addFile": "添加文件",
-  "addImgText": "添加圖文",
-  "addLink": "添加鏈接",
-  "addResource": "添加資源",
-  "embedCode": "嵌入代碼",
-  "teachDesign": "教學設計",
-  "teachCourse": "教學課件",
-  "teachVideo": "教學視頻",
-  "teachAudio": "教學音頻",
-  "learnSheet": "學習單",
-  "practice": "練習內容",
-  "evalContent": "評價內容",
-  "evalSet": "評價設置",
-  "evalName": "評價名稱",
-  "fillEvalName": "填寫評價名稱",
-  "starLevel": "評星等級",
-  "evalDesc": "評價描述",
-  "fillEvalDesc": "填寫評價描述",
-  "target": "目標",
-  "add": "添加",
-  "curTargetMgmt": "當前使用目標管理",
-  "switchMode": "切換模式",
-  "targetTree": "目標樹",
-  "targetCompass": "目標羅盤",
-  "targetBoard": "目標看板",
+  "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": "展開",
-  "magicBox": "魔盒識字",
-  "game24": "24點",
-  "mathBoard": "數學畫板",
-  "simDrive": "模擬駕駛",
-  "pathSearch": "路徑搜索",
-  "deepLearn": "深度學習",
-  "allHistory": "全歷史"
+  "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": "有學生學號重複",
+
+  "data11_6": "11.6",
+  "PPTmode":"PPT模式",
+  "Codeupload": "代碼上傳",
+  "StageTitle": "階段標題",
+  
+  "data11_7": "11.7",
+  "reselectfile": "添加成上傳文件大於80兆,請重新選擇文件!",
+  "Onlyzipfiles": "只支援上傳zip文件",
+  "Failedzipfile": "解析zip文件失敗",
+  "Nopageselected": "未選擇主頁面",
+  
+  "data11_12": "11.12",
+  "joinone": "沒有加入分組請先加入分組",
+  "TaskLOverview": "任務*概述",
+  "Putleacontent": "收起學習內容",
+  "Expandleacontent": "展開學習內容",
+
+
+  "Menuitems":"教研室"
+
+
+
+  
+
+
 }