smartmeter-app/pages_teacher/teacher_teachers/components/slander.vue
2023-12-08 15:26:16 +08:00

250 lines
4.9 KiB
Vue

<template>
<!-- 口语下拉 -->
<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 slander" :key="index">
<view class="view_inuygs">
<view class="header_part">
<view class="unite">{{item.label}}</view>
</view>
<view class="bottom_one" v-if="part2">
<view class="blue">串题</view>
<view class="blue">跟读</view>
<view>模考</view>
</view>
</view>
<!-- part1-->
<view class="slander_for">
<view class="slander_of" v-for="(items,indexs) in item.list" :key='indexs'>
<view class="textual">
{{items.topicEn}}
</view>
<view class="bottom_one" v-if="grizzly">
<view class="blue">串题</view>
<view class="blue">跟读</view>
<view>模考</view>
</view>
</view>
</view>
<!-- part2-->
<view class="slander_for" v-if="part2">
<view class="slander_of" v-for="(items,indexs) in item.list" :key='indexs'>
<view class="textual2">
{{items.topicEn}}
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
postdata: {
"key": "",
"pageNum": 0,
"mode": "home",
"part": "part1",
"order": "0",
"type": "",
"isStudy": 0,
"isFavorite": 0,
"isEvlua": 0,
"isFun": 0,
"level": 0,
"isNew": 0
},
//口语
slander: [],
part2:false,
grizzly:true,
categorize: '分类',
// 下拉框的v-if布尔值
selectedOption: 'Part1',
arrow: false,
arrowDown: false,
options: [{
id: 1,
name: 'Part1'
},
{
id: 2,
name: 'Part2'
}
],
}
},
created() {
this.getList()
},
methods: {
getList() {
this.$u.post('https://api.admin-v2.langsi.online/admin-api/speaking/topic/home/list', this.postdata).then(res => {
let keyArr = Object.keys(res.data)
let valueArr = Object.values(res.data)
this.slander = keyArr.map((item, index) => {
return {
label: item,
list: valueArr[index]
}
})
})
},
//下拉显示下拉框
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
this.getList()
} else {
this.postdata.part = "part1"
this.part2= false
this.grizzly = true
this.getList()
}
})
}
}
}
</script>
<style lang="scss" scoped>
.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 {
font-size: 28rpx;
font-family: 'PingFang';
font-weight: 800;
color: #2E4975;
margin-right: 20rpx;
}
.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_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;
}
.blue {
background: rgba(45, 124, 230, 0.1);
color: #2D7CE6;
}
}
.pull_down{
display: flex;
justify-content: space-between;
width: 100rpx;
font-size: 24rpx;
}
</style>