|
@@ -49,29 +49,30 @@
|
|
|
<!--選單控制按鈕外部-->
|
|
|
<div class="editmemberlist-rightbtns" v-show="!isCustomMemberlistEmpty()">
|
|
|
<div class="edit-btn" @click="openAddMemberList()"><svg-icon icon-class="new-page" /></div>
|
|
|
- <div class="edit-btn" @click="openEditListName()" v-show="Object.keys($parent.currentMemberList).length > 0"><font-awesome-icon icon="pencil-alt" /></div>
|
|
|
- <div class="delete-btn" @click="showCorfirmDelete = true"><svg-icon icon-class="trash-alt-solid" /></div>
|
|
|
+ <!-- <div class="edit-btn" @click="openEditListName()" v-show="Object.keys($parent.currentMemberList).length > 0"><font-awesome-icon icon="pencil-alt" /></div> -->
|
|
|
+ <!-- <div class="delete-btn" @click="showCorfirmDelete = true"><svg-icon icon-class="trash-alt-solid" /></div> -->
|
|
|
</div>
|
|
|
<div class="editmemberlist-empty" v-show="isCustomMemberlistEmpty()">
|
|
|
<div @click="openAddMemberList()"><svg-icon icon-class="new-page" class="add-icon" /><br />{{ $t("memberlist['創建名單']") }}</div>
|
|
|
</div>
|
|
|
<div class="memberlist-wrap" v-if="!isCustomMemberlistEmpty()">
|
|
|
- <div class="listitems">
|
|
|
- <div class="listitem" v-for="(list,index) in $parent.customMemberlist" :key="'edList'+index" @click="setCurrentMemberList(list)" :class="{ 'listitem-light': $parent.currentMemberList.id == list.id }">
|
|
|
+ <div class="listitems" :style="{ 'max-height': tableHeight-42 + 'px' }">
|
|
|
+ <div class="listitem" v-for="(list,index) in $parent.customMemberlist" :key="'edList'+index" @click="setCurrentMemberList(list)" :class="{ 'listitem-light': $parent.currentMemberList.listID == list.listID }">
|
|
|
{{ list.name }}
|
|
|
</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>${$t('memberlist.暫無數據')}</p>`" :columns="columnsTitle" :data="$parent.currentMemberList.list"></Table>
|
|
|
- <!--選單控制按鈕內部-->
|
|
|
+ <div class="listDetail" :style="{ 'max-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>${$t('memberlist.暫無數據')}</p>`" :columns="columnsTitle" :data="$parent.memberList"></Table>
|
|
|
+ <!-- 選單控制按鈕內部
|
|
|
<div class="editmemberlist-bottombtns" v-show="!isCustomMemberlistEmpty()">
|
|
|
<div class="edit-btn" @click="addStudent()"><svg-icon icon-class="new-page" /></div>
|
|
|
<div class="edit-btn" v-show="Object.keys(currentEditStudent).length !== 0" @click="editStudent()"><font-awesome-icon icon="pencil-alt" /></div>
|
|
|
<div class="delete-btn" v-show="Object.keys(currentEditStudent).length !== 0" @click="deleteStudent()"><svg-icon icon-class="trash-alt-solid" /></div>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="errmsg" v-if="showAddListReachMax">{{ $t("memberlist['自訂名單已達上限提示字']") }}</div>
|
|
|
+ <div class="errmsg" >{{ $t("memberlist['新增說明']") }}</div>
|
|
|
+ <!-- <div class="errmsg" v-if="showAddListReachMax">{{ $t("memberlist['自訂名單已達上限提示字']") }}</div> -->
|
|
|
<div class="errmsg" v-if="showAddStudentReachMax">{{ $t("memberlist['新增單筆名單人數達上限提示字']") }}</div>
|
|
|
</div>
|
|
|
<!--新增學生名單-->
|
|
@@ -172,16 +173,29 @@ export default {
|
|
|
async setCurrentMemberList(list) {
|
|
|
const res=await this.$api.ies5Api.getIES5StudentsListByCourse({
|
|
|
"grant_type":"private",
|
|
|
- "stulist_id":list.id
|
|
|
+ "stulist_id":list.listID
|
|
|
});
|
|
|
|
|
|
this.$parent.currentMemberList ={
|
|
|
- id:list.id,
|
|
|
+ listID:list.listID,
|
|
|
name:list.name,
|
|
|
list: res.students
|
|
|
}
|
|
|
+
|
|
|
+ let tempMemberList=[]
|
|
|
+ this.$parent.currentMemberList?.list?.forEach((item)=>{
|
|
|
+ let tempStudent={
|
|
|
+ memberID: item.memberID||item.id,
|
|
|
+ memberName: item.memberName||item.name,
|
|
|
+ seatID: item.seatID||item.irs,
|
|
|
+ groupName: null,
|
|
|
+ groupID: null,
|
|
|
+ isHiGroup: false
|
|
|
+ }
|
|
|
+ tempMemberList.push(tempStudent)
|
|
|
+ })
|
|
|
console.log(this.$parent.currentMemberList,"183")
|
|
|
- this.$parent.memberList = Object.keys(this.$parent.currentMemberList).length == 0 ? [] : this.$parent.currentMemberList.list;
|
|
|
+ this.$parent.memberList = Object.keys(this.$parent.currentMemberList).length == 0 ? [] : tempMemberList;
|
|
|
this.$parent.verifyMode = Object.keys(this.$parent.currentMemberList).length == 0 ? "Dynamic" : "Fixed";
|
|
|
this.currentEditStudent = {};
|
|
|
},
|
|
@@ -196,19 +210,16 @@ export default {
|
|
|
},
|
|
|
openAddMemberList() {
|
|
|
this.showAddListReachMax = false;
|
|
|
- if (this.$parent.customMemberlist.length < 3) {
|
|
|
- let autolength = this.$parent.customMemberlist ? this.$parent.customMemberlist.length : 0;
|
|
|
- this.showAddMemberList = true;
|
|
|
- this.tempAddMemberList = [];
|
|
|
- this.addMemberListErrRow = [];
|
|
|
- this.addMemberListErrMsg = [];
|
|
|
- this.currentEditMemberListName = this.$t("memberlist['自訂名單']") + (autolength + 1);
|
|
|
- this.currentEditMemberList = {};
|
|
|
- this.addmemberlisttext = "";
|
|
|
- this.showAddMemberAutoSeatIDMsg = false;
|
|
|
- } else {
|
|
|
- this.showAddListReachMax = true;
|
|
|
- }
|
|
|
+ let autolength = this.$parent.customMemberlist ? this.$parent.customMemberlist.length : 0;
|
|
|
+ this.showAddMemberList = true;
|
|
|
+ this.tempAddMemberList = [];
|
|
|
+ this.addMemberListErrRow = [];
|
|
|
+ this.addMemberListErrMsg = [];
|
|
|
+ this.currentEditMemberListName = this.$t("memberlist['自訂名單']") + (autolength + 1);
|
|
|
+ this.currentEditMemberList = {};
|
|
|
+ this.addmemberlisttext = "";
|
|
|
+ this.showAddMemberAutoSeatIDMsg = false;
|
|
|
+
|
|
|
},
|
|
|
async closeEditMemberList() {
|
|
|
this.showEditMemberList = false;
|
|
@@ -216,10 +227,10 @@ export default {
|
|
|
if(this.$parent.isEditMemberListAtInit){
|
|
|
this.$parent.modalUpload=true
|
|
|
}
|
|
|
- let blob = new Blob([JSON.stringify(this.$parent.customMemberlist)], { type: "application/json" });
|
|
|
- blob.lastModifiedDate = new Date();
|
|
|
- blob.name = "CCroster.json";
|
|
|
- await this.$parent.uploadResourceByPath(blob, "local/CCroster");
|
|
|
+ // let blob = new Blob([JSON.stringify(this.$parent.customMemberlist)], { type: "application/json" });
|
|
|
+ // blob.lastModifiedDate = new Date();
|
|
|
+ // blob.name = "CCroster.json";
|
|
|
+ // await this.$parent.uploadResourceByPath(blob, "local/CCroster");
|
|
|
this.$parent.isEditMemberListAtInit=false
|
|
|
},
|
|
|
fetchCCroster() {
|
|
@@ -311,6 +322,12 @@ export default {
|
|
|
seatID: item,
|
|
|
memberID: "member" + new Date().getTime() + index,
|
|
|
memberName: data[index - 1],
|
|
|
+ id: "",
|
|
|
+ code: null,
|
|
|
+ type: 3,
|
|
|
+ nickname: data[index - 1],
|
|
|
+ no: item,
|
|
|
+ irs: item,
|
|
|
});
|
|
|
}
|
|
|
});
|
|
@@ -322,6 +339,13 @@ export default {
|
|
|
seatID: index + 1,
|
|
|
memberID: "member" + new Date().getTime() + index,
|
|
|
memberName: data[index],
|
|
|
+
|
|
|
+ id: "",
|
|
|
+ code: null,
|
|
|
+ type: 3,
|
|
|
+ nickname: data[index],
|
|
|
+ no: index + 1,
|
|
|
+ irs: index + 1,
|
|
|
});
|
|
|
}
|
|
|
});
|
|
@@ -331,22 +355,42 @@ export default {
|
|
|
this.setAddMemberErrMsg(this.$t("memberlist['名單人數上限提示字']"));
|
|
|
}
|
|
|
},
|
|
|
- savecustomMemberlist() {
|
|
|
+ async savecustomMemberlist() {
|
|
|
this.$parent.customMemberlist = this.$parent.customMemberlist ? this.$parent.customMemberlist : [];
|
|
|
if (this.addMemberListErrMsg.length === 0 && this.addmemberlisttext != "" && this.tempAddMemberList.length != 0 && this.currentEditMemberListName != "") {
|
|
|
- this.$parent.customMemberlist.push({
|
|
|
- listName: this.currentEditMemberListName,
|
|
|
- list: this.tempAddMemberList,
|
|
|
- listID: "list" + new Date().getTime(),
|
|
|
- });
|
|
|
+
|
|
|
+ await this.$api.ies5Api.createIES5StudentList({
|
|
|
+ courseName: "HiTeach",
|
|
|
+ groupListName: this.currentEditMemberListName,
|
|
|
+ limitCount: 200,
|
|
|
+ courseId: "",
|
|
|
+ groupId: "",
|
|
|
+ member: this.tempAddMemberList,
|
|
|
+ })
|
|
|
+
|
|
|
+ const res = await this.$api.ies5Api.getIES5TeacherInfo()
|
|
|
+
|
|
|
+ if (res.courses && Array.isArray(res.courses)) {
|
|
|
+ this.$parent.customMemberlist = [];
|
|
|
+ res.courses.forEach(course => {
|
|
|
+ if (course.classes && Array.isArray(course.classes)) {
|
|
|
+ const classItems = course.classes.map(classItem => ({
|
|
|
+ listID: classItem.stuListId,
|
|
|
+ name: `${course.name || ''}-${classItem.name || ''}`
|
|
|
+ }));
|
|
|
+ this.$parent.customMemberlist = [...this.$parent.customMemberlist, ...classItems];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
this.editMemberListMode == "Init" ? this.closeEditMemberList() : (this.showAddMemberList = false);
|
|
|
- this.$parent.currentMemberList = this.$parent.customMemberlist[this.$parent.customMemberlist.length - 1];
|
|
|
+ this.$parent.currentMemberList = [];
|
|
|
}
|
|
|
},
|
|
|
useSampleList() {
|
|
|
this.addmemberlisttext = this.$t("memberlist['範例名單']");
|
|
|
},
|
|
|
- deleteMemberList() {
|
|
|
+ deleteMemberList() { //IES5 不提供從終端刪名單,請到IES5
|
|
|
const deleteIndex = this.$parent.customMemberlist.findIndex((list) => list.listID == this.$parent.currentMemberList.listID);
|
|
|
this.$parent.customMemberlist.splice(deleteIndex, 1);
|
|
|
this.$parent.currentMemberList = {};
|
|
@@ -393,6 +437,8 @@ export default {
|
|
|
},
|
|
|
isSeatIDduplicate() {
|
|
|
const parentIndex = this.$parent.customMemberlist.findIndex((list) => list.listID == this.$parent.currentMemberList.listID);
|
|
|
+ console.log(parentIndex,this.$parent.customMemberlist)
|
|
|
+ //202505 介接iES5名單
|
|
|
const targetId = this.$parent.customMemberlist[parentIndex].list.findIndex((stu) => stu.seatID == this.tempEditSeatID);
|
|
|
// console.log(this.$parent.customMemberlist[parentIndex].list, targetId);
|
|
|
return targetId !== -1;
|
|
@@ -437,10 +483,24 @@ export default {
|
|
|
this.tempEditListName = this.$parent.currentMemberList.listName;
|
|
|
this.showAddListReachMax = false;
|
|
|
},
|
|
|
- updateListName() {
|
|
|
+ async updateListName() {
|
|
|
if (this.tempEditListName != "") {
|
|
|
const parentIndex = this.$parent.customMemberlist.findIndex((list) => list.listID == this.$parent.currentMemberList.listID);
|
|
|
- this.$parent.customMemberlist[parentIndex].listName = this.tempEditListName;
|
|
|
+ this.$parent.customMemberlist[parentIndex].name = this.tempEditListName;
|
|
|
+
|
|
|
+ //直接修改名單名稱到IES5
|
|
|
+ this.$parent.currentMemberList.name = this.tempEditListName;
|
|
|
+
|
|
|
+
|
|
|
+ await this.$api.ies5Api.updateIES5StudentListMember({
|
|
|
+ courseName: "louise",
|
|
|
+ groupListName: this.tempEditListName,
|
|
|
+ limitCount: 200,
|
|
|
+ courseId: "e95bc143-0475-364d-882d-ceacfaddfe54", //一律寫到HiTeach
|
|
|
+ groupId: "e95bc143-0475-364d-882d-ceacfaddfe54", //一律寫到HiTeach
|
|
|
+ member: this.$parent.currentMemberList.list,
|
|
|
+ })
|
|
|
+
|
|
|
this.showEditListName = false;
|
|
|
this.showEditListNameMsg = false;
|
|
|
} else {
|
|
@@ -678,6 +738,7 @@ export default {
|
|
|
border: 1px solid #ccc !important;
|
|
|
position: relative;
|
|
|
width: 40%;
|
|
|
+ overflow-y: auto;
|
|
|
.listitem-light {
|
|
|
color: blue;
|
|
|
border: 1px solid blue !important;
|
|
@@ -703,6 +764,8 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
.listDetail {
|
|
|
+ max-height: 418.5px;
|
|
|
+ overflow-y: auto;
|
|
|
.editmemberlist-bottombtns {
|
|
|
border: 1px solid #ccc !important;
|
|
|
border-top: 1px solid transparent !important;
|