Jelajahi Sumber

本地Global冲突

OnePsycho 4 tahun lalu
induk
melakukan
6b74e57449
23 mengubah file dengan 506 tambahan dan 910 penghapusan
  1. 1 2
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContent.vue
  2. 24 25
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperTest.vue
  3. 6 7
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperView.vue
  4. 1 1
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/composePaper.vue
  5. 33 126
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventList.vue
  6. 0 2
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventOverView/EventFinishedNumChart.vue
  7. 0 19
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventOverView/EventLatest.vue
  8. 2 14
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventView.vue
  9. 3 3
      TEAMModelOS/ClientApp/src/components/student-web/EventView/PreviewProgressPie.vue
  10. 0 4
      TEAMModelOS/ClientApp/src/components/student-web/HomeView/CourseListView.vue
  11. 9 29
      TEAMModelOS/ClientApp/src/components/student-web/HomeView/HomeView.vue
  12. 14 37
      TEAMModelOS/ClientApp/src/components/student-web/HomeView/MissionListCard.vue
  13. 1 1
      TEAMModelOS/ClientApp/src/locale/index.js
  14. 197 226
      TEAMModelOS/ClientApp/src/locale/lang/en-US/studentWeb.js
  15. 4 1
      TEAMModelOS/ClientApp/src/locale/lang/zh-CN/global.js
  16. 26 5
      TEAMModelOS/ClientApp/src/locale/lang/zh-CN/learnActivity.js
  17. 65 30
      TEAMModelOS/ClientApp/src/locale/lang/zh-CN/studentWeb.js
  18. 40 69
      TEAMModelOS/ClientApp/src/locale/lang/zh-TW/studentWeb.js
  19. 0 3
      TEAMModelOS/ClientApp/src/utils/evTools.js
  20. 9 5
      TEAMModelOS/ClientApp/src/view/learnactivity/CreatePrivEva.vue
  21. 29 47
      TEAMModelOS/ClientApp/src/view/learnactivity/MgtPrivEva.vue
  22. 36 47
      TEAMModelOS/ClientApp/src/view/learnactivity/MgtSchoolEva.vue
  23. 6 207
      TEAMModelOS/ClientApp/src/view/student-web/App.vue

+ 1 - 2
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContent.vue

@@ -21,14 +21,13 @@
     </div>
         <!-- 如果篩選時未選的時候預設顯示列表第一個-->
     <div class="noSelected" v-if="!this.$store.getters.getIsSelectedNow">
-        <h3>请从列表挑选一个活动</h3>
+        <h3>{{$t("studentWeb.event.selectActivity")}}</h3>
     </div>
 
   </div>
 </template>
 
 <script>
-import mockdata from "@/api";
 import Homework from "./EventContentTypeTemplate/Homework";
 import PreviewMission from "./EventContentTypeTemplate/PreviewMission";
 import Vote from "./EventContentTypeTemplate/Vote";

+ 24 - 25
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperTest.vue

@@ -12,34 +12,34 @@
             <div class="messageCard">
                 <!---中途離開測驗之提示框---->
                 <div class="messageCardContent1" v-if="showMessageNum == 1">
-                    <h3>离开测验提示</h3>
+                    <h3>{{$t("studentWeb.exam.testpop.exitQuizhint")}}</h3>
                     <svg-icon icon-class="logoutComfirm" class="logoutComfirmIcon" />
                     <br />
                     <p v-show="closeTest">
-                        系统检测到您尚未「交卷」,如您选择「确定」,
-                        <br />则目前作答将不保存,下次需重新测验。
+                        {{$t("studentWeb.exam.testpop.exitQuizhintDe")}}
+                        <br /> {{$t("studentWeb.exam.testpop.exitQuizhintDes")}}
                     </p>
-                    <button class="messageCardBtn" @click="closeWarmMessage()">取消</button>
-                    <button class="messageCardBtn" @click="quitTest()">确定</button>
+                    <button class="messageCardBtn" @click="closeWarmMessage()">{{$t("studentWeb.exam.testpop.cancel")}}</button>
+                    <button class="messageCardBtn" @click="quitTest()">{{$t("studentWeb.exam.testpop.ok")}}</button>
                 </div>
                 <!---每題都完成到最後一題交卷之提示框---->
                 <div class="messageCardContent2" v-if="showMessageNum == 2">
-                    <h3>交卷提示</h3>
+                    <h3>{{$t("studentWeb.exam.testpop.submitQuizhint")}}</h3>
                     <svg-icon icon-class="finshedTest" class="handOnImg" />
-                    <p>系统检测当前您已全数作答完成,确定交卷吗?</p>
-                    <button class="messageCardBtn" @click="closeWarmMessage()">否,需再检查</button>
-                    <button class="messageCardBtn" @click="closetest()">确定交卷</button>
+                    <p>{{$t("studentWeb.exam.testpop.submitQuizhintDes1")}}</p>
+                    <button class="messageCardBtn" @click="closeWarmMessage()">{{$t("studentWeb.exam.testpop.check")}}</button>
+                    <button class="messageCardBtn" @click="closetest()">{{$t("studentWeb.exam.testpop.okSubmit")}}</button>
                 </div>
                 <!---有題目沒完成就交卷之提示框---->
                 <div class="messageCardContent3" v-if="showMessageNum == 3">
-                    <h3>交卷提示</h3>
+                    <h3>{{$t("studentWeb.exam.testpop.submitQuizhint")}}</h3>
                     <svg-icon icon-class="unfinishedTest" class="handOnImg" />
                     <p>
-                        目前您有
-                        <span style="color:rgb(250, 100, 0);font-weight:900">{{ undo }}题 未作答 (详查答案卡)</span>,请先完成题目作答!
+                        {{$t("studentWeb.exam.testpop.conAnswer0")}}
+                        <span style="color:rgb(250, 100, 0);font-weight:900">{{ undo }}{{$t("studentWeb.exam.testpop.conAnswer1")}}</span>{{$t("studentWeb.exam.testpop.conAnswer2")}}
                     </p>
-                    <button class="messageCardBtn" @click="closeWarmMessage()">继续作答</button>
-                    <button class="messageCardBtn" @click="closetest()">确定交卷</button>
+                    <button class="messageCardBtn" @click="closeWarmMessage()">{{$t("studentWeb.exam.testpop.conAnswer")}}</button>
+                    <button class="messageCardBtn" @click="closetest()">{{$t("studentWeb.exam.testpop.okSubmit")}}</button>
                 </div>
             </div>
         </div>
@@ -48,13 +48,13 @@
             <span class="logoutIcon" @click="openWarmMessage(1)">
                 <svg-icon icon-class="logout" />
             </span>
-            <span class="testTitleText">评量:{{ $store.getters.getItemTitle.name }}</span>
+            <span class="testTitleText">{{$t("studentWeb.home.exam")}}:{{ $store.getters.getItemTitle.name }}</span>
             <div class="myProgressBar">
-                <span class="myTestProgresstitle">完成度</span>
+                <span class="myTestProgresstitle">{{$t("studentWeb.exam.testpop.completion")}}</span>
                 <Progress style="margin-top:15px" :percent="completeRate" />
             </div>
-            <button v-if="closeTest" class="submitBtn" @click="openWarmMessage(2)" :class="{ hintClick:hintHandon() }">交卷</button>
-            <button v-if="!closeTest" class="submitBtn" :class="{ hintClick:hintHandon()  }">已完成</button>
+            <button v-if="closeTest" class="submitBtn" @click="openWarmMessage(2)" :class="{ hintClick:hintHandon() }">{{$t("studentWeb.exam.testpop.submitted")}}</button>
+            <button v-if="!closeTest" class="submitBtn" :class="{ hintClick:hintHandon()  }">{{$t("studentWeb.exam.testpop.finish")}}</button>
         </div>
         <Row :gutter="30">
             <i-col class="questionArea"
@@ -87,7 +87,7 @@
                                     <span>{{getTestType(getQue(queNo).parentInfo.type)}}</span>
                                 </div>
                                 <div class="compose-box">
-                                    <span style="margin-left:10px;font-weight:800;font-size:15px">題目:</span>
+                                    <span style="margin-left:10px;font-weight:800;font-size:15px">{{$t("studentWeb.exam.testpop.queNo")}}</span>
                                     <br />
                                     <div class="compose-item">
                                         <!--<span w>{{ getQue(queNo).parent + 1}}.</span>-->
@@ -104,7 +104,7 @@
                         </div>
                     </div>
                     <div class="answers">
-                        <div class="questionNo">我的作答:</div>
+                        <div class="questionNo">{{$t("studentWeb.exam.testpop.myAns")}}</div>
                         <div class="answers-box">
                             <!--问答题-->
                             <div class="compose-content" v-if="getQue(queNo).type != 'judge' && getQue(queNo).type != 'single'  && getQue(queNo).type != 'multiple'">
@@ -155,10 +155,10 @@
                    :md="6"
                    :lg="4">
                 <div class="checkAnswer">
-                    <span style="margin-top:10px;font-weight:800">我的答题卡</span>
+                    <span style="margin-top:10px;font-weight:800">{{$t("studentWeb.exam.testpop.myAnswerSheet")}}</span>
                     <br />
                     <br />
-                    <span style="margin-top:10px;font-weight:800">题号:</span>
+                    <span style="margin-top:10px;font-weight:800">{{$t("studentWeb.exam.testpop.qNo")}}</span>
                     <div class="que-box">
                         <div v-for="(item,index) in examInfo" :class="[checkers[index].length > 0 ? 'has-ans':'ans-box',index == queNo ?'select-item':'']" @click="gototheQues(index +1)">
                             <span style="padding:5px 5px;cursor:pointer"> {{ item.parent == undefined ? index +1 : item.paperIndex }}</span>
@@ -168,12 +168,12 @@
                 <!--切換頁-->
                 <div class="pageCtl2">
                     <button @click="preQ()" v-show="queNo != 0">
-                        <Icon type="ios-arrow-back" />上一题
+                        <Icon type="ios-arrow-back" />{{$t("studentWeb.exam.testpop.previous")}}
                     </button>
                     <button @click="nextQ()"
                             v-show="queNo != (examInfo.length-1)"
                             :class="{ hintClick:queNo != (examInfo.length-1) && checkers[queNo] != ''}">
-                        下一题
+                        {{$t("studentWeb.exam.testpop.next")}}
                         <Icon type="ios-arrow-forward" />
                     </button>
                 </div>
