页面渲染 逻辑处理
This commit is contained in:
parent
f805ef513e
commit
1202742ead
|
@ -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>
|
|
@ -71,7 +71,28 @@ export default {
|
|||
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 => {
|
||||
|
@ -81,8 +102,9 @@ export default {
|
|||
}
|
||||
this.transformedData = arr
|
||||
this.orgtransformedData = JSON.parse(JSON.stringify(arr));
|
||||
// let json = JSON.stringify(this.transformedData)
|
||||
console.log(this.transformedData, 'this.transformedData');
|
||||
let json = JSON.stringify(this.transformedData)
|
||||
// console.log(json, 'this.transformedData');
|
||||
this.updateSubsetArr()
|
||||
})
|
||||
},
|
||||
textClick(item, text) {
|
||||
|
|
|
@ -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>
|
|
@ -118,73 +118,94 @@
|
|||
<view class="view_tubiao">
|
||||
<view class="view_title">作业安排</view>
|
||||
</view>
|
||||
<view>
|
||||
<view class="Ielts">IELTS 18</view>
|
||||
|
||||
</view>
|
||||
<view>
|
||||
<view v-for="(item,index) in selectreadlist" :key="index">
|
||||
<view class="Ielts">{{item.papername}}</view>
|
||||
<view
|
||||
style="background-color: #fff; padding: 32rpx 40rpx; border-radius: 20rpx 20rpx 20rpx 20rpx;">
|
||||
style="background-color: #fff; padding: 32rpx 40rpx;border-radius: 20rpx 20rpx 20rpx 20rpx;">
|
||||
<u-time-line>
|
||||
<u-time-line-item nodeTop="2">
|
||||
<u-time-line-item nodeTop="2"
|
||||
v-for="(items,indexs) in item.message" :key="indexs">
|
||||
<template v-slot:content>
|
||||
<view>
|
||||
<view style="display: flex;">
|
||||
|
||||
<view class="Test">Test 2</view>
|
||||
|
||||
<view class="greener">听力</view>
|
||||
|
||||
<view style="display: flex;flex-wrap: nowrap;">
|
||||
|
||||
<view class="Test"
|
||||
>{{items.testname}}</view>
|
||||
|
||||
<view class="ellipses">阅读</view>
|
||||
|
||||
|
||||
</view>
|
||||
<view class="u-order-desc">
|
||||
<text>Part 1:多选题</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</u-time-line-item>
|
||||
<u-time-line-item nodeTop="2">
|
||||
<template v-slot:content>
|
||||
<view>
|
||||
<view style="display: flex;">
|
||||
|
||||
<view class="Test">Test 2</view>
|
||||
|
||||
<view class="greener">听力</view>
|
||||
|
||||
</view>
|
||||
<view class="u-order-desc">
|
||||
<text>Part 1:多选题</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</u-time-line-item>
|
||||
<u-time-line-item nodeTop="2">
|
||||
<template v-slot:content>
|
||||
<view>
|
||||
<view style="display: flex;">
|
||||
|
||||
<view class="Test">Test 2</view>
|
||||
|
||||
<view class="greener">听力</view>
|
||||
|
||||
</view>
|
||||
<view class="u-order-desc">
|
||||
<text>Part 1:多选题</text>
|
||||
<text>{{items.questionname}} {{items.typeName}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</u-time-line-item>
|
||||
|
||||
</u-time-line>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-for="(item,index) in selectwritelist" :key="index">
|
||||
<view class="Ielts">{{item.examName}}</view>
|
||||
<view style="background-color: #fff; padding: 32rpx 40rpx;border-radius: 20rpx 20rpx 20rpx 20rpx;" v-for="(items,indexs) in item.message" :key="indexs">
|
||||
<view style="display: flex; align-items: center;">
|
||||
<view class="yuandi"></view>
|
||||
<view class="Test">{{items.test}}</view>
|
||||
<view class="ellipses">写作</view>
|
||||
<view>
|
||||
<view v-for="(item,index) in selectlistenlist" :key="index">
|
||||
<view class="Ielts">{{item.papername}}</view>
|
||||
<view
|
||||
style="background-color: #fff; padding: 32rpx 40rpx;border-radius: 20rpx 20rpx 20rpx 20rpx;">
|
||||
<u-time-line>
|
||||
<u-time-line-item nodeTop="2"
|
||||
v-for="(items,indexs) in item.message" :key="indexs">
|
||||
<template v-slot:content>
|
||||
<view>
|
||||
<view style="display: flex;flex-wrap: nowrap;">
|
||||
|
||||
<view class="Test"
|
||||
>{{items.testname}}</view>
|
||||
|
||||
<view class="greener">听力</view>
|
||||
|
||||
|
||||
</view>
|
||||
<view class="u-order-desc">
|
||||
<text>{{items.questionname}} {{items.typeName}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</u-time-line-item>
|
||||
|
||||
</u-time-line>
|
||||
</view>
|
||||
<view class="u-order-desc">
|
||||
<text>{{items.task}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view>
|
||||
<view v-for="(item,index) in selectwritelist" :key="index">
|
||||
<view class="Ielts">{{item.examName}}</view>
|
||||
<view
|
||||
style="background-color: #fff; padding: 32rpx 40rpx;border-radius: 20rpx 20rpx 20rpx 20rpx;">
|
||||
<u-time-line>
|
||||
<u-time-line-item nodeTop="2"
|
||||
v-for="(items,indexs) in item.message" :key="indexs">
|
||||
<template v-slot:content>
|
||||
<view>
|
||||
<view style="display: flex;flex-wrap: nowrap;">
|
||||
|
||||
<view class="Test"
|
||||
>{{items.test}}</view>
|
||||
|
||||
<view class="ellipses" style="background: rgba(63,122,242,0.2);color: #3F7AF2;">写作</view>
|
||||
|
||||
</view>
|
||||
<view class="u-order-desc">
|
||||
<text>{{items.task}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</u-time-line-item>
|
||||
|
||||
</u-time-line>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -317,7 +338,9 @@ export default {
|
|||
selectwrite: [],
|
||||
selectlisten: [],
|
||||
selectread: [],
|
||||
selectwritelist: []
|
||||
selectwritelist: [],
|
||||
selectlistenlist: [],
|
||||
selectreadlist: [],
|
||||
|
||||
}
|
||||
},
|
||||
|
@ -365,8 +388,8 @@ export default {
|
|||
this.selectwrite = selectforwork.selectwrite
|
||||
this.selectlisten = selectforwork.selectlisten
|
||||
this.selectread = selectforwork.selectread
|
||||
this.selectwrite = selectforwork.selectwrite;
|
||||
|
||||
// this.selectwrite = selectforwork.selectwrite;
|
||||
//处理写作数据
|
||||
const groupedItems = {};
|
||||
|
||||
this.selectwrite.forEach(item => {
|
||||
|
@ -385,11 +408,66 @@ export default {
|
|||
id: item.id
|
||||
});
|
||||
});
|
||||
|
||||
// Convert groupedItems object to an array
|
||||
|
||||
|
||||
this.selectwritelist = Object.values(groupedItems);
|
||||
//处理听力数据
|
||||
const groupedItems1 = {};
|
||||
|
||||
this.selectlisten.forEach(item => {
|
||||
const papername = item.papername;
|
||||
|
||||
if (!groupedItems1[papername]) {
|
||||
groupedItems1[papername] = {
|
||||
papername: papername,
|
||||
message: []
|
||||
};
|
||||
}
|
||||
|
||||
groupedItems1[papername].message.push({
|
||||
id: item.id,
|
||||
paperId: item.paperId,
|
||||
// papername: paperTitle,
|
||||
partId: item.partId,
|
||||
testId: item.testId,
|
||||
testname: item.testname,
|
||||
typeName: item.typeName,
|
||||
questionname:item. questionname,
|
||||
});
|
||||
});
|
||||
|
||||
// Convert groupedItems object to an array
|
||||
this.selectlistenlist = Object.values(groupedItems1);
|
||||
|
||||
const groupedItems2 = {};
|
||||
|
||||
this.selectread.forEach(item => {
|
||||
const papername = item.papername;
|
||||
|
||||
if (!groupedItems2[papername]) {
|
||||
groupedItems2[papername] = {
|
||||
papername: papername,
|
||||
message: []
|
||||
};
|
||||
}
|
||||
|
||||
groupedItems2[papername].message.push({
|
||||
id: item.id,
|
||||
paperId: item.paperId,
|
||||
// papername: paperTitle,
|
||||
partId: item.partId,
|
||||
testId: item.testId,
|
||||
testname: item.testname,
|
||||
typeName: item.typeName,
|
||||
questionname:item. questionname,
|
||||
});
|
||||
});
|
||||
|
||||
// Convert groupedItems object to an array
|
||||
this.selectreadlist = Object.values(groupedItems2);
|
||||
|
||||
console.log(this.selectwritelist, 'selectwritelist');
|
||||
console.log(this.selectreadlist, 'this.selectread');
|
||||
console.log(this.selectlistenlist, 'this.selectlisten');
|
||||
// Remove duplicates from this.classinfo
|
||||
// this.stuinfo = this.stuinfo.filter(item => !selectedstuInfo.some(selectedItem => selectedItem.id === item.id));
|
||||
|
||||
|
@ -400,52 +478,16 @@ export default {
|
|||
|
||||
},
|
||||
methods: {
|
||||
mergeObjectsByExamName(existingArray, newArray) {
|
||||
const mergedArray = [];
|
||||
|
||||
newArray.forEach(newObj => {
|
||||
const existingObjIndex = existingArray.findIndex(existingObj => existingObj.examName === newObj.examName);
|
||||
|
||||
if (existingObjIndex !== -1) {
|
||||
// 如果存在相同的 examName,则合并对象
|
||||
const existingObj = existingArray[existingObjIndex];
|
||||
existingObj.message.push({
|
||||
test: newObj.test,
|
||||
task: newObj.task,
|
||||
id: newObj.id,
|
||||
// 其他属性...
|
||||
});
|
||||
|
||||
// 更新数组中的对象
|
||||
existingArray[existingObjIndex] = existingObj;
|
||||
} else {
|
||||
// 如果不存在相同的 examName,则直接添加新对象
|
||||
mergedArray.push({
|
||||
examName: newObj.examName,
|
||||
message: [{
|
||||
test: newObj.test,
|
||||
task: newObj.task,
|
||||
id: newObj.id,
|
||||
// 其他属性...
|
||||
}],
|
||||
// 其他属性...
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 添加 existingArray 中未处理的对象
|
||||
existingArray.forEach(existingObj => {
|
||||
const existingObjIndex = mergedArray.findIndex(obj => obj.examName === existingObj.examName);
|
||||
if (existingObjIndex === -1) {
|
||||
mergedArray.push(existingObj);
|
||||
}
|
||||
});
|
||||
|
||||
return mergedArray;
|
||||
},
|
||||
|
||||
addwork() {
|
||||
const dataToSave = {
|
||||
selectspeak: this.selectspeak,
|
||||
selectwrite: this.selectwrite,
|
||||
selectlisten: this.selectlisten,
|
||||
selectread: this.selectread
|
||||
};
|
||||
uni.navigateTo({
|
||||
url: "/pages_teacher/teacher_teachers/teacher_writeadd?classinfo=" + encodeURIComponent(JSON.stringify(this.classinfo))
|
||||
url: "/pages_teacher/teacher_teachers/teacher_writeadd?dataToSave=" + encodeURIComponent(JSON.stringify(dataToSave))
|
||||
}).then(res => {
|
||||
|
||||
}).catch(err => {
|
||||
|
|
|
@ -226,15 +226,15 @@
|
|||
<!-- 写作 -->
|
||||
<swiper-item>
|
||||
|
||||
<compose></compose>
|
||||
<compose ref="compose"></compose>
|
||||
</swiper-item>
|
||||
<!--听力 -->
|
||||
<swiper-item>
|
||||
<audiology></audiology>
|
||||
<audiology ref="audiology"></audiology>
|
||||
</swiper-item>
|
||||
<!-- 阅读 -->
|
||||
<swiper-item>
|
||||
<reading></reading>
|
||||
<reading ref="reading"></reading>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
|
@ -282,7 +282,7 @@ export default {
|
|||
// 下拉框的v-if布尔值
|
||||
radioValue: '',
|
||||
part1: true,
|
||||
current: 1,
|
||||
current: 0,
|
||||
search: true,
|
||||
listType: [],
|
||||
idList: [],
|
||||
|
@ -341,16 +341,39 @@ export default {
|
|||
reading,
|
||||
compose
|
||||
},
|
||||
created() {
|
||||
onShow() {
|
||||
this.getList()
|
||||
},
|
||||
|
||||
onLoad(option) {
|
||||
|
||||
const dataToSave =JSON.parse(decodeURIComponent(option.dataToSave))
|
||||
|
||||
this.selectspeak=dataToSave.selectspeak
|
||||
this.selectwrite=dataToSave.selectwrite
|
||||
this.selectlisten=dataToSave.selectlisten
|
||||
this.selectread=dataToSave.selectread
|
||||
|
||||
this.$refs.compose.updatawrite(this.selectwrite)
|
||||
this.$refs.audiology.updatawrite(this.selectlisten)
|
||||
this.$refs.reading.updatawrite(this.selectread)
|
||||
this.calculateTotalLength()
|
||||
},
|
||||
methods: {
|
||||
updatawrite(data){
|
||||
this.selectwrite=data
|
||||
console.log(this.selectwrite, ' this.selectwrite this.selectwrite');
|
||||
this.calculateTotalLength()
|
||||
},
|
||||
updataread(data){
|
||||
this.selectread=data
|
||||
console.log(this.selectread, ' this.selectwrite this.selectwrite');
|
||||
this.calculateTotalLength()
|
||||
},
|
||||
updatalisten(data){
|
||||
this.selectlisten=data
|
||||
console.log(this.selectlisten, ' this.selectwrite this.selectwrite');
|
||||
this.calculateTotalLength()
|
||||
},
|
||||
submessage(){
|
||||
const dataToSave = {
|
||||
selectspeak: this.selectspeak,
|
||||
|
|
Loading…
Reference in New Issue
Block a user