Files
dvcp_v2_wechat_app/src/project/fengdu/AppNewFarmerBank/AppNewFarmerBank.vue
shijingjing 0b9928e1e0 精选活动
2023-04-06 10:56:30 +08:00

341 lines
8.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="AppNewFarmerBank">
<div class="swiper-content">
<img src="https://cdn.cunwuyun.cn/fengdu/img-gongdeyinhang.png" alt="">
</div>
<div class="welcome">
<div class="welcome-user">
<span class="name">{{ user.realName || user.nickName }}</span>
<span v-if="!user.idNumber">欢迎来到功德银行</span>
<span v-else>欢迎进入{{ user.areaName }}</span>
</div>
<div class="signin" @click="toPages('./signIn',status)">{{ status==1? '已签到':'签到' }}</div>
</div>
<div class="card-list">
<div class="jfsq" @click="toPages('./integralApply')">
<p>积分申请</p>
<h4>好事自荐得积分</h4>
</div>
<div class="jsrw" @click="toPages('./integralTask')">
<p>积分任务</p>
<h4>完成任务得积分</h4>
</div>
<div class="jfph" @click="toPages('./integralRank')">
<p>积分排行</p>
<h4>社区荣誉榜</h4>
</div>
<div class="jfsc" @click="$u.toast('内容建设中...')">
<p>积分商城</p>
<h4>兑换得好物</h4>
</div>
</div>
<div class="handpick" v-if="list.length">
<div class="title">
<h1>精选动态</h1>
<div class="more" v-if="allList.length > 3" @click="toPages('./handpick')">
<span>更多</span>
<u-icon name="arrow-right" color="#687DA6" size="28"></u-icon>
</div>
</div>
<div class="list" v-if="list.length">
<div class="card" v-for="(item,index) in list" :key="index">
<div class="top">
<div class="left" @click="toPages(`./pickDetail?id=${item.id}`)">{{ item.content }}</div>
<div class="right" @click="upCount(item.id,index)">
<img :src="item.upStatus==0? 'https://cdn.cunwuyun.cn/wxmp/fengdu/zan.png':'https://cdn.cunwuyun.cn/wxmp/fengdu/zan-active.png'" alt="">
<div>
<span>{{ item.upCount || 0 }}</span><span v-if="item.upCount > 99">+</span>
</div>
</div>
</div>
<div class="imgs" v-if="item.images.length">
<image v-for="(img, i) in item.images" :key="i" class="banner" :src="img.url"/>
</div>
<div class="imgs" v-if="!item.images.length && item.videos.length">
<video v-for="(video, ins) in item.videos" :key="ins" class="file-img" :src="video.url"/>
</div>
</div>
</div>
<!-- <AiEmpty :description="`暂无数据`" class="emptyWrap" v-else/> -->
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
name: "AppNewFarmerBank",
appName: "功德银行",
data() {
return {
status: null,
current: 1,
list: [],
allList: [],
flag: false,
}
},
computed: {
...mapState(['user'])
},
methods: {
getList(moduleId) {
this.$instance.post(`/app/appcontentinfo/list-web`,null,{
params: {
moduleId: moduleId,
current: this.current,
areaId: this.user.areaId,
containContent: true,
}
}).then(res=> {
if(res?.data) {
this.allList = res.data.records
let newList = res.data.records.length > 3 ? res.data.records.slice(0,3) : res.data.records
let mapList = newList.map(e=> {
return {
...e,
images: e?.files.filter(i=> i.name.split('.')[1]=='jpeg') || e?.files.filter(i => i.name.split('.')[1] == 'jpg') || e?.files.filter(i => i.name.split('.')[1] == 'png') || [],
videos: e?.files.filter(i => i.name.split('.')[1] == 'mp4') || [],
}
})
this.list = mapList.map(v=> {
return {
...v,
images: v.images.length > 3? v.images.slice(0, 3) : v.images,
videos: v.videos.length > 3? v.videos.slice(0, 3) : v.videos,
upStatus: 0
}
})
}
})
},
handleBannerClick() {
},
// 点赞
upCount(id,index) {
if (this.flag) return
this.flag = true
this.$instance.post(`/app/appcontentinfo/supportById?id=${id}`).then(res=> {
if(res?.code==0) {
this.list[index].upStatus = 1
this.$u.toast(`点赞成功`)
}
})
},
toPages(url,status) {
if(!this.user.idNumber) {
this.$dialog.confirm({
content: '您只有完成信息认证后,才可进行相关操作。',
confirmText: '去认证'
}).then(() => {
this.$linkTo('/pages/AppMine/userInfo')
}).catch(() => {
})
} else {
if(!status) {
this.$linkTo(url)
} else {
// 停留
}
}
},
getStatus() {
this.$instance.post(`/app/appwechatsigninfo/checkSign`).then(res=> {
if(res?.data !== null) {
this.status = 1
}
})
},
getModule() {
this.$instance.post(`/app/appintegraluserapply/queryModuleByName`).then(res=> {
if(res?.data) {
this.getList(res.data)
}
})
}
},
onShow() {
this.getStatus()
this.getModule()
},
}
</script>
<style lang="scss" scoped>
.AppNewFarmerBank {
padding-bottom: 20px;
box-sizing: border-box;
.swiper-content {
width: 100%;
height: 332px;
padding: 32px 32px 0;
box-sizing: border-box;
background: #FFF;
img {
width: 100%;
height: 100%;
border-radius: 16px;
}
}
.welcome {
display: flex;
align-items: center;
width: 100%;
height: 120px;
padding: 0 32px;
box-sizing: border-box;
background: #FFF;
.signin {
width: 104px;
height: 52px;
line-height: 52px;
border: 2px solid #2D7DFF;
border-radius: 40px;
color: #2D7DFF;
text-align: center;
font-size: 22px;
font-weight: 400;
}
.welcome-user {
width: calc(100% - 60px);
font-size: 30px;
font-weight: 400;
font-family: "PingFang SC";
.name {
color: #2D7DFF;
font-weight: 500;
}
}
}
.card-list {
background: #FFF;
padding: 0 32px;
display: flex;
flex-wrap: wrap;
.jfsq,
.jsrw,
.jfph,
.jfsc {
width: 328px;
height: 144px;
margin-bottom: 32px;
padding: 28px 32px;
box-sizing: border-box;
p {
font-size: 30px;
font-weight: 600;
}
h4 {
font-size: 20px;
font-weight: 400;
margin-top: 8px;
}
}
.jfsq {
background: url('https://cdn.cunwuyun.cn/fengdu/img-jifenshenqing.png') no-repeat;
background-size: 100% 100%;
color: #DF863E;
}
.jsrw {
background: url('https://cdn.cunwuyun.cn/fengdu/img-jifenrenwu.png') no-repeat;
background-size: 100% 100%;
color: #2D7DFF;
}
.jfph {
background: url('https://cdn.cunwuyun.cn/fengdu/img-jifenpaihang.png') no-repeat;
background-size: 100% 100%;
color: #338A77;
}
.jfsc {
background: url('https://cdn.cunwuyun.cn/fengdu/img-jifenshangcheng.png') no-repeat;
background-size: 100% 100%;
color: #D9606E;
}
& > div:nth-child(2n+1) {
margin-right: 30px;
}
}
.handpick {
padding: 0 32px;
box-sizing: border-box;
.title {
margin: 32px 0;
display: flex;
justify-content: space-between;
align-items: center;
h1 {
font-size: 34px;
font-weight: 500;
}
.more {
width: 200px;
color: #687DA6;
font-size: 28px;
font-weight: 400;
text-align: right;
}
}
.list {
.card {
margin-bottom: 24px;
padding: 32px 24px;
box-sizing: border-box;
background: #FFF;
border-radius: 12px;
.top {
display: flex;
justify-content: space-between;
.left {
width: 562px;
overflow:hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.right {
width: 52px;
text-align: center;
img {
width: 40px;
height: 40px;
}
span {
font-size: 28px;
font-weight: 400;
color: #687DA6;
}
}
}
.imgs {
display: flex;
flex-wrap: wrap;
background: #FFF;
image,
video {
width: 200px;
height: 200px;
margin: 0 12px 0 0;
}
image:nth-child(3n + 0),
video:nth-child(3n + 0) {
margin: 0;
}
}
}
}
}
}
</style>