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