فهرست منبع

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

lsc 14 ساعت پیش
والد
کامیت
6338560d82

+ 1 - 1
dist/index.html

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

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/css/app.d4246276853360cdc96f2fc979ae97cc.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/css/app.d4246276853360cdc96f2fc979ae97cc.css.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/app.28e5927a59378fd5f309.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/app.28e5927a59378fd5f309.js.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/manifest.23ea04dc469b57e2b4f8.js.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/workPage-manifest.2ece51fa34be51c8610a.js.map


+ 16 - 12
src/components/pages/EnglishVoice/component/check.vue

@@ -35,58 +35,62 @@ export default {
     },
     data() {
         return {
-            checkData:[
+            checkArray:[]
+        }
+    },
+    computed: {
+        checkData() {
+            return [
                 {
-                    name:'朗读',
+                    name: this.lang.OralReading,
                     open: true,
                     children:[
                         {
                             icon:icon_check_word,
-                            name:'单词/词组',
+                            name: this.lang.WordsPhrases,
                             type:'word'
                         },
                         {
                             icon:icon_check_sentence,
-                            name:'句子/短文',
+                            name: this.lang.SentencesText,
                             type:'sentence'
                         }
                     ]
                 },
                 {
-                    name:'回答',
+                    name: this.lang.ssAnswerText,
                     open: true,
                     children:[
                         {
                             icon:icon_check_qa,
-                            name:'题目',
+                            name: this.lang.Topic,
                             type:'QA'
                         }
                     ]
                 },
                 {
-                    name:'对话',
+                    name: this.lang.Dialogue,
                     open: true,
                     children:[
                         {
                             icon:icon_check_addUser,
-                            name:'创建角色',
+                            name: this.lang.CreateRole,
                             type:'createRole'
                         }
                     ]
                 },
                 {
-                    name:'主题陈述',
+                    name: this.lang.ThemeStatement,
                     open: true,
                     children:[
                         {
                             icon:icon_check_theme,
-                            name:'新建主题',
+                            name: this.lang.CreateNewTheme,
                             type:'theme'
                         }
                     ]
                 }
-            ],
-            checkArray:[]
+            ]
         }
     },
     methods: {

+ 12 - 12
src/components/pages/EnglishVoice/component/component/createRole.vue

@@ -1,43 +1,43 @@
 <template>
     <div class="o_box">
         <div class="o_content">
-            <span>角色名字</span>
+            <span>{{ lang.CharacterName }}</span>
             <textarea v-autoHeight="38" rows="1" class="binfo_input binfo_textarea" cols v-model="checkJson.content"
-                placeholder="创建角色" @change="setJson"></textarea>
+                :placeholder="lang.CreateCharacter" @change="setJson"></textarea>
         </div>
         <div class="o_content">
-            <span>添加图片</span>
+            <span>{{ lang.AddImage }}</span>
             <div class="o_uploadbox_img" v-if="checkJson.img">
                 <div class="pic_mask">
-                    <span @click="checkImg(checkJson.img)">查看</span>
-                    <span @click="deleteImg()">删除</span>
+                    <span @click="checkImg(checkJson.img)">{{ lang.ssView }}</span>
+                    <span @click="deleteImg()">{{ lang.ssDelete }}</span>
                 </div>
                 <img :src="checkJson.img" alt="">
             </div>
-            <div class="o_uploadbox" v-if="!checkJson.img" @click="getImg()">智能获取</div>
+            <div class="o_uploadbox" v-if="!checkJson.img" @click="getImg()">{{ lang.AutoGenerate }}</div>
             <div class="o_uploadbox" style="padding: 0 6px;" @click="addImg($event)" v-if="!checkJson.img">
                 <span class="icon_pic"></span>
                 <input type="file" accept="image/*" style="display: none" @change="beforeUpload($event)" />
             </div>
         </div>
         <div class="o_content">
-            <span>角色定义</span>
+            <span>{{ lang.CharacterDefinition }}</span>
             <textarea v-autoHeight="38" rows="1" class="binfo_input binfo_textarea" cols v-model="checkJson.content2"
-                placeholder="请输入对改角色的定义" @change="setJson"></textarea>
+                :placeholder="lang.enterdefinition" @change="setJson"></textarea>
         </div>
         <div class="o_content">
-            <span>角色问候</span>
+            <span>{{ lang.CharacterGreeting }}</span>
             <textarea v-autoHeight="38" rows="1" class="binfo_input binfo_textarea" cols v-model="checkJson.content3"
-                placeholder="请输入对改角色的问候话语" @change="setJson"></textarea>
+                :placeholder="lang.entergreeting" @change="setJson"></textarea>
         </div>
         <div class="o_content">
             <span></span>
-            <button class="c_pub_button_add" @click="openTest">角色测试</button>
+            <button class="c_pub_button_add" @click="openTest">{{ lang.CharacterTest }}</button>
         </div>
         <div v-if="proVisible" class="mask">
             <div class="progressBox">
                 <div class="lbox">
-                    <img src="../../../../../assets/loading.gif" />上传中,请稍后
+                    <img src="../../../../../assets/loading.gif" />{{ lang.ssUploadWait }}
                 </div>
                 <div style="margin-bottom: 10px">
                     <span>{{

+ 5 - 5
src/components/pages/EnglishVoice/component/component/gptImg.vue

@@ -1,19 +1,19 @@
 <template>
-    <el-dialog title="智能获取" :visible.sync="sysPicVisible" :append-to-body="true" width="710px" :before-close="handleClose"
+    <el-dialog :title="lang.AutoGenerate" :visible.sync="sysPicVisible" :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.ssSearchImageKey" 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.ssChangeGrp }}</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.ssEnterKeywordSearch }}</div>
                 <div v-for="(sys, sysIndex) in imageList" :key="sysIndex" class="sysPic">
                     <img :src="sys.url" alt="" @click="chooseSysPic2(sys.url)" />
                 </div>
@@ -60,7 +60,7 @@ export default {
         searchImage() {
             var _this = this;
             if (_this.searchImageValue == "") {
-                _this.$message.error("请输入关键词");
+                _this.$message.error(_this.lang.ssEnterKeyword);
                 return
             }
             _this.imageList = []

+ 7 - 7
src/components/pages/EnglishVoice/component/component/qa2.vue

@@ -1,20 +1,20 @@
 <template>
   <div class="o_box">
     <div class="o_content">
-      <span>输入内容</span>
+      <span>{{ lang.ssInputContent }}</span>
       <textarea v-autoHeight="38" rows="1" class="binfo_input binfo_textarea" cols v-model="checkJson.content"
-        placeholder="请添加需学生回答的口语问题" @change="setJson"></textarea>
+        :placeholder="lang.studentanswer" @change="setJson"></textarea>
     </div>
     <div class="o_content">
-      <span>添加图片</span>
+      <span>{{ lang.AddImage }}</span>
       <div class="o_uploadbox_img" v-if="checkJson.img">
         <div class="pic_mask">
-          <span @click="checkImg(checkJson.img)">查看</span>
-          <span @click="deleteImg()">删除</span>
+          <span @click="checkImg(checkJson.img)">{{ lang.ssView }}</span>
+          <span @click="deleteImg()">{{ lang.ssDelete }}</span>
         </div>
         <img :src="checkJson.img" alt="">
       </div>
-      <div class="o_uploadbox" v-if="!checkJson.img" @click="getImg()">智能获取</div>
+      <div class="o_uploadbox" v-if="!checkJson.img" @click="getImg()">{{ lang.AutoGenerate }}</div>
       <div class="o_uploadbox" style="padding: 0 6px;" @click="addImg($event)" v-if="!checkJson.img">
         <span class="icon_pic"></span>
         <input type="file" accept="image/*" style="display: none" @change="beforeUpload($event)" />
@@ -23,7 +23,7 @@
     <div v-if="proVisible" class="mask">
       <div class="progressBox">
         <div class="lbox">
-          <img src="../../../../../assets/loading.gif" />上传中,请稍后
+          <img src="../../../../../assets/loading.gif" />{{ lang.ssUploadWait }}
         </div>
         <div style="margin-bottom: 10px">
           <span>{{

+ 7 - 7
src/components/pages/EnglishVoice/component/component/sentence.vue

@@ -1,20 +1,20 @@
 <template>
     <div class="o_box">
         <div class="o_content">
-            <span>输入内容</span>
+            <span>{{ lang.ssInputContent }}</span>
             <textarea v-autoHeight="38" rows="1" class="binfo_input binfo_textarea" cols v-model="checkJson.content"
-                placeholder="请输入需学生朗读的句子/短文" @change="setJson"></textarea>
+                :placeholder="lang.Enterpractice" @change="setJson"></textarea>
         </div>
         <div class="o_content">
-            <span>添加图片</span>
+            <span>{{ lang.AddImage }}</span>
             <div class="o_uploadbox_img" v-if="checkJson.img">
                 <div class="pic_mask">
-                    <span @click="checkImg(checkJson.img)">查看</span>
-                    <span @click="deleteImg()">删除</span>
+                    <span @click="checkImg(checkJson.img)">{{ lang.ssView }}</span>
+                    <span @click="deleteImg()">{{ lang.ssDelete }}</span>
                 </div>
                 <img :src="checkJson.img" alt="">
             </div>
-            <div class="o_uploadbox" v-if="!checkJson.img" @click="getImg()">智能获取</div>
+            <div class="o_uploadbox" v-if="!checkJson.img" @click="getImg()">{{ lang.AutoGenerate }}</div>
             <div class="o_uploadbox" style="padding: 0 6px;" @click="addImg($event)" v-if="!checkJson.img">
                 <span class="icon_pic"></span>
                 <input type="file" accept="image/*" style="display: none" @change="beforeUpload($event)" />
@@ -23,7 +23,7 @@
         <div v-if="proVisible" class="mask">
             <div class="progressBox">
                 <div class="lbox">
-                    <img src="../../../../../assets/loading.gif" />上传中,请稍后
+                    <img src="../../../../../assets/loading.gif" />{{ lang.ssUploadWait }}
                 </div>
                 <div style="margin-bottom: 10px">
                     <span>{{

+ 4 - 4
src/components/pages/EnglishVoice/component/component/testRole.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog title="对话测试" width="400px" :visible.sync="dataDialog" :append-to-body="true" :before-close="handleClose"
+    <el-dialog :title="lang.CharacterTestL" width="400px" :visible.sync="dataDialog" :append-to-body="true" :before-close="handleClose"
         class="dialog_diy">
         <div>
             <div class="dialog_content">
@@ -18,7 +18,7 @@
                 </div>
             </div>
             <div class="dialog_answer" v-loading="isloading">
-                <span v-if="isRecord">正在录音中,再次点击话筒停止录音...</span>
+                <span v-if="isRecord">{{ lang.Recordingnow }}</span>
                 <!-- -->
                 <img src="../../../../../assets/icon/englishVoice/icon_voice.png" alt=""  @click="startRecorder">
                 <input type="file" style="display: none;" @change="fileChange">
@@ -156,7 +156,7 @@ export default {
                     (error) => {
                         _this.isRecord = false;
                         // _this.$message.error(`${error.name} : ${error.message}`);
-                        _this.$message.error(`没有找到可使用的麦克风,或者您没有允许此网页使用麦克风`);
+                        _this.$message.error(_this.lang.ssMicNotFoundDenied);
                         // 出错了
                         console.log(`${error.name} : ${error.message}`);
                     }
@@ -213,7 +213,7 @@ export default {
          * */
         getMp3Data() {
             if (!recorder.fileSize) {
-                this.$message.error("请录音后在上传语音");
+                this.$message.error(this.lang.ssRecordBeforeUpload);
                 return;
             }
             

+ 8 - 8
src/components/pages/EnglishVoice/component/component/theme.vue

@@ -1,14 +1,14 @@
 <template>
     <div class="o_box">
         <div class="o_content">
-            <span>输入题目</span>
+            <span>{{ lang.EntertitleL }}</span>
             <textarea v-autoHeight="38" rows="1" class="binfo_input binfo_textarea" cols v-model="checkJson.content"
-                placeholder="主题陈述" @change="setJson"></textarea>
+                :placeholder="lang.ThemeStatement" @change="setJson"></textarea>
         </div>
         <div class="o_content">
-            <span>输入要点</span>
+            <span>{{ lang.Enterkeypoints }}</span>
             <textarea v-autoHeight="38" rows="1" class="binfo_input binfo_textarea" cols v-model="checkJson.content2"
-                placeholder="请输入对该问题得要点" @change="setJson"></textarea>
+                :placeholder="lang.rovidekey" @change="setJson"></textarea>
         </div>
         <!-- <div class="o_content">
             <span>准备时间</span>
@@ -16,8 +16,8 @@
             <span style="margin-left: 10px;">min</span>
         </div> -->
         <div class="o_content">
-            <span>演讲时间</span>
-            <el-input v-model="checkJson.oTime" placeholder="请输入演讲时间" style="width: 150px"  @change="numberPan('oTime')"></el-input>
+            <span>{{ lang.SpeechTime }}</span>
+            <el-input v-model="checkJson.oTime" :placeholder="lang.ssEnterSpeechTime" style="width: 150px"  @change="numberPan('oTime')"></el-input>
             <span style="margin-left: 10px;">min</span>
             <!-- <textarea v-autoHeight="38" rows="1" class="binfo_input binfo_textarea" cols v-model="checkJson.content2"
                 placeholder="请输入演讲时间" @change="setJson"></textarea> -->
@@ -81,10 +81,10 @@ export default {
         },
         numberPan(time) {
             if (!(/^-?\d+(\.\d+)?$/.test(this.checkJson[time])) || this.checkJson[time] <= 0) {
-                this.$message.error('请输入大于0的数字')
+                this.$message.error(this.lang.ssEnterPositiveNum)
                 this.checkJson[time] = 1
             }else if(!this.checkJson[time]){
-                this.$message.error('请输入大于0的数字')
+                this.$message.error(this.lang.ssEnterPositiveNum)
                 this.checkJson[time] = 1
             }
             this.$emit('setJson', this.checkJson)

+ 7 - 7
src/components/pages/EnglishVoice/component/component/word.vue

@@ -1,20 +1,20 @@
 <template>
     <div class="o_box">
         <div class="o_content">
-            <span>输入内容</span>
+            <span>{{ lang.ssInputContent }}</span>
             <textarea v-autoHeight="38" rows="1" class="binfo_input binfo_textarea" cols v-model="checkJson.content"
-                placeholder="请输入需学生朗读的单词/词组" @change="setJson"></textarea>
+                :placeholder="lang.Enterpronounce" @change="setJson"></textarea>
         </div>
         <div class="o_content">
-            <span>添加图片</span>
+            <span>{{ lang.AddImage }}</span>
             <div class="o_uploadbox_img" v-if="checkJson.img">
                 <div class="pic_mask">
-                    <span @click="checkImg(checkJson.img)">查看</span>
-                    <span @click="deleteImg()">删除</span>
+                    <span @click="checkImg(checkJson.img)">{{ lang.ssView }}</span>
+                    <span @click="deleteImg()">{{ lang.ssDelete }}</span>
                 </div>
                 <img :src="checkJson.img" alt="">
             </div>
-            <div class="o_uploadbox" v-if="!checkJson.img" @click="getImg()">智能获取</div>
+            <div class="o_uploadbox" v-if="!checkJson.img" @click="getImg()">{{ lang.AutoGenerate }}</div>
             <div class="o_uploadbox" style="padding: 0 6px;" @click="addImg($event)" v-if="!checkJson.img">
                 <span class="icon_pic"></span>
                 <input type="file" accept="image/*" style="display: none" @change="beforeUpload($event)" />
@@ -23,7 +23,7 @@
         <div v-if="proVisible" class="mask">
             <div class="progressBox">
                 <div class="lbox">
-                    <img src="../../../../../assets/loading.gif" />上传中,请稍后
+                    <img src="../../../../../assets/loading.gif" />{{ lang.ssUploadWait }}
                 </div>
                 <div style="margin-bottom: 10px">
                     <span>{{

+ 25 - 23
src/components/pages/EnglishVoice/component/order.vue

@@ -2,7 +2,7 @@
   <div class="o_box">
     <div class="o_none_box" v-if="!checkArray.length">
       <img src="../../../../assets/icon/englishVoice/icon_check_none.png" alt="">
-      <span>暂无内容,请添加题目</span>
+      <span>{{ lang.pleaseaddtopic }}</span>
     </div>
     <div class="o_check_box" v-else>
       <div class="o_child" v-for="(item, index) in checkArray" :key="index">
@@ -15,11 +15,11 @@
             :class="{ icon_word: item.type == 'word', icon_sentence: item.type == 'sentence', icon_QA: item.type == 'QA', icon_theme: item.type == 'theme', icon_createRole: item.type == 'createRole' }"></span>
           </el-tooltip>
           <span class="title">{{ getTitle(item) }}</span>
-					<span class="t_brief" v-if="item.type == 'createRole' && editType==2">(请为学生创设口语助教并设置角色属性)</span>
-					<span class="t_brief" v-if="item.type == 'theme'  && editType==2">(请输入需学生练习的口语主题和要点)</span>
+					<span class="t_brief" v-if="item.type == 'createRole' && editType==2">({{ lang.theirroleattributes }})</span>
+					<span class="t_brief" v-if="item.type == 'theme'  && editType==2">({{ lang.enteroraltopic }})</span>
           <div class="edit_btn">
             <button class="c_pub_button_add" @click.stop="openTest(item)" style="margin-right: 15px;"
-              v-if="editType == 2 && item.type == 'createRole' && checkType != index">角色测试</button>
+              v-if="editType == 2 && item.type == 'createRole' && checkType != index">{{ lang.CharacterTest }}</button>
             <div class="pic" v-if="editType == 2 && item.img && checkType != index">
               <div class="pic_mask">
                 <span class="delete" @click.stop="deleteImg(index)"></span>
@@ -97,32 +97,34 @@ export default {
     //   };
     // },
     getType(){
+      const lang = this.lang
       return function (item) {
         if (item.type == 'word') {
-          return '单词/词组'
+          return lang.WordsPhrases
         } else if (item.type == 'sentence') {
-          return '句子/短文'
+          return lang.SentencesText
         } else if (item.type == 'QA') {
-          return '问题'
+          return lang.Question
         } else if (item.type == 'theme') {
-          return '主题陈述'
+          return lang.ThemeStatement
         } else if (item.type == 'createRole') {
-          return '角色对话'
+          return lang.CharacterDialogue
         }
       }
     },
     getTitle() {
+      const lang = this.lang
       return function (item) {
         if (item.type == 'word' && !item.content) {
-          return '单词/词组'
+          return lang.WordsPhrases
         } else if (item.type == 'sentence' && !item.content) {
-          return '句子/短文'
+          return lang.SentencesText
         } else if (item.type == 'QA' && !item.content) {
-          return '问题'
+          return lang.Question
         } else if (item.type == 'theme' && !item.content) {
-          return '主题陈述'
+          return lang.ThemeStatement
         } else if (item.type == 'createRole' && !item.content) {
-          return '角色对话'
+          return lang.CharacterDialogue
         } else {
           return item.content
         }
@@ -152,9 +154,9 @@ export default {
       this.$emit('setJson', this.checkArray)
     },
     deleteJ(index) {
-      this.$confirm('确定删除该题目吗?', "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.ssDeleteQues, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -165,9 +167,9 @@ export default {
         .catch(() => { });
     },
     deleteImg(index) {
-      this.$confirm('确定删除该题目的图片吗?', "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
+      this.$confirm(this.lang.ssDeleteQuesImg, this.lang.tip, {
+        confirmButtonText: this.lang.Confirm,
+        cancelButtonText: this.lang.Cancel,
         type: "warning",
       })
         .then(() => {
@@ -178,17 +180,17 @@ export default {
     },
     openTest(json) {
       if (json.content == '') {
-        this.$message.error(`请输入角色名字`);
+        this.$message.error(this.lang.enterCharacterName);
         type = 2
         return;
       }
       if (json.content2 == '') {
-        this.$message.error(`请输入角色定义`);
+        this.$message.error(this.lang.enterRoleDefinition);
         type = 2
         return;
       }
       if (json.content3 == '') {
-        this.$message.error(`请输入角色问候`);
+        this.$message.error(this.lang.enterCharacterGreeting);
         type = 2
         return;
       }

+ 7 - 3
src/components/pages/aiAddCourse/addCourse.vue

@@ -7249,9 +7249,12 @@
         <div class="pjCss" style="width: 100%">
           <div v-if="rateJson.length" class="elist_input" style="height: 360px; overflow: auto">
             <div v-for="(eItem, eIndex) in rateJson" :key="eIndex" class="elist_input_box">
-              <span style="min-width: 100px; text-align: right">{{ lang.ssEvaCriteria }}</span>
-              <input type="input" v-model="eItem.value" :placeholder="lang.ssFillEvaDim" />
-              <div class="remove" @click="deletRateList(eIndex)"></div>
+              <div style="display: flex;">
+                <span style="min-width: 100px; text-align: right">{{ lang.ssEvaCriteria }}</span>
+                <input type="input" v-model="eItem.value" :placeholder="lang.ssFillEvaDim" />
+                <div class="remove" @click="deletRateList(eIndex)"></div>
+              </div>
+             
               <div style="width: 100%; display: flex">
                 <span style="min-width: 100px; text-align: right">{{ lang.ssRatingLevel }}</span>
                 <el-rate v-model="eItem.score" disabled></el-rate>
@@ -29141,6 +29144,7 @@ ol {
   line-height: 36px;
   color: rgb(82, 82, 82);
   min-width: 80px;
+  flex-shrink: 0;
 }
 
 .elist_input .elist_input_box .remove {

+ 6 - 3
src/components/pages/aiEasy/addCourse.vue

@@ -6670,9 +6670,11 @@
         <div class="pjCss" style="width: 100%">
           <div v-if="rateJson.length" class="elist_input" style="height: 360px; overflow: auto">
             <div v-for="(eItem, eIndex) in rateJson" :key="eIndex" class="elist_input_box">
-              <span style="min-width: 100px; text-align: right">{{ lang.SelfAssessmentcriteria }}</span>
-              <input type="input" v-model="eItem.value" :placeholder="lang.EnterDimension" />
-              <div class="remove" @click="deletRateList(eIndex)"></div>
+              <div style="display: flex;">
+                <span style="min-width: 100px; text-align: right">{{ lang.SelfAssessmentcriteria }}</span>
+                <input type="input" v-model="eItem.value" :placeholder="lang.EnterDimension" />
+                <div class="remove" @click="deletRateList(eIndex)"></div>
+              </div>
               <div style="width: 100%; display: flex">
                 <span style="min-width: 100px; text-align: right">{{ lang.Ratinglevel }}</span>
                 <el-rate v-model="eItem.score" disabled></el-rate>
@@ -28438,6 +28440,7 @@ ol {
   line-height: 36px;
   color: rgb(82, 82, 82);
   min-width: 80px;
+  flex-shrink: 0;
 }
 
 .elist_input .elist_input_box .remove {

+ 3 - 0
src/components/pages/easy/addCourse.vue

@@ -7871,6 +7871,7 @@
               :key="eIndex"
               class="elist_input_box"
             >
+            <div style="display: flex;">
               <span style="min-width: 100px; text-align: right"
                 >{{ lang.ssEvaCriteria }}</span
               >
@@ -7880,6 +7881,7 @@
                 :placeholder="lang.ssFillEvaName"
               />
               <div class="remove" @click="deletRateList(eIndex)"></div>
+            </div>
               <div style="width: 100%; display: flex">
                 <span style="min-width: 100px; text-align: right"
                   >{{ lang.ssRatingLevel }}</span
@@ -16908,6 +16910,7 @@ ol {
   line-height: 36px;
   color: rgb(82, 82, 82);
   min-width: 80px;
+  flex-shrink: 0;
 }
 
 .elist_input .elist_input_box .remove {

+ 5 - 2
src/components/pages/newCourse/addCourse.vue

@@ -2172,7 +2172,7 @@
                                   style="margin-right: 20px; font-weight: bold"
                                   :id="'gj' + itemTaskIndex + '' + toolIndex"
                                 >
-                                  {{ lang.ssTool.replace(/\*/g, (toolIndex + 1)) }}
+                                  {{ lang.ssTool.replace(/\*/g, (toolIndex + 1)) }}
                                 </div>
                                 <div class="chooseWho">
                                   <div
@@ -4233,7 +4233,7 @@
                                   style="margin-right: 20px; font-weight: bold"
                                   :id="'gj' + itemTaskIndex + '' + toolIndex"
                                 >
-                                  {{ lang.ssTool.replace(/\*/g, (toolIndex + 1)) }}
+                                  {{ lang.ssTool.replace(/\*/g, (toolIndex + 1)) }}
                                 </div>
                                 <div
                                   class="remove"
@@ -6863,6 +6863,7 @@
               :key="eIndex"
               class="elist_input_box"
             >
+            <div style="display: flex;">
               <span style="min-width: 100px; text-align: right"
                 >{{ lang.ssEvaCriteria }}</span
               >
@@ -6872,6 +6873,7 @@
                 :placeholder="lang.ssFillEvaDim"
               />
               <div class="remove" @click="deletRateList(eIndex)"></div>
+            </div>
               <div style="width: 100%; display: flex">
                 <span style="min-width: 100px; text-align: right"
                   >{{ lang.ssRatingLevel }}</span
@@ -17398,6 +17400,7 @@ ol {
   line-height: 36px;
   color: rgb(82, 82, 82);
   min-width: 80px;
+  flex-shrink: 0;
 }
 
 .elist_input .elist_input_box .remove {

+ 9 - 3
src/lang/cn.json

@@ -382,12 +382,12 @@
   "pleaseaddtopic": "暂无内容,请添加题目",
   "Pleaseentertitle": "请输入标题",
   "Input": "输入内容",
-  "Enterpronounce.": "请输入需学生朗读的单词/词组",
+  "Enterpronounce": "请输入需学生朗读的单词/词组",
   "AddImage": "添加图片",
   "AutoGenerate": "智能获取",
   "Check": "查看",
-  "Enterpractice.": "请输入需学生朗读的句子/短文",
-  "studentanswer.": "请添加需学生回答的口语问题",
+  "Enterpractice": "请输入需学生朗读的句子/短文",
+  "studentanswer": "请添加需学生回答的口语问题",
   "enterCharacterName": "请输入角色名字",
   "RoleSetting": "测评题目",
   "CharacterDialogue": "角色对话",
@@ -409,6 +409,7 @@
   "Enterkeypoints": "输入要点",
   "rovidekey": "请输入对该问题的要点",
   "SpeechTime": "演讲时间",
+  "ssEnterSpeechTime": "请输入演讲时间",
   "removetool": "确定删除此工具吗?",
   "Moveup": "上移",
   "Movedown": "下移",
@@ -1057,6 +1058,7 @@
   "ssDeleteTool":"确定删除此工具吗?",
   "ssDeleteSucc":"删除成功",
   "ssDeleteQues":"确定删除此题目吗?",
+  "ssDeleteQuesImg":"确定删除该题目的图片吗?",
   "ssDeleteTask":"确定删除此任务吗?",
   "ssSwitchTaskDel":"切换任务顺序将删除所有工具的提交成果,是否继续此操作?",
   "ssInDev":"功能正在开发中",
@@ -1120,6 +1122,7 @@
   "ssSetComplete":"请将题目*设置完整。",
   "ssUploadSucc":"上传成功",
   "ssInputNum1":"请输入大于1的数字",
+  "ssEnterPositiveNum":"请输入大于0的数字",
   "ssFillInfo":"请将信息填写完整!",
   "ssInputCode":"请输入至少四位数字或英文组合的随机码",
   "ssCodeDup":"已有此随机码,不能重复",
@@ -1590,6 +1593,7 @@
   "ssQATool":"问答工具",
   "ssQuestionT":"提问:",
   "ssAnswer":"回答:",
+  "ssAnswerText":"回答",
   "ssDocTool":"文档工具",
   "ssDefaultDesc":"根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。",
   "ssCorrect":"回答正确",
@@ -1825,6 +1829,8 @@
   "ssHumanities":"人文",
   "ssSearchImageKey":"搜索图片关键字",
   "ssEnterKeywordSearch":"请输入关键词搜索图片",
+  "ssMicNotFoundDenied":"没有找到可使用的麦克风,或者您没有允许此网页使用麦克风",
+  "ssRecordBeforeUpload":"请录音后在上传语音",
   "ssEnterModifyName":"请输入要修改的名称",
   "ssSelectSecCategory":"选择二级分类",
   "ssSelectAnsByQues":"根据题目选择对应答案",

+ 9 - 3
src/lang/en.json

@@ -381,12 +381,12 @@
   "pleaseaddtopic": "No content available, please add a topic",
   "Pleaseentertitle": "Please enter title",
   "Input": "Input",
-  "Enterpronounce.": "Enter words/phrases for students to pronounce.",
+  "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.",
+  "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",
@@ -408,6 +408,7 @@
   "Enterkeypoints": "Enter key points",
   "rovidekey": "Please provide the key points of this topic.",
   "SpeechTime": "Speech Time",
+  "ssEnterSpeechTime": "Please enter speech time",
   "removetool": "Are you sure to remove this tool?",
   "Moveup": "Move up",
   "Movedown": "Move down",
@@ -1052,6 +1053,7 @@
   "ssDeleteTool":"Are you sure to delete this tool?",
   "ssDeleteSucc":"Delete successful",
   "ssDeleteQues":"Are you sure to delete this question?",
+  "ssDeleteQuesImg":"Are you sure to delete the image for this question?",
   "ssDeleteTask":"Are you sure to delete this task?",
   "ssSwitchTaskDel":"Switching task order will delete all tool submissions. Do you want to continue?",
   "ssInDev":"The function is under development",
@@ -1115,6 +1117,7 @@
   "ssSetComplete":"Please complete question * settings.",
   "ssUploadSucc":"Upload successful",
   "ssInputNum1":"Please enter a number greater than 1",
+  "ssEnterPositiveNum":"Please enter a number greater than 0",
   "ssFillInfo":"Please fill in all information!",
   "ssInputCode":"Please enter at least 4 digits or English combination random code",
   "ssCodeDup":"This random code already exists and cannot be duplicated",
@@ -1589,6 +1592,7 @@
   "ssQATool":"Q&A Tool",
   "ssQuestion":"Question:",
   "ssAnswer":"Answer:",
+  "ssAnswerText":"Answer",
   "ssDocTool":"Document Tool",
   "ssDefaultDesc":"Based on preliminary understanding and field research of the project, think and discuss to raise questions.",
   "ssCorrect":"Correct",
@@ -1824,6 +1828,8 @@
   "ssHumanities":"Humanities",
   "ssSearchImageKey":"Search image keywords",
   "ssEnterKeywordSearch":"Please enter keywords to search images",
+  "ssMicNotFoundDenied":"No microphone found or you have not allowed this webpage to use the microphone",
+  "ssRecordBeforeUpload":"Please record before uploading audio",
   "ssEnterModifyName":"Please enter the name to modify",
   "ssSelectSecCategory":"Select secondary category",
   "ssSelectAnsByQues":"Select the corresponding answer based on the question",

+ 9 - 3
src/lang/hk.json

@@ -382,12 +382,12 @@
   "pleaseaddtopic": "暫無內容,請添加題目",
   "Pleaseentertitle": "請輸入標題",
   "Input": "輸入內容",
-  "Enterpronounce.": "請輸入需學生朗讀的單詞/詞組",
+  "Enterpronounce": "請輸入需學生朗讀的單詞/詞組",
   "AddImage": "添加圖片",
   "AutoGenerate": "智能獲取",
   "Check": "查看",
-  "Enterpractice.": "請輸入需學生朗讀的句子/短文",
-  "studentanswer.": "請添加需學生回答的口語問題",
+  "Enterpractice": "請輸入需學生朗讀的句子/短文",
+  "studentanswer": "請添加需學生回答的口語問題",
   "enterCharacterName": "請輸入角色名字",
   "RoleSetting": "測評題目",
   "CharacterDialogue": "角色對話",
@@ -409,6 +409,7 @@
   "Enterkeypoints": "輸入要點",
   "rovidekey": "請輸入對該問題的要點",
   "SpeechTime": "演講時間",
+  "ssEnterSpeechTime": "請輸入演講時間",
   "removetool": "確定刪除此工具嗎?",
   "Moveup": "上移",
   "Movedown": "下移",
@@ -1055,6 +1056,7 @@
   "ssDeleteTool":"確定刪除此工具嗎?",
   "ssDeleteSucc":"刪除成功",
   "ssDeleteQues":"確定刪除此題目嗎?",
+  "ssDeleteQuesImg":"確定刪除該題目的圖片嗎?",
   "ssDeleteTask":"確定刪除此任務嗎?",
   "ssSwitchTaskDel":"切換任務順序將刪除所有工具的提交成果,是否繼續此操作?",
   "ssInDev":"功能正在開發中",
@@ -1118,6 +1120,7 @@
   "ssSetComplete":"請將題目*設置完整。",
   "ssUploadSucc":"上傳成功",
   "ssInputNum1":"請輸入大於1的數字",
+  "ssEnterPositiveNum":"請輸入大於0的數字",
   "ssFillInfo":"請將信息填寫完整!",
   "ssInputCode":"請輸入至少四位數字或英文組合的隨機碼",
   "ssCodeDup":"已有此隨機碼,不能重復",
@@ -1590,6 +1593,7 @@
   "ssQATool":"問答工具",
   "ssQuestionT":"提問:",
   "ssAnswer":"回答:",
+  "ssAnswerText":"回答",
   "ssDocTool":"文檔工具",
   "ssDefaultDesc":"根據前期的了解與實地調研對於項目的了解,進行思考與討論提出問題。",
   "ssCorrect":"回答正確",
@@ -1825,6 +1829,8 @@
   "ssHumanities":"人文",
   "ssSearchImageKey":"搜索圖片關鍵字",
   "ssEnterKeywordSearch":"請輸入關鍵詞搜索圖片",
+  "ssMicNotFoundDenied":"沒有找到可使用的麥克風,或者您沒有允許此網頁使用麥克風",
+  "ssRecordBeforeUpload":"請錄音後在上傳語音",
   "ssEnterModifyName":"請輸入要修改的名稱",
   "ssSelectSecCategory":"選擇二級分類",
   "ssSelectAnsByQues":"根據題目選擇對應答案",

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است