Explorar o código

自訂名單:更新字串、樣式

Louise lin %!s(int64=2) %!d(string=hai) anos
pai
achega
9272f9c66b

+ 64 - 76
HiTeachCC/ClientApp/src/components/EditMemberList.vue

@@ -2,44 +2,50 @@
   <div class="editmemberlist-view" v-show="showEditMemberList">
     <!--編輯單個學生-->
     <div class="editmemberlist-card editstudent-card" v-if="showEditStudent">
-      <p class="editstudent-title">{{ editStudentMode == "edit" ? "編輯學生" : "新增學生" }}</p>
-      <div class="input-wrap"><label> 姓名</label><input type="text" v-model="tempEditName" maxlength="50" /></div>
-      <div class="input-wrap"><label> 座號</label><input type="number" v-model="tempEditSeatID" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" @keydown="checkUserKeyboardInputSeatID($event)" min="1" max="999" maxlength="3" /></div>
+      <p class="editstudent-title">{{ editStudentMode == "edit" ? $t("memberlist['編輯學生']") : $t("memberlist['新增學生']") }}</p>
+      <div class="input-wrap">
+        <label> {{ $t("memberlist['姓名']") }}</label
+        ><input type="text" v-model="tempEditName" maxlength="50" />
+      </div>
+      <div class="input-wrap">
+        <label> {{ $t("memberlist['座號']") }}</label
+        ><input type="number" v-model="tempEditSeatID" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" @keydown="checkUserKeyboardInputSeatID($event)" min="1" max="999" maxlength="3" />
+      </div>
       <div class="errmsg" v-show="showStudentErrMsgNum != 0">
-        <p v-show="showStudentErrMsgNum == 1">座號重複</p>
-        <p v-show="showStudentErrMsgNum == 2">座號不可為空或輸入無法辨認的值</p>
-        <p v-show="showStudentErrMsgNum == 3">姓名不可為空</p>
+        <p v-show="showStudentErrMsgNum == 1">{{ $t("memberlist['座號重複']") }}</p>
+        <p v-show="showStudentErrMsgNum == 2">{{ $t("memberlist['座號不可為空或輸入無法辨認的值']") }}</p>
+        <p v-show="showStudentErrMsgNum == 3">{{ $t("memberlist['姓名不可為空']") }}</p>
       </div>
       <div class="editmemberlistbtn-group">
-        <div class="editmemberlist-btn" @click="updateStudent()">{{ "確定" }}</div>
-        <div class="editmemberlist-btn editmemberlist-cancelbtn" @click="cancelEditStudent()">{{ "取消" }}</div>
+        <div class="editmemberlist-btn" @click="updateStudent()">{{ $t("memberlist['確定']") }}</div>
+        <div class="editmemberlist-btn editmemberlist-cancelbtn" @click="cancelEditStudent()">{{ $t("memberlist['取消']") }}</div>
       </div>
     </div>
     <!--修改名單名稱-->
     <div class="editmemberlist-card editstudent-card" v-show="showEditListName">
-      <p class="editstudent-title">修改名單名稱</p>
+      <p class="editstudent-title">{{ $t("memberlist['修改名單名稱']") }}</p>
       <div class="input-wrap edit-listname"><input type="text" v-model="tempEditListName" maxlength="50" /></div>
-      <div class="errmsg" v-show="showEditListNameMsg">表單名稱不可為空</div>
+      <div class="errmsg" v-show="showEditListNameMsg">{{ $t("memberlist['表單名稱不可為空']") }}</div>
       <div class="editmemberlistbtn-group">
-        <div class="editmemberlist-btn" @click="updateListName()">{{ "確定" }}</div>
-        <div class="editmemberlist-btn editmemberlist-cancelbtn" @click="cancelEditListName()">{{ "取消" }}</div>
+        <div class="editmemberlist-btn" @click="updateListName()">{{ $t("memberlist['確定']") }}</div>
+        <div class="editmemberlist-btn editmemberlist-cancelbtn" @click="cancelEditListName()">{{ $t("memberlist['取消']") }}</div>
       </div>
     </div>
 
     <!--確認刪除名單-->
     <div class="editmemberlist-card editstudent-card" v-show="showCorfirmDelete">
