1217 lines
29 KiB
Vue
1217 lines
29 KiB
Vue
<template>
|
||
<view class="view_template">
|
||
<view class="view_body">
|
||
<u-navbar :is-back="true"
|
||
title='添加作业'
|
||
title-color="#000"
|
||
:border-bottom="false"
|
||
:background="true"
|
||
id="navbar">
|
||
</u-navbar>
|
||
<!-- 搜索 -->
|
||
<view class="view_search"
|
||
v-if="search">
|
||
<u-search v-model="searchKeyword"
|
||
:show-action="false"
|
||
:animation="true"
|
||
bg-color="#fff"
|
||
placeholder="搜索相关内容..."
|
||
color="#3E97FF"
|
||
@input="searchs()"></u-search>
|
||
</view>
|
||
<!-- <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="view_tabs">
|
||
<u-tabs :list="list"
|
||
:is-scroll="false"
|
||
:current="current"
|
||
@change="change"
|
||
active-color="#2D7CE6"
|
||
bg-color="0"></u-tabs>
|
||
</view>
|
||
<!-- 轮播图 -->
|
||
<swiper :interval="5000"
|
||
:duration="1000"
|
||
is-scroll="true"
|
||
:current="current"
|
||
@change="updateCurrent"
|
||
class="swiper">
|
||
<!-- 口语 -->
|
||
<swiper-item style="height: 300rpx;">
|
||
<view>
|
||
<view class="view_left">
|
||
<view class="view_left_pd"
|
||
@click="arrow_xl">
|
||
<view class="pull_down">
|
||
<view>{{ selectedOption }}</view>
|
||
<u-icon name="arrow-down"
|
||
size="22"></u-icon>
|
||
</view>
|
||
<view class="pull_Down"
|
||
v-if="arrow">
|
||
<view v-for="(item, index) in options"
|
||
:key="index"
|
||
@click="arrow_options(item.id)">{{ item.name }}</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- 口语主体 -->
|
||
<view v-for="(item, index) in slanderpart1" v-if="selectedOption=='Part1'"
|
||
:key="index">
|
||
<view class="view_inuygs">
|
||
<view class="header_part">
|
||
<view class="unite">{{ item.label }}</view>
|
||
</view>
|
||
<view class="bottom_one"
|
||
v-if="item.list.length <= 1"
|
||
v-for="(items, indexs) in item.list"
|
||
:key='indexs'>
|
||
<view :class="{ 'active': items.ischuanti === true }"
|
||
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
|
||
<view :class="{ 'active': items.isgendu === true }"
|
||
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
|
||
<view :class="{ 'active': items.ismk === true }"
|
||
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- part1-->
|
||
<view class="slander_for"
|
||
v-if="item.list.length > 1">
|
||
<view class="slander_of"
|
||
v-for="(items, indexs) in item.list"
|
||
:key='indexs'>
|
||
<view class="textual" v-html="highlightSearch( items.topicEn)">
|
||
|
||
</view>
|
||
<view class="bottom_one">
|
||
<view :class="{ 'active': items.ischuanti === true }"
|
||
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
|
||
<view :class="{ 'active': items.isgendu === true }"
|
||
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
|
||
<view :class="{ 'active': items.ismk === true }"
|
||
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- part2-->
|
||
<view class="slander_for"
|
||
v-if="item.list.length <= 1">
|
||
<view class="slander_of"
|
||
v-for="(items, indexs) in item.list"
|
||
:key='indexs'>
|
||
<view class="textual2" v-html="highlightSearch( items.topicEn)">
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- part2 -->
|
||
<view v-for="(item, index) in slanderpart2" v-if="selectedOption=='Part2'"
|
||
:key="index">
|
||
<view class="view_inuygs">
|
||
<view class="header_part">
|
||
<view class="unite">{{ item.label }}</view>
|
||
</view>
|
||
<view class="bottom_one"
|
||
v-if="item.list.length <= 1"
|
||
v-for="(items, indexs) in item.list"
|
||
:key='indexs'>
|
||
<view :class="{ 'active': items.ischuanti === true }"
|
||
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
|
||
<view :class="{ 'active': items.isgendu === true }"
|
||
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
|
||
<view :class="{ 'active': items.ismk === true }"
|
||
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- part1-->
|
||
<view class="slander_for"
|
||
v-if="item.list.length > 1">
|
||
<view class="slander_of"
|
||
v-for="(items, indexs) in item.list"
|
||
:key='indexs'>
|
||
<view class="textual" v-html="highlightSearch( items.topicEn)">
|
||
|
||
</view>
|
||
<view class="bottom_one">
|
||
<view :class="{ 'active': items.ischuanti === true }"
|
||
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
|
||
<view :class="{ 'active': items.isgendu === true }"
|
||
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
|
||
<view :class="{ 'active': items.ismk === true }"
|
||
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- part2-->
|
||
<view class="slander_for"
|
||
v-if="item.list.length <= 1">
|
||
<view class="slander_of"
|
||
v-for="(items, indexs) in item.list"
|
||
:key='indexs'>
|
||
<view class="textual2" v-html="highlightSearch( items.topicEn)">
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- part3 -->
|
||
<view v-for="(item, index) in slanderpart3" v-if="selectedOption=='Part3'"
|
||
:key="index">
|
||
<view class="view_inuygs">
|
||
<view class="header_part">
|
||
<view class="unite">{{ item.label }}</view>
|
||
</view>
|
||
<view class="bottom_one"
|
||
v-if="item.list.length <= 1"
|
||
v-for="(items, indexs) in item.list"
|
||
:key='indexs'>
|
||
<view :class="{ 'active': items.ischuanti === true }"
|
||
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
|
||
<view :class="{ 'active': items.isgendu === true }"
|
||
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
|
||
<view :class="{ 'active': items.ismk === true }"
|
||
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- part1-->
|
||
<view class="slander_for"
|
||
v-if="item.list.length > 1">
|
||
<view class="slander_of"
|
||
v-for="(items, indexs) in item.list"
|
||
:key='indexs'>
|
||
<view class="textual" v-html="highlightSearch( items.topicEn)">
|
||
|
||
</view>
|
||
<view class="bottom_one">
|
||
<view :class="{ 'active': items.ischuanti === true }"
|
||
@click="updateSelectspeak(items, 'ischuanti', indexs)">串题</view>
|
||
<view :class="{ 'active': items.isgendu === true }"
|
||
@click="updateSelectspeak(items, 'isgendu', indexs)">跟读</view>
|
||
<view :class="{ 'active': items.ismk === true }"
|
||
@click="updateSelectspeak(items, 'ismk', indexs)">模考</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- part2-->
|
||
<view class="slander_for"
|
||
v-if="item.list.length <= 1">
|
||
<view class="slander_of"
|
||
v-for="(items, indexs) in item.list"
|
||
:key='indexs'>
|
||
<view class="textual2" v-html="highlightSearch( items.topicEn)">
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</swiper-item>
|
||
|
||
<!-- 写作 -->
|
||
<swiper-item>
|
||
|
||
<compose ref="compose"></compose>
|
||
</swiper-item>
|
||
<!--听力 -->
|
||
<swiper-item>
|
||
<audiology ref="audiology"></audiology>
|
||
</swiper-item>
|
||
<!-- 阅读 -->
|
||
<swiper-item>
|
||
<reading ref="reading"></reading>
|
||
</swiper-item>
|
||
</swiper>
|
||
</view>
|
||
<!-- 底部按钮 -->
|
||
<view :class="search == true ? 'footer2' : 'footer'"
|
||
v-if="totalLength != 0">
|
||
<view class="footer_button" @click="submessage()">
|
||
<view :class="search == true ? 'button_andadd' : 'button_show'">确定添加({{ totalLength }})</view>
|
||
<view class="footer_button_right"
|
||
v-if="search">口语模考</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view></template>
|
||
|
||
<script>
|
||
import audiology from './components/audiology.vue'
|
||
import reading from './components/reading.vue'
|
||
import slander from './components/slander.vue'
|
||
import compose from './components/compose.vue'
|
||
export default {
|
||
data() {
|
||
return {
|
||
// 导航栏
|
||
list: [{
|
||
name: '口语'
|
||
},
|
||
{
|
||
name: '写作'
|
||
},
|
||
{
|
||
name: '听力'
|
||
},
|
||
{
|
||
name: '阅读'
|
||
}
|
||
],
|
||
radio: [{
|
||
name: '1',
|
||
disabled: false
|
||
}],
|
||
// 写作
|
||
Compose: [],
|
||
num: 0,
|
||
// 下拉框的v-if布尔值
|
||
radioValue: '',
|
||
part1: true,
|
||
current: 0,
|
||
search: true,
|
||
listType: [],
|
||
idList: [],
|
||
// 口语
|
||
postdata: {
|
||
"key": "",
|
||
"pageNum": 0,
|
||
"mode": "home",
|
||
"part": "part1",
|
||
"order": "0",
|
||
"type": "",
|
||
"isStudy": 0,
|
||
"isFavorite": 0,
|
||
"isEvlua": 0,
|
||
"isFun": 0,
|
||
"level": 0,
|
||
"isNew": 0
|
||
},
|
||
slanderpart1: [],
|
||
originslanderpart1: [],
|
||
slanderpart2: [],
|
||
originslanderpart2: [],
|
||
slanderpart3: [],
|
||
originslanderpart3: [],
|
||
part2: false,
|
||
grizzly: true,
|
||
categorize: '分类',
|
||
// 下拉框的v-if布尔值
|
||
selectedOption: 'Part1',
|
||
arrow: false,
|
||
arrowDown: false,
|
||
options: [{
|
||
id: 1,
|
||
name: 'Part1'
|
||
},
|
||
{
|
||
id: 2,
|
||
name: 'Part2'
|
||
},
|
||
{
|
||
id: 3,
|
||
name: 'Part3'
|
||
}
|
||
],
|
||
totalLength: 0,
|
||
searchKeyword: '',
|
||
userId: null,
|
||
selectspeak: [],
|
||
selectwrite: [],
|
||
selectlisten: [],
|
||
selectread: []
|
||
}
|
||
},
|
||
components: {
|
||
audiology,
|
||
reading,
|
||
compose
|
||
},
|
||
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,
|
||
selectwrite: this.selectwrite,
|
||
selectlisten: this.selectlisten,
|
||
selectread: this.selectread
|
||
};
|
||
|
||
// 将数据保存在本地缓存中
|
||
uni.setStorageSync('selectforwork', dataToSave);
|
||
uni.navigateBack({
|
||
delta: 1, // Number of pages to go back
|
||
success(res) {
|
||
console.log(res);
|
||
},
|
||
fail(err) {
|
||
console.error(err);
|
||
}
|
||
});
|
||
},
|
||
fuwei() {
|
||
|
||
// this.slander = JSON.parse(JSON.stringify(this.originslanderpart1));
|
||
// 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 });
|
||
// }
|
||
// });
|
||
},
|
||
searchs() {
|
||
if(this.selectedOption=='Part1'){
|
||
const filteredSlander = [];
|
||
|
||
// 将搜索关键字转换为小写,使搜索不区分大小写
|
||
const searchKeywordLowerCase = this.searchKeyword.toLowerCase();
|
||
|
||
// 遍历原始数据
|
||
for (const item of this.originslanderpart1) {
|
||
const filteredList = item.list.filter(subItem => {
|
||
// 将目标字符串转换为小写,使匹配不区分大小写
|
||
const introductionLowerCase = subItem.introduction.toLowerCase();
|
||
const topicEnLowerCase = subItem.topicEn.toLowerCase();
|
||
|
||
// 检查 introduction 或 topicEn 是否包含小写的 searchKeyword
|
||
return (
|
||
introductionLowerCase.includes(searchKeywordLowerCase) ||
|
||
topicEnLowerCase.includes(searchKeywordLowerCase)
|
||
);
|
||
});
|
||
|
||
// 如果有匹配项,添加到 filteredSlander 中
|
||
if (filteredList.length > 0) {
|
||
filteredSlander.push({
|
||
label: item.label,
|
||
list: filteredList
|
||
});
|
||
}
|
||
}
|
||
|
||
// 更新 this.slander
|
||
this.slanderpart1 = filteredSlander;
|
||
}else if(this.selectedOption=='Part2'){
|
||
const filteredSlander = [];
|
||
|
||
// 将搜索关键字转换为小写,使搜索不区分大小写
|
||
const searchKeywordLowerCase = this.searchKeyword.toLowerCase();
|
||
|
||
// 遍历原始数据
|
||
for (const item of this.originslanderpart2) {
|
||
const filteredList = item.list.filter(subItem => {
|
||
// 将目标字符串转换为小写,使匹配不区分大小写
|
||
const introductionLowerCase = subItem.introduction.toLowerCase();
|
||
const topicEnLowerCase = subItem.topicEn.toLowerCase();
|
||
|
||
// 检查 introduction 或 topicEn 是否包含小写的 searchKeyword
|
||
return (
|
||
introductionLowerCase.includes(searchKeywordLowerCase) ||
|
||
topicEnLowerCase.includes(searchKeywordLowerCase)
|
||
);
|
||
});
|
||
|
||
// 如果有匹配项,添加到 filteredSlander 中
|
||
if (filteredList.length > 0) {
|
||
filteredSlander.push({
|
||
label: item.label,
|
||
list: filteredList
|
||
});
|
||
}
|
||
}
|
||
|
||
// 更新 this.slander
|
||
this.slanderpart2 = filteredSlander;
|
||
}else if(this.selectedOption=='Part3'){
|
||
const filteredSlander = [];
|
||
|
||
// 将搜索关键字转换为小写,使搜索不区分大小写
|
||
const searchKeywordLowerCase = this.searchKeyword.toLowerCase();
|
||
|
||
// 遍历原始数据
|
||
for (const item of this.originslanderpart3) {
|
||
const filteredList = item.list.filter(subItem => {
|
||
// 将目标字符串转换为小写,使匹配不区分大小写
|
||
const introductionLowerCase = subItem.introduction.toLowerCase();
|
||
const topicEnLowerCase = subItem.topicEn.toLowerCase();
|
||
|
||
// 检查 introduction 或 topicEn 是否包含小写的 searchKeyword
|
||
return (
|
||
introductionLowerCase.includes(searchKeywordLowerCase) ||
|
||
topicEnLowerCase.includes(searchKeywordLowerCase)
|
||
);
|
||
});
|
||
|
||
// 如果有匹配项,添加到 filteredSlander 中
|
||
if (filteredList.length > 0) {
|
||
filteredSlander.push({
|
||
label: item.label,
|
||
list: filteredList
|
||
});
|
||
}
|
||
}
|
||
|
||
// 更新 this.slander
|
||
this.slanderpart3 = filteredSlander;
|
||
}
|
||
|
||
|
||
},
|
||
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;
|
||
},
|
||
calculateTotalLength() {
|
||
this.totalLength = this.selectspeak.length + this.selectwrite.length + this.selectlisten.length + this.selectread.length;
|
||
|
||
},
|
||
calculateTotal(array) {
|
||
return array.reduce((total, item) => {
|
||
// 假设每个元素都有一个名为value的属性
|
||
return total + (item.value || 0); // 如果value为undefined,将其视为0
|
||
}, 0);
|
||
},
|
||
updateSelectspeak(items, type, indexs) {
|
||
// 切换slander数组中的值
|
||
items[type] = !items[type];
|
||
|
||
// 获取对应的speakingType值
|
||
const speakingTypeValue = this.getSpeakingTypeValue(type);
|
||
|
||
// 检查selectspeak数组中是否已存在对应的对象
|
||
const existingSelectspeak = this.selectspeak.find(select => select.id === items.id);
|
||
|
||
if (existingSelectspeak) {
|
||
// 如果已存在,在speakingType中添加新的值或移除对应的值
|
||
if (items[type]) {
|
||
// 如果选中了该项,请添加speakingType
|
||
if (!existingSelectspeak.speakingType.includes(speakingTypeValue)) {
|
||
existingSelectspeak.speakingType.push(speakingTypeValue);
|
||
}
|
||
} else {
|
||
// 如果取消选中该项,请删除speakingType
|
||
existingSelectspeak.speakingType = existingSelectspeak.speakingType
|
||
.filter(value => value !== speakingTypeValue);
|
||
|
||
// 如果speakingType为空,则清除selectspeak项
|
||
if (existingSelectspeak.speakingType.length === 0) {
|
||
const indexToRemove = this.selectspeak.indexOf(existingSelectspeak);
|
||
this.selectspeak.splice(indexToRemove, 1);
|
||
}
|
||
}
|
||
} else {
|
||
// 如果不存在,创建新的对象并添加到selectspeak数组中
|
||
if (items[type]) {
|
||
this.selectspeak.push({
|
||
// part: indexs,
|
||
part: items.part,
|
||
topicEn: items.topicEn,
|
||
id: items.id,
|
||
introduction: items.introduction,
|
||
speakingType: [speakingTypeValue]
|
||
});
|
||
}
|
||
}
|
||
this.calculateTotalLength()
|
||
console.log(this.selectspeak, 'selectspeakselectspeak');
|
||
},
|
||
getSpeakingTypeValue(type) {
|
||
// 返回对应的数字值
|
||
switch (type) {
|
||
case 'ischuanti':
|
||
return '1';
|
||
case 'isgendu':
|
||
return '2';
|
||
case 'ismk':
|
||
return '3';
|
||
default:
|
||
return '';
|
||
}
|
||
},
|
||
upType(index, num) {
|
||
this.listType.splice(index, 1, num)
|
||
},
|
||
change(index) {
|
||
this.current = index;
|
||
},
|
||
// 选中某个单选框时,由radio时触发
|
||
radioCheck(index) {
|
||
if (this.radioValue == this.list2[index].id) {
|
||
this.radioValue = null
|
||
} else {
|
||
this.radioValue = this.list2[index].id
|
||
}
|
||
},
|
||
//轮播图滑动和tabs保持一致
|
||
updateCurrent(current, source) {
|
||
this.current = current.detail.current
|
||
if (this.current == 0) {
|
||
this.search = true
|
||
} else {
|
||
this.search = false
|
||
}
|
||
},
|
||
getList() {
|
||
let postdata= {
|
||
"key": "",
|
||
"pageNum": 0,
|
||
"mode": "home",
|
||
"part": "part1",
|
||
"order": "0",
|
||
"type": "",
|
||
"isStudy": 0,
|
||
"isFavorite": 0,
|
||
"isEvlua": 0,
|
||
"isFun": 0,
|
||
"level": 0,
|
||
"isNew": 0
|
||
}
|
||
this.$u.post('https://api.admin-v2.langsi.online/admin-api/speaking/topic/home/list', postdata).then(res => {
|
||
if(res.code==0){
|
||
this.getpart2()
|
||
}
|
||
let keyArr = Object.keys(res.data)
|
||
let valueArr = Object.values(res.data)
|
||
this.slanderpart1 = keyArr.map((item, index) => {
|
||
return {
|
||
label: item,
|
||
list: valueArr[index]
|
||
}
|
||
})
|
||
this.originslanderpart1 = keyArr.map((item, index) => {
|
||
return {
|
||
label: item,
|
||
list: valueArr[index]
|
||
}
|
||
})
|
||
this.originslanderpart1part1 = JSON.parse(JSON.stringify(this.originslanderpart1part1));
|
||
let json = JSON.stringify(res.data)
|
||
// console.log(json);
|
||
})
|
||
|
||
|
||
|
||
|
||
},
|
||
getpart2(){
|
||
let postdata1= {
|
||
"key": "",
|
||
"pageNum": 0,
|
||
"mode": "home",
|
||
"part": "part2",
|
||
"order": "0",
|
||
"type": "",
|
||
"isStudy": 0,
|
||
"isFavorite": 0,
|
||
"isEvlua": 0,
|
||
"isFun": 0,
|
||
"level": 0,
|
||
"isNew": 0
|
||
}
|
||
this.$u.post('https://api.admin-v2.langsi.online/admin-api/speaking/topic/home/list', postdata1).then(res => {
|
||
if(res.code==0){
|
||
this.getpart3()
|
||
}
|
||
let keyArr = Object.keys(res.data)
|
||
let valueArr = Object.values(res.data)
|
||
this.slanderpart2 = keyArr.map((item, index) => {
|
||
return {
|
||
label: item,
|
||
list: valueArr[index]
|
||
}
|
||
})
|
||
this.originslanderpart2 = keyArr.map((item, index) => {
|
||
return {
|
||
label: item,
|
||
list: valueArr[index]
|
||
}
|
||
})
|
||
this.originslanderpart2 = JSON.parse(JSON.stringify(this.originslanderpart2));
|
||
// let json = JSON.stringify(res.data)
|
||
|
||
})
|
||
},
|
||
getpart3(){
|
||
let postdata2= {
|
||
"key": "",
|
||
"pageNum": 0,
|
||
"mode": "home",
|
||
"part": "part3",
|
||
"order": "0",
|
||
"type": "",
|
||
"isStudy": 0,
|
||
"isFavorite": 0,
|
||
"isEvlua": 0,
|
||
"isFun": 0,
|
||
"level": 0,
|
||
"isNew": 0
|
||
}
|
||
this.$u.post('https://api.admin-v2.langsi.online/admin-api/speaking/topic/home/list', postdata2).then(res => {
|
||
let keyArr = Object.keys(res.data)
|
||
let valueArr = Object.values(res.data)
|
||
this.slanderpart3 = keyArr.map((item, index) => {
|
||
return {
|
||
label: item,
|
||
list: valueArr[index]
|
||
}
|
||
})
|
||
this.originslanderpart3 = keyArr.map((item, index) => {
|
||
return {
|
||
label: item,
|
||
list: valueArr[index]
|
||
}
|
||
})
|
||
this.originslanderpart3 = JSON.parse(JSON.stringify(this.originslanderpart3));
|
||
let json = JSON.stringify(res.data)
|
||
// console.log(json);
|
||
})
|
||
},
|
||
//下拉显示下拉框
|
||
arrow_xl() {
|
||
this.arrow = !this.arrow
|
||
},
|
||
arrow_xl2() {
|
||
this.arrowDown = !this.arrowDown
|
||
},
|
||
arrow_options(id) {
|
||
this.options.forEach(item => {
|
||
if (item.id == id) {
|
||
this.selectedOption = item.name
|
||
|
||
} else if (id == 2) {
|
||
this.postdata.part = "part2"
|
||
this.part2 = true
|
||
this.grizzly = false
|
||
|
||
}
|
||
else if (id == 3) {
|
||
this.postdata.part = "part3"
|
||
this.part2 = true
|
||
this.grizzly = false
|
||
|
||
} else {
|
||
this.postdata.part = "part1"
|
||
this.part2 = false
|
||
this.grizzly = true
|
||
|
||
}
|
||
})
|
||
},
|
||
clicking(target, type) {
|
||
|
||
},
|
||
radioGroupChange() {
|
||
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.view_template {
|
||
width: 100%;
|
||
background: linear-gradient(183deg, #F0F6FF 0%, #FAFAFA 100%);
|
||
}
|
||
|
||
.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;
|
||
|
||
}
|
||
}
|
||
|
||
.view_body {
|
||
height: 89vh;
|
||
width: 91.3%;
|
||
margin: 0 auto;
|
||
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
||
|
||
// padding: 32rpx;
|
||
.view_search {
|
||
height: 88rpx;
|
||
margin: 0 auto;
|
||
line-height: 88rpx;
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
|
||
}
|
||
|
||
.view_button {
|
||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
||
padding: 12rpx 24rpx;
|
||
font-size: 20rpx;
|
||
font-weight: 500;
|
||
color: rgba(101, 116, 140, 0.8);
|
||
}
|
||
|
||
.view_buttons {
|
||
background: #2D7CE6;
|
||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
||
padding: 12rpx 24rpx;
|
||
font-size: 20rpx;
|
||
font-weight: 500;
|
||
color: #FFFFFF;
|
||
}
|
||
|
||
.view_fff {
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
}
|
||
|
||
.view_Do {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
padding: 28rpx 0rpx;
|
||
margin: 0 28rpx;
|
||
border-bottom: 2rpx solid #F2F2F2;
|
||
}
|
||
|
||
.view_pushbutton {
|
||
display: flex;
|
||
}
|
||
|
||
.grizzly {
|
||
background: #E1EEFF;
|
||
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
||
font-size: 20rpx;
|
||
font-weight: 500;
|
||
color: #2D7CE6;
|
||
padding: 6rpx 18rpx;
|
||
margin-left: 12rpx;
|
||
}
|
||
|
||
.yellow {
|
||
background: #FFEBD7;
|
||
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
||
font-size: 20rpx;
|
||
font-weight: 500;
|
||
color: #FB9734;
|
||
padding: 6rpx 18rpx;
|
||
margin-left: 12rpx;
|
||
}
|
||
|
||
.view_English {
|
||
display: flex;
|
||
font-size: 24rpx;
|
||
font-weight: 500;
|
||
color: #2E4975;
|
||
}
|
||
|
||
.active {
|
||
z-index: 9;
|
||
background: #2D7CE6;
|
||
color: #fff;
|
||
}
|
||
|
||
.slander {
|
||
height: 352rpx;
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
}
|
||
|
||
.slander_behavior {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
padding: 20rpx 0rpx;
|
||
border-bottom: 2rpx solid #F2F2F2;
|
||
}
|
||
|
||
.slander_for {
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
padding: 0 30rpx;
|
||
}
|
||
|
||
.unite {
|
||
width: 270rpx;
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang';
|
||
font-weight: 800;
|
||
color: #2E4975;
|
||
margin: 26rpx 0rpx;
|
||
}
|
||
|
||
.slander_an {
|
||
background: #F4F4F4;
|
||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
||
font-size: 20rpx;
|
||
font-family: 'PingFang';
|
||
font-weight: 500;
|
||
color: rgba(101, 116, 140, 0.8);
|
||
padding: 10rpx;
|
||
margin-right: 15rpx;
|
||
}
|
||
|
||
.pd_icon {
|
||
margin-left: 8rpx;
|
||
}
|
||
|
||
.highlighted {
|
||
|
||
background: rgba(45, 124, 230, 0.1);
|
||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
||
color: #2D7CE6;
|
||
}
|
||
|
||
.part {
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang';
|
||
font-weight: 500;
|
||
color: #2E4975;
|
||
|
||
}
|
||
|
||
.part2 {
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang';
|
||
font-weight: 500;
|
||
color: #2E4975;
|
||
margin-left: 20rpx;
|
||
|
||
}
|
||
|
||
.swiper {
|
||
height: 80%;
|
||
}
|
||
|
||
swiper-item {
|
||
overflow: scroll;
|
||
}
|
||
|
||
.slander_left {
|
||
width: 328rpx;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
overflow: hidden
|
||
}
|
||
|
||
.view_left {
|
||
display: flex;
|
||
justify-content: left;
|
||
margin-top: 20rpx;
|
||
}
|
||
|
||
.view_inuygs {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
}
|
||
|
||
.view_left_pd {
|
||
position: relative;
|
||
padding: 12rpx 32rpx;
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
margin-right: 15rpx;
|
||
font-size: 24rpx;
|
||
color: #072F5A;
|
||
}
|
||
|
||
.unite {
|
||
width: 290rpx;
|
||
display: -webkit-box;
|
||
-webkit-box-orient: vertical;
|
||
overflow: hidden;
|
||
-webkit-line-clamp: 1;
|
||
font-size: 28rpx;
|
||
font-family: 'PingFang';
|
||
font-weight: 800;
|
||
color: #2E4975;
|
||
|
||
margin-right: 20rpx;
|
||
}
|
||
|
||
.pull_Down {
|
||
position: absolute;
|
||
bottom: -184rpx;
|
||
left: 50%;
|
||
margin-left: -79rpx;
|
||
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(0, 0, 0, 0.25);
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
background: #FFFFFF;
|
||
border-bottom: 2rpx solid #F2F2F2;
|
||
|
||
view {
|
||
padding: 15rpx 50rpx;
|
||
border-bottom: 2rpx solid #F2F2F2;
|
||
}
|
||
}
|
||
|
||
.pull_Down view:last-child {
|
||
border: none;
|
||
}
|
||
|
||
.header_part {
|
||
display: flex;
|
||
align-items: center;
|
||
margin: 26rpx 0rpx;
|
||
}
|
||
|
||
.slander_an {
|
||
padding: 6rpx 18rpx;
|
||
background: #fff;
|
||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
||
margin-left: 12rpx;
|
||
color: #65748C;
|
||
}
|
||
|
||
.slander_for {
|
||
background-color: #fff;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
|
||
}
|
||
|
||
.slander_of {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding: 24rpx 0;
|
||
margin: 0 20rpx;
|
||
border-bottom: 2rpx solid #F2F2F2;
|
||
|
||
}
|
||
|
||
.textual {
|
||
width: 290rpx;
|
||
display: -webkit-box;
|
||
-webkit-box-orient: vertical;
|
||
overflow: hidden;
|
||
-webkit-line-clamp: 2;
|
||
}
|
||
|
||
.bottom_one {
|
||
display: flex;
|
||
|
||
view {
|
||
padding: 6rpx 18rpx;
|
||
background: #F4F4F4;
|
||
border-radius: 12rpx 12rpx 12rpx 12rpx;
|
||
font-size: 20rpx;
|
||
font-weight: 500;
|
||
color: rgba(101, 116, 140, 0.8);
|
||
margin-left: 15rpx;
|
||
}
|
||
|
||
.active {
|
||
background: rgba(45, 124, 230, 0.1);
|
||
color: #2D7CE6;
|
||
}
|
||
}
|
||
|
||
.pull_down {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
width: 100rpx;
|
||
font-size: 24rpx;
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
.footer {
|
||
position: fixed;
|
||
bottom: 0;
|
||
width: 100%;
|
||
background: #FFFFFF;
|
||
box-shadow: 0rpx -6rpx 14rpx 0rpx rgba(177, 177, 177, 0.25);
|
||
padding: 30rpx 32rpx;
|
||
}
|
||
|
||
.footer2 {
|
||
position: fixed;
|
||
bottom: 0;
|
||
width: 100%;
|
||
background: #FFFFFF;
|
||
box-shadow: 0rpx -6rpx 14rpx 0rpx rgba(177, 177, 177, 0.25);
|
||
padding: 30rpx 32rpx;
|
||
margin-top: 25rpx;
|
||
}
|
||
|
||
.footer_button {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.button_ky {
|
||
padding: 24rpx 52rpx;
|
||
border-radius: 104rpx 104rpx 104rpx 104rpx;
|
||
color: #2E4975;
|
||
background-color: #FAFAFA;
|
||
}
|
||
|
||
.button_andadd {
|
||
background: linear-gradient(180deg, #74AFFF 0%, #2D7CE6 100%);
|
||
border-radius: 104rpx 104rpx 104rpx 104rpx;
|
||
padding: 26rpx 125rpx;
|
||
color: #fff;
|
||
}
|
||
|
||
.button_show {
|
||
width: 100%;
|
||
background: linear-gradient(180deg, #74AFFF 0%, #2D7CE6 100%);
|
||
border-radius: 104rpx 104rpx 104rpx 104rpx;
|
||
padding: 26rpx 125rpx;
|
||
color: #fff;
|
||
text-align: center;
|
||
}
|
||
|
||
.view_fff_bottom {
|
||
margin-bottom: 54rpx;
|
||
}
|
||
|
||
.Task {
|
||
font-size: 24rpx;
|
||
font-weight: 500;
|
||
color: #2E4975;
|
||
}
|
||
|
||
.view_left {
|
||
display: flex;
|
||
justify-content: left;
|
||
margin-top: 20rpx;
|
||
}
|
||
|
||
.view_left_pd {
|
||
position: relative;
|
||
padding: 12rpx 32rpx;
|
||
background: #FFFFFF;
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
margin-right: 15rpx;
|
||
font-size: 24rpx;
|
||
}
|
||
|
||
.pull_Down {
|
||
position: absolute;
|
||
bottom: -130rpx;
|
||
left: 50%;
|
||
margin-left: -79rpx;
|
||
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(0, 0, 0, 0.25);
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
background: #FFFFFF;
|
||
border-bottom: 2rpx solid #F2F2F2;
|
||
|
||
view {
|
||
padding: 15rpx 50rpx;
|
||
border-bottom: 2rpx solid #F2F2F2;
|
||
}
|
||
}
|
||
|
||
.pull_DownTow {
|
||
width: 150rpx;
|
||
position: absolute;
|
||
bottom: -133rpx;
|
||
left: 50%;
|
||
margin-left: -72rpx;
|
||
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(0, 0, 0, 0.25);
|
||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||
background: #FFFFFF;
|
||
border-bottom: 2rpx solid #F2F2F2;
|
||
text-align: center;
|
||
|
||
view {
|
||
padding: 15rpx 0rpx;
|
||
border-bottom: 2rpx solid #F2F2F2;
|
||
}
|
||
|
||
}
|
||
|
||
.pull_Down view:last-child {
|
||
border: none;
|
||
}
|
||
|
||
.sl_body {
|
||
background-color: #fff;
|
||
}
|
||
|
||
.footer_button_right {
|
||
padding: 24rpx 62rpx;
|
||
border: 1px solid #2D7CE6;
|
||
border-radius: 104rpx 104rpx 104rpx 104rpx;
|
||
color: #2D7CE6;
|
||
}
|
||
</style>
|