船员公众号
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

228 lines
4.8 KiB

<template>
<view class="study">
<view class="li" v-for="(a,i) in list" :key="i">
<template v-if="a.children && a.children.length == 0">
<view class="study-section" @click="openPage(a)">
<view class="study-section-left">
<view class="dot"></view>
<view class="con">
<view class="text">
{{a.name}}
<text class="num" v-if="a.question_count>0">
{{a.question_count}}
</text>
</view>
</view>
</view>
<view class="study-section-right" v-if="a.question_count>0">
<view class="btn">
练习
</view>
</view>
</view>
</template>
<template v-else>
<view class="hd" @click="openPage(a)">
<view class="name">{{a.name}}
<text class="num" v-if="a.question_count>0">
{{a.question_count}}
</text>
</view>
<view class="btn" v-if="a.question_count>0">
练习
</view>
</view>
<view class="study-section study-section-on" v-for="(b,idx) in a.children" key="idx" @click="openPage(a.children[idx])">
<view class="study-section-left">
<view class="dot"></view>
<view class="con">
<view class="text">
{{b.name}}
<text class="num" v-if="b.question_count>0">
{{b.question_count}}
</text>
</view>
</view>
</view>
<view class="study-section-right" v-if="b.question_count>0">
<view class="btn">
练习
</view>
</view>
</view>
</template>
</view>
<view class="empty" style="margin-top: 250rpx;" v-if="total == 0">
<u-empty mode="data" text="暂无相关信息">
</u-empty>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: [],
page: 1,
total: 1,
category_id: "",
type: 0,
};
},
onLoad(o) {
this.type = o.type;
this.category_id = o.id;
this.getList();
uni.setNavigationBarTitle({
title: o.type == 0?"章节练习":"章节错误题"
})
},
// onReachBottom() {
// if(this.list.length <= this.total){
// this.page ++
// this.getList();
// }
// },
methods:{
//获取列表
async getList() {
uni.showLoading({
title: "加载中"
})
const { code, data, msg } = await this.$api.chapterList({
is_free: this.type == 0?1:this.type,
category_id: this.category_id,
page: this.page
})
if (code == 200) {
uni.hideLoading()
this.list = this.arrayUnique(this.list.concat(data.list),'id');
this.total = this.list.length;
} else {
uni.hideLoading()
this.total = 0;
uni.showToast({
icon: "none",
title: msg
})
}
},
//数组对象去重
arrayUnique(arr, name) {
    var hash = {};
    return arr.reduce(function (item, next) {
        hash[next[name]]
            ? ""
            : (hash[next[name]] = true && item.push(next));
        return item;
    }, []);
},
openPage(a) {
if(a.question_count == 0){
return ;
}
uni.navigateTo({
url: "/pages/study/detail?type="+this.type+"&cid="+this.category_id+"&id="+a.id
})
},
}
}
</script>
<style lang="scss" scoped>
.study {
width: 100%;
padding: 0 25rpx 20rpx;
overflow: hidden;
box-sizing: border-box;
.li{
padding: 0 25rpx;
margin-top: 20rpx;
overflow: hidden;
}
.hd{
display: flex;
align-items: flex-start;
justify-content: space-between;
padding: 0 30rpx;
.name{
max-width: 460rpx;
font-size: 34rpx;
font-weight: bold;
text{
font-size: 30rpx;
font-weight: normal;
color: #F01B1B;
margin-left: 10rpx;
}
}
.btn{
width: 111rpx;
font-size: 28rpx;
line-height: 51rpx;
color: #2080F9;
text-align: center;
background: #FFFFFF;
border: 1px solid #2080F9;
border-radius: 25rpx;
}
}
&-section {
width: 100%;
margin: 0 auto;
padding: 30rpx;
box-sizing: border-box;
background: #FFFFFF;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
overflow: hidden;
&-on{
width: 100%;
float: right;
padding: 15rpx 30rpx;
margin-top: 20rpx;
}
&-left {
width: 100%;
display: flex;
line-height: 42rpx;
.dot {
width: 12rpx;
height: 12rpx;
margin:15rpx 17rpx 0 0;
background: #2080F9;
border-radius: 50%;
}
.con{
flex: 1;
max-width: 450rpx;
.text{
font-size: 30rpx;
color: #222222;
}
.num{
margin:0 0 0 17rpx;
font-size: 30rpx;
color: #F01B1B;
}
}
}
&-right {
.btn {
width: 111rpx;
font-size: 28rpx;
line-height: 51rpx;
color: #2080F9;
text-align: center;
background: #FFFFFF;
border: 1px solid #2080F9;
border-radius: 25rpx;
}
}
}
}
</style>