-      <p class="editstudent-title">刪除{{ $parent.currentMemberList.listName }}</p>
-      <p class="warndeletemsg">{{ "確定刪除後這個名單將無法復原!" }}</p>
+      <p class="editstudent-title">{{ $t("memberlist['刪除']") }}{{ $parent.currentMemberList.listName }}</p>
+      <p class="warndeletemsg">{{ $t("memberlist['確定刪除後這個名單將無法復原']") }}</p>
       <div class="editmemberlistbtn-group">
-        <div class="editmemberlist-btn" @click="deleteMemberList()">{{ "確定" }}</div>
-        <div class="editmemberlist-btn editmemberlist-cancelbtn" @click="showCorfirmDelete = false">{{ "取消" }}</div>
+        <div class="editmemberlist-btn" @click="deleteMemberList()">{{ $t("memberlist['確定']") }}</div>
+        <div class="editmemberlist-btn editmemberlist-cancelbtn" @click="showCorfirmDelete = false">{{ $t("memberlist['取消']") }}</div>
       </div>
     </div>
 
     <!--自訂學生名單總覽-->
     <div class="editmemberlist-card" v-show="!showAddMemberList && !showEditStudent && !showCorfirmDelete && !showEditListName">
       <div class="closebtn" @click="closeEditMemberList()"><img src="@/statics/iconsvg/interaction/Close.svg" class="q-icon" /></div>
-      <p class="editmemberlist-title">{{ "自訂學生名單" }}</p>
+      <p class="editmemberlist-title">{{ $t("memberlist['自訂學生名單']") }}</p>
       <!--選單控制按鈕外部-->
       <div class="editmemberlist-rightbtns" v-show="$parent.testMemberlist.length > 0">
         <div class="edit-btn" @click="openAddMemberList()"><svg-icon icon-class="new-page" /></div>
@@ -47,7 +53,7 @@
         <div class="delete-btn" @click="showCorfirmDelete = true"><svg-icon icon-class="trash-alt-solid" /></div>
       </div>
       <div class="editmemberlist-empty" v-show="$parent.testMemberlist.length == 0">
-        <div @click="openAddMemberList()"><svg-icon icon-class="new-page" class="add-icon" /><br />創建名單</div>
+        <div @click="openAddMemberList()"><svg-icon icon-class="new-page" class="add-icon" /><br />{{ $t("memberlist['創建名單']") }}</div>
       </div>
       <div class="memberlist-wrap" v-if="$parent.testMemberlist.length > 0">
         <div class="listitems">
@@ -56,7 +62,7 @@
           </div>
         </div>
         <div class="listDetail" :style="{ 'min-height': tableHeight + 'px' }">
-          <Table :fixed-header="true" @on-row-click="setEditStudent" :row-class-name="hintSelectedRow" v-show="Object.keys($parent.currentMemberList).length >= 0" :height="tableHeight - 41" :no-data-text="`<p>暫無資料</p>`" :columns="editColumns" :data="$parent.currentMemberList.list"></Table>
+          <Table :fixed-header="true" @on-row-click="setEditStudent" :row-class-name="hintSelectedRow" v-show="Object.keys($parent.currentMemberList).length >= 0" :height="tableHeight - 41" :no-data-text="`<p>${$t('memberlist.暫無數據')}</p>`" :columns="columnsTitle" :data="$parent.currentMemberList.list"></Table>
           <!--選單控制按鈕內部-->
           <div class="editmemberlist-bottombtns" v-show="$parent.testMemberlist.length > 0">
             <div class="edit-btn" @click="addStudent()"><svg-icon icon-class="new-page" /></div>
@@ -73,16 +79,16 @@
         <div class="edit-tooltip">
           <div class="close-btn" @click="showEditHint = false"><svg-icon icon-class="Close" /></div>
           <p v-html="hintInfo"></p>
