Merge branch 'tx' of http://gitea.langsi.online/youmanlu/youmanlu-teacher-uniapp into dev_lbw
This commit is contained in:
commit
195f9e1fb1
13
pages.json
13
pages.json
|
@ -90,7 +90,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"path" : "pages/Mystudent/addforwork",
|
||||
"path" : "pages/Mystudent/addclassforwork",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "",
|
||||
|
@ -195,6 +195,17 @@
|
|||
"enablePullDownRefresh": false,
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
// 作业添加学生
|
||||
{
|
||||
"path" : "pages_add/add_studentsforwork",
|
||||
"style" :
|
||||
{
|
||||
"navigationBarTitleText": "",
|
||||
"navigationBarBackgroundColor": "#4473f6",
|
||||
"enablePullDownRefresh": false,
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
:background="bgc"
|
||||
title-color='#2E4975'
|
||||
title-size='36'
|
||||
height='36'></u-navbar>
|
||||
height='36' :custom-back="addclassinfo"></u-navbar>
|
||||
<view class="serchbox">
|
||||
<view class="serchimg">
|
||||
<image src="https://file.langsi.online/yasiimg/web/static/uVMACkynkipOxuTYDqm0">
|
||||
|
@ -13,95 +13,34 @@
|
|||
</image>
|
||||
</view>
|
||||
<input type="text"
|
||||
v-model="searchKeyword"
|
||||
placeholder="搜索相关内容..."
|
||||
class="input"
|
||||
placeholder-style="color:#C7CDD3 ">
|
||||
placeholder-style="color:#C7CDD3"
|
||||
@input="search()">
|
||||
</view>
|
||||
<view class="teacher_card_box" v-show="showpage==0">
|
||||
<view class="teacher_card" >
|
||||
<view class="teacher_card_box" >
|
||||
<view class="teacher_card" v-for="(item, index) in classlist" v-if="isloding == false" :key="index" @click="toggleSelection(item)" :class="{ 'act1': item.isSelected }">
|
||||
<view class="class_card_left">
|
||||
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top">
|
||||
雅思1班
|
||||
<view class="class_card_right_top" v-html="highlightSearch(item.name)">
|
||||
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
共21人
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="teacher_card act1" >
|
||||
<view class="class_card_left">
|
||||
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top">
|
||||
雅思1班
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
共21人
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="teacher_card" >
|
||||
<view class="class_card_left">
|
||||
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top">
|
||||
雅思1班
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
共21人
|
||||
共{{item.totalMembers}}人
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="teacher_card_box" v-show="showpage==1">
|
||||
<view class="student_card" >
|
||||
<view class="class_card_left">
|
||||
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top">
|
||||
李斯丹妮
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
ID:3324
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="student_card act1" >
|
||||
<view class="class_card_left">
|
||||
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top">
|
||||
李斯丹妮
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
ID:3324
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="student_card" >
|
||||
<view class="class_card_left">
|
||||
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top">
|
||||
李斯丹妮
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
ID:3324
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zhanwei" style="width: 100%; height: 230rpx;">
|
||||
|
||||
</view>
|
||||
<view class="botbtn">
|
||||
<view class="btn">
|
||||
确定添加(2)
|
||||
<view class="botbtn" v-if="selectclass.length>0">
|
||||
<view class="btn" @click="addclassinfo()">
|
||||
确定添加({{selectclass.length}})
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -115,10 +54,104 @@ export default {
|
|||
backgroundColor: "#transparent",
|
||||
},
|
||||
showpage:1,
|
||||
classlist:{},
|
||||
changeclasslist:{},
|
||||
isloding:true,
|
||||
selectclass: [],
|
||||
searchKeyword:''
|
||||
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
this.selectclass=JSON.parse(decodeURIComponent(option.classinfo))
|
||||
},
|
||||
onShow() {
|
||||
this.getclassList()
|
||||
},
|
||||
methods: {
|
||||
|
||||
addclassinfo(){
|
||||
uni.setStorageSync('selectedClassInfo', this.selectclass);
|
||||
|
||||
// Navigate back to the previous page
|
||||
uni.navigateBack({
|
||||
delta: 1, // Number of pages to go back
|
||||
success(res) {
|
||||
console.log(res);
|
||||
},
|
||||
fail(err) {
|
||||
console.error(err);
|
||||
}
|
||||
});
|
||||
},
|
||||
toggleSelection(item) {
|
||||
const selectedIndex = this.selectclass.findIndex(selectedItem => selectedItem.id === item.id);
|
||||
|
||||
if (selectedIndex === -1) {
|
||||
// If not selected, add to the array and apply the 'act1' class
|
||||
this.selectclass.push({ name: item.name, avatar: item.avatar, id: item.id });
|
||||
item.isSelected = true;
|
||||
} else {
|
||||
item.isSelected = false;
|
||||
// If already selected, remove from the array and remove the 'act1' class
|
||||
this.selectclass.splice(selectedIndex, 1);
|
||||
}
|
||||
console.log(this.selectclass, 'this.selectclass');
|
||||
},
|
||||
isSelectedClass(item) {
|
||||
return this.selectclass.some(selectedItem => selectedItem.id === item.id);
|
||||
},
|
||||
search() {
|
||||
// 根据关键字过滤 this.classlist
|
||||
if(this.searchKeyword!=''){
|
||||
const filteredList = JSON.parse(JSON.stringify(this.changeclasslist)).filter(item => item.name.includes(this.searchKeyword));
|
||||
// 更新 this.classlist 为过滤后的列表
|
||||
this.classlist = filteredList;
|
||||
this.selectclass.forEach(selectedItem => {
|
||||
const index = this.classlist.findIndex(item => item.id === selectedItem.id);
|
||||
if (index !== -1) {
|
||||
this.$set(this.classlist, index, { ...this.classlist[index], isSelected: true });
|
||||
}
|
||||
});
|
||||
}else{
|
||||
this.fuwei()
|
||||
}
|
||||
|
||||
},
|
||||
highlightSearch(name) {
|
||||
// 使用正则表达式替换匹配到的 searchKeyword 为带有颜色的文字
|
||||
if (this.searchKeyword) {
|
||||
const regex = new RegExp(this.searchKeyword, 'gi');
|
||||
return name.replace(regex, match => `<span style="color: #2D7CE6 ;">${match}</span>`);
|
||||
}
|
||||
return name;
|
||||
},
|
||||
fuwei() {
|
||||
|
||||
this.classlist = JSON.parse(JSON.stringify(this.changeclasslist));
|
||||
this.selectclass.forEach(selectedItem => {
|
||||
const index = this.classlist.findIndex(item => item.id === selectedItem.id);
|
||||
if (index !== -1) {
|
||||
this.$set(this.classlist, index, { ...this.classlist[index], isSelected: true });
|
||||
}
|
||||
});
|
||||
},
|
||||
getclassList() {
|
||||
this.$u.get("https://api.admin-v2.langsi.online/admin-api/classroom/page").then(res => {
|
||||
|
||||
if (res.code === 0) {
|
||||
this.classlist = res.data.list;
|
||||
this.changeclasslist = JSON.parse(JSON.stringify(this.classlist));
|
||||
this.isloding = false;
|
||||
this.selectclass.forEach(selectedItem => {
|
||||
const index = this.classlist.findIndex(item => item.id === selectedItem.id);
|
||||
if (index !== -1) {
|
||||
this.$set(this.classlist, index, { ...this.classlist[index], isSelected: true });
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -1,27 +1,33 @@
|
|||
<template>
|
||||
<view class="searchpage">
|
||||
<u-navbar title="搜索" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
|
||||
<u-navbar title="添加学生" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
|
||||
height='36'></u-navbar>
|
||||
<u-toast ref="uToast" />
|
||||
<view class="serchbox">
|
||||
<view class="serchimg">
|
||||
<image src="https://file.langsi.online/yasiimg/web/static/uVMACkynkipOxuTYDqm0">
|
||||
|
||||
</image>
|
||||
</view>
|
||||
<input type="text" placeholder="搜索相关内容..." class="input" placeholder-style="color:#C7CDD3 ">
|
||||
<input type="text"
|
||||
v-model="searchKeyword"
|
||||
placeholder="搜索相关内容..."
|
||||
class="input"
|
||||
placeholder-style="color:#C7CDD3"
|
||||
@input="search()">
|
||||
</view>
|
||||
<view class="check_card">
|
||||
<view class="check_card_stu" v-for="(item,index ) in stulist" :key="index">
|
||||
<view class="check_card_stu " v-for="(item,index ) in stulist" :key="index" @click="toggleSelection(item)" :class="{ 'act1': item.isSelected }">
|
||||
<view class="check_card_stu_info_left">
|
||||
<view class="class_card_left">
|
||||
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
|
||||
<image :src="item.headImgUrl"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top">
|
||||
李斯丹妮
|
||||
<view class="class_card_right_top" v-html="highlightSearch(item.nickName)">
|
||||
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
ID:3324
|
||||
ID:{{item.id}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -30,9 +36,14 @@
|
|||
|
||||
|
||||
</view>
|
||||
<view class="zhanwei" style="width: 100%; height: 50rpx;">
|
||||
<view class="zhanwei" style="width: 100%; height: 230rpx;">
|
||||
|
||||
</view>
|
||||
<view class="botbtn" @click="addstu()" v-show="selectedIds.length>0">
|
||||
<view class="btn">
|
||||
确定添加({{selectedIds.length}})
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
@ -41,10 +52,13 @@
|
|||
data() {
|
||||
return {
|
||||
bgc: {
|
||||
backgroundColor: "#transparent",
|
||||
backgroundColor: "#F6F9FC",
|
||||
},
|
||||
checkindex: 1,
|
||||
stulist:[]
|
||||
stulist:[],
|
||||
searchKeyword:'',
|
||||
orgstulist:[],
|
||||
selectedIds: [],
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
|
@ -53,14 +67,81 @@
|
|||
this.getallstu()
|
||||
},
|
||||
methods: {
|
||||
addstu() {
|
||||
let data = {
|
||||
memberId: this.selectedIds[0],
|
||||
// memberId: '1522',
|
||||
roomId: this.classid
|
||||
};
|
||||
|
||||
this.$u.post(`https://api.admin-v2.langsi.online/admin-api/classroom/members/add`, data).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.uToast.show({
|
||||
title: '添加成功',
|
||||
type: 'success',
|
||||
position:'top'
|
||||
})
|
||||
this.selectedIds=[]
|
||||
this.fuwei()
|
||||
}else{
|
||||
this.$refs.uToast.show({
|
||||
title: '添加失败',
|
||||
type: 'error',
|
||||
position:'top'
|
||||
|
||||
})
|
||||
this.selectedIds=[]
|
||||
this.fuwei()
|
||||
}
|
||||
});
|
||||
},
|
||||
toggleSelection(item) {
|
||||
const selectedIndex = this.selectedIds.indexOf(item.id);
|
||||
|
||||
if (selectedIndex === -1) {
|
||||
// If not selected, add to the array and apply the 'act1' class
|
||||
this.selectedIds.push(item.id);
|
||||
item.isSelected = true; // Add a property to the item to track selection
|
||||
} else {
|
||||
// If already selected, remove from the array and remove the 'act1' class
|
||||
this.selectedIds.splice(selectedIndex, 1);
|
||||
item.isSelected = false;
|
||||
}
|
||||
console.log(this.selectedIds,'selectedIdsselectedIdsselectedIds');
|
||||
},
|
||||
search() {
|
||||
// 根据关键字过滤 this.classlist
|
||||
if (this.searchKeyword !== '') {
|
||||
const filteredList = JSON.parse(JSON.stringify(this.orgstulist)).filter(item => {
|
||||
// 匹配 nickName 或者 id
|
||||
return item.nickName.includes(this.searchKeyword) || item.id.toString().includes(this.searchKeyword);
|
||||
});
|
||||
// 更新 this.classlist 为过滤后的列表
|
||||
this.stulist = filteredList;
|
||||
} else {
|
||||
this.fuwei();
|
||||
}
|
||||
},
|
||||
fuwei() {
|
||||
|
||||
this.stulist = JSON.parse(JSON.stringify(this.orgstulist));
|
||||
},
|
||||
highlightSearch(name) {
|
||||
// 使用正则表达式替换匹配到的 searchKeyword 为带有颜色的文字
|
||||
if (this.searchKeyword) {
|
||||
const regex = new RegExp(this.searchKeyword, 'gi');
|
||||
return name.replace(regex, match => `<span style="color: #2D7CE6 ;">${match}</span>`);
|
||||
}
|
||||
return name;
|
||||
},
|
||||
getallstu(){
|
||||
this.$u.get(`https://api.admin-v2.langsi.online/admin-api/v2/ybs-user/page`).then(res => {
|
||||
|
||||
|
||||
if (res.code == 0) {
|
||||
this.stulist=res.data.list
|
||||
// this.classlist = res.data.list
|
||||
// this.isloding = false
|
||||
this.stulist=res.data.list
|
||||
this.orgstulist = JSON.parse(JSON.stringify(res.data.list));
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
|
@ -203,5 +284,29 @@
|
|||
border: 2rpx solid #2D7CE6;
|
||||
}
|
||||
}
|
||||
.botbtn{
|
||||
padding: 32rpx 32rpx 0 32rpx;
|
||||
margin-left: -32rpx;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 750rpx;
|
||||
height: 200rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0rpx -10rpx 16rpx 0rpx rgba(202,202,202,0.25);
|
||||
border-radius: 40rpx 40rpx 0rpx 0rpx;
|
||||
.btn{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 28rpx;
|
||||
font-family:'PingFang','PingFang';
|
||||
font-weight: 800;
|
||||
color: #FFFFFF;
|
||||
width: 686rpx;
|
||||
height: 80rpx;
|
||||
background: linear-gradient(180deg, #74AFFF 0%, #2D7CE6 100%);
|
||||
border-radius: 104rpx 104rpx 104rpx 104rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -20,9 +20,11 @@
|
|||
</image>
|
||||
</view>
|
||||
<input type="text"
|
||||
placeholder="搜索相关内容..."
|
||||
class="input"
|
||||
placeholder-style="color:#C7CDD3 ">
|
||||
v-model="searchKeyword"
|
||||
placeholder="搜索相关内容..."
|
||||
class="input"
|
||||
placeholder-style="color:#C7CDD3"
|
||||
@input="search()">
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
@ -32,51 +34,17 @@
|
|||
</view>
|
||||
|
||||
<view class="check_card" v-show="checkindex==1">
|
||||
<view class="check_card_stu">
|
||||
<view class="check_card_stu" v-for="(item,index ) in stulist" :key="index">
|
||||
<view class="check_card_stu_info_left">
|
||||
<view class="class_card_left">
|
||||
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
|
||||
<image :src="item.memberInfo.avatar"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top">
|
||||
李斯丹妮
|
||||
<view class="class_card_right_top" v-html="highlightSearch(item.memberInfo.name)">
|
||||
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
ID:3324
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="check_card_stu_info_right">
|
||||
<view class="class_info" >
|
||||
<view class="class_info_top" >
|
||||
平均成绩/分
|
||||
</view>
|
||||
<view class="class_info_bot" >
|
||||
6
|
||||
</view>
|
||||
</view>
|
||||
<view class="class_info" >
|
||||
<view class="class_info_top" >
|
||||
作业完成度
|
||||
</view>
|
||||
<view class="class_info_bot" >
|
||||
80%
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="check_card_stu ">
|
||||
<view class="check_card_stu_info_left">
|
||||
<view class="class_card_left">
|
||||
<image src=" https://file.langsi.online/yasiimg/web/static/udWNTRG6GulmTtgPRQ49"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top">
|
||||
李斯丹妮
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
ID:3324
|
||||
ID:{{item.memberInfo.id}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -101,6 +69,7 @@
|
|||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
<!-- <view class="botbtn">
|
||||
<view class="btn">
|
||||
|
@ -119,20 +88,54 @@ export default {
|
|||
backgroundColor: "#F6F9FC",
|
||||
},
|
||||
checkindex: 1,
|
||||
stulist:[],
|
||||
searchKeyword:'',
|
||||
orgstulist:[],
|
||||
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
// this.classid=option.id
|
||||
this.classid=15
|
||||
|
||||
},
|
||||
onShow() {
|
||||
this.getclassteacher()
|
||||
},
|
||||
methods: {
|
||||
|
||||
search() {
|
||||
// 根据关键字过滤 this.classlist
|
||||
if (this.searchKeyword !== '') {
|
||||
const filteredList = JSON.parse(JSON.stringify(this.orgstulist)).filter(item => {
|
||||
// 匹配 nickName 或者 id
|
||||
return item.memberInfo.name.includes(this.searchKeyword) || item.memberInfo.id.toString().includes(this.searchKeyword);
|
||||
});
|
||||
// 更新 this.classlist 为过滤后的列表
|
||||
this.stulist = filteredList;
|
||||
} else {
|
||||
this.fuwei();
|
||||
}
|
||||
},
|
||||
fuwei() {
|
||||
|
||||
this.stulist = JSON.parse(JSON.stringify(this.orgstulist));
|
||||
},
|
||||
highlightSearch(name) {
|
||||
// 使用正则表达式替换匹配到的 searchKeyword 为带有颜色的文字
|
||||
if (this.searchKeyword) {
|
||||
const regex = new RegExp(this.searchKeyword, 'gi');
|
||||
return name.replace(regex, match => `<span style="color: #2D7CE6 ;">${match}</span>`);
|
||||
}
|
||||
return name;
|
||||
},
|
||||
getclassteacher(){
|
||||
this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/members/list?classId=${this.classid}`).then(res => {
|
||||
|
||||
|
||||
if (res.code == 0) {
|
||||
this.teacherlist=res.data.list
|
||||
this.stulist=res.data
|
||||
this.orgstulist = JSON.parse(JSON.stringify(res.data));
|
||||
// this.classlist = res.data.list
|
||||
// this.isloding = false
|
||||
|
||||
|
|
|
@ -57,12 +57,27 @@
|
|||
},
|
||||
// 获取上传七牛云token
|
||||
getQiniuToken() {
|
||||
this.$u.get('https://v2.ielts.langsi.online/file/getToken').then(res => {
|
||||
console.log(res.data);
|
||||
this.token = res.data.token
|
||||
}).catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
wx.request({
|
||||
url: 'https://v2.ielts.langsi.online/file/getToken',
|
||||
method: 'get', // Adjust the request method as needed
|
||||
// data: yourData,
|
||||
header: {
|
||||
'Authorization': 'eyJhbGciOiJIUzUxMiJ9.eyJub3RfeWJzX3VzZXJfa2V5IjoiNWZiYzA4YmUtNDZlMi00NDUzLThmYjQtMjFlNzhjZDIxY2EyIn0.jw2fyMnlNEW-zx8cH6aPh_H-WqEAHDQdh4oCpYg3qBIJZEmw6L4oNWJPvKHM9edmRdLO0p2z7_vlCYoY00NqxA '
|
||||
},
|
||||
success: (res) => {
|
||||
console.log(res);
|
||||
this.token = res.data.data.token
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log(err);
|
||||
}
|
||||
});
|
||||
// this.$u.get('https://v2.ielts.langsi.online/file/getToken').then(res => {
|
||||
// console.log(res.data);
|
||||
// this.token = res.data.token
|
||||
// }).catch(err => {
|
||||
// console.log(err)
|
||||
// })
|
||||
|
||||
},
|
||||
}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
<template>
|
||||
<view>添加学生-个人</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
323
pages_teacher/pages_add/add_studentsforwork.vue
Normal file
323
pages_teacher/pages_add/add_studentsforwork.vue
Normal file
|
@ -0,0 +1,323 @@
|
|||
<template>
|
||||
<view class="searchpage">
|
||||
<u-navbar title="添加学生" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
|
||||
height='36' :custom-back="addstu"></u-navbar>
|
||||
<u-toast ref="uToast" />
|
||||
<view class="serchbox">
|
||||
<view class="serchimg">
|
||||
<image src="https://file.langsi.online/yasiimg/web/static/uVMACkynkipOxuTYDqm0">
|
||||
|
||||
</image>
|
||||
</view>
|
||||
<input type="text"
|
||||
v-model="searchKeyword"
|
||||
placeholder="搜索相关内容..."
|
||||
class="input"
|
||||
placeholder-style="color:#C7CDD3"
|
||||
@input="search()">
|
||||
</view>
|
||||
<view class="check_card">
|
||||
<view class="check_card_stu " v-for="(item,index ) in stulist" :key="index" @click="toggleSelection(item)" :class="{ 'act1': item.isSelected }">
|
||||
<view class="check_card_stu_info_left">
|
||||
<view class="class_card_left">
|
||||
<image :src="item.headImgUrl"></image>
|
||||
</view>
|
||||
<view class="class_card_right">
|
||||
<view class="class_card_right_top" v-html="highlightSearch(item.nickName)">
|
||||
|
||||
</view>
|
||||
<view class="class_card_right_bot">
|
||||
ID:{{item.id}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
<view class="zhanwei" style="width: 100%; height: 230rpx;">
|
||||
|
||||
</view>
|
||||
<view class="botbtn" @click="addstu()" v-show="selectedIds.length>0">
|
||||
<view class="btn">
|
||||
确定添加({{selectedIds.length}})
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
bgc: {
|
||||
backgroundColor: "#F6F9FC",
|
||||
},
|
||||
checkindex: 1,
|
||||
stulist:[],
|
||||
searchKeyword:'',
|
||||
orgstulist:[],
|
||||
selectedIds: [],
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
// this.classid=option.id
|
||||
this.selectedIds=JSON.parse(decodeURIComponent(option.stuinfo))
|
||||
|
||||
},
|
||||
onShow(){
|
||||
this.getallstu()
|
||||
},
|
||||
methods: {
|
||||
addstu() {
|
||||
console.log('调用了');
|
||||
uni.setStorageSync('selectedStuInfo', this.selectedIds);
|
||||
|
||||
// Navigate back to the previous page
|
||||
uni.navigateBack({
|
||||
delta: 1, // Number of pages to go back
|
||||
success(res) {
|
||||
console.log(res);
|
||||
},
|
||||
fail(err) {
|
||||
console.error(err);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
toggleSelection(item) {
|
||||
// const selectedIndex = this.selectedIds.indexOf(item.id);
|
||||
const selectedIndex = this.selectedIds.findIndex(selectedItem => selectedItem.id === item.id);
|
||||
if (selectedIndex === -1) {
|
||||
// If not selected, add to the array and apply the 'act1' class
|
||||
this.selectedIds.push({ name: item.nickName, avatar: item.headImgUrl, id: item.id });
|
||||
|
||||
item.isSelected = true; // Add a property to the item to track selection
|
||||
} else {
|
||||
// If already selected, remove from the array and remove the 'act1' class
|
||||
this.selectedIds.splice(selectedIndex, 1);
|
||||
item.isSelected = false;
|
||||
console.log(this.selectedIds,'selectedIdsselectedIdsselectedIds');
|
||||
}
|
||||
|
||||
},
|
||||
search() {
|
||||
// 根据关键字过滤 this.classlist
|
||||
if (this.searchKeyword !== '') {
|
||||
const filteredList = JSON.parse(JSON.stringify(this.orgstulist)).filter(item => {
|
||||
// 匹配 nickName 或者 id
|
||||
return item.nickName.includes(this.searchKeyword) || item.id.toString().includes(this.searchKeyword);
|
||||
});
|
||||
// 更新 this.classlist 为过滤后的列表
|
||||
this.stulist = filteredList;
|
||||
this.selectedIds.forEach(selectedItem => {
|
||||
const index = this.stulist.findIndex(item => item.id === selectedItem.id);
|
||||
if (index !== -1) {
|
||||
this.$set(this.stulist, index, { ...this.stulist[index], isSelected: true });
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.fuwei();
|
||||
}
|
||||
},
|
||||
fuwei() {
|
||||
|
||||
this.stulist = JSON.parse(JSON.stringify(this.orgstulist));
|
||||
this.selectedIds.forEach(selectedItem => {
|
||||
const index = this.stulist.findIndex(item => item.id === selectedItem.id);
|
||||
if (index !== -1) {
|
||||
this.$set(this.stulist, index, { ...this.stulist[index], isSelected: true });
|
||||
}
|
||||
});
|
||||
},
|
||||
highlightSearch(name) {
|
||||
// 使用正则表达式替换匹配到的 searchKeyword 为带有颜色的文字
|
||||
if (this.searchKeyword) {
|
||||
const regex = new RegExp(this.searchKeyword, 'gi');
|
||||
return name.replace(regex, match => `<span style="color: #2D7CE6 ;">${match}</span>`);
|
||||
}
|
||||
return name;
|
||||
},
|
||||
getallstu(){
|
||||
this.$u.get(`https://api.admin-v2.langsi.online/admin-api/v2/ybs-user/page`).then(res => {
|
||||
|
||||
|
||||
if (res.code == 0) {
|
||||
this.stulist=res.data.list
|
||||
this.orgstulist = JSON.parse(JSON.stringify(res.data.list));
|
||||
this.selectedIds.forEach(selectedItem => {
|
||||
const index = this.stulist.findIndex(item => item.id === selectedItem.id);
|
||||
if (index !== -1) {
|
||||
this.$set(this.stulist, index, { ...this.stulist[index], isSelected: true });
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background: linear-gradient(183deg, #F0F6FF 0%, #FAFAFA 100%);
|
||||
}
|
||||
|
||||
.searchpage {
|
||||
width: 750rpx;
|
||||
padding: 0 32rpx;
|
||||
|
||||
.serchbox {
|
||||
padding: 0 32rpx;
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
margin-top: 30rpx;
|
||||
align-items: center;
|
||||
width: 686rpx;
|
||||
height: 88rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||
|
||||
.serchimg {
|
||||
width: 30.51rpx;
|
||||
height: 32rpx;
|
||||
margin-right: 24rpx;
|
||||
}
|
||||
|
||||
.input {
|
||||
margin: 0 auto;
|
||||
width: 568rpx;
|
||||
height: 88rpx;
|
||||
border-radius: 30rpx;
|
||||
// background-color: #f5f8fc;
|
||||
// display: flex;
|
||||
// justify-content: center;
|
||||
// align-items: center;
|
||||
// text-align: center;
|
||||
font-size: 28rpx;
|
||||
font-family: Source Han Sans CN, Source Han Sans CN-Light;
|
||||
font-weight: 300;
|
||||
text-align: left;
|
||||
color: #a7b9cd;
|
||||
letter-spacing: 1.2rpx;
|
||||
line-height: 36rpx;
|
||||
// padding: 0 100rpx;
|
||||
// padding-right: 135rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.check_card {
|
||||
margin-top: 20rpx;
|
||||
|
||||
.check_card_stu {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 32rpx;
|
||||
width: 686rpx;
|
||||
height: 148rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||
border: 2rpx solid #FFFFFF;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.check_card_stu_info_left {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
|
||||
.class_card_left {
|
||||
width: 76rpx;
|
||||
height: 76rpx;
|
||||
}
|
||||
|
||||
.class_card_right {
|
||||
margin-left: 12rpx;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.class_card_right_top {
|
||||
width: 100%;
|
||||
font-size: 28rpx;
|
||||
font-family: 'PingFang', 'PingFang';
|
||||
font-weight: bold;
|
||||
color: #072F5A;
|
||||
}
|
||||
|
||||
.class_card_right_bot {
|
||||
margin-top: 4rpx;
|
||||
font-size: 20rpx;
|
||||
font-family: 'PingFang', 'PingFang';
|
||||
font-weight: 500;
|
||||
color: rgba(7, 47, 90, 0.6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.check_card_stu_info_right {
|
||||
width: 50%;
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.class_info {
|
||||
width: 110rpx;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
|
||||
.class_info_top {
|
||||
font-size: 20rpx;
|
||||
font-family: 'PingFang', 'PingFang';
|
||||
font-weight: 500;
|
||||
color: rgba(7, 47, 90, 0.5);
|
||||
}
|
||||
|
||||
.class_info_bot {
|
||||
margin-top: 12rpx;
|
||||
font-size: 28rpx;
|
||||
font-family: 'PingFang', 'PingFang';
|
||||
font-weight: 800;
|
||||
color: #2D7CE6;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.act1 {
|
||||
border: 2rpx solid #2D7CE6;
|
||||
}
|
||||
}
|
||||
.botbtn{
|
||||
padding: 32rpx 32rpx 0 32rpx;
|
||||
margin-left: -32rpx;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 750rpx;
|
||||
height: 200rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0rpx -10rpx 16rpx 0rpx rgba(202,202,202,0.25);
|
||||
border-radius: 40rpx 40rpx 0rpx 0rpx;
|
||||
.btn{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 28rpx;
|
||||
font-family:'PingFang','PingFang';
|
||||
font-weight: 800;
|
||||
color: #FFFFFF;
|
||||
width: 686rpx;
|
||||
height: 80rpx;
|
||||
background: linear-gradient(180deg, #74AFFF 0%, #2D7CE6 100%);
|
||||
border-radius: 104rpx 104rpx 104rpx 104rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,8 +1,8 @@
|
|||
<template>
|
||||
<view class="view_body">
|
||||
<u-navbar :is-back="true" title='班级详情' title-color="#000" :border-bottom="false" :background="true" id="navbar">
|
||||
<u-navbar :is-back="true" title='班级详情' title-color="#2E4975" :border-bottom="false" :background="true" id="navbar">
|
||||
</u-navbar>
|
||||
<view class="view_botton">
|
||||
<view class="view_botton" v-if="loading==false">
|
||||
<view class="view_spoken">
|
||||
<view>
|
||||
<image src="https://file.langsi.online/yasiimg/web/static/uXJ24nLEqmCb0FkFpmfy" mode=""></image>
|
||||
|
@ -24,11 +24,11 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="view_yellowBotton">
|
||||
<view class="view_yellowBotton" @click="toaddwork()">
|
||||
安排作业
|
||||
</view>
|
||||
</view>
|
||||
<view class="view_zy">
|
||||
<view class="view_zy" v-if="loading==false">
|
||||
|
||||
|
||||
<view class="view_left" @click="tostu()">
|
||||
|
@ -37,8 +37,11 @@
|
|||
<text>班级成员</text>
|
||||
<u-icon name="arrow-right" color="#646D7B" size="16"></u-icon>
|
||||
</view>
|
||||
<view class="view_images">
|
||||
<image :src="item1.url" mode="" v-for="(item1,index) in item.image"></image>
|
||||
<view class="view_images" >
|
||||
<image :src="item.memberInfo.avatar" mode="" v-for="(item,index ) in classinfo.members" :key="index" v-if="index<=4"></image>
|
||||
<view class="shenlue" v-if="classinfo.members.length>4">
|
||||
{{classinfo.members.length}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -48,8 +51,11 @@
|
|||
<text>带班老师</text>
|
||||
<u-icon name="arrow-right" color="#646D7B" size="16"></u-icon>
|
||||
</view>
|
||||
<view class="view_images">
|
||||
<image :src="item1.url" mode="" v-for="(item1,index) in item.image"></image>
|
||||
<view class="view_images" >
|
||||
<image :src="item.memberInfo.avatar" mode="" v-for="(item,index ) in classinfo.members" :key="index" v-if="index<=4"></image>
|
||||
<view class="shenlue" v-if="classinfo.members.length>4">
|
||||
{{classinfo.members.length}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -91,8 +97,10 @@
|
|||
data() {
|
||||
|
||||
return {
|
||||
isShow: false,
|
||||
|
||||
isShow: true,
|
||||
bgc: {
|
||||
backgroundColor: "#F6F9FC",
|
||||
},
|
||||
operation:[
|
||||
{
|
||||
image:'https://file.langsi.online/yasiimg/web/static/ukPnTLkhCKU5zhbM7SMu',
|
||||
|
@ -117,18 +125,38 @@
|
|||
|
||||
],
|
||||
classid:0,
|
||||
classinfo:{}
|
||||
classinfo:{},
|
||||
workinfo:{},
|
||||
loading:true
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
// this.classid=option.id
|
||||
/* > */ // this.classid=option.id
|
||||
this.classid=15
|
||||
this.getclassinfo()
|
||||
},
|
||||
onShow(){
|
||||
|
||||
},
|
||||
onShow(){
|
||||
this.getclassinfo()
|
||||
this.getworkinfo()
|
||||
},
|
||||
methods:{
|
||||
toaddwork(){
|
||||
let classinofs=[
|
||||
{
|
||||
name:this.classinfo.name,
|
||||
avatar:this.classinfo.avatar,
|
||||
id:this.classinfo.id,
|
||||
|
||||
}
|
||||
]
|
||||
uni.navigateTo({
|
||||
url: "/pages_teacher/teacher_teachers/teacher_addOperation?classinfo=" + encodeURIComponent(JSON.stringify(classinofs))
|
||||
}).then(res => {
|
||||
|
||||
}).catch(err => {
|
||||
|
||||
});
|
||||
},
|
||||
getclassinfo() {
|
||||
this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/detail?id=${this.classid}`).then(res => {
|
||||
|
||||
|
@ -137,6 +165,20 @@
|
|||
this.classinfo=res.data
|
||||
// this.classlist = res.data.list
|
||||
// this.isloding = false
|
||||
this.loading=false
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
getworkinfo() {
|
||||
this.$u.get(`https://api.admin-v2.langsi.online/admin-api/classroom/work-record?classroomId=${this.classid}`).then(res => {
|
||||
|
||||
|
||||
if (res.code == 0) {
|
||||
this.workinfo=res.data
|
||||
// this.classlist = res.data.list
|
||||
// this.isloding = false
|
||||
|
||||
}
|
||||
})
|
||||
|
@ -233,7 +275,7 @@
|
|||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
height: 160rpx;
|
||||
background: linear-gradient(174deg, #FFF2E4 0%, #FFFFFF 100%);
|
||||
background: linear-gradient(174deg, #FFF2E4 10%, #FFFFFF 100%);
|
||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||
// padding: 60rpx;
|
||||
|
||||
|
@ -258,16 +300,30 @@
|
|||
|
||||
.view_images {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
// justify-content: space-between;
|
||||
margin-top: 20rpx;
|
||||
|
||||
|
||||
image {
|
||||
|
||||
margin-right: 16rpx;
|
||||
width: 36rpx;
|
||||
height: 36rpx;
|
||||
|
||||
}
|
||||
.shenlue{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #FFF2E4;
|
||||
border-radius: 50%;
|
||||
width: 36rpx;
|
||||
height: 36rpx;
|
||||
font-size: 20rpx;
|
||||
font-family: PingFang SC, PingFang SC;
|
||||
font-weight: 800;
|
||||
color: #F18F21;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.view_operation {
|
||||
|
|
|
@ -9,36 +9,42 @@
|
|||
</view>
|
||||
<view class="substance">
|
||||
<!-- 渲染Text -->
|
||||
<text :class="{ 'active': itemActive[item.id] === TextIndex }" v-for="(TextItem,TextIndex) in item.tests" :key="TextIndex"
|
||||
@click="Bages_addActive(TextIndex,item.id) ">
|
||||
<text :class="{ 'active': itemActive[item.id] === TextIndex }"
|
||||
v-for="(TextItem,TextIndex) in item.tests" :key="TextIndex"
|
||||
@click="Bages_addActive(TextIndex,item.id) ">
|
||||
{{TextItem.name}}
|
||||
</text>
|
||||
</view>
|
||||
<!-- 渲染part -->
|
||||
<view v-for="(TextItem,TextIndex) in item.tests" :key="TextIndex">
|
||||
<view v-for="(partitem,partindex) in TextItem.parts" :key="partindex" v-if="itemActive[item.id] === TextIndex">
|
||||
<view v-for="(partitem,partindex) in TextItem.parts" :key="partindex"
|
||||
v-if="itemActive[item.id] === TextIndex">
|
||||
<view>
|
||||
<view class="Part1">
|
||||
<view class="imaflex" @click="icon(partitem.id)">
|
||||
<!-- part前面的图表 -->
|
||||
<view class="image">
|
||||
<image src="http://tmp/IFVuR12hLLNO034931f24322ab271b1f57fdf626bcbf.png" mode="" v-if="image"></image>
|
||||
<image src="http://tmp/8OOgvfEpdnT2e4e421b97006c70b30a9df99e51a6df1.png" mode="" v-else></image>
|
||||
<image src="http://tmp/IFVuR12hLLNO034931f24322ab271b1f57fdf626bcbf.png" mode=""
|
||||
v-if="image"></image>
|
||||
<image src="http://tmp/8OOgvfEpdnT2e4e421b97006c70b30a9df99e51a6df1.png" mode=""
|
||||
v-else></image>
|
||||
</view>
|
||||
<view>{{partitem.name}}</view>
|
||||
</view>
|
||||
<!-- part的多选框 -->
|
||||
<view>
|
||||
<u-checkbox @change="checkboxChange(partitem,$event)" v-model="partitem.checked" shape="circle"></u-checkbox>
|
||||
<u-checkbox @change="checkboxChange(partitem,$event)" v-model="partitem.checked"
|
||||
shape="circle"></u-checkbox>
|
||||
</view>
|
||||
</view>
|
||||
<view class="partshow" v-if="tk==partitem.id">
|
||||
<view class="Part2" v-for="(quesitem,quesindex) in partitem.modules" :key="quesindex">
|
||||
<view class="imaflex">
|
||||
<view>{{quesitem.typeText}}</view>
|
||||
<view>{{quesitem.number}} {{quesitem.typeText}}</view>
|
||||
</view>
|
||||
<view>
|
||||
<u-checkbox @change="checkoutzj(quesitem,$event)" v-model="quesitem.subsets"></u-checkbox>
|
||||
<u-checkbox @change="handleCheckboxChange(quesitem)"
|
||||
v-model="quesitem.subsets"></u-checkbox>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -59,6 +65,7 @@
|
|||
itemActive: {},
|
||||
image: true,
|
||||
tk: null,
|
||||
selectwrite: [],
|
||||
|
||||
}
|
||||
},
|
||||
|
@ -66,78 +73,165 @@
|
|||
this.hearing()
|
||||
},
|
||||
methods: {
|
||||
// 听力调取接口渲染
|
||||
updatawrite(data){
|
||||
this.selectwrite=data
|
||||
|
||||
},
|
||||
hearing() {
|
||||
this.$u.get('https://api.admin-v2.langsi.online/admin-api/ielts/paper/list', {
|
||||
classify: 1
|
||||
}).then(res => {
|
||||
this.listHearing = res.data
|
||||
let activeindex = {}
|
||||
let arr = res.data
|
||||
for (let parper of arr) {
|
||||
let test = parper.tests[0]
|
||||
activeindex[parper.id] = 0
|
||||
}
|
||||
this.itemActive = activeindex
|
||||
})
|
||||
this.$u
|
||||
.get("https://api.admin-v2.langsi.online/admin-api/ielts/paper/list", {
|
||||
classify: 1,
|
||||
})
|
||||
.then((res) => {
|
||||
this.listHearing = res.data;
|
||||
let activeindex = {};
|
||||
let arr = res.data;
|
||||
for (let parper of arr) {
|
||||
let test = parper.tests[0];
|
||||
activeindex[parper.id] = 0;
|
||||
}
|
||||
this.itemActive = activeindex;
|
||||
this.updateSubsetsInListHearing()
|
||||
console.log(this.listHearing, "this.itemActivethis.itemActive");
|
||||
});
|
||||
},
|
||||
// 听力test点击事件
|
||||
Bages_addActive(TextIndex, id) {
|
||||
this.itemActive[id] = TextIndex
|
||||
this.$forceUpdate()
|
||||
this.itemActive[id] = TextIndex;
|
||||
this.$forceUpdate();
|
||||
},
|
||||
// 点击变化图表
|
||||
icon(id) {
|
||||
this.image = !this.image
|
||||
this.tk = id
|
||||
this.image = !this.image;
|
||||
this.tk = id;
|
||||
if (this.image == false) {
|
||||
this.tk = id
|
||||
}else {
|
||||
this.tk = null
|
||||
this.tk = id;
|
||||
} else {
|
||||
this.tk = null;
|
||||
}
|
||||
},
|
||||
checkboxChange(parat, e) {
|
||||
checkboxChange(partitem, e) {
|
||||
if (e.value) {
|
||||
this.checked.push(parat.id)
|
||||
const allItemsNoSubsets = parat.modules.every(item => !('subsets' in item));
|
||||
parat.modules.forEach(item=>{
|
||||
this.$set(item, 'subsets', item.id);
|
||||
item.subsets = item.id;
|
||||
this.subsets.push(item.id)
|
||||
console.log( item.subsets)
|
||||
})
|
||||
|
||||
this.listHearing.forEach((paper) => {
|
||||
paper.tests.forEach((test, testIndex) => {
|
||||
test.parts.forEach((part) => {
|
||||
if (part.id === partitem.id) {
|
||||
part.modules.forEach((quesitem, quesIndex) => {
|
||||
this.addToSelectWrite(
|
||||
quesitem,
|
||||
partitem.id,
|
||||
testIndex + 1,
|
||||
paper.title
|
||||
);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
} else {
|
||||
let index = this.checked.indexOf(parat.id);
|
||||
if (index !== -1) {
|
||||
this.checked.splice(index, 1);
|
||||
parat.modules.forEach(item=>{
|
||||
this.$delete(item, 'subsets');
|
||||
const index = this.subsets.indexOf(item.id);
|
||||
if (index !== -1) {
|
||||
this.subsets.splice(index, 1);
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
partitem.modules.forEach((quesitem) => {
|
||||
this.removeFromSelectWrite(quesitem.id);
|
||||
});
|
||||
}
|
||||
console.log(this.checked,'part数组')
|
||||
this.$forceUpdate()
|
||||
this.$forceUpdate();
|
||||
console.log(this.selectwrite, "selectwriteselectwrite");
|
||||
console.log(this.listHearing, "this.listHearing");
|
||||
|
||||
// 在这里执行额外的操作,遍历 selectwrite 中的每一项,更新 listHearing 中的 subsets
|
||||
this.updateSubsetsInListHearing();
|
||||
this.$parent.updatalisten(this.selectwrite)
|
||||
},
|
||||
checkoutzj(quesitem, id) {
|
||||
if (id.value) {
|
||||
this.subsets.push(quesitem.id)
|
||||
console.log(quesitem)
|
||||
} else {
|
||||
let index2 = this.subsets.indexOf(quesitem.id);
|
||||
if (index2 !== -1) {
|
||||
this.subsets.splice(index2, 1);
|
||||
}
|
||||
handleCheckboxChange(quesitems) {
|
||||
const existingIndex = this.selectwrite.findIndex(item => item.id === quesitems.id);
|
||||
|
||||
if (existingIndex !== -1) {
|
||||
// 如果已存在,将 subsets 设为 false,并清除该项
|
||||
this.selectwrite.splice(existingIndex, 1);
|
||||
quesitems.subsets = false;
|
||||
} else {
|
||||
// 如果不存在,添加该项,并将 subsets 设为 true
|
||||
this.listHearing.forEach((paper) => {
|
||||
paper.tests.forEach((test, testIndex) => {
|
||||
test.parts.forEach((part) => {
|
||||
part.modules.forEach((quesitem, quesIndex) => {
|
||||
if (quesitem.id == quesitems.id) {
|
||||
this.addToSelectWrite(
|
||||
quesitems,
|
||||
quesitems.id, // 使用 quesitem 的 id
|
||||
testIndex + 1, // 使用内层循环的 testIndex
|
||||
paper.title // 使用 quesitem 的 paperTitle
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
quesitems.subsets = true;
|
||||
}
|
||||
|
||||
console.log(this.selectwrite, 'selectwriteselectwrite');
|
||||
this.updateSubsetsInListHearing()
|
||||
this.$parent.updatalisten(this.selectwrite)
|
||||
},
|
||||
|
||||
|
||||
|
||||
// 在这里添加一个新的方法,用于更新 listHearing 中的 subsets
|
||||
updateSubsetsInListHearing() {
|
||||
this.listHearing.forEach((paper) => {
|
||||
paper.tests.forEach((test) => {
|
||||
test.parts.forEach((part) => {
|
||||
part.modules.forEach((quesitem) => {
|
||||
const selected = this.selectwrite.find((item) => {
|
||||
return item.id === quesitem.id;
|
||||
});
|
||||
if (selected) {
|
||||
quesitem.subsets = true;
|
||||
} else {
|
||||
quesitem.subsets = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// 额外的逻辑,遍历 listHearing 中的每一个 part,判断是否全部 modules 的 subsets 都为 true
|
||||
this.listHearing.forEach((paper) => {
|
||||
paper.tests.forEach((test) => {
|
||||
test.parts.forEach((part) => {
|
||||
part.checked = part.modules.every((quesitem) => quesitem.subsets);
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
// 添加信息到selectwrite数组
|
||||
addToSelectWrite(quesitem, partId, testIndex, paperTitle) {
|
||||
// Split the guideText into words
|
||||
const words = quesitem.guideText.split(/\s+/);
|
||||
|
||||
// Take the first five words excluding "Complete"
|
||||
const questionname = words.slice(0, 5).filter(word => word !== "Complete").join(' ');
|
||||
|
||||
const item = {
|
||||
id: quesitem.id,
|
||||
paperId: quesitem.paperId,
|
||||
papername: paperTitle,
|
||||
partId: partId,
|
||||
testId: quesitem.testId,
|
||||
testname: `Test ${testIndex}`,
|
||||
typeName: quesitem.typeText,
|
||||
questionname: questionname,
|
||||
};
|
||||
|
||||
this.selectwrite.push(item);
|
||||
},
|
||||
|
||||
removeFromSelectWrite(itemId) {
|
||||
const index = this.selectwrite.findIndex((item) => item.id === itemId);
|
||||
if (index !== -1) {
|
||||
this.selectwrite.splice(index, 1);
|
||||
}
|
||||
console.log(this.subsets,'题型数组')
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
|
@ -200,4 +294,4 @@
|
|||
height: 20rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
</style>
|
||||
</style>
|
|
@ -1,153 +1,232 @@
|
|||
<template>
|
||||
<!-- 外层循环 -->
|
||||
<view>
|
||||
<view v-for="(item,index) in transformedData" :key="index">
|
||||
<view v-for="(item, index) in transformedData"
|
||||
:key="index">
|
||||
<!-- 剑18循环 -->
|
||||
<view>
|
||||
<view class="view_bages">
|
||||
<view>{{item.examName}}</view>
|
||||
<view>{{ item.examName }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 渲染Text -->
|
||||
<view class="substance">
|
||||
<text v-for="text in textArr" :key="text" @click="textClick(item,text)" :class="{active: item.active == text}">{{text}}</text>
|
||||
<text v-for="text in textArr"
|
||||
:key="text"
|
||||
@click="textClick(item, text)"
|
||||
:class="{ active: item.active == text }">{{ text }}</text>
|
||||
</view>
|
||||
<!-- 内容 -->
|
||||
<view class="compose_bodys">
|
||||
<view v-for="text in textArr" :key="text" class="zz">
|
||||
<view class="compose_body" v-for="Task in taskArr" :key="Task" v-if="item.active == text">
|
||||
<view v-for="text in textArr"
|
||||
:key="text"
|
||||
class="zz">
|
||||
<view class="compose_body"
|
||||
v-for="Task in taskArr"
|
||||
:key="Task"
|
||||
v-if="item.active == text">
|
||||
<view class="compose_left">
|
||||
<view>{{Task}}</view>
|
||||
<view>{{ Task }}</view>
|
||||
<view>
|
||||
<text class="fickle">{{item[text][Task].caption}}</text>
|
||||
<text class="fickle2">{{item[text][Task].themeCaption}}</text>
|
||||
<text class="fickle">{{ item[text][Task].caption }}</text>
|
||||
<text class="fickle2">{{ item[text][Task].themeCaption }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view>
|
||||
<u-checkbox @change="checkboxChange(item[text][Task].id,$event)" v-model="item[text][Task].subsetArr">{{item.name}}</u-checkbox>
|
||||
<u-checkbox @change="checkboxChange(item, text, Task, $event)"
|
||||
v-model="item[text][Task].subsetArr">{{ item.name }}</u-checkbox>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
transformedData: [],
|
||||
// 复选框
|
||||
subsetArr:[],
|
||||
textArr:['test1','test2','test3','test4'],
|
||||
taskArr:['task1','task2'],
|
||||
// 接口参数
|
||||
comsapi: {
|
||||
"key": "",
|
||||
"mode": "home",
|
||||
"exam": "",
|
||||
"caption": "0",
|
||||
"themeCaption": "",
|
||||
"type": "",
|
||||
"isStudy": 0,
|
||||
"isEval": 0
|
||||
},
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
transformedData: [],
|
||||
// 复选框
|
||||
subsetArr: [],
|
||||
textArr: ['test1', 'test2', 'test3', 'test4'],
|
||||
taskArr: ['task1', 'task2'],
|
||||
// 接口参数
|
||||
comsapi: {
|
||||
"key": "",
|
||||
"mode": "home",
|
||||
"exam": "",
|
||||
"caption": "0",
|
||||
"themeCaption": "",
|
||||
"type": "",
|
||||
"isStudy": 0,
|
||||
"isEval": 0
|
||||
},
|
||||
orgtransformedData: [],
|
||||
selectwrite: [],
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getCompose()
|
||||
},
|
||||
|
||||
methods: {
|
||||
updatawrite(data){
|
||||
this.selectwrite=data
|
||||
|
||||
},
|
||||
updateSubsetArr() {
|
||||
// 遍历 this.transformedData 中的每个项
|
||||
for (const item of this.transformedData) {
|
||||
// 遍历 this.selectwrite 中的每个对象
|
||||
for (const selectedItem of this.selectwrite) {
|
||||
const { id, test, task } = selectedItem;
|
||||
|
||||
// 检查 task1 中的 id 是否匹配
|
||||
if (item[test] && item[test][task] && String(item[test][task].id) === id) {
|
||||
this.$set(item[test][task], 'subsetArr', true);
|
||||
} else {
|
||||
this.$set(item[test][task], 'subsetArr', false);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//写作接口
|
||||
getCompose() {
|
||||
this.$u.post('https://api.admin-v2.langsi.online/admin-api/writing/all/search', this.comsapi).then(res => {
|
||||
let arr = res.data
|
||||
for (let a of arr) {
|
||||
a.active = 'test1'
|
||||
}
|
||||
this.transformedData = arr
|
||||
this.orgtransformedData = JSON.parse(JSON.stringify(arr));
|
||||
let json = JSON.stringify(this.transformedData)
|
||||
// console.log(json, 'this.transformedData');
|
||||
this.updateSubsetArr()
|
||||
})
|
||||
},
|
||||
textClick(item, text) {
|
||||
item.active = text
|
||||
this.$forceUpdate()
|
||||
},
|
||||
checkboxChange(item, text, Task, event) {
|
||||
const examName = item.examName;
|
||||
const test = text; // text 就是 test 字段的内容
|
||||
const taskId = Task; // Task 就是 task 字段的内容
|
||||
const id = String(item[test][taskId].id);
|
||||
|
||||
// 构建对象
|
||||
const newObject = {
|
||||
examName: examName,
|
||||
test: test,
|
||||
task: taskId,
|
||||
id: id,
|
||||
};
|
||||
|
||||
// 查找数组中是否已存在相应的对象
|
||||
const existingObjectIndex = this.findIndexByFields(this.selectwrite, newObject);
|
||||
|
||||
if (existingObjectIndex === -1) {
|
||||
// 如果不存在,添加到数组
|
||||
this.selectwrite.push(newObject);
|
||||
} else {
|
||||
// 如果存在,根据索引删除对象
|
||||
this.selectwrite.splice(existingObjectIndex, 1);
|
||||
}
|
||||
|
||||
this.$parent.updatawrite(this.selectwrite)
|
||||
// 更新其他状态...
|
||||
},
|
||||
created() {
|
||||
this.getCompose()
|
||||
},
|
||||
methods: {
|
||||
//写作接口
|
||||
getCompose() {
|
||||
this.$u.post('https://api.admin-v2.langsi.online/admin-api/writing/all/search', this.comsapi).then(res => {
|
||||
let arr = res.data
|
||||
for(let a of arr) {
|
||||
a.active = 'test1'
|
||||
}
|
||||
this.transformedData =arr
|
||||
})
|
||||
},
|
||||
textClick(item, text) {
|
||||
item.active = text
|
||||
this.$forceUpdate()
|
||||
},
|
||||
checkboxChange(e,id){
|
||||
if(id.value) {
|
||||
this.subsetArr.push(e)
|
||||
}else {
|
||||
let index=this.subsetArr.indexOf(e);
|
||||
if(e!==-1) {
|
||||
this.subsetArr.splice(index, 1);
|
||||
findIndexByFields(array, fields) {
|
||||
// 根据指定字段值查找对象在数组中的索引
|
||||
for (let i = 0; i < array.length; i++) {
|
||||
let isEqual = true;
|
||||
for (const key in fields) {
|
||||
if (fields[key] !== array[i][key]) {
|
||||
isEqual = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
console.log(this.subsetArr)
|
||||
if (isEqual) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.view_bages {
|
||||
font-size: 40rpx;
|
||||
font-weight: 400;
|
||||
color: #2E4975;
|
||||
}
|
||||
.substance {
|
||||
margin: 20rpx 0;
|
||||
text {
|
||||
padding: 10rpx 30rpx;
|
||||
margin-right: 20rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
||||
}
|
||||
}
|
||||
.compose_bodys{
|
||||
margin: 30rpx 0;
|
||||
.view_bages {
|
||||
font-size: 40rpx;
|
||||
font-weight: 400;
|
||||
color: #2E4975;
|
||||
}
|
||||
.compose_body {
|
||||
display: flex;
|
||||
|
||||
.substance {
|
||||
margin: 20rpx 0;
|
||||
|
||||
text {
|
||||
padding: 10rpx 30rpx;
|
||||
margin-right: 20rpx;
|
||||
background: #FFFFFF;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 0rpx 20rpx;
|
||||
border-bottom: 2rpx solid #F2F2F2;
|
||||
}
|
||||
.compose_body:last-child {
|
||||
border: none;
|
||||
}
|
||||
.zz{
|
||||
background: #ffff;
|
||||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
||||
}
|
||||
.compose_left {
|
||||
display: flex;
|
||||
padding: 24rpx 0;
|
||||
margin: 0 24rpx;
|
||||
}
|
||||
.fickle {
|
||||
padding: 4rpx 22rpx;
|
||||
font-size: 20rpx;
|
||||
font-weight: 500;
|
||||
color: #2D7CE6;
|
||||
margin-left: 12rpx;
|
||||
background: #E1EEFF;
|
||||
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
||||
}
|
||||
.fickle2 {
|
||||
padding: 4rpx 32rpx;
|
||||
font-size: 20rpx;
|
||||
font-weight: 500;
|
||||
color: #FB9734;
|
||||
margin-left: 12rpx;
|
||||
background: #FFEBD7;
|
||||
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
||||
}
|
||||
.active {
|
||||
color: #fff;
|
||||
background: #007AFF !important;
|
||||
}
|
||||
}
|
||||
|
||||
.compose_bodys {
|
||||
margin: 30rpx 0;
|
||||
}
|
||||
|
||||
.compose_body {
|
||||
display: flex;
|
||||
background: #FFFFFF;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin: 0rpx 20rpx;
|
||||
border-bottom: 2rpx solid #F2F2F2;
|
||||
}
|
||||
|
||||
.compose_body:last-child {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.zz {
|
||||
background: #ffff;
|
||||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
||||
}
|
||||
|
||||
.compose_left {
|
||||
display: flex;
|
||||
padding: 24rpx 0;
|
||||
margin: 0 24rpx;
|
||||
}
|
||||
|
||||
.fickle {
|
||||
padding: 4rpx 22rpx;
|
||||
font-size: 20rpx;
|
||||
font-weight: 500;
|
||||
color: #2D7CE6;
|
||||
margin-left: 12rpx;
|
||||
background: #E1EEFF;
|
||||
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
||||
}
|
||||
|
||||
.fickle2 {
|
||||
padding: 4rpx 32rpx;
|
||||
font-size: 20rpx;
|
||||
font-weight: 500;
|
||||
color: #FB9734;
|
||||
margin-left: 12rpx;
|
||||
background: #FFEBD7;
|
||||
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
||||
}
|
||||
|
||||
.active {
|
||||
color: #fff;
|
||||
background: #007AFF !important;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -9,36 +9,42 @@
|
|||
</view>
|
||||
<view class="substance">
|
||||
<!-- 渲染Text -->
|
||||
<text :class="{ 'active': itemActive[item.id] === TextIndex }" v-for="(TextItem,TextIndex) in item.tests" :key="TextIndex"
|
||||
@click="Bages_addActive(TextIndex,item.id) ">
|
||||
<text :class="{ 'active': itemActive[item.id] === TextIndex }"
|
||||
v-for="(TextItem,TextIndex) in item.tests" :key="TextIndex"
|
||||
@click="Bages_addActive(TextIndex,item.id) ">
|
||||
{{TextItem.name}}
|
||||
</text>
|
||||
</view>
|
||||
<!-- 渲染part -->
|
||||
<view v-for="(TextItem,TextIndex) in item.tests" :key="TextIndex">
|
||||
<view v-for="(partitem,partindex) in TextItem.parts" :key="partindex" v-if="itemActive[item.id] === TextIndex">
|
||||
<view v-for="(partitem,partindex) in TextItem.parts" :key="partindex"
|
||||
v-if="itemActive[item.id] === TextIndex">
|
||||
<view>
|
||||
<view class="Part1">
|
||||
<view class="imaflex" @click="icon(partitem.id)">
|
||||
<!-- part前面的图表 -->
|
||||
<view class="image">
|
||||
<image src="http://tmp/IFVuR12hLLNO034931f24322ab271b1f57fdf626bcbf.png" mode="" v-if="image"></image>
|
||||
<image src="http://tmp/8OOgvfEpdnT2e4e421b97006c70b30a9df99e51a6df1.png" mode="" v-else></image>
|
||||
<image src="http://tmp/IFVuR12hLLNO034931f24322ab271b1f57fdf626bcbf.png" mode=""
|
||||
v-if="image"></image>
|
||||
<image src="http://tmp/8OOgvfEpdnT2e4e421b97006c70b30a9df99e51a6df1.png" mode=""
|
||||
v-else></image>
|
||||
</view>
|
||||
<view>{{partitem.name}}</view>
|
||||
</view>
|
||||
<!-- part的多选框 -->
|
||||
<view>
|
||||
<u-checkbox @change="checkboxChange(partitem,$event)" v-model="partitem.checked" shape="circle"></u-checkbox>
|
||||
<u-checkbox @change="checkboxChange(partitem,$event)" v-model="partitem.checked"
|
||||
shape="circle"></u-checkbox>
|
||||
</view>
|
||||
</view>
|
||||
<view class="partshow" v-if="tk==partitem.id">
|
||||
<view class="Part2" v-for="(quesitem,quesindex) in partitem.modules" :key="quesindex">
|
||||
<view class="imaflex">
|
||||
<view>{{quesitem.typeText}}</view>
|
||||
<view>{{quesitem.number}}{{quesitem.typeText}}</view>
|
||||
</view>
|
||||
<view>
|
||||
<u-checkbox @change="checkoutzj(quesitem,$event)" v-model="quesitem.subsets"></u-checkbox>
|
||||
<u-checkbox @change="handleCheckboxChange(quesitem)"
|
||||
v-model="quesitem.subsets"></u-checkbox>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -59,6 +65,7 @@
|
|||
itemActive: {},
|
||||
image: true,
|
||||
tk: null,
|
||||
selectwrite: [],
|
||||
|
||||
}
|
||||
},
|
||||
|
@ -66,6 +73,10 @@
|
|||
this.hearing()
|
||||
},
|
||||
methods: {
|
||||
updatawrite(data){
|
||||
this.selectwrite=data
|
||||
|
||||
},
|
||||
// 听力调取接口渲染
|
||||
hearing() {
|
||||
this.$u.get('https://api.admin-v2.langsi.online/admin-api/ielts/paper/list', {
|
||||
|
@ -79,6 +90,7 @@
|
|||
activeindex[parper.id] = 0
|
||||
}
|
||||
this.itemActive = activeindex
|
||||
this.updateSubsetsInListHearing()
|
||||
})
|
||||
},
|
||||
// 听力test点击事件
|
||||
|
@ -92,51 +104,128 @@
|
|||
this.tk = id
|
||||
if (this.image == false) {
|
||||
this.tk = id
|
||||
}else {
|
||||
} else {
|
||||
this.tk = null
|
||||
}
|
||||
},
|
||||
checkboxChange(parat, e) {
|
||||
checkboxChange(partitem, e) {
|
||||
if (e.value) {
|
||||
this.checked.push(parat.id)
|
||||
const allItemsNoSubsets = parat.modules.every(item => !('subsets' in item));
|
||||
parat.modules.forEach(item=>{
|
||||
this.$set(item, 'subsets', item.id);
|
||||
item.subsets = item.id;
|
||||
this.subsets.push(item.id)
|
||||
console.log( item.subsets)
|
||||
})
|
||||
|
||||
this.listHearing.forEach((paper) => {
|
||||
paper.tests.forEach((test, testIndex) => {
|
||||
test.parts.forEach((part) => {
|
||||
if (part.id === partitem.id) {
|
||||
part.modules.forEach((quesitem, quesIndex) => {
|
||||
this.addToSelectWrite(
|
||||
quesitem,
|
||||
partitem.id,
|
||||
testIndex + 1,
|
||||
paper.title
|
||||
);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
} else {
|
||||
let index = this.checked.indexOf(parat.id);
|
||||
if (index !== -1) {
|
||||
this.checked.splice(index, 1);
|
||||
parat.modules.forEach(item=>{
|
||||
this.$delete(item, 'subsets');
|
||||
const index = this.subsets.indexOf(item.id);
|
||||
if (index !== -1) {
|
||||
this.subsets.splice(index, 1);
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
partitem.modules.forEach((quesitem) => {
|
||||
this.removeFromSelectWrite(quesitem.id);
|
||||
});
|
||||
}
|
||||
console.log(this.checked,'part数组')
|
||||
this.$forceUpdate()
|
||||
this.$forceUpdate();
|
||||
|
||||
|
||||
// 在这里执行额外的操作,遍历 selectwrite 中的每一项,更新 listHearing 中的 subsets
|
||||
this.updateSubsetsInListHearing();
|
||||
this.$parent.updataread(this.selectwrite)
|
||||
},
|
||||
checkoutzj(quesitem, id) {
|
||||
if (id.value) {
|
||||
this.subsets.push(quesitem.id)
|
||||
console.log(quesitem)
|
||||
handleCheckboxChange(quesitems) {
|
||||
const existingIndex = this.selectwrite.findIndex(item => item.id === quesitems.id);
|
||||
|
||||
if (existingIndex !== -1) {
|
||||
// 如果已存在,将 subsets 设为 false,并清除该项
|
||||
this.selectwrite.splice(existingIndex, 1);
|
||||
quesitems.subsets = false;
|
||||
} else {
|
||||
let index2 = this.subsets.indexOf(quesitem.id);
|
||||
if (index2 !== -1) {
|
||||
this.subsets.splice(index2, 1);
|
||||
}
|
||||
// 如果不存在,添加该项,并将 subsets 设为 true
|
||||
this.listHearing.forEach((paper) => {
|
||||
paper.tests.forEach((test, testIndex) => {
|
||||
test.parts.forEach((part) => {
|
||||
part.modules.forEach((quesitem, quesIndex) => {
|
||||
if (quesitem.id == quesitems.id) {
|
||||
this.addToSelectWrite(
|
||||
quesitems,
|
||||
quesitems.id, // 使用 quesitem 的 id
|
||||
testIndex + 1, // 使用内层循环的 testIndex
|
||||
paper.title // 使用 quesitem 的 paperTitle
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
quesitems.subsets = true;
|
||||
}
|
||||
console.log(this.subsets,'题型数组')
|
||||
}
|
||||
|
||||
console.log(this.selectwrite, 'selectwriteselectwrite');
|
||||
this.updateSubsetsInListHearing()
|
||||
this.$parent.updataread(this.selectwrite)
|
||||
},
|
||||
|
||||
|
||||
|
||||
// 在这里添加一个新的方法,用于更新 listHearing 中的 subsets
|
||||
updateSubsetsInListHearing() {
|
||||
this.listHearing.forEach((paper) => {
|
||||
paper.tests.forEach((test) => {
|
||||
test.parts.forEach((part) => {
|
||||
part.modules.forEach((quesitem) => {
|
||||
const selected = this.selectwrite.find((item) => {
|
||||
return item.id === quesitem.id;
|
||||
});
|
||||
if (selected) {
|
||||
quesitem.subsets = true;
|
||||
} else {
|
||||
quesitem.subsets = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// 额外的逻辑,遍历 listHearing 中的每一个 part,判断是否全部 modules 的 subsets 都为 true
|
||||
this.listHearing.forEach((paper) => {
|
||||
paper.tests.forEach((test) => {
|
||||
test.parts.forEach((part) => {
|
||||
part.checked = part.modules.every((quesitem) => quesitem.subsets);
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
// 添加信息到selectwrite数组
|
||||
addToSelectWrite(quesitem, partId, testIndex, paperTitle) {
|
||||
// Split the guideText into words
|
||||
|
||||
const item = {
|
||||
id: quesitem.id,
|
||||
paperId: quesitem.paperId,
|
||||
papername: paperTitle,
|
||||
partId: partId,
|
||||
testId: quesitem.testId,
|
||||
testname: `Test ${testIndex}`,
|
||||
typeName: quesitem.typeText,
|
||||
questionname: quesitem.number,
|
||||
};
|
||||
|
||||
this.selectwrite.push(item);
|
||||
},
|
||||
|
||||
removeFromSelectWrite(itemId) {
|
||||
const index = this.selectwrite.findIndex((item) => item.id === itemId);
|
||||
if (index !== -1) {
|
||||
this.selectwrite.splice(index, 1);
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -200,4 +289,4 @@
|
|||
height: 20rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
</style>
|
||||
</style>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user