This commit is contained in:
libowei 2023-12-11 18:50:49 +08:00
commit 195f9e1fb1
13 changed files with 2974 additions and 1309 deletions

View File

@ -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"
}
}
]

View File

@ -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">
ID3324
</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">
ID3324
</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">
ID3324
</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>

View File

@ -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">
ID3324
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>

View File

@ -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">
ID3324
</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">
ID3324
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

View File

@ -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)
// })
},
}

View File

@ -1,9 +0,0 @@
<template>
<view>添加学生-个人</view>
</template>
<script>
</script>
<style>
</style>

View 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>

View File

@ -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 {

View File

@ -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>

View File

@ -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>

View File

@ -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