-          <div class="tooltip-btn" @click="useSampleList()">複製範例</div>
+          <div class="tooltip-btn" @click="useSampleList()">{{ $t("memberlist.複製範例") }}</div>
         </div>
       </div>
 
-      <input type="text" class="add-title" v-model="currentEditMemberListName" placeholder="新建的學生名單..." />
+      <input type="text" class="add-title" v-model="currentEditMemberListName" :placeholder="$t('memberlist.新建的學生名單')" maxlength="50" />
       <div class="example-btn" @click="showEditHint = !showEditHint"><svg-icon icon-class="question" /></div>
       <div class="addmember-area">
-        <textarea class="left-part" v-model="addmemberlisttext" name="addmember" id="" cols="30" rows="10" placeholder="輸入名單資料..."></textarea>
+        <textarea class="left-part" v-model="addmemberlisttext" name="addmember" id="" cols="30" rows="10" :placeholder="$t('memberlist.輸入名單資料')"></textarea>
         <div class="right-part">
-          <Table :fixed-header="true" :height="tableHeight" :no-data-text="`<p>暫無資料</p>`" :columns="addmemberlistColumns" :data="tempAddMemberList" :row-class-name="hintBugRow"></Table>
+          <Table :fixed-header="true" :height="tableHeight" :no-data-text="`<p>${$t('memberlist.暫無數據')}</p>`" :columns="columnsTitle" :data="tempAddMemberList" :row-class-name="hintBugRow"></Table>
         </div>
       </div>
       <div v-show="addMemberListErrMsg.length > 0" class="errmsg">
@@ -92,12 +98,12 @@
       </div>
       <div></div>
       <div v-show="showAddMemberAutoSeatIDMsg" class="hintmsg">
-        {{ "無法辨識座號規則,系統採自動編號" }}
+        {{ $t("memberlist.自動編號提示字") }}
       </div>
       <div class="editmemberlistbtn-group">
-        <div class="editmemberlist-btn" @click="checkAddMemberList()">{{ "預覽" }}</div>
-        <div class="editmemberlist-btn" @click="saveTestMemberList()" :class="{ 'editmemberlist-disabledBtn': addMemberListErrMsg.length > 0 || currentEditMemberListName == '' || addmemberlisttext == '' || tempAddMemberList.length == 0 }">{{ "儲存預覽表格" }}</div>
-        <div class="editmemberlist-btn" @click="showAddMemberList = false">{{ $t("board['取消']") }}</div>
+        <div class="editmemberlist-btn" @click="checkAddMemberList()">{{ $t("memberlist.預覽") }}</div>
+        <div class="editmemberlist-btn" @click="saveTestMemberList()" :class="{ 'editmemberlist-disabledBtn': addMemberListErrMsg.length > 0 || currentEditMemberListName == '' || addmemberlisttext == '' || tempAddMemberList.length == 0 }">{{ $t("memberlist.儲存預覽表格") }}</div>
+        <div class="editmemberlist-btn" @click="showAddMemberList = false">{{ $t("memberlist['取消']") }}</div>
       </div>
     </div>
   </div>