@@ -401,7 +401,6 @@
             },
             closetest: function () {
                 this.WarmMessageisOpen = false
-                console.log('保存信息')
                 if (this.checkers.length) {
                     this.isLoading = true;
                     let codes = this.$store.getters.getItemTitle.code.split('-')

+ 6 - 7
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperView.vue

@@ -13,10 +13,10 @@
             </div>
             <EventBasicInfo :paper="paperData" />
             <Tabs :value="selectTab" v-if="paperData.length">
-                <TabPane label="评测内容" name="test">
+                <TabPane :label="$t('studentWeb.exam.examData')" name="test">
                     <div class="title-rect-group">
                         <div class="title-rect" />
-                        <h2 class="title-rect-name">试卷链接</h2>
+                        <h2 class="title-rect-name">{{$t("studentWeb.exam.examLink")}}</h2>
                     </div>
                     <!--多學科試卷-->
                     <div v-if="paperData.length > 0 ">
@@ -26,7 +26,7 @@
                                  :class="['paper-item',item.paperId == chooseData.paperId ? 'paper-choose' : '']"
                                  @click="opentestWithSubject(item)">
                                 <svg-icon icon-class="test" class="title-icon" />
-                                <span style="margin-top:5px">{{ item.subject.name }}{{$store.getters.getItemTitle.scope == 'school' ? '科试卷':''}}</span>
+                                <span style="margin-top:5px">{{ item.subject.name }}{{$store.getters.getItemTitle.scope == 'school' ? $t("studentWeb.exam.isSubject"):''}}</span>
                                 <div :class="{ unfinished: item.stuAns.length == 0 ,finished:item.stuAns.length != 0 }">
                                     <Icon style="margin-top:-10px;margin-left:-8px;" type="ios-checkmark" size="36" />
                                 </div>
@@ -36,16 +36,15 @@
                     <div class="title-rect-group">
                         <div v-if="chooseData.subject !== undefined">
                             <div class="title-rect" />
-                            <h2 class="title-rect-name">当前科目:{{chooseData.subject.name}}</h2>
-                            <!--<span v-show="isExamDown" @click="showTest" style="margin-left: 25px;color: #03966a;cursor:pointer">--><!--试卷详情--><!--</span>-->
+                            <h2 class="title-rect-name">{{$t("studentWeb.exam.subjectNow")}}:{{chooseData.subject.name}}</h2>
                             <LessonTestReport :paperInfo="selectData" :examInfo="chooseData" />
                         </div>
                     </div>
                 </TabPane>
-                <TabPane label="成绩报告" v-if="isTestOver" name="analyse">
+                <TabPane :label="$t('studentWeb.exam.gradeReport')" v-if="isTestOver" name="analyse">
                     <div class="title-rect-group">
                         <div class="title-rect" />
-                        <h2 class="title-rect-name">评测分析</h2>
+                        <h2 class="title-rect-name">{{$t("studentWeb.exam.gradeAnalyse")}}</h2>
                     </div>
                     <div class="student-score">
                         <StudentScore :stuData="stuData"></StudentScore>

+ 1 - 1
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/composePaper.vue

@@ -111,7 +111,7 @@
                 answerIframe.contentWindow.document.body.style.minWidth = '600px'
                 answerIframe.contentWindow.document.body.style.backgroundColor = '#f5f5f5'
                 let iframe = document.getElementById('answerIframe').contentWindow.document.getElementsByTagName('p')
-                iframe[1].style.lineHeight = '50px'
+                iframe[1].style.lineHeight = '20px'
                 html2canvas(answerIframe.contentWindow.document.body).then(canvas => {
                     this.markStatus = true
                     this.markBg = canvas.toDataURL("image/png");

+ 33 - 126
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventList.vue

@@ -11,7 +11,7 @@
                                   :class="{ openSearch: openSearch }" />
                     </div>
                     <div class="search-wrapper" :class="{ openSearch: openSearch }">
-                        <Input type="text" v-model="search" placeholder="搜尋" clearable />
+                        <Input type="text" v-model="search" :placeholder="$t('studentWeb.public.search')" clearable />
                     </div>
                 </div>
                 <!---搜尋--->
@@ -23,23 +23,23 @@
                             <Icon type="ios-arrow-down"></Icon>
                         </a>
                         <DropdownMenu slot="list">
-                            <div @click="sentEventStatus('所有活动状态')">
-                                <DropdownItem>{{ $t("studentWeb.allStatus") }}</DropdownItem>
+                            <div @click="sentEventStatus('all')">
+                                <DropdownItem>{{ $t("studentWeb.event.allStatus") }}</DropdownItem>
                             </div>
-                            <div @click="sentEventStatus('未完成')">
-                                <DropdownItem>{{ $t("studentWeb.unFinished") }}</DropdownItem>
+                            <div @click="sentEventStatus('unFinsish')">
+                                <DropdownItem>{{ $t("studentWeb.event.unFinished") }}</DropdownItem>
                             </div>
-                            <div @click="sentEventStatus('已完成')">
-                                <DropdownItem>{{ $t("studentWeb.Fineshed") }}</DropdownItem>
+                            <div @click="sentEventStatus('finish')">
+                                <DropdownItem>{{ $t("studentWeb.event.Fineshed") }}</DropdownItem>
                             </div>
-                            <div @click="sentEventStatus('已逾时')">
-                                <DropdownItem>{{ $t("studentWeb.Timeout") }}</DropdownItem>
+                            <div @click="sentEventStatus('overTime')">
+                                <DropdownItem>{{ $t("studentWeb.event.Timeout") }}</DropdownItem>
                             </div>
-                            <div @click="sentEventStatus('评测补考')">
-                                <DropdownItem divided>{{ $t("studentWeb.makeupExam") }}</DropdownItem>
+                            <div @click="sentEventStatus('reExam')">
+                                <DropdownItem divided>{{ $t("studentWeb.event.makeupExam") }}</DropdownItem>
                             </div>
-                            <div @click="sentEventStatus('作业补交')">
-                                <DropdownItem>{{ $t("studentWeb.makeupHW") }}</DropdownItem>
+                            <div @click="sentEventStatus('reMake')">
+                                <DropdownItem>{{ $t("studentWeb.event.makeupHw") }}</DropdownItem>
                             </div>
                         </DropdownMenu>
                     </Dropdown>
@@ -94,10 +94,9 @@
                                       icon-class="quesnaire" />
                         </li>
                         <li class="list-item-info"
-                            :class="{'list-item-infonofeedback': isNoFeedback(item) && finishedcondition(item) == false}"
                             v-if="item.eventType == 'exam'">
                             <p class="list-item-title">
-                                <span class="list-item-typeMark">{{item.scope == 'school' ? '校级评测' : '个人评测'}}</span>
+                                <span class="list-item-typeMark">{{item.scope == 'school' ? $t('studentWeb.public.schoolExam'):$t('studentWeb.public.privateExam')}}</span>
                                 <span class="list-item-typeMark"
                                       v-if="getCurrentLang() == 'en'">{{ transTypetoEn(item.eventType) }}</span>
                                 <span>{{ item.name }}</span>
@@ -108,10 +107,10 @@
                         </li>
                             <!--<div>已交卷</div>-->
                         <li class="list-item-unDone" v-show="item.progress == 'going'">
-                            <div class="isAllowRetry">进行中</div>
+                            <div class="isAllowRetry">{{$t("studentWeb.public.going")}}</div>
                         </li>
                         <li class="list-item-unDone" v-show="item.progress == 'finish'">
-                            <div class="isOvertime">已结束</div>
+                            <div class="isOvertime">{{$t("studentWeb.public.finish")}}</div>
                         </li>
                     </ul>
                 </div>
@@ -125,8 +124,6 @@
 
 <script>
     import { Random } from "mockjs";
-    import mockdata from "@/api/newData";
-    import mockdataEn from "@/api/newDataEn";
     import PreviewProgressPie from "../EventView/PreviewProgressPie";
 
 
@@ -177,7 +174,7 @@
                 search: "",
                 alreadyScrolltimes: 0,
                 defaultFirstItem: "",
-                selectedEventStatusNow: "所有活动状态",
+                selectedEventStatusNow: this.$t('studentWeb.event.allStatus'),
                 hideIconbtn: false,
                 isListNoItem: false, //清單為空
                 eventList: []
@@ -248,14 +245,6 @@
                 var D = date.getDate() + ' '
                 return Y + M + D;
             },
-            timeoutCondition(item) {
-                return (
-                    (item.endTime <= "2020.02.10" && item.allowRetryNow == false && item.eventType != "問卷") ||
-                    (item.endTime <= "2020.02.10" && item.eventType == "投票") ||
-                    (item.endTime <= "2020.02.10" && item.eventType == "課前預習")
-
-                );
-            },
             retryCondition(item) {
                 return (
                     item.endTime <= "2020.02.10" &&
@@ -263,40 +252,14 @@
                     item.isDone == false
                 );
             },
-            isNoFeedback(item) {
-                return (
-
-                    !(item.eventType == "課前預習" && item.endTime > "2020.02.10") &&
-                    !(
-                        item.eventType == "評量" &&
-                        item.eventSubject == "綜合學科" &&
-                        item.endTime > "2020.02.10"
-                    ) &&
-                    item.isDone == false &&
-                    item.endTime > "2020.02.10"
-                );
-            },
             getCurrentLang() {
                 return localStorage.getItem("lang");
             },
-            createMockdata: function () {
-                if (localStorage.getItem("lang") == "en") {
-                    this.mockdata = mockdataEn.eventList;
-                } else this.mockdata = mockdata.eventList
-            },
-            transStatustoEn(status) {
-                if (status == "所有活動狀態") return "All Status";
-                else if (status == "未完成") return "Unfinished";
-                else if (status == "已完成") return "Fineshed";
-                else if (status == "已逾時") return "Timeout";
-                else if (status == "評量補考") return "Make up Exam";
-                else if (status == "作業補交") return "Make up Homework";
-            },
             transTypetoEn(type) {
-                if (type == "投票") return "Vote";
-                else if (type == "評量") return "Exam";
-                else if (type == "作業") return "Homework";
-                else if (type == "課前預習") return "Preview";
+                if (type == "vote") return "Vote";
+                else if (type == "exam") return "Exam";
+                else if (type == "homework") return "Homework";
+                else if (type == "preview") return "Preview";
             },
             //取得目前滑鼠座標
             getCursorPosition() {
@@ -347,7 +310,7 @@
                 return Random.integer(70, 96);
             },
             sentEventStatus(status) {
-                if (status == "作業補交" || status == "評量補考") {
+                if (status == "reMake" || status == "reExam") {
                     this.eventTypeCheckers = [];
                 }
                 this.selectedEventStatusNow = status;
@@ -401,31 +364,31 @@
                 } else this.isListNoItem = true; //清單空值樣式配置
             },
             dropDownShowCondition(status, item) {
-                if (status == "作業補交") {
+                if (status == "reMake") {
                     this.hideIconbtn = true;
 
                     return (
                         item.endTime <= "2020.02.10" &&
-                        item.eventType == "作業" &&
+                        item.eventType == "homework" &&
                         item.allowRetryNow == true &&
                         item.isDone == false
                     );
-                } else if (status == "評量補考") {
+                } else if (status == "reExam") {
                     this.hideIconbtn = true;
 
                     return (
                         item.endTime <= "2020.02.10" &&
-                        item.eventType == "評量" &&
+                        item.eventType == "exam" &&
                         item.allowRetryNow == true &&
                         item.isDone == false
                     );
-                } else if (status == "未完成") {
+                } else if (status == "unFinish") {
                     this.hideIconbtn = false;
                     return item.isDone == false;
-                } else if (status == "已完成") {
+                } else if (status == "finish") {
                     this.hideIconbtn = false;
                     return item.isDone == true;
-                } else if (status == "已逾時") {
+                } else if (status == "overTime") {
                     this.hideIconbtn = false;
                     return (
                         (item.isDone == false &&
@@ -433,10 +396,10 @@
                             item.allowRetryNow == false) ||
                         (item.isDone == false &&
                             item.endTime <= "2020.02.10" &&
-                            item.eventType == "投票") ||
+                            item.eventType == "vote") ||
                         (item.isDone == false &&
                             item.endTime <= "2020.02.10" &&
-                            item.eventType == "課前預習")
+                            item.eventType == "preview")
                     );
                 } else {
                     this.hideIconbtn = false;
@@ -450,62 +413,8 @@
             showSearch() {
                 this.openSearch = !this.openSearch;
             },
-            showSelected: function (item) {
-
-                if (this.eventTypeCheckers == "") {
-                    if (this.search) {
-                        if ("評量".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "評量";
-                        } else if ("投票".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "投票";
-                        } else if ("作業".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "作業";
-                        } else if ("課前預習".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "課前預習";
-                        } else if ("問卷".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "問卷";
-                        } else return item.eventName.includes(this.search);
-                    } else {
-                        this.isListNoItem = false;
-                        return true;
-                    }
-                }
-                if (this.eventTypeCheckers.includes(item.eventType)) {
-                    if (this.search) {
-                        if ("評量".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "評量";
-                        } else if ("投票".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "投票";
-                        } else if ("作業".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "作業";
-                        } else if ("課前預習".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "課前預習";
-                        } else if ("問卷".includes(this.search)) {
-                            this.isListNoItem = false;
-                            return item.eventType == "問卷";
-                        } else {
-                            this.isListNoItem = false;
-                            return item.eventName.includes(this.search);
-                        }
-                    } else {
-                        this.isListNoItem = false;
-                        return true;
-                    }
-                } else return false;
-            },
-            sentEvenType: function (eventype) {
-
+            sentEvenType(eventype) {
                 this.$store.commit("ChangeFilterType", eventype);
-
                 if (this.$store.getters.getFilterType == "all") {
                     let filterListFinished = [],
                         filterListUnFinished = [];
@@ -570,9 +479,8 @@
             scrollListfromInfoPop() {
                 if (this.$store.getters.getisFromInfoPoptoScroll == true) {
                     //當從通知操作進行捲動時,將篩選條件清空
-                    this.selectedEventStatusNow = "所有活動狀態";
+                    this.selectedEventStatusNow = this.$t('studentWeb.event.allStatus');
                     this.eventTypeCheckers = [];
-
                     let targetItem = document.getElementById(
                         `event${this.$store.getters.getItemTitle.eventID}`
                     );
@@ -642,7 +550,6 @@
                 } else return false;
             },
             finishedItemtime(item) {
-                //this.$store.getters.getFinishedItemTime
                 if (this.$store.getters.getFinishedItem.includes(item.eventID) == true) {
                     let timeIndex = this.$store.getters.getFinishedItem.indexOf(
                         item.eventID

+ 0 - 2
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventOverView/EventFinishedNumChart.vue

@@ -1,8 +1,6 @@
 <template>
   <div class="event-finished-num-chart">
-    
       <LineChart :option="option" />
-   
   </div>
 </template>
 

+ 0 - 19
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventOverView/EventLatest.vue

@@ -7,9 +7,7 @@
     </h2>
     <div class="new-event-item-list ">
       <Row :gutter="20">
-      
         <i-col
-          
           :xs="24"
           :sm="24"
           :md="12"
@@ -18,7 +16,6 @@
           :key="index"
           v-show=" eventPageType.includes(item.eventType) == true && item.isDone == false && index < 20 "
           ><!--item.isOverEndTime == false -->
-          
           <ul
             class="new-event-item list-item"
             @click="sentSelectedEventTitle(item)"
@@ -47,7 +44,6 @@
                 {{ item.startTime }} ~ {{ item.endTime }}
               </p>
             </li>
-            
           </ul>
         </i-col>
       </Row>
@@ -57,15 +53,9 @@
 </template>
 
 <script>
-//import EventTypeNotFinishedChart from "../EventOverView/EventTypeNotFinishedChart";
-//import EventFinishedNumChart from "../EventOverView/EventFinishedNumChart";
 import mockdata from "@/api/newData";
 export default {
   name: "EventLatest",
-  components: {
-    //EventFinishedNumChart,
-    //EventTypeNotFinishedChart,
-  },
   data() {
     return {
       //倒入資料
@@ -113,13 +103,4 @@ export default {
 
 <style scoped>
 @import "~@/assets/student-web/component_styles/event-latest.css";
-/* 活動進度條圖表Icon
-@keyframes born {
-  from {
-    width: 0;
-  }
-  to {
-    width: MyEventData + "%";
-  }
-}*/
 </style>

+ 2 - 14
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventView.vue

@@ -10,8 +10,6 @@
     import CommentList from "./CommentList.vue";
     import EventList from "./EventList";
     import EventContentArea from "./EventContentArea.vue";
-    import mockdata from "@/api/newData";
-    import mockdataEn from "@/api/newDataEn";
     export default {
         name: "EventView",
         components: {
@@ -24,17 +22,10 @@
                 MyNo: "4", //接收NavBar 選定的那一頁icon標示
                 MyName: "",
                 mockdata: "",
-                eventPageType: ["課前預習", "評量", "作業", "投票", "問卷"] //本頁出現的類型
+                eventPageType: ["preview", "exam", "homework", "vote", "quesnaire"] //本頁出現的類型
             };
         },
         created() {
-            //發送本頁target 跟名字給App.Vue 的navBar
-            if (localStorage.getItem("lang") == "") {
-                this.mockdata = mockdata.eventList;
-            }
-            if (localStorage.getItem("lang") == "tw") {
-                this.mockdata = mockdata.eventList;
-            } else this.mockdata = mockdataEn.eventList;
             this.MyName = this.$t("studentWeb.eventView-title");
             this.$emit("onNavNo", this.MyNo);
             this.$emit("onNavName", this.MyName);
@@ -46,8 +37,6 @@
                 //當從通知操作進行捲動時,將篩選條件清空
                 this.selectedEventStatusNow = "所有活動狀態";
                 this.eventTypeCheckers = [];
-                console.log("收到從下一個按鈕切換項目");
-
                 let targetItem = document.getElementById(
                     `event${this.$store.getters.getItemTitle.eventID}`
                 );
@@ -74,8 +63,7 @@
                         console.log("目前:" + i, this.mockdata[i].eventName);
                         let j = i + 1;
                         if (
-                            j < this.mockdata.length &&
-                            this.eventPageType.includes(this.mockdata[j].eventType)
+                            j < this.mockdata.length && this.eventPageType.includes(this.mockdata[j].eventType)
                         ) {
                             nextItems.push(this.mockdata[j]);
                         } else {

+ 3 - 3
TEAMModelOS/ClientApp/src/components/student-web/EventView/PreviewProgressPie.vue

@@ -22,13 +22,13 @@ export default {
   methods: {
     finishedValue() {
       if (this.$store.getters.getItemTitle.eventID == this.itemID) {
-        if (this.$store.getters.getItemTitle.eventType == "課前預習") {
+        if (this.$store.getters.getItemTitle.eventType == "preview") {
           this.option.series[0].data[0].value =
             this.$store.getters.getCurrentPassPhaseTest * 33;
           this.option.series[0].data[1].value =
             100 - this.$store.getters.getCurrentPassPhaseTest * 33;
         }
-        else if(this.$store.getters.getItemTitle.eventType == "評量"){
+        else if(this.$store.getters.getItemTitle.eventType == "exam"){
           console.log(this.$store.getters.getCurrentfinishedSubject.length*33)
            this.option.series[0].data[0].value = this.$store.getters.getCurrentfinishedSubject.length*33;
             this.option.series[0].data[1].value =
@@ -50,7 +50,7 @@ export default {
         },
         series: [
           {
-            name: "访问来源",
+            //name: "访问来源",
             type: "pie",
             radius: ["50%", "70%"],
             avoidLabelOverlap: false,

+ 0 - 4
TEAMModelOS/ClientApp/src/components/student-web/HomeView/CourseListView.vue

@@ -1,11 +1,7 @@
 <template>
   <div class="courselist-view">
-   
     <CourseList :class="{ 'hide-sidebar': this.$store.getters.getSidebarisOpen == false}" />
     <CourseContent :class="{'course-content-span': this.$store.getters.getSidebarisOpen == false}"/>
-
-    
-   
   </div>
 </template>
 

+ 9 - 29
TEAMModelOS/ClientApp/src/components/student-web/HomeView/HomeView.vue

@@ -34,28 +34,23 @@
                                     v-show="eventPageType.includes(item.eventType) == true &&item.isDone == false && index < 8 ">
                                     <ul>
                                         <li class="list-item-icon">
-                                            <svg-icon v-if="item.eventType == '作業'"
+                                            <svg-icon v-if="item.eventType == 'homework'"
                                                       icon-class="doc" />
-                                            <svg-icon v-if="item.eventType == '課前預習'"
+                                            <svg-icon v-if="item.eventType == 'preview'"
                                                       icon-class="selflearninginTime" />
-                                            <svg-icon v-if="item.eventType == '評量'"
+                                            <svg-icon v-if="item.eventType == 'exam'"
                                                       icon-class="test"
                                                       class="reset-testIcon" />
-                                            <svg-icon v-if="item.eventType == '投票'"
+                                            <svg-icon v-if="item.eventType == 'vote'"
                                                       icon-class="vote" />
-                                            <svg-icon v-if="item.eventType == '問卷'"
+                                            <svg-icon v-if="item.eventType == 'quesnaire'"
                                                       icon-class="quesnaire" />
                                         </li>
                                         <li class="list-item-info">
                                             <p class="list-item-title"
-                                               :class="{
-                            'list-item-titleEn': getCurrentLang() == 'en',
-                          }">
-                                                <span class="list-item-typeMark"
-                                                      v-if="getCurrentLang() == 'tw'">{{ item.eventType }}</span>
-                                                <span class="list-item-typeMark"
-                                                      v-if="getCurrentLang() == 'en'">{{ transTypetoEn(item.eventType) }}</span>
-
+                                               :class="{ 'list-item-titleEn': getCurrentLang() == 'en', }"
+                                               >
+                                                <span class="list-item-typeMark">{{ item.eventType }}</span>
                                                 <span>{{ item.eventName }}</span>
                                             </p>
                                             <p class="list-item-time">
@@ -115,7 +110,6 @@
                     </div>
                 </Card>
                 <!--<router-link to="/studentWeb/eventView">
-
                 </router-link>-->
                 <br />
                 <Card class="bar-card" @click.native="noData">
@@ -135,7 +129,6 @@
                     </div>
                 </Card>
                 <!--<router-link to="/studentWeb/studyView">
-
                 <!--</router-link>-->
             </i-col>
         </Row>
@@ -204,7 +197,7 @@
 
         data() {
             return {
-                eventPageType: ["課前預習", "評量", "作業", "投票", "問卷"], //本頁出現的類型
+                eventPageType: ["preview", "exam", "homework", "vote", "quesnaire"], //本頁出現的類型
                 MyNo: "1", //接收NavBar 選定的那一頁icon標示
                 MyName: "",
                 mockdata: [
@@ -270,19 +263,6 @@
             setSpanCharts() {
                 this.spanCharts = !this.spanCharts;
             },
-            //createMockdata: function () {
-            //  if (localStorage.getItem("lang") == "en") {
-            //    this.mockdata = mockdataEn.eventList.slice(0, 39);
-            //    } else this.mockdata = mockdata.eventList.slice(0, 39);
-            //    console.log('mock')
-            //    console.log(JSON.stringify(this.mockdata))
-            //},
-            transTypetoEn(type) {
-                if (type == "投票") return "Vote";
-                else if (type == "評量") return "Exam";
-                else if (type == "作業") return "Homework";
-                else if (type == "課前預習") return "Preview";
-            },
         },
 
         created() {

+ 14 - 37
TEAMModelOS/ClientApp/src/components/student-web/HomeView/MissionListCard.vue

@@ -15,29 +15,26 @@
                     @click="sentSelectedEventTitle(item)"
                     v-for="(item, index) in testData" :key="index">
                     <ul>
-                        <!--v-show=" eventPageType.includes(item.eventType) == true && item.isDone == false && item.endTime > '2020.02.10'"-->
                         <li class="list-item-icon">
-                            <svg-icon v-if="item.eventType == '作業'" icon-class="doc" />
-                            <svg-icon v-if="item.eventType == '課前預習'"
+                            <svg-icon v-if="item.eventType == 'homework'" icon-class="doc" />
+                            <svg-icon v-if="item.eventType == 'preview'"
                                       icon-class="selflearninginTime" />
                             <svg-icon v-if="  item.eventType == 'exam'"
                                       icon-class="test"
                                       class="reset-testIcon" />
-                            <!--<svg-icon v-if=" item.eventType == 'exam' && item.eventSubject == '綜合學科' "
-                                      icon-class="multiTest" />-->
-                            <svg-icon v-if="item.eventType == '投票'" icon-class="vote" />
-                            <svg-icon v-if="item.eventType == '問卷'" icon-class="quesnaire" />
+                            <svg-icon v-if="item.eventType == 'vote'" icon-class="vote" />
+                            <svg-icon v-if="item.eventType == 'quesnaire'" icon-class="quesnaire" />
                         </li>
                         <li class="list-item-info" :class="{ 'list-item-infonoPie': isNoPie(item) }">
                             <p class="list-item-title" :class="{ 'list-item-titleEn': getCurrentLang() == 'en' }">
-                                <span class="list-item-typeMark">{{item.scope == 'school'? '校级评测':'个人评测'}}</span>
+                                <span class="list-item-typeMark">{{item.scope == 'school'? $t('studentWeb.public.schoolExam'):$t('studentWeb.public.privateExam')}}</span>
                                 <span>{{ item.name }}</span>
                                 <div style="float:right;margin-top:-20px">
                                     <div class="list-item-unDone" v-show="item.progress == 'going'">
-                                        <span class="isAllowRetry">进行中</span>
+                                        <span class="isAllowRetry">{{$t("studentWeb.public.going")}}</span>
                                     </div>
                                     <div class="list-item-unDone" v-show="item.progress == 'finish'">
-                                        <span class="isOvertime">已结束</span>
+                                        <span class="isOvertime">{{$t("studentWeb.public.finish")}}</span>
                                     </div>
                                 </div>
                             </p>
@@ -45,11 +42,11 @@
                                 {{ dateFormat(item.startTime) }} ~ {{ dateFormat(item.endTime) }}
                             </p>
                         </li>
-                <li class="list-item-unDone">
-                    <PreviewProgressPie v-if=" item.eventType == '課前預習' && item.endTime > '2020.02.10' "></PreviewProgressPie>
+                <!--<li class="list-item-unDone">
+                    <PreviewProgressPie v-if=" item.eventType == 'preview'"></PreviewProgressPie>
                     <PreviewProgressPie :itemID="item.eventID"
-                                        v-if=" item.eventType == '評量' && item.eventSubject == '綜合學科' && item.endTime > '2020.02.10' "></PreviewProgressPie>
-                </li>
+                                        v-if="item.eventType == 'exam'"></PreviewProgressPie>
+                </li>-->
                 </ul>
                 </div>
             </Scroll>
@@ -59,7 +56,6 @@
 </template>
 
 <script>
-    //import { Random } from "mockjs";
     import PreviewProgressPie from "../EventView/PreviewProgressPie";
     export default {
         name: "MissionListCard",
@@ -73,7 +69,7 @@
                 mockdata: "",
                 testData: [],
                 templistArray: [],
-                eventPageType: ["課前預習", "評量", "作業", "投票", "問卷"] //本頁出現的類型
+                eventPageType: ["preview", "exam", "homework", "vote", "questionnare"] //本頁出現的類型
             };
         },
         created() {
@@ -131,9 +127,9 @@
             },
             isNoPie(item) {
                 return (
-                    !(item.eventType == "課前預習" && item.endTime > "2020.02.10") &&
+                    !(item.eventType == "preview" && item.endTime > "2020.02.10") &&
                     !(
-                        item.eventType == "評量" &&
+                        item.eventType == "exam" &&
                         item.eventSubject == "綜合學科" &&
                         item.endTime > "2020.02.10"
                     )
@@ -142,23 +138,6 @@
             getCurrentLang() {
                 return localStorage.getItem("lang");
             },
-            createMockdataOriginal: function () {
-                if (localStorage.getItem("lang") == "en") {
-                    this.mockdataOriginal = mockdataEn.eventList;
-                } else this.mockdataOriginal = mockdata.eventList;
-            },
-            createMockdata: function () {
-                if (localStorage.getItem("lang") == "en") {
-                    this.mockdata = mockdataEn.eventList.slice(0, 39);
-                } else this.mockdata = mockdata.eventList.slice(0, 39);
-            },
-
-            transTypetoEn(type) {
-                if (type == "投票") return "Vote";
-                else if (type == "評量") return "Exam";
-                else if (type == "作業") return "Homework";
-                else if (type == "課前預習") return "Preview";
-            },
             handleReachBottom() {
                 return new Promise((resolve) => {
                     setTimeout(() => {
@@ -168,7 +147,6 @@
                             i++
                         ) {
                             //小於原始資料總長度在加入空陣列
-
                             this.mockdata.push(this.mockdataOriginal[this.mockdata.length + 1]);
                         }
                         resolve();
@@ -200,7 +178,6 @@
                 if (document.getElementById(`event${item.eventID}`).offsetTop > 600) {
                     let scrollvalue = document.getElementById(`event${item.eventID}`)
                         .offsetTop;
-                    console.log("選項在清單可視範圍外!!");
                     this.$store.commit("scrollList", scrollvalue);
                 }
             },

+ 1 - 1
TEAMModelOS/ClientApp/src/locale/index.js

@@ -18,7 +18,7 @@ ElementLocale.i18n((key, value) => i18n.t(key, value))
 Vue.use(VueI18n)
 
 // 自动根据浏览器系统语言设置语言
-const curLang  = JSON.parse(localStorage.getItem('cloudSetting')).curLang
+const curLang  = localStorage.getItem('cloudSetting') ? JSON.parse(localStorage.getItem('cloudSetting')).curLang : null
 const navLang = curLang || navigator.language.toLowerCase()
 const localLang = (navLang === 'zh' || navLang === 'zh-tw' || navLang === 'zh-cn' || navLang === 'zh-hk') ? navLang : false
 let lang = localLang || 'en-us'

+ 197 - 226
TEAMModelOS/ClientApp/src/locale/lang/en-US/studentWeb.js

@@ -1,311 +1,282 @@
 export default {
-    "settingView-title": "Setting",
+    "home": {
+        "teacher": "teacher",
+        "student": "student",
+        "setting": "Personal Settings",
+        "logout": "Logout",
+        "joinClass": "Join Class",
+        "exam": "evaluation",
+    },
+    "public": {
+        "going": "In progress",
+        "finish": "Finished",
+        "schoolExam": "School Level Evaluation",
+        "privateExam": "Personal Evaluation",
+        "search": "Please enter search content..."
+    },
+    "event": {
+        "allStatus": "All Activity Status",
+        "unFinished": "Unfinished",
+        "Fineshed": "Finished",
+        "Timeout": "Timeout",
+        "makeupExam": "Makeup Exam",
+        "makeupHw": "Makeup available",
+        "selectActivity": "Please select an activity from the list"
+    },
+    "settingView-title": "Personal Settings",
     "teammodel-account-management": {
         "page-title": "TeamModel Account Management",
         "name": "Name",
         "account": "Account",
         "password": "Password",
-        "phone": "Phone",
+        "phone": "Mobile Number",
         "e-mail": "E-mail",
-        "binding": "Third Party Account Binding",
-        "isbind": "Binding",
-        "unbind": "Unbinding",
-        "save": "Save"
+        "binding": "Binding Management",
+        "isbind": "Bind",
+        "unbind": "Unbind",
+        "save": "Save settings"
     },
     "preference": {
-        "page-title": "Preference",
-        "UI-theme": "UI Theme",
-        "language": "Language"
+        "page-title": "Preferences",
+        "UI-theme": "Interface Style Settings",
+        "language": "Language Setting"
     },
     "change-school": {
-        "page-title": "Change School",
-        "current-data-school": "Current School Data Source",
+        "page-title": "Switch school",
+        "current-data-school": "Current data source school",
         "Habook-smart-school": "Habook Smart School"
     },
-    "homeView-title": "Overview",
-    "calenderCardTitle": "Calender",
-    "recentClass": "Recent Class",
-    "defaultRecentClass": "Inroduction to Embedded System Basic and Applications",
-    "defaultClassTime": "Wed. 13:30 - 16:30 (7th - 9th)",
-    "defaultClassPlace": "Building No.5 Room F504",
-    "todaydeadlineList": "Due Today Tasks",
-    "endsTodayTime": "Ends today at 23:59",
-    "coursesCardTitle": "My Courses List",
-    "newAddCourse": "New added Course:Advanced Mathematics II ",
-    "missionListCardTitle": "Tasks in progress ",
+    "homeView-title": "Homepage Information Overview",
+    "calenderCardTitle": "Calendar",
+    "recentClass": "Recent Class Reminder",
+    "defaultRecentClass": "Introduction to Microprocessor Basics and Applications",
+    "defaultClassTime": "Wednesday 13:30-16:30 (Sections 7-9)",
+    "defaultClassPlace": "F504 Classroom in the Fifth Teaching Building",
+    "todaydeadlineList": "Today Deadline Event Reminder",
+    "endsTodayTime": "Ends Today at 23:59",
+    "coursesCardTitle": "My Course List",
+    "newAddCourse": "The latest addition: Elective Mathematics (2)",
+    "missionListCardTitle": "Activity Task List",
     "missionListCardLoading": "Loading",
-    "missionListCardReachBottom": "Reached Page Bottom!",
+    "missionListCardReachBottom": "It's the bottom, no activity!",
     "myProgressBar": {
-        "tasksCompletionRate": "Tasks Completion Rate",
-        "selfStudyClickRate": "Self Study Tutorial Reading Rate"
+        "tasksCompletionRate": "Activity task completion rate",
+        "selfStudyClickRate": "Self-study textbook click rate"
     },
     "chartNames": [
-        "Time of Learning Online",
-        "Hours of Learning Online Each Month",
-        "Comparison of Tasks Participation",
-        "Comparison the Time of Learning Online",
-        "Proportion of participation time by task type this month",
-        "Heat Map of Learning Online"
+        "Average self-study time",
+        "Monthly self-study hour curve for this semester",
+        "Comparison of the number of activity participation between me and my grade last month",
+        "Comparison chart of average daily self-study time and the whole year level",
+        "Percentage of participation time of various activities and tasks this month",
+        "Self-study activity"
     ],
     "studyTimeChart": {
-        "averageTime": " min / day",
+        "averageTime": "Minutes/Day",
         "xAxisData": [
-            "Sun",
-            "Mon",
-            "Tue",
-            "Wed",
-            "Thu",
-            "Fri",
-            "Sat"
+            "day",
+            "One",
+            "two",
+            "three",
+            "four",
+            "Fives",
+            "six"
         ]
     },
     "splineSreaChart": {
         "xAxisData": [
-            "Feb",
-            "Mar",
-            "Apr",
+            "February",
+            "March",
+            "April",
             "May",
-            "Jun"
+            "June"
         ]
     },
     "stackBarChart": {
         "chartMon": "May",
         "yAxisData": [
-            "Me(3rd Grade)",
-            "3rd Grade",
-            "2nd Grade",
-            "1st Grade "
+            "I (third grade)",
+            "Third grade",
+            "second grade",
+            "ㄧ Grade"
         ],
         "stackType": [
-            "Homework",
-            "Exam",
-            "Preview",
-            "Vote"
+            "operation",
+            "Assessment",
+            "Pre-Class Preview",
+            "vote"
         ]
     },
     "twoLineChart": {
         "xAxisData": [
-            "Sun",
-            "Mon",
-            "Tue",
-            "Wed",
-            "Thu",
-            "Fri",
-            "Sat"
+            "day",
+            "",
+            "two",
+            "three",
+            "four",
+            "Fives",
+            "six"
         ]
     },
     "eventPieChart": {
         "partType": [
-            "Homework",
-            "Exam",
-            "Preview",
-            "Vote"
+            "operation",
+            "Assessment",
+            "Pre-Class Preview",
+            "vote"
         ]
     },
     "studyHeatMap": {
-        "tutorials": "tutorials",
         "xAxisData": [
-            "Mon",
-            "Tue",
-            "Wed",
-            "Thu",
-            "Fri"
+            "",
+            "two",
+            "three",
+            "four",
+            "Fives"
         ]
     },
-    "latestNotification": "Latest Notifications",
-    "postAt": "posted at",
-    "setting": "Setting",
-    "logout": "Log out",
+    "latestNotification": "Latest Notification",
+    "postAt": "Post At",
     "______________": "______________",
-    "eventView-title": "Tasks",
-    "nextTask": "Next task",
-    "allStatus": "All Status",
+    "eventView-title": "Activity Task",
+    "nextTask": "Next Task",
+    "allStatus": "All Activity Status",
     "unFinished": "Unfinished",
-    "Fineshed": "Fineshed",
+    "Fineshed": "Finished",
     "Timeout": "Timeout",
-    "makeupExam": "Make up Exam",
-    "makeupHW": "Make up Homework",
-    "empty": "No tasks yet!",
+    "makeupExam": "Makeup Exam",
+    "makeupHW": "Makeup available",
+    "empty": "There is currently no data ~",
     "baseInfo": {
         "subject": "Subject:",
         "teacher": "Teacher:",
-        "period": "Period:",
-        "postTime": "Posted Time:",
-        "classTime": "Class time",
+        "period": "Activity period:",
+        "postTime": "Post Time:",
+        "classTime": "Class Time",
         "unFinished": "Unfinished",
-        "Fineshed": "Fineshed",
+        "Fineshed": "Finished",
         "Closed": "Closed"
     },
     "billboard": {
         "description": "Description",
-        "referlink": "referlink",
+        "referlink": "referlink data",
         "attachment": "Attachment",
-        "reference": "Reference"
+        "reference": "reference"
     },
     "preview": {
-        "checkpoint": "Checkpoint",
-        "tutorial": "Tutorial",
-        "multiQues": "multi-Ques",
+        "checkpoint": "Activity Task",
+        "tutorial": "Programming Textbook",
+        "multiQues": "Multi-question pass module",
         "previewContent": {
-            "tutorial": "Tutorial",
-            "Des": "Description:",
-            "Unit": "Unit ",
-            "quiz": "Quiz"
+            "tutorial": "Textbook",
+            "Des": "Content",
+            "Unit": "Unit",
+            "quiz": "Examination in the classroom"
         },
-        "previous": "Previous",
-        "next": "Next",
-        "sentAns": "Submit",
-        "tryAgain": "Read and Try again",
+        "previous": "Previous Question",
+        "next": "Next Question",
+        "sentAns": "Sent Ans",
+        "tryAgain": "Read the textbook carefully, try again",
         "nextUnit": "Next Unit",
-        "goHome": "go to Overview",
-        "quizRetries": "Number of Quiz Retries",
-        "crossUnitHint": "The previous unit quizzes has not been completed yet. You should finish previous unit first and current unit could be unlock.",
-        "timeoutHint": "The preview task time has ended. You still could read and practice the task. If it is not completed before the end time, relevant scores may be affected."
+        "goHome": "Go Home",
+        "quizRetries": "Quiz Retries",
+        "crossUnitHint": "The last unit test has not been completed. Please complete it before proceeding to this unit test",
+        "timeoutHint": "The pre-class preview activity time has ended, textbook reading and practice can still be carried out. If it is not completed before the end time, relevant results may be affected."
     },
     "vote": {
-        "bollotbox": "Bollot Box",
-        "submit": "Submit",
-        "reVote": "Submit Again",
-        "voteSuccess": "Finished !",
-        "voteDes": "After the event is over, you can view the voting results.",
-        "timeoutHint": "The voting time has ended. Please wait the voting result!",
-        "voteResult": "The voting result is: ",
-        "voteDesDefault": "Please select a plan you prefer:"
+        "bollotbox": "Voting Area",
+        "submit": "OK to submit",
+        "reVote": "Vote again",
+        "voteSuccess": "Vote successful",
+        "voteDes": "After the event is over, you can view everyone's voting results",
+        "timeoutHint": "The voting time has passed, and no more voting is possible. Please pay attention to the teacher's release of the voting results!",
+        "voteResult": "The result of this vote is:",
+        "voteDesDefault": "Please select a desired plan:"
     },
     "homework": {
-        "homeworkUpload": "Homework Upload",
-        "homeworkUoloadBtn": "Upload",
-        "homeworkReUoloadBtn": "Reupload",
-        "CommentClassmatesHomeworkBtn": "Reference and comment classmates homework",
-        "uploadSuccess": "Upload Success",
-        "uploadDes": "After the task is over, you can view the homework feedback by teacher and classmates.",
-        "timeoutHint": "The homework task time has ended and you have not uploaded, so your score of the homework will be 0 or wait for making up homework.",
-        "contentPage": "Description",
-        "scorePage": "Score and Comment",
-        "score": "Score",
-        "classmatesComments": "Classmates Comments",
-        "comment": "Comment: "
-    },
-    "classmatesComment": {
-        "title": "Reference and comment classmates homework",
-        "seatNo": "No.",
-        "name": "Name",
-        "star": "Star",
-        "comment": "Comment",
-        "preview": "Preview: File Name",
-        "unPreview": "The format of this file could not be previewed now",
-        "download": "Download",
-        "submitted": "submitted",
-        "inputSomething": "Type Something",
-        "previous": "Previous",
-        "next": "Next",
-        "submitBtn": "Submit"
-    },
-    "exam": {
-        "examLink": "Exam Link",
-        "timeoutHint": "The exam task time has ended and you have not finished, so your score of the exam will be 0 or wait for making up exam.",
-        "contentPage": "Description",
+        "homeworkUpload": "Homework Upload Area",
+        "homeworkUoloadBtn": "Upload job",
+        "homeworkReUoloadBtn": "Re-upload",
+        "CommentClassmatesHomeworkBtn": "CommentClassmatesHomeworkBtn",
+        "uploadSuccess": "Upload successful",
+        "uploadDes": "After the activity is over, you can view the assignment score comments",
+        "timeoutHint": "The time for uploading the homework has ended. The grade of this homework will be calculated as 0 points, or waiting for the teacher to open it up.",
+        "contentPage": "Job Content",
         "scorePage": "Score Report",
-        "practiceHint": "The exam task time has ended and you still can click the link to practice.",
-        "performance": "Performance",
-        "reviewAnswers": "Review of Answers",
-        "Chinese": "Chinise",
-        "Math": "Math",
-        "English": "English",
+        "practiceHint": "The assessment activity time has ended, you can still click on the test paper link to continue practicing.",
+        "performance": "performance",
+        "reviewAnswers": "Review of answering status",
+        "Chinese": "国文",
+        "Math": "Mathematics",
+        "English": "英文",
         "score": "Score",
-        "difficulty": "Difficulty",
+        "difficulty": "Comprehensive difficulty of examination questions",
         "average": "Class average score",
-        "rightNum": "Number of correct answers",
-        "smartComment": "AI Suggestion",
-        "keypoint": "Review keypoint:",
+        "rightNum": "The number of my correct answers",
+        "smartComment": "Smart Comment",
+        "keypoint": "Recommended knowledge points for review:",
         "chart": {
-            "scoreDistribution": "Score Distribution",
-            "participant": "participant:",
-            "student": "students",
-            "keyPointPerformance": "KeyPoint Performance",
-            "me": "Me",
-            "participantAverage": "Participants' average",
-            "recognizePerformance": "Recognize Performance"
+            "scoreDistribution": "Score Distribution Chart",
+            "participant": "Number of candidates:",
+            "student": "person",
+            "keyPointPerformance": "Knowledge Point Performance Radar Chart",
+            "me": "Individual",
+            "participantAverage": "The whole school",
+            "recognizePerformance": "Recognition Level Radar Chart"
         },
-        "correctAnswer": "Correct",
-        "wrongAnswer": "Wrong",
+        "correctAnswer": "correctAnswer",
+        "wrongAnswer": "Wrong Answer",
         "unAnswered": "Unanswered",
         "solution": "Solution",
         "analysis": "Analysis",
-        "correctRate": "Correct rate",
-        "relatedAQues": "Related Question",
-        "testpop": {
-            "title": "Exam",
-            "completion": "Completion rate",
-            "practiceMode": "Practice Mode",
-            "all": "All",
-            "onlywrong": "Only wrong",
-            "questions": "questions",
-            "submitted": "submit",
-            "showAns": "Show Answer",
-            "hideAns": "Hide Answer",
-            "hint": "keypoint hint",
-            "previous": "Previous",
-            "next": "Next",
-            "myAnswerSheet": "MyAnswerSheet",
-            "exitQuizhint": "Exit Quiz",
-            "exitQuizhintDes": "The system detects that you have not yet 'submitted', if you choose 'OK', the current answer will not be saved, and you need to retest next time",
-            "cancel": "Cancel",
-            "ok": "OK",
-            "submitQuizhint": "Submit Quiz",
-            "submitQuizhintDes1": "The system detects that you finished all question, are you sure to submmit ?",
-            "check": "No, Check Again",
-            "okSubmit": "OK",
-            "qNo": "No.",
-            "myAns": "My Answer",
-            "correction": "Correction"
-        }
+        "correctRate": "correct rate",
+        "relatedAQues": "Related Questions",
     },
-    "informview-title": "Notifications",
-    "view": "view",
-    "read": "read",
-    "studyview-title": "Self-study",
-    "hiteachview-title": "HiTeach Note",
+    "informview-title": "Notification Overview",
+    "view": "Go to view",
+    "read": "Read",
+    "studyview-title": "self-study",
+    "hiteachview-title": "HiTeach Class Record",
     "hiteachNote": {
-        "material": "Material",
-        "classInteractionRecord": "Interaction Record",
-        "qA": "QA",
-        "qAMulti": "QA(Multi)",
-        "reference": "Reference Answer",
-        "correct": "Correct",
-        "groupQAMulti": "Group QA(Multi)",
-        "poImg": "Teacher sent a picture from Hitach:",
-        "link": "Link"
+        "material": "Class Content",
+        "classInteractionRecord": "Class Interaction Record",
+        "qA": "Question and Answer",
+        "qAMulti": "Question and Answer (Multiple Choice)",
+        "reference": "reference answer",
+        "correct": "The answer is correct",
+        "groupQAMulti": "Group QAMulti (multiple choice)",
+        "poImg": "The teacher pushed a picture from Hitach:",
+        "link": "Share Link"
     },
-    "courseList-title": "Course List",
-    "defaultClass": "Default",
-    "tempClass": "Additional",
+    "courseList-title": "My Course List",
+    "defaultClass": "Specify a class",
+    "tempClass": "Temporary Class",
     "courseContent": {
-        "baseInfo": "Infomation",
-        "description": "Description",
-        "classmates": "Classmates",
-        "classID": "Class ID",
-        "classTime": "Class time",
+        "baseInfo": "Basic Information",
+        "description": "Course Overview",
+        "classmates": "Classmates List",
+        "classID": "Course Code",
+        "classTime": "Class Time",
         "classroom": "Classroom",
         "teacher": "Teacher",
-        "co-teacher": "Co-teachers",
-        "addedTime": "Added time",
-        "syllabus": "Syllabus",
-        "seatNo": "No.",
+        "co-teacher": "Co-teacher",
+        "addedTime": "Added Course Date",
+        "syllabus": "Syllabus Overview",
+        "seatNo": "seatNo",
         "name": "Name",
         "group": "Group"
     },
-    "calendar-title": "Calendar - 2020 Semester II",
-    "today":"Today",
-    "importEvent":"Important Event of Class or Campus",
-    "deadlineTasks":"Tasks Ended of the day",
-    "schedule":"Schedule",
-    "des":"Description",
-    "time":"Time",
-    "place":"Place",
-    "course":"Course",
-    "mockcourses":["Reading and Writing", "English Presentation", "Special Experiments on Electronic Circuits", "Introduction to Computers", "Microprocessor Experiments"],
-    "importEventTitle":"Important Events",
-    "Thatday":"That day",
-    "deadlineTasksTitle":"Unfinished Tasks Ended That Day"
+    "calendar-title": "Calendar-Second Semester of 109 School Year",
+    "today": "Today",
+    "importEvent": "Campus Class Important Events",
+    "deadlineTasks": "Deadline Tasks",
+    "schedule": "Schedule Schedule",
+    "des": "Description",
+    "time": "Time",
+    "place": "Location",
+    "course": "course",
+    "mockcourses": ["Reading and Writing", "English Presentation", "Special Experiments on Electronic Circuits", "Introduction to Computers", "Microprocessor Experiments"],
+    "importEventTitle": "Campus Class Important Events",
+    "Thatday": "Thatday",
+    "deadlineTasksTitle": "DeadlineTasksTitle"
 }

+ 4 - 1
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/global.js

@@ -1,5 +1,8 @@
 export default{
     examType1:'期中考试',
     examType2:'期末考试',
-    examType3:'模拟考试'
+    examType3:'模拟考试',
+    evType1:'正规考',
+    evType2:'模拟考',
+    evType3:'普通考',
 }

+ 26 - 5
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/learnActivity.js

@@ -14,17 +14,38 @@ export default{
         finash:'已结束',
         endTime:'结束时间:',
         stop:'立即结束',
-        evType:'测试类型',
-        stuCount:'施测人数',
-        nodata:'暂无数据',
+        evType:'测试类型:',
+        stuCount:'施测人数:',
+        nodata:'暂无评测',
         tab1:'评测数据',
         tab2:'评测试卷',
         autoTips1:'此功能仅用于展示情景快速模拟学生作答数据,且学生作答为随机生成,仅供参考!',
-        autoTips1:'此功能仅用于展示情景快速模拟教师评分数据,且分数为随机生成,仅供参考!',
+        autoTips2:'此功能仅用于展示情景快速模拟教师评分数据,且分数为随机生成,仅供参考!',
         autoScore:'一键评分',
         autoAnswer:'一键作答',
         evSubject:'测试科目:',
         returnTop:'返回顶部',
-        
+        mockOk:'模拟成功',
+        mockErr:'模拟失败',
+        stopTitle:'结束评测',
+        stopContent:'结束后学生将不能继续作答,是否立即结束',
+        stopOk:'评测已结束!',
+        deleteTitle:'删除评测',
+        deleteContent:'是否确认删除',
+        deleteOk:'删除成功',
+        deleteErr:'删除失败',
+        noJoin:'此账号暂未加入任何学校!'
+    },
+
+    //创建评测校本/个人
+    createEv:{
+        createLabel:'创建评测',
+        publishEv:'发布评测',
+        return:'返回上级',
+        baseInfo:'基础信息',
+        evName:'评测名称',
+        evMode:'评测模式',
+        evType:''
+
     }
 }

+ 65 - 30
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/studentWeb.js

@@ -1,4 +1,28 @@
 export default {
+    "home": {
+        "teacher": "教师",
+        "student": "学生",
+        "setting": "个人设定",
+        "logout": "登出",
+        "joinClass": "加入课程",
+        "exam": "评量",
+    },
+    "public": {
+        "going": "进行中",
+        "finish": "已结束",
+        "schoolExam": "校级评测",
+        "privateExam": "个人评测",
+        "search":"请输入查询内容..."
+    },
+    "event": {
+        "allStatus": "所有活动状态",
+        "unFinished": "未完成",
+        "Fineshed": "已完成",
+        "Timeout": "已逾时",
+        "makeupExam": "可补考",
+        "makeupHw": "可补交",
+        "selectActivity":"请从列表挑选一个活动"
+    },
     "settingView-title": "个人设定",
     "teammodel-account-management": {
         "page-title": "TeamModel 帐号管理",
@@ -25,7 +49,6 @@ export default {
     "homeView-title": "首页资讯总览",
     "calenderCardTitle": "行事历",
     "recentClass": "近期上课提醒",
-
     "defaultRecentClass": "微处理机基础与应用概论",
     "defaultClassTime": "星期三 13:30 - 16:30 (第7-9节)",
     "defaultClassPlace": "第五教学楼 F504 教室",
@@ -114,8 +137,6 @@ export default {
     },
     "latestNotification": "最新通知",
     "postAt": "发布于",
-    "setting": "个人设定",
-    "logout": "登出",
     "______________": "______________",
     "eventView-title": "活动任务",
     "nextTask": "下个活动",
@@ -203,6 +224,45 @@ export default {
     },
     "exam": {
         "examLink": "试卷连结",
+        "isSubject": "科试卷",
+        "subjectNow": "当前科目",
+        "examData": "评测内容",
+        "gradeReport": "成绩报告",
+        "gradeAnalyse": "成绩分析",
+        "testpop": {
+            "title": "评量",
+            "completion": "完成度",
+            "practiceMode": "练习模式",
+            "all": "练习全部",
+            "onlywrong": "只练习答错",
+            "questions": "的题目",
+            "submitted": "交卷",
+            "finish":"已完成",
+            "showAns": "显示答案",
+            "hideAns": "隐藏答案",
+            "hint": "重点提示",
+            "previous": "上一题",
+            "next": "下一题",
+            "myAnswerSheet": "我的答题卡",
+            "exitQuizhint": "离开测验提示",
+            "exitQuizhintDe": "系统检测您尚未「交卷」,如您选择「确定」,",
+            "exitQuizhintDes": "则目前作答将不保存,下次需重新测验",
+            "cancel": "取消",
+            "ok": "确定",
+            "submitQuizhint": "交卷提示",
+            "submitQuizhintDes1": "系统检测目前您已全数作答完成,确定交卷吗?",
+            "check": "否,需再检查",
+            "conAnswer0": "目前您有",
+            "conAnswer1": "题 未作答 (详查答案卡)",
+            "conAnswer2":",请先完成题目作答!",
+            "conAnswer":"继续作答",
+            "okSubmit": "确定交卷",
+            "qNo": "题号:",
+            "myAns": "作答",
+            "correction": "正解",
+            "queNo": "题目:",
+            "myAns":"我的作答:"
+        },
         "timeoutHint": "评量活动时间已结束,逾时将以0分计算,或等待教师开放补考。",
         "contentPage": "评量内容",
         "scorePage": "成绩报告",
@@ -213,7 +273,7 @@ export default {
         "Math": "数学",
         "English": "英文",
         "score": "得分",
-        "difficulty": "考题综合难易度",
+        "difficulty": "考题综合难易度", 
         "average": "班平均分数",
         "rightNum": "我的答对题数",
         "smartComment": "智能点评",
@@ -234,32 +294,7 @@ export default {
         "analysis": "解析",
         "correctRate": "答对率",
         "relatedAQues": "关联题目",
-        "testpop": {
-            "title": "评量",
-            "completion": "完成度",
-            "practiceMode": "练习模式",
-            "all": "练习全部",
-            "onlywrong": "只练习答错",
-            "questions": "的题目",
-            "submitted": "交卷",
-            "showAns": "显示答案",
-            "hideAns": "隐藏答案",
-            "hint": "重点提示",
-            "previous": "上一题",
-            "next": "下一题",
-            "myAnswerSheet": "我的答案卡",
-            "exitQuizhint": "离开测验提示",
-            "exitQuizhintDes": "系统检测您尚未「交卷」,如您选择「确定」,则目前作答将不保存,下次需重新测验",
-            "cancel": "取消",
-            "ok": "确定",
-            "submitQuizhint": "交卷提示",
-            "submitQuizhintDes1": "系统检测目前您已全数作答完成,确定交卷吗?",
-            "check": "否,需再检查",
-            "okSubmit": "确定交卷",
-            "qNo": "题号",
-            "myAns": "作答",
-            "correction": "正解"
-        }
+       
     },
     "informview-title": "通知总览",
     "view": "前往检视",

+ 40 - 69
TEAMModelOS/ClientApp/src/locale/lang/zh-TW/studentWeb.js

@@ -1,4 +1,28 @@
 export default {
+    "home": {
+        "teacher": "教師",
+        "student": "學生",
+        "setting": "個人設定",
+        "logout": "登出",
+        "joinClass": "加入課程",
+        "exam": "評量",
+    },
+    "public": {
+        "going": "進行中",
+        "finish": "已結束",
+        "schoolExam": "校級評測",
+        "privateExam": "個人評測",
+        "search": "請輸入查詢內容..."
+    },
+    "event": {
+        "allStatus": "所有活動狀態",
+        "unFinished": "未完成",
+        "Fineshed": "已完成",
+        "Timeout": "已逾時",
+        "makeupExam": "可補考",
+        "makeupHw": "可補交",
+        "selectActivity": "請從列表挑選一個活動"
+    },
     "settingView-title": "個人設定",
     "teammodel-account-management": {
         "page-title": "TeamModel 帳號管理",
@@ -23,7 +47,7 @@ export default {
         "Habook-smart-school": "Habook智慧校園"
     },
     "homeView-title": "首頁資訊總覽",
-    "calenderCardTitle": "行事",
+    "calenderCardTitle": "行事",
     "recentClass": "近期上課提醒",
     "defaultRecentClass": "微處理機基礎與應用概論",
     "defaultClassTime": "星期三 13:30 - 16:30 (第7-9節)",
@@ -113,8 +137,6 @@ export default {
     },
     "latestNotification": "最新通知",
     "postAt": "發佈於",
-    "setting": "個人設定",
-    "logout": "登出",
     "______________": "______________",
     "eventView-title": "活動任務",
     "nextTask": "下個活動",
@@ -167,7 +189,7 @@ export default {
         "reVote": "再次投票",
         "voteSuccess": "投票成功",
         "voteDes": "活動結束後,即可檢視大家的投票結果",
-        "timeoutHint": "投票時間已過,無法再進行投票,敬請留意教師發投票結果!",
+        "timeoutHint": "投票時間已過,無法再進行投票,敬請留意教師發投票結果!",
         "voteResult": "本次投票結果為:",
         "voteDesDefault": "請選擇一個想要的方案:"
     },
@@ -180,30 +202,6 @@ export default {
         "uploadDes": "活動結束後,即可檢視作業成績評語",
         "timeoutHint": "作業上傳時間已結束,本次作業成績將以 0分 計算,或等候教師開放補交。",
         "contentPage": "作業內容",
-        "scorePage": "成績評語",
-        "score": "教師評分",
-        "classmatesComments": "同學給評",
-        "comment": "給評: "
-    },
-    "classmatesComment": {
-        "title": "同學作業觀摩與互評",
-        "seatNo": "座號",
-        "name": "姓名",
-        "star": "星級",
-        "comment": "給評",
-        "preview": "作業預覽:檔案名稱",
-        "unPreview": "這個檔案的格式目前不提供預覽",
-        "download": "下載檔案",
-        "submitted": "提交",
-        "inputSomething": "輸入評語與其他建議",
-        "previous": "上一位",
-        "next": "下一位",
-        "submitBtn": "送出"
-    },
-    "exam": {
-        "examLink": "試卷連結",
-        "timeoutHint": "評量活動時間已結束,逾時將以0分計算,或等待教師開放補考。",
-        "contentPage": "評量內容",
         "scorePage": "成績報告",
         "practiceHint": "評量活動時間已結束,仍可點擊試卷連結,持續練習。",
         "performance": "成績表現",
@@ -232,33 +230,7 @@ export default {
         "solution": "解答",
         "analysis": "解析",
         "correctRate": "答對率",
-        "relatedAQues": "關聯題目",
-        "testpop": {
-            "title": "評量",
-            "completion": "完成度",
-            "practiceMode": "練習模式",
-            "all": "練習全部",
-            "onlywrong": "只練習答錯",
-            "questions": "的題目",
-            "submitted": "交卷",
-            "showAns": "顯示答案",
-            "hideAns": "隱藏答案",
-            "hint": "重點提示",
-            "previous": "上一題",
-            "next": "下一題",
-            "myAnswerSheet": "我的答案卡",
-            "exitQuizhint": "離開測驗提示",
-            "exitQuizhintDes": "系統檢測您尚未「交卷」,如您選擇「確定」,則目前作答將不保存,下次需重新測驗",
-            "cancel": "取消",
-            "ok": "確定",
-            "submitQuizhint": "交卷提示",
-            "submitQuizhintDes1": "系統檢測目前您已全數作答完成,確定交卷嗎?",
-            "check": "否,需再檢查",
-            "okSubmit": "確定交卷",
-            "qNo": "題號",
-            "myAns": "作答",
-            "correction": "正解"
-        }
+        "relatedAQues": "關聯題目"
     },
     "informview-title": "通知總覽",
     "view": "前往檢視",
@@ -294,18 +266,17 @@ export default {
         "name": "姓名",
         "group": "組別"
     },
-    "calendar-title": "行事曆 - 109學年度第二學期",
-    "today":"今天",
-    "importEvent":"校園班級要事",
-   
-    "deadlineTasks":"截止活動任務",
-    "schedule":"表定課表",
-    "des":"描述",
-    "time":"時間",
-    "place":"地點",
-    "course":"課程",
-    "mockcourses":["閱讀與寫作","英文簡報","電子電路專題實驗","計算機概論","微處理機實驗"],
-    "importEventTitle":"校園班級要事",
-    "Thatday":"當日",
-    "deadlineTasksTitle":"當日截止未完成活動任務"
+    "calendar-title": "行事歷 - 109學年度第二學期",
+    "today": "今天",
+    "importEvent": "校園班級要事",
+    "deadlineTasks": "截止活動任務",
+    "schedule": "表定課表",
+    "des": "描述",
+    "time": "時間",
+    "place": "地點",
+    "course": "課程",
+    "mockcourses": ["閱讀與寫作", "英文簡報", "電子電路專題實驗", "計算機概論", "微處理機實驗"],
+    "importEventTitle": "校園班級要事",
+    "Thatday": "當日",
+    "deadlineTasksTitle": "當日截止未完成活動任務"
 }

+ 0 - 3
TEAMModelOS/ClientApp/src/utils/evTools.js

@@ -391,7 +391,6 @@ export default {
 					jsonData.item = []
 					const path = sasString.url + '/' + paper.code + paper.blob
 					let promiseArr = []
-
 					jsonData.slides.forEach((item, index) => {
 						promiseArr.push(new Promise(async (resolve, reject) => {
 							// 获取题目JSON并且包装成完整试题对象
@@ -410,7 +409,6 @@ export default {
 							}
 						}))
 					})
-
 					Promise.all(promiseArr).then(res => {
 						res.forEach((resItem,resIndex) => {
 							resItem.children = []
@@ -436,7 +434,6 @@ export default {
 		return new Promise(async (r, j) => {
 			// 根据试卷的Blob地址 去读取JSON文件
 			let sasString = paper.scope === 'school' ? await $tools.getSchoolSas(paper.code) : await $tools.getPrivateSas(paper.code)
-			//console.log(sasString)
 			try {
 				console.log(paper.blob + sasString.sas)
 				let jsonInfo = await $tools.getFile(paper.blob + sasString.sas)

+ 9 - 5
TEAMModelOS/ClientApp/src/view/learnactivity/CreatePrivEva.vue

@@ -2,8 +2,12 @@
     <div class="create-priv-container">
         <div class="create-header">
             <p class="create-header-title" @click="consData">创建评测</p>
-            <Button class="btn-save" type="text" :loading="isLoading" ghost icon="ios-albums-outline" @click="saveEvaluation" style="margin-right:30px;">发布评测</Button>
-            <Button class="btn-save" type="text" ghost icon="md-arrow-back" @click="confirmToManage">返回上级</Button>
+            <Button class="btn-save" type="text" :loading="isLoading" ghost icon="ios-albums-outline" @click="saveEvaluation" style="margin-right:30px;">
+                发布评测
+            </Button>
+            <Button class="btn-save" type="text" ghost icon="md-arrow-back" @click="confirmToManage">
+                返回上级
+            </Button>
         </div>
         <div class="create-body">
             <div class="evaluation-attr-wrap">
@@ -79,7 +83,7 @@
                 </div>
             </div>
         </div>
-        
+
     </div>
 </template>
 <script>
@@ -98,7 +102,7 @@ export default {
     },
     data() {
         return {
-            
+
             props: {
                 multiple: true,
             },
@@ -202,7 +206,7 @@ export default {
         }
     },
     methods: {
-        
+
         //重置课程类型
         resetCourse() {
             this.evaluationInfo.targets = []

+ 29 - 47
TEAMModelOS/ClientApp/src/view/learnactivity/MgtPrivEva.vue

@@ -5,10 +5,10 @@
             <!--评测列表-->
             <div class="evaluation-list-wrap" slot="left">
                 <div class="evaluation-list-title">
-                    <span v-if="scope == 'private'">评测列表</span>
-                    <Icon type="md-add" class=" to-create-icon" @click="goToCreate" title="新建" />
-                    <Icon type="md-trash" v-show="evaListShow.length" class="to-create-icon" title="删除" @click="deleteEvaluation" />
-                    <Icon type="md-create" v-show="evaListShow.length" class="to-create-icon" @click="editEvaluation" title="编辑" />
+                    <span>{{$t('learnActivity.mgtScEv.listLabel')}}</span>
+                    <Icon type="md-add" class=" to-create-icon" @click="goToCreate" :title="$t('learnActivity.mgtScEv.create')" />
+                    <Icon type="md-trash" v-show="evaListShow.length" class="to-create-icon" :title="$t('learnActivity.mgtScEv.delete')" @click="deleteEvaluation" />
+                    <Icon type="md-create" v-show="evaListShow.length" class="to-create-icon" @click="editEvaluation" :title="$t('learnActivity.mgtScEv.edit')" />
                 </div>
                 <div class="evaluation-list-main">
                     <vuescroll>
@@ -18,38 +18,42 @@
                             </p>
                             <p class="evaluation-type">
                                 <Icon type="md-time" style="margin-right:5px;" size="16" />
-                                <span>施测时间:{{dateFormat(item.startTime)}}</span>
+                                <span>{{$t('learnActivity.mgtScEv.createTime')}}{{dateFormat(item.startTime)}}</span>
                                 <span class="evaluation-status-tag" :style="{ borderColor: item.progress == 'pending' ? '#0BADD4' : item.progress == 'going' ? '#1CC0F3' : '#949594', color: (item.progress == 'pending' ? '#0BADD4' : item.progress == 'going' ? '#1CC0F3' : '#949594')}">
-                                    {{ item.progress == 'pending' ? '待发布' : item.progress == 'going' ? '进行中' : '已结束' }}
+                                    {{ item.progress == 'pending' ? $t('learnActivity.mgtScEv.pending') : item.progress == 'going' ? $t('learnActivity.mgtScEv.going') : $t('learnActivity.mgtScEv.finish') }}
                                 </span>
                             </p>
                             <p class="evaluation-type">
                                 <Icon type="md-time" style="margin-right:5px;" size="16" />
-                                <span>结束时间:{{dateFormat(item.endTime)}}</span>
+                                <span>{{$t('learnActivity.mgtScEv.endTime')}}{{dateFormat(item.endTime)}}</span>
                                 <span v-if="item.progress == 'going'" class="handle-end-tag" @click="handleEnd(index)">
-                                    立即结束
+                                    {{$t('learnActivity.mgtScEv.stop')}}
                                 </span>
                             </p>
                             <div style="display:inline-flex">
                                 <p class="evaluation-type">
                                     <Icon type="ios-cube" style="margin-right:5px;" size="14" />
-                                    <span>测试类型:{{getTypeLabel(item.type)}}</span>
+                                    <span>{{$t('learnActivity.mgtScEv.evType')}}{{getTypeLabel(item.type)}}</span>
                                 </p>
                                 <p class="evaluation-type">
                                     <Icon type="ios-people" style="margin-right:5px;" size="16" />
-                                    <span>施测人数:{{item.stuCount}}</span>
+                                    <span>{{$t('learnActivity.mgtScEv.stuCount')}}{{item.stuCount}}</span>
                                 </p>
                             </div>
                         </div>
-                        <EmptyData v-if="evaListShow.length == 0" style="margin-top:180px;" textContent="暂无评测"></EmptyData>
+                        <EmptyData v-if="evaListShow.length == 0" style="margin-top:180px;" :textContent="$t('learnActivity.mgtScEv.nodata')"></EmptyData>
                     </vuescroll>
                 </div>
             </div>
             <div slot="right" class="evaluation-detail-wrap">
                 <!--顶部菜单-->
                 <div class="evaluation-detail-bar">
-                    <span :class="curBarIndex == 0 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(0)">评测数据</span>
-                    <span :class="curBarIndex == 1 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(1)">评测试卷</span>
+                    <span :class="curBarIndex == 0 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(0)">
+                        {{$t('learnActivity.mgtScEv.tab1')}}
+                    </span>
+                    <span :class="curBarIndex == 1 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(1)">
+                        {{$t('learnActivity.mgtScEv.tab2')}}
+                    </span>
                 </div>
                 <!--试卷信息-->
                 <div :class="curBarIndex == 1 ? 'animated fadeIn evaluation-base-info':'evaluation-base-info animated fadeOutRight'" v-show="curBarIndex == 1">
@@ -59,7 +63,7 @@
                             <TestPaper v-if="evaListShow[curEvaIndex] && evaListShow[curEvaIndex].papers && evaListShow[curEvaIndex].papers[curSubIndex] && evaListShow[curEvaIndex].papers[curSubIndex].item" :paper="evaListShow[curEvaIndex].papers[curSubIndex]" style="color:#515a6e;margin-top:-30px;" :isShowTools="false" isExamPaper></TestPaper>
                             <EmptyData v-else style="margin-top:60px;"></EmptyData>
                             <!--返回顶部-->
-                            <div class="back-to-top fl-col-center" title="返回顶部" v-if="showBack" @click="handleBackToTop">
+                            <div class="back-to-top fl-col-center" :title="$t('learnActivity.mgtScEv.returnTop')" v-if="showBack" @click="handleBackToTop">
                                 <Icon type="ios-arrow-up" />
                             </div>
                         </vuescroll>
@@ -72,9 +76,6 @@
 
             </div>
         </Split>
-        <Modal v-model="editEvaluationStatus" title="编辑评测" @on-ok="confirmEdit">
-            <p>即将跳转到评测编辑页面?</p>
-        </Modal>
     </div>
 </template>
 <script>
@@ -90,7 +91,6 @@ export default {
             split1: 0.2,
             scope: '',//school 校本 private 个人
             showBack: false,
-            editEvaluationStatus: false,
             curSubIndex: 0,
             curBarIndex: 0,
             curEvaIndex: 0,
@@ -98,20 +98,6 @@ export default {
             evaListShow: [],
             examDetaiInfo: {},
             targetList: [],
-            evaType: [
-                {
-                    value: 'regular',
-                    label: '正规考'
-                },
-                {
-                    value: 'simulation',
-                    label: '模拟考'
-                },
-                {
-                    value: 'normal',
-                    label: '普通考'
-                }
-            ],
             isLoading: false,
             filterPeriod: undefined,
             schoolBase: {
@@ -120,11 +106,10 @@ export default {
         }
     },
     methods: {
-        
         handleEnd(index) {
             this.$Modal.confirm({
-                title: '结束评测',
-                content: `结束后学生将不能继续作答,确认立即结束${this.evaListShow[index].name}吗?`,
+                title: this.$t('learnActivity.mgtScEv.stopTitle'),
+                content: `${this.$t('learnActivity.mgtScEv.stopContent')}${this.evaListShow[index].name}?`,
                 onOk: () => {
                     this.$api.learnActivity.FinishEva({
                         id: this.evaListShow[index].id,
@@ -132,7 +117,7 @@ export default {
                     }).then(
                         res => {
                             if (!res.error) {
-                                this.$Message.success('评测已结束!')
+                                this.$Message.success(this.$t('learnActivity.mgtScEv.stopOk'))
                                 this.evaListShow[index].progress = 'finish'
                             } else {
                                 this.$Message.error('API ERROR!')
@@ -147,7 +132,7 @@ export default {
         },
         /**获取type对应的label */
         getTypeLabel(code) {
-            for (let item of this.evaType) {
+            for (let item of this.$GLOBAL.EV_TYPE()) {
                 if (item.value == code) {
                     return item.label
                 }
@@ -191,17 +176,14 @@ export default {
         /**vuescroll回到顶部 */
         handleBackToTop() {
             this.$refs['test-paper-detail'].scrollTo(
-                {
-                    y: '0'
-                },
-                300
+                { y: '0' }, 300
             )
         },
         /**删除评测信息 */
         deleteEvaluation() {
             this.$Modal.confirm({
-                title: '删除评测',
-                content: `确认删除${this.evaListShow[this.curEvaIndex].name}吗?`,
+                title: this.$t('learnActivity.mgtScEv.deleteTitle'),
+                content: `${this.$t('learnActivity.mgtScEv.deleteContent')}${this.evaListShow[this.curEvaIndex].name}?`,
                 onOk: () => {
                     let params = {
                         id: this.evaListShow[this.curEvaIndex].id,
@@ -215,13 +197,13 @@ export default {
                                 let index = this.curEvaIndex
                                 this.selectEvaluation(0)
                                 this.evaListShow.splice(index, 1)
-                                this.$Message.success('删除成功!')
+                                this.$Message.success(this.$t('learnActivity.mgtScEv.deleteOk'))
                             } else {
-                                this.$Message.error('删除失败!')
+                                this.$Message.error(this.$t('learnActivity.mgtScEv.deleteErr'))
                             }
                         },
                         err => {
-                            this.$Message.error('删除失败!')
+                            this.$Message.error(this.$t('learnActivity.mgtScEv.deleteErr'))
                         }
                     ).finally(() => {
                         setTimeout(() => {
@@ -243,7 +225,7 @@ export default {
                     })
                 }
             } else {
-                this.$Message.warning("此账号暂未加入任何学校!")
+                this.$Message.warning(this.$t('learnActivity.mgtScEv.noJoin'))
             }
         },
         confirmEdit() {

+ 36 - 47
TEAMModelOS/ClientApp/src/view/learnactivity/MgtSchoolEva.vue

@@ -5,7 +5,6 @@
             <!--评测列表-->
             <div class="evaluation-list-wrap" slot="left">
                 <div class="evaluation-list-title">
-                    <span v-if="scope == 'private'">{{$t('learnActivity.mgtScEv.listLabel')}}</span>
                     <Dropdown class="sort-dropdown" trigger="click" placement="bottom-start" @on-click="function(e){ filterPeriod = e }" @on-visible-change="dropdownStates" v-if="$store.state.user.schoolProfile.school_base && scope == 'school'">
                         <span style="cursor: pointer;">
                             {{$t('learnActivity.mgtScEv.period')}}
@@ -16,9 +15,9 @@
                             <DropdownItem :name="item.id">{{ item.name }}</DropdownItem>
                         </DropdownMenu>
                     </Dropdown>
-                    <Icon type="md-add" class=" to-create-icon" @click="goToCreate" title="新建" />
-                    <Icon type="md-trash" v-show="evaListShow.length" class="to-create-icon" title="删除" @click="deleteEvaluation" />
-                    <Icon type="md-create" v-show="evaListShow.length" class="to-create-icon" @click="editEvaluation" title="编辑" />
+                    <Icon type="md-add" class=" to-create-icon" @click="goToCreate" :title="$t('learnActivity.mgtScEv.create')" />
+                    <Icon type="md-trash" v-show="evaListShow.length" class="to-create-icon" :title="$t('learnActivity.mgtScEv.delete')" @click="deleteEvaluation" />
+                    <Icon type="md-create" v-show="evaListShow.length" class="to-create-icon" @click="editEvaluation" :title="$t('learnActivity.mgtScEv.edit')" />
                 </div>
                 <div class="evaluation-list-main">
                     <vuescroll>
@@ -28,51 +27,55 @@
                             </p>
                             <p class="evaluation-type">
                                 <Icon type="md-time" style="margin-right:5px;" size="16" />
-                                <span>施测时间:{{dateFormat(item.startTime)}}</span>
+                                <span>{{$t('learnActivity.mgtScEv.createTime')}}{{dateFormat(item.startTime)}}</span>
                                 <span class="evaluation-status-tag" :style="{ borderColor: item.progress == 'pending' ? '#0BADD4' : item.progress == 'going' ? '#1CC0F3' : '#949594', color: (item.progress == 'pending' ? '#0BADD4' : item.progress == 'going' ? '#1CC0F3' : '#949594')}">
-                                    {{ item.progress == 'pending' ? '待发布' : item.progress == 'going' ? '进行中' : '已结束' }}
+                                    {{ item.progress == 'pending' ? $t('learnActivity.mgtScEv.pending') : item.progress == 'going' ? $t('learnActivity.mgtScEv.going') : $t('learnActivity.mgtScEv.finash') }}
                                 </span>
                             </p>
                             <p class="evaluation-type">
                                 <Icon type="md-time" style="margin-right:5px;" size="16" />
-                                <span>结束时间:{{dateFormat(item.endTime)}}</span>
+                                <span>{{$t('learnActivity.mgtScEv.endTime')}}{{dateFormat(item.endTime)}}</span>
                                 <span v-if="item.progress == 'going'" class="handle-end-tag" @click="handleEnd(index)">
-                                    立即结束
+                                    {{$t('learnActivity.mgtScEv.stop')}}
                                 </span>
                             </p>
                             <div style="display:inline-flex">
                                 <p class="evaluation-type">
                                     <Icon type="ios-cube" style="margin-right:5px;" size="14" />
-                                    <span>测试类型:{{getTypeLabel(item.type)}}</span>
+                                    <span>{{$t('learnActivity.mgtScEv.evType')}}{{getTypeLabel(item.type)}}</span>
                                 </p>
                                 <p class="evaluation-type">
                                     <Icon type="ios-people" style="margin-right:5px;" size="16" />
-                                    <span>施测人数:{{item.stuCount}}</span>
+                                    <span>{{$t('learnActivity.mgtScEv.stuCount')}}{{item.stuCount}}</span>
                                 </p>
                             </div>
                         </div>
-                        <EmptyData v-if="evaListShow.length == 0" style="margin-top:180px;" :textContent="`${scope == 'school' ? filterPeriodName:''}暂无评测`"></EmptyData>
+                        <EmptyData v-if="evaListShow.length == 0" style="margin-top:180px;" :textContent="`${scope == 'school' ? filterPeriodName:''}${$t('learnActivity.mgtScEv.nodata')}`"></EmptyData>
                     </vuescroll>
                 </div>
             </div>
             <div slot="right" class="evaluation-detail-wrap">
                 <!--顶部菜单-->
                 <div class="evaluation-detail-bar">
-                    <span :class="curBarIndex == 0 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(0)">评测数据</span>
-                    <span :class="curBarIndex == 1 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(1)">评测试卷</span>
+                    <span :class="curBarIndex == 0 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(0)">
+                        {{$t('learnActivity.mgtScEv.tab1')}}
+                    </span>
+                    <span :class="curBarIndex == 1 ? 'evalustion-bar-item line-bottom-active line-bottom':'evalustion-bar-item line-bottom'" @click="selectBar(1)">
+                        {{$t('learnActivity.mgtScEv.tab2')}}
+                    </span>
                     <div style="float:right;" v-if="$access.ability('admin','mock-eva').validateAll">
-                        <Tooltip content="此功能仅用于展示情景快速模拟学生作答数据,且学生作答为随机生成,仅供参考!!!" :max-width="240">
-                            <Button type="success" size="small" :loading="answerLoading" class="mock-stu-answer" @click="mockAnswer">一键作答</Button>
+                        <Tooltip :content="$t('learnActivity.mgtScEv.autoTips1')" :max-width="240">
+                            <Button type="success" size="small" :loading="answerLoading" class="mock-stu-answer" @click="mockAnswer">{{$t('learnActivity.mgtScEv.autoAnswer')}}</Button>
                         </Tooltip>
-                        <Tooltip content="此功能仅用于展示情景快速模拟教师评分数据,且分数为随机生成,仅供参考!!!" :max-width="240">
-                            <Button type="warning" size="small" :loading="scoreLoading" class="mock-tea-scoring" @click="mockScoring">一键评分</Button>
+                        <Tooltip :content="$t('learnActivity.mgtScEv.autoTips2')" :max-width="240">
+                            <Button type="warning" size="small" :loading="scoreLoading" class="mock-tea-scoring" @click="mockScoring">{{$t('learnActivity.mgtScEv.autoScore')}}</Button>
                         </Tooltip>
                     </div>
                 </div>
                 <!--试卷信息-->
                 <div :class="curBarIndex == 1 ? 'animated fadeIn evaluation-base-info':'evaluation-base-info animated fadeOutRight'" v-show="curBarIndex == 1">
                     <div class="evaluation-test-paper-header" v-if="evaListShow[curEvaIndex]">
-                        <span>测试科目:</span>
+                        <span>{{$t('learnActivity.mgtScEv.evSubject')}}</span>
                         <span v-for="(item,index) in evaListShow[curEvaIndex].subjects" :key="index" :class="index == curSubIndex ? 'subject-item subject-item-active':'subject-item'" @click="selectSubject(index)">
                             {{item.name}}
                         </span>
@@ -84,7 +87,7 @@
                             <EmptyData v-else style="margin-top:60px;"></EmptyData>
 
                             <!--返回顶部-->
-                            <div class="back-to-top fl-col-center" title="返回顶部" v-if="showBack" @click="handleBackToTop">
+                            <div class="back-to-top fl-col-center" :title="$t('learnActivity.mgtScEv.returnTop')" v-if="showBack" @click="handleBackToTop">
                                 <Icon type="ios-arrow-up" />
                             </div>
                         </vuescroll>
@@ -125,20 +128,6 @@ export default {
             evaListShow: [],
             examDetaiInfo: {},
             targetList: [],
-            evaType: [
-                {
-                    value: 'regular',
-                    label: '正规考'
-                },
-                {
-                    value: 'simulation',
-                    label: '模拟考'
-                },
-                {
-                    value: 'normal',
-                    label: '普通考'
-                }
-            ],
             isLoading: false,
             filterPeriod: undefined,
             schoolBase: {
@@ -156,11 +145,11 @@ export default {
             }).then(
                 res => {
                     setTimeout(() => {
-                        this.$Message.success('模拟成功')
+                        this.$Message.success(this.$t('learnActivity.mgtScEv.mockOk'))
                     }, 500)
                 },
                 err => {
-                    this.$Message.error('模拟失败')
+                    this.$Message.error(this.$t('learnActivity.mgtScEv.mockErr'))
                 }
             ).finally(() => {
                 setTimeout(() => {
@@ -178,11 +167,11 @@ export default {
             }).then(
                 res => {
                     setTimeout(() => {
-                        this.$Message.success('模拟成功')
+                        this.$Message.success(this.$t('learnActivity.mgtScEv.mockOk'))
                     }, 500)
                 },
                 err => {
-                    this.$Message.error('模拟失败')
+                    this.$Message.error(this.$t('learnActivity.mgtScEv.mockErr'))
                 }
             ).finally(() => {
                 setTimeout(() => {
@@ -193,8 +182,8 @@ export default {
         },
         handleEnd(index) {
             this.$Modal.confirm({
-                title: '结束评测',
-                content: `结束后学生将不能继续作答,确认立即结束${this.evaListShow[index].name}吗?`,
+                title: this.$t('learnActivity.mgtScEv.stopTitle'),
+                content: `${this.$t('learnActivity.mgtScEv.stopContent')}${this.evaListShow[index].name}?`,
                 onOk: () => {
                     this.$api.learnActivity.FinishEva({
                         id: this.evaListShow[index].id,
@@ -202,7 +191,7 @@ export default {
                     }).then(
                         res => {
                             if (!res.error) {
-                                this.$Message.success('评测已结束!')
+                                this.$Message.success(this.$t('learnActivity.mgtScEv.stopOk'))
                                 this.evaListShow[index].progress = 'finish'
                             } else {
                                 this.$Message.error('API ERROR!')
@@ -220,7 +209,7 @@ export default {
         },
         /**获取type对应的label */
         getTypeLabel(code) {
-            for (let item of this.evaType) {
+            for (let item of this.$GLOBAL.EV_TYPE()) {
                 if (item.value == code) {
                     return item.label
                 }
@@ -273,8 +262,8 @@ export default {
         /**删除评测信息 */
         deleteEvaluation() {
             this.$Modal.confirm({
-                title: '删除评测',
-                content: `确认删除${this.evaListShow[this.curEvaIndex].name}吗?`,
+                title: this.$t('learnActivity.mgtScEv.deleteTitle'),
+                content: `${this.$t('learnActivity.mgtScEv.deleteContent')}${this.evaListShow[this.curEvaIndex].name}?`,
                 onOk: () => {
                     let params = {
                         id: this.evaListShow[this.curEvaIndex].id,
@@ -288,13 +277,13 @@ export default {
                                 let index = this.curEvaIndex
                                 this.selectEvaluation(0)
                                 this.evaListShow.splice(index, 1)
-                                this.$Message.success('删除成功!')
+                                this.$Message.success(this.$t('learnActivity.mgtScEv.deleteOk'))
                             } else {
-                                this.$Message.error('删除失败!')
+                                this.$Message.error(this.$t('learnActivity.mgtScEv.deleteErr'))
                             }
                         },
                         err => {
-                            this.$Message.error('删除失败!')
+                            this.$Message.error(this.$t('learnActivity.mgtScEv.deleteErr'))
                         }
                     ).finally(() => {
                         setTimeout(() => {
@@ -316,7 +305,7 @@ export default {
                     })
                 }
             } else {
-                this.$Message.warning("此账号暂未加入任何学校!")
+                this.$Message.warning(this.$t('learnActivity.mgtScEv.noJoin'))
             }
         },
         confirmEdit() {

+ 6 - 207
TEAMModelOS/ClientApp/src/view/student-web/App.vue

@@ -26,16 +26,16 @@
                                 </a>
                             </li>
                             <DropdownMenu slot="list">
-                                <DropdownItem :name="'teacher'">教师</DropdownItem>
-                                <DropdownItem :name="'student'">{{ '學生' }}</DropdownItem>
+                                <DropdownItem :name="'teacher'">{{$t("studentWeb.home.teacher")}}</DropdownItem>
+                                <DropdownItem :name="'student'">{{$t("studentWeb.home.student")}}</DropdownItem>
                             </DropdownMenu>
                         </Dropdown>
                         <li class="profile-pop-item">
                             <svg-icon icon-class="setting"
-                                      class="profile-pop-itemIcon1" />{{ $t("studentWeb.setting") }}
+                                      class="profile-pop-itemIcon1" />{{ $t("studentWeb.home.setting") }}
                         </li>
                         <li class="profile-pop-item" @click="onQuit">
-                            <svg-icon icon-class="logout" class="profile-pop-itemIcon2" />{{$t("studentWeb.logout")}}
+                            <svg-icon icon-class="logout" class="profile-pop-itemIcon2" />{{$t("studentWeb.home.logout")}}
                         </li>
                     </div>
                 </span>
@@ -44,132 +44,6 @@
                         <span class="info-badge" v-if="MyNo != 6"></span>
                         <svg-icon icon-class="bell" class="tabIcon1" />
                     </MenuItem>
-                    <!--通知彈窗區域-->
-                    <!--<div id="info-pop" v-if="isClickInfoPop == false">
-                      <span class="info-pop-triangle"></span>
-                      <div class="list">
-                        <div class="info-pop-title">
-                          {{ $t("studentWeb.latestNotification") }}
-                        </div>
-                        <Scroll
-                          class="list-block"
-                          :on-reach-bottom="handleReachBottom"
-                          :loading-text="
-                            mockdata.length == 69
-                              ? $t('studentWeb.missionListCardReachBottom')
-                              : $t('studentWeb.missionListCardLoading')
-                          "
-                        >
-                          <li
-                            class="list-item"
-                            v-for="(item, index) in mockdata"
-                            @click="gotoTargetItemPage(item)"
-                            :key="index"
-                          >
-                            <ul>
-                              <li class="list-item-icon">
-                                <svg-icon
-                                  v-if="item.eventType == '作業'"
-                                  icon-class="doc"
-                                />
-                                <svg-icon
-                                  v-if="item.eventType == '課前預習'"
-                                  icon-class="selflearninginTime"
-                                />
-                                <svg-icon
-                                  v-if="
-                                    item.eventType == '評量' &&
-                                    item.eventSubject != '綜合學科'
-                                  "
-                                  icon-class="test"
-                                  class="reset-testIcon"
-                                />
-                                <svg-icon
-                                  v-if="
-                                    item.eventType == '評量' &&
-                                    item.eventSubject == '綜合學科'
-                                  "
-                                  icon-class="multiTest"
-                                />
-                                <svg-icon
-                                  v-if="item.eventType == '教師私訊'"
-                                  icon-class="message"
-                                />
-                                <svg-icon
-                                  v-if="item.eventType == '投票'"
-                                  icon-class="vote"
-                                />
-                                <svg-icon
-                                  v-if="item.eventType == '公告'"
-                                  icon-class="slide"
-                                />
-                                <svg-icon
-                                  v-if="item.eventType == 'Hiteach電子筆記'"
-                                  icon-class="hiteach"
-                                />
-                                <svg-icon
-                                  v-if="item.eventType == '問卷'"
-                                  icon-class="quesnaire"
-                                />
-                              </li>
-                              <li
-                                class="list-item-info"
-                                :class="{
-                                  'list-item-infonofeedback': isNoFeedback(item),
-                                }"
-                              >
-                                <p
-                                  class="list-item-title"
-                                  :class="{
-                                    'list-item-titleEn': getCurrentLang() == 'en',
-                                  }"
-                                >
-                                  <span
-                                    class="list-item-typeMark"
-                                    v-if="getCurrentLang() == 'tw'"
-                                    >{{ item.eventType }}</span
-                                  >
-                                  <span
-                                    class="list-item-typeMark"
-                                    v-if="getCurrentLang() == 'en'"
-                                    >{{ transTypetoEn(item.eventType) }}</span
-                                  >
-
-                                  <span>{{ item.eventName }}</span>
-                                </p>
-                                <p class="list-item-time">
-                                  <span class="teacher-name">{{ item.teacher }}</span>
-                                  {{ $t("studentWeb.postAt") }} {{ item.endTime }} 14:20
-                                </p>
-                              </li>
-                              <li class="list-item-isDone" v-if="item.isDone == true">-->
-                    <!---可能產生反饋的圖示-->
-                    <!--<div
-                      class="done-feedback"
-                      v-show="item.eventType == '投票'"
-                    >-->
-                    <!--svg-icon class="feedback-icon" icon-class="voteStatic" /-->
-                    <!--<div class="score-num">B</div>
-                    </div>
-                    <div
-                      class="done-feedback"
-                      v-show="item.eventType == '評量'"
-                    >
-                      <span class="score-num">{{ randomScore() }}</span>
-                    </div>
-                    <div
-                      class="done-feedback"
-                      v-show="item.eventType == '作業'"
-                    >
-                      <span class="score-num">{{ randomScore() }}</span>
-                    </div>-->
-                    <!---可能產生反饋的圖示-->
-                    <!--</li>
-                            </ul>
-                          </li>
-                        </Scroll>
-                      </div>
-                    </div>-->
                 </span>
                 <!--通知彈窗區域-->
                 <MenuItem name="5" @click.native="noData">
@@ -187,7 +61,7 @@
                 <button class="addcoursebtn"
                         @click='sentcourseID()'
                         v-if="MyName == this.$t('studentWeb.courseList-title')">
-                    加入課程
+                    {{$t("studentWeb.home.joinClass")}}
                 </button>
 
                 <input maxlength="6"
@@ -215,9 +89,6 @@
 
 <script>
     import jwtDecode from 'jwt-decode'
-    import { Random } from "mockjs";
-    import mockdata from "@/api/newData";
-    import mockdataEn from "@/api/newDataEn";
     import SmallNavBar from "@/components/student-web/SmallNavBar";
     import PersonalPhoto from '@/components/public/personalPhoto/Index.vue'
     export default {
@@ -243,7 +114,6 @@
                 bgc: "red",
                 active: false,
                 mockdata: "",
-                eventPageType: ["課前預習", "評量", "作業", "投票", "問卷"], //活動頁出現的類型
                 isClickInfoPop: false,
                 isTyping: false,
                 curRole: '',
@@ -254,11 +124,11 @@
         },
         computed: {
             getRoleName() {
-                console.log('用户权限',this.curRole)
                 return val => {
                     return val === 'student' ? '学生' : '教师'
                 }
             },
+            //判断用户权限
             isTeacher() {
                 let state = false
                 if (this.users.roles.length) {
@@ -299,61 +169,15 @@
             clearInput() {
                 this.courseID = "";
             },
-            isNoFeedback(item) {
-                return (
-                    (item.isDone == false && item.endTime > "2020.02.10") ||
-                    item.eventType == "教師私訊" ||
-                    item.eventType == "Hiteach電子筆記" ||
-                    item.eventType == "公告"
-                );
-            },
-            getCurrentLang() {
-                return localStorage.getItem("lang");
-            },
-            createMockdataOriginal: function () {
-                if (localStorage.getItem("lang") == "en") {
-                    this.mockdataOriginal = mockdataEn.eventList;
-                } else this.mockdataOriginal = mockdata.eventList;
-                localStorage.setItem('lang', "tw")
-            },
-            createMockdata: function () {
-                if (localStorage.getItem("lang") == "en") {
-                    this.mockdata = mockdataEn.eventList.slice(0, 6);
-                } else this.mockdata = mockdata.eventList.slice(0, 6);
-            },
-            handleReachBottom() {
-                return new Promise((resolve) => {
-                    setTimeout(() => {
-                        for (let i = 1; i < 11 && this.mockdata.length < this.mockdataOriginal.length - 1; i++) {
-                            //小於原始資料總長度在加入空陣列
-                            this.mockdata.push(this.mockdataOriginal[this.mockdata.length + 1]);
-                        }
-                        resolve();
-                    }, 1000);
-                });
-            },
-            transTypetoEn(type) {
-                if (type == "投票") return "Vote";
-                else if (type == "評量") return "Exam";
-                else if (type == "作業") return "Homework";
-                else if (type == "課前預習") return "Preview";
-                else if (type == "公告") return "Billboard";
-                else if (type == "教師私訊") return "Message";
-                else if (type == "Hiteach電子筆記") return "HiTeach Note";
-            },
             onResize() {
                 this.windowWidth = window.innerWidth;
                 this.windowHeight = window.innerHeight;
             },
             pagebgc() {
-                //console.log(this.MyName)
                 if (this.MyNo == "1") {
                     return "#f0f0f0";
                 }
             },
-            randomScore: function () {
-                return Random.integer(70, 96);
-            },
             mouseOver: function () {
                 this.active = !this.active;
             },
@@ -367,7 +191,6 @@
             },
             noData() {
                 this.$Message.warning('此功能暂未开放!')
-
             },
             reload() {
                 this.isRouterAlive = false;
@@ -379,30 +202,6 @@
             },
             getNavName: function (MyName) {
                 this.MyName = MyName;
-                console.log('myname', this.MyName)
-                console.log('myname', this.MyNo)
-            },
-            gotoTargetItemPage(item) {
-                this.$store.commit("ChangeItemName", item);
-                this.isClickInfoPop = true;
-                this.$store.commit("SetisFromInfoPoptpScroll", true);
-                if (this.eventPageType.includes(item.eventType)) {
-                    this.$router.push("/eventView#" + item.eventID);
-                }
-                if (item.eventType == "Hiteach電子筆記") {
-                    //this.$router.push("/hiteachView");
-                    this.$Message.warning('此功能暂未开放!')
-
-                }
-                if (item.eventType == "公告" || item.eventType == "教師私訊") {
-                    //this.$router.push("/informView");
-                    this.$Message.warning('此功能暂未开放!')
-
-                }
-                //點擊後先將彈窗關閉,待跳轉過去才能在顯示彈窗
-                setTimeout(() => {
-                    this.isClickInfoPop = false;
-                }, 1000);
             },
             getUsers() {
                 this.users = JSON.parse(decodeURIComponent(localStorage.userInfo, "utf-8"));