@@ -108,41 +114,22 @@ export default {
   name: "EditMemberList",
   data() {
     return {
-      hintInfo: `輸入名單小技巧<br><br>名單的格式為:
-        姓名, 座號 <br>(座號可省略,如有填寫則須每列都填寫)<br><br>
-        限制<br>
-        姓名:字數長度50以內<br>
-        座號:不能重複數字,應小於1000
-         <br><br>
-        範例 <br>
-        王大明, 1,<br>
-        張小凡, 2,<br>
-        陳士軒, 3,<br>`,
+      hintInfo: this.$t("memberlist['名單範例模板']"),
       showEditMemberList: false,
       showAddMemberList: false,
       showEditStudent: false,
       currentEditMemberListName: "",
       addmemberlisttext: "",
-      addmemberlistColumns: [
-        {
-          title: "姓名",
-          key: "memberName",
-          sortable: true,
-        },
-        {
-          title: "座號",
-          key: "seatID",
-          sortable: true,
-        },
-      ],
-      editColumns: [
+      columnsTitle: [
         {
-          title: "姓名",
+          title: this.$t("memberlist['姓名']"),
           key: "memberName",
           sortable: true,
+          ellipsis: true,
+          tooltip: true,
         },
         {
-          title: "座號",
+          title: this.$t("memberlist['座號']"),
           key: "seatID",
           sortable: true,
         },
@@ -184,7 +171,6 @@ export default {
       this.showEditMemberList = true;
     },
     openEditMemberList() {
-      console.log("開名單");
       this.editMemberListMode = "Menu";
       this.showEditMemberList = true;
       this.Hishow = false;
@@ -194,7 +180,7 @@ export default {
       this.tempAddMemberList = [];
       this.addMemberListErrRow = [];
       this.addMemberListErrMsg = [];
-      this.currentEditMemberListName = "自訂名單" + (this.$parent.testMemberlist.length + 1);
+      this.currentEditMemberListName = this.$t("memberlist['自訂名單']") + (this.$parent.testMemberlist.length + 1);
       this.currentEditMemberList = {};
       this.addmemberlisttext = "";
       this.showAddMemberAutoSeatIDMsg = false;
@@ -226,6 +212,7 @@ export default {
       let isAutoSeatID = false;
       this.showAddMemberAutoSeatIDMsg = false;
       //檢測座號是否皆為數字,部分有部分沒有就直接自動編號
+      if (this.currentEditMemberListName == "") this.setAddMemberErrMsg(this.$t("memberlist['表單名稱不可為空']"));
       if (data.length % 2 == 1) {
         isAutoSeatID = true;
       } else {
@@ -244,7 +231,7 @@ export default {
         const seatIDs = data.filter((item, index) => index % 2 == 1);
         // console.log(seatIDs)
         if (this.hasDuplicates(seatIDs)) {
-          this.setAddMemberErrMsg("帶有重複座號");
+          this.setAddMemberErrMsg(this.$t("memberlist['帶有重複座號']"));
 
           let firstAppearID = [];
           seatIDs.forEach((id, index) => {
@@ -264,7 +251,7 @@ export default {
           //檢測座號是否<=999
           // console.log(index%2)
           if (index % 2 == 1 && parseInt(item) > 999) {
-            this.setAddMemberErrMsg("座號應設置於1-999");
+            this.setAddMemberErrMsg(this.$t("memberlist['座號範圍提示字']"));
             this.addMemberListErrRow.push(parseInt(index / 2));
           }
           if (index % 2 == 1 && !isNaN(parseInt(item))) {
@@ -289,7 +276,7 @@ export default {
       }
     },
     saveTestMemberList() {
-      if (this.addMemberListErrMsg.length === 0 && this.addmemberlisttext != "" && this.tempAddMemberList.length != 0) {
+      if (this.addMemberListErrMsg.length === 0 && this.addmemberlisttext != "" && this.tempAddMemberList.length != 0 && this.currentEditMemberListName != "") {
         this.$parent.testMemberlist.push({
           listName: this.currentEditMemberListName,
           list: this.tempAddMemberList,
@@ -300,7 +287,7 @@ export default {
       }
     },
     useSampleList() {
-      this.addmemberlisttext = `王大明, 1,\n張小凡, 2,\n陳士軒, 3,\n`;
+      this.addmemberlisttext = this.$t("memberlist['範例名單']");
     },
     deleteMemberList() {
       const deleteIndex = this.$parent.testMemberlist.findIndex((list) => list.listID == this.$parent.currentMemberList.listID);
@@ -323,7 +310,7 @@ export default {
       }
       if (this.editStudentMode == "edit") {
         if ((this.isSeatIDduplicate() && this.currentEditStudent.seatID == this.tempEditSeatID) || (!this.isSeatIDduplicate() && this.currentEditStudent.seatID != this.tempEditSeatID)) {
-          console.log("純改");
+          //   console.log("純改");
           const targetId = this.$parent.testMemberlist[parentIndex].list.findIndex((stu) => stu.memberID == this.currentEditStudent.memberID);
           this.showStudentErrMsgNum = 0;
           this.$parent.testMemberlist[parentIndex].list[targetId].seatID = this.tempEditSeatID;
@@ -349,10 +336,9 @@ export default {
     isSeatIDduplicate() {
       const parentIndex = this.$parent.testMemberlist.findIndex((list) => list.listID == this.$parent.currentMemberList.listID);
       const targetId = this.$parent.testMemberlist[parentIndex].list.findIndex((stu) => stu.seatID == this.tempEditSeatID);
-      console.log(this.$parent.testMemberlist[parentIndex].list, targetId);
+      //   console.log(this.$parent.testMemberlist[parentIndex].list, targetId);
       return targetId !== -1;
     },
-    editMemberList() {},
     cancelEditStudent() {
       this.showEditStudent = false;
     },
@@ -373,9 +359,8 @@ export default {
       this.showStudentErrMsgNum = 0;
       this.showEditStudent = true;
       this.editStudentMode = "add";
-      const parentIndex = this.$parent.testMemberlist.findIndex((list) => list.listID == this.$parent.currentMemberList.listID);
       this.tempEditName = "";
-      this.tempEditSeatID = this.$parent.testMemberlist[parentIndex].list.length + 1;
+      this.tempEditSeatID = "";
     },
     hintBugRow(row, index) {
       return this.addMemberListErrRow.indexOf(index) != -1 ? "bug-row" : "";
@@ -538,16 +523,17 @@ export default {
     }
     .input-wrap {
       text-align: left;
-      padding: 10px 10px 10px 5px;
-      font-size: 20px;
-
+      padding: 5px 10px 10px 5px;
+      line-height: 30px;
+      label {
+        margin: 10px 0px;
+      }
       input {
         font-size: 16px;
         padding: 5px;
         border-radius: 4px;
         border: 2px solid gray;
-        margin-left: 10px;
-        width: 75%;
+        width: 100%;
         text-align: center;
         &:focus {
           border: 2px solid blue;
@@ -622,10 +608,10 @@ export default {
         }
       }
       .listitems {
-        flex: 1;
+        flex: 2;
         border: 1px solid #ccc !important;
         position: relative;
-
+        width: 40%;
         .listitem-light {
           color: blue;
           border: 1px solid blue !important;
@@ -633,14 +619,16 @@ export default {
         }
         .listitem {
           width: 100%;
+          overflow: hidden;
+          white-space: nowrap;
+          text-overflow: ellipsis;
           cursor: pointer;
-          display: inline-block !important;
           background-color: #fcfcfc;
           border-width: 2px;
           border: 1px solid transparent;
           border-bottom: 1px solid #ccc;
-          padding: 5px;
-          font-size: 16px;
+          padding: 15px;
+          font-size: 14px;
           &:hover {
             // background-color: darken(#fcfcfc, 10%);
             color: blue;
@@ -657,7 +645,7 @@ export default {
         border-width: 2px;
         border-radius: 4px;
         position: relative;
-        flex: 1;
+        flex: 3;
         text-align: left;
         background-color: #fcfcfc;
         overflow: auto;
@@ -693,10 +681,10 @@ export default {
       margin: 10px 5px;
       display: flex;
       .left-part {
-        flex: 1;
+        flex: 2;
       }
       .right-part {
-        flex: 1;
+        flex: 3;
         width: 100%;
       }
       textarea {

+ 45 - 0
HiTeachCC/ClientApp/src/locale/lang/en-US/index.js

@@ -69,6 +69,7 @@ export default {
     匯出PDF: 'Export PDF',
     匯出課堂記錄: 'Export Class Records',
     插入PDF:'Insert PDF',
+    自訂學生名單:'Custom student list',
     PDFInit:{
       開啟PDF檔案: 'Open PDF file',
       從:'From',
@@ -345,5 +346,49 @@ export default {
     taskCompleteCount: 'Works',
     interactScore: 'IRS Score',
     answerList: 'Answer',
+  },
+  memberlist:{
+    自由加入:'Free to join',
+    請選擇學生名單:'Please select the student list',
+    創建自訂學生名單:'Create a custom student list',
+    點選左側指定可加入的學生名單:'Click on the left to specify the list of students who can join',
+    下一步:'Next',
+    上一步:'Previous',
+    編輯學生:'Edit students',
+    新增學生:'New students',
+    姓名:'Name',
+    座號:'SeatID',
+    座號重複:'seatID repeat',
+    座號不可為空或輸入無法辨認的值:'The seatID cannot be empty or an unrecognizable value is entered',
+    姓名不可為空:'The name cannot be empty',
+    確定:'OK',
+    取消:'Cancel',
+    修改名單名稱:'Modify the list name',
+    表單名稱不可為空:'The list name cannot be empty',
+    確定刪除後這個名單將無法復原:'After confirming the deletion, this list will not be restored!',
+    刪除:'Delete\t',
+    自訂學生名單:'Custom student list',
+    創建名單:'Create list',
+    暫無數據:'No data',
+    新建的學生名單:'New student list...',
+    輸入名單資料:'Enter list information...',
+    自動編號提示字:'The seatID rule cannot be recognized, the system adopts automatic numbering',
+    預覽:'Preview',
+    儲存預覽表格:'save Preview list',
+    名單範例模板:`Enter list tips<br><br>The format of the list is:
+    Name, SeatID <br>(seatID can be omitted, if filled in, each column must be filled in)<br><br>
+    limit<br>
+    Name: within 50 characters<br>
+    SeatID: can not repeat the number, should be less than 1000
+     <br><br>
+    Example <br>
+    Wang Daming, 1,<br>
+    Zhang Xiaofan, 2,<br>
+    Chen Shixuan, 3,<br>`,
+    複製範例:'Copy example',
+    自訂名單:'Custom list',
+    帶有重複座號:'With repeated seat numbers',
+    座號範圍提示字:'SeatID should be set between 1-999',
+    範例名單:`Wang Daming, 1,\nZhang Xiaofan, 2,\nChen Shixuan, 3,\n`
   }
 }

+ 45 - 0
HiTeachCC/ClientApp/src/locale/lang/zh-CN/index.js

@@ -69,6 +69,7 @@ export default {
     匯出PDF: '导出PDF',
     匯出課堂記錄: '导出课堂记录',
     插入PDF:'插入PDF',
+    自訂學生名單:'自订学生名单',
     PDFInit:{
       開啟PDF檔案: '开启PDF档案',
       從:'从',
@@ -317,5 +318,49 @@ export default {
     taskCompleteCount: '作品数',
     interactScore: '互动分',
     answerList: '学生作答',
+  },
+  memberlist:{
+    自由加入:'自由加入',
+    請選擇學生名單:'请选择学生名单',
+    創建自訂學生名單:'创建自订学生名单',
+    點選左側指定可加入的學生名單:'点选左侧指定可加入的学生名单',
+    下一步:'下一步',
+    上一步:'上一步',
+    編輯學生:'编辑学生',
+    新增學生:'新增学生',
+    姓名:'姓名',
+    座號:'座号',
+    座號重複:'座号重复',
+    座號不可為空或輸入無法辨認的值:'座号不可为空或输入无法辨认的值',
+    姓名不可為空:'姓名不可为空',
+    確定:'确定',
+    取消:'取消',
+    修改名單名稱:'修改名单名称',
+    表單名稱不可為空:'表单名称不可为空',
+    確定刪除後這個名單將無法復原:'确定删除后这个名单将无法复原!',
+    刪除:'删除',
+    自訂學生名單:'自订学生名单',
+    創建名單:'创建名单',
+    暫無數據:'暂无数据',
+    新建的學生名單:'新建的学生名单...',
+    輸入名單資料:'输入名单资料...',
+    自動編號提示字:'无法辨识座号规则,系统采自动编号',
+    預覽:'预览',
+    儲存預覽表格:'储存预览表格',
+    名單範例模板:`输入名单小技巧<br><br>名单的格式为:
+    姓名, 座号 <br>(座号可省略,如有填写则须每列都填写)<br><br>
+    限制<br>
+    姓名:字数长度50以内<br>
+    座号:不能重复数字,应小于1000
+     <br><br>
+    范例 <br>
+    王大明, 1,<br>
+    张小凡, 2,<br>
+    陈士轩, 3,<br>`,
+    複製範例:'复制范例',
+    自訂名單:'自订名单',
+    帶有重複座號:'带有重复座号',
+    座號範圍提示字:'座号应设置于1-999',
+    範例名單:`王大明, 1,\n张小凡, 2,\n陈士轩, 3,\n`
   }
 }

+ 45 - 0
HiTeachCC/ClientApp/src/locale/lang/zh-TW/index.js

@@ -69,6 +69,7 @@ export default {
     匯出PDF: '匯出PDF',
     匯出課堂記錄: '匯出課堂記錄',
     插入PDF:'插入PDF',
+    自訂學生名單:'自訂學生名單',
     PDFInit:{
       開啟PDF檔案: '使用PDF簡報',
       從:'從',
@@ -345,5 +346,49 @@ export default {
     taskCompleteCount: '作品數',
     interactScore: '互動分',
     answerList: '學生作答',
+  },
+  memberlist:{
+    自由加入:'自由加入',
+    請選擇學生名單:'請選擇學生名單',
+    創建自訂學生名單:'創建自訂學生名單',
+    點選左側指定可加入的學生名單:'點選左側指定可加入的學生名單',
+    下一步:'下一步',
+    上一步:'上一步',
+    編輯學生:'編輯學生',
+    新增學生:'新增學生',
+    姓名:'姓名',
+    座號:'座號',
+    座號重複:'座號重複',
+    座號不可為空或輸入無法辨認的值:'座號不可為空或輸入無法辨認的值',
+    姓名不可為空:'姓名不可為空',
+    確定:'確定',
+    取消:'取消',
+    修改名單名稱:'修改名單名稱',
+    表單名稱不可為空:'表單名稱不可為空',
+    確定刪除後這個名單將無法復原:'確定刪除後這個名單將無法復原!',
+    刪除:'刪除',
+    自訂學生名單:'自訂學生名單',
+    創建名單:'創建名單',
+    暫無數據:'暫無數據',
+    新建的學生名單:'新建的學生名單...',
+    輸入名單資料:'輸入名單資料...',
+    自動編號提示字:'無法辨識座號規則,系統採自動編號',
+    預覽:'預覽',
+    儲存預覽表格:'儲存預覽表格',
+    名單範例模板: `輸入名單小技巧<br><br>名單的格式為:
+    姓名, 座號 <br>(座號可省略,如有填寫則須每列都填寫)<br><br>
+    限制<br>
+    姓名:字數長度50以內<br>
+    座號:不能重複數字,應小於1000
+     <br><br>
+    範例 <br>
+    王大明, 1,<br>
+    張小凡, 2,<br>
+    陳士軒, 3,<br>`,
+    複製範例:'複製範例',
+    自訂名單:'自訂名單',
+    帶有重複座號:'帶有重複座號',
+    座號範圍提示字:'座號應設置於1-999',
+    範例名單:`王大明, 1,\n張小凡, 2,\n陳士軒, 3,\n`
   }
 }

+ 10 - 8
HiTeachCC/ClientApp/src/views/Board.vue

@@ -105,11 +105,11 @@
           <div slot="footer">
             <div class="screen-title-top">
               <div class="screen-title-icon"><svg-icon icon-class="htc_cc" /></div>
-              <!-- {{ $t("board['歡迎使用HiTeachCC來進行互動']") }}<br /-->{{ !showMemberlist ? $t("board['請選擇開始的動作']") : "請選擇學生名單" }}
+              <!-- {{ $t("board['歡迎使用HiTeachCC來進行互動']") }}<br /-->{{ !showMemberlist ? $t("board['請選擇開始的動作']") : $t("memberlist['請選擇學生名單']") }}
               <div class="memberlist-page" v-show="showMemberlist">
                 <!-- <div class="previusImgBtn2" ><svg-icon icon-class="previusImgBtn" class="ImgBtn-icon" /></div> -->
-                <div class="memberfreebtn" @click="setCurrentMemberList({})" :class="{ 'memberfreebtn-light': Object.keys(currentMemberList).length == 0 }">自由加入</div>
-                <div class="memberfreebtn" @click="openEditMemberListAtInit()" v-if="testMemberlist.length == 0">創建自訂學生名單</div>
+                <div class="memberfreebtn" @click="setCurrentMemberList({})" :class="{ 'memberfreebtn-light': Object.keys(currentMemberList).length == 0 }">{{$t("memberlist['自由加入']")}}</div>
+                <div class="memberfreebtn" @click="openEditMemberListAtInit()" v-if="testMemberlist.length == 0">{{$t("memberlist['創建自訂學生名單']")}}</div>
                 <div class="memberlist-wrap" v-if="testMemberlist.length > 0">
                   <div class="listitems">
                     <div class="listitem" v-for="(list, index) in testMemberlist" :key="list.listName + index" @click="setCurrentMemberList(list)" :class="{ 'listitem-light': currentMemberList.listID == list.listID }">
@@ -119,11 +119,11 @@
                   <div class="listDetail">
                     <div class="list-stu" v-show="Object.keys(currentMemberList).length >= 0" v-for="(stu, index) in currentMemberList.list" :key="index + stu.seatID + stu.memberName">{{ stu.seatID }} {{ stu.memberName }}</div>
                     <div class="list-info" v-show="Object.keys(currentMemberList).length == 0">
-                      {{ "點選左側指定可加入的學生名單" }}
+                      {{ $t("memberlist['點選左側指定可加入的學生名單']") }}
                     </div>
                   </div>
                 </div>
-                <div class="page-btn" @click="showMemberlist = false">下一步</div>
+                <div class="page-btn" @click="showMemberlist = false">{{$t("memberlist['下一步']")}}</div>
               </div>
             </div>
             <div v-show="!showMemberlist">
@@ -161,7 +161,7 @@
                   <div class="setting-btn" :class="{ 'setting-btn-light': this.$store.state.currentAnsOption == 'En' }" @click="setAnsOption('En')"><svg-icon icon-class="SetAnsEn" /></div>
                   <div class="setting-btn" :class="{ 'setting-btn-light': this.$store.state.currentAnsOption == 'Num' }" @click="setAnsOption('Num')"><svg-icon icon-class="SetAns" /></div>
                 </div>
-                <div class="page-btn cancel-btn" @click="showMemberlist = true">上一步</div>
+                <div class="page-btn cancel-btn" @click="showMemberlist = true">{{$t("memberlist['上一步']")}}</div>
               </div>
             </div>
             <div class="limit-text">
@@ -250,7 +250,7 @@
           </label>
           <div class="hicard-btn" v-show="this.isAuthAccount() != 0" @click="openEditMemberList()">
             <svg-icon icon-class="memberlist" class="hicard-icon memberlist-icon" />
-            <p>{{ "自訂學生名單" }}</p>
+            <p>{{ $t("board['自訂學生名單']") }}</p>
           </div>
           <div class="closebtn" @click="closeHi"><img src="@/statics/iconsvg/interaction/Close.svg" class="q-icon" /></div>
         </div>
@@ -6837,7 +6837,9 @@ export default {
       this.$refs.editMemberList.openEditMemberList();
     },
     openEditMemberListAtInit() {
-      this.$refs.editMemberList.openEditMemberListAtInit();
+      setTimeout(()=>{
+        this.$refs.editMemberList.openEditMemberListAtInit();
+      },300)
     },
     setCurrentMemberList(list) {
       this.$refs.editMemberList.setCurrentMemberList(list);