Files
dvcp_v2_wechat_app/src/project/tianfuxing/AppHome/Culture.vue
yanran200730 98277aa8b9 bug
2022-11-02 14:11:56 +08:00

367 lines
8.2 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="photo">
<div class="header" :class="[isFixed ? 'header-active' : '']">
<div class="status-bar" :style="{height: statusBarHeight + 'px'}"></div>
<div class="nav-bar">
<image src="/static/img/left.png" @click="back"/>
<h2>文明倡导</h2>
</div>
</div>
<div class="back-wrapper" @click="back" v-show="!isFixed" :style="{marginTop : statusBarHeight + 'px'}">
<image src="/static/img/left.png"/>
</div>
<div class="photo-header">
<image src="https://cdn.cunwuyun.cn/wxmp/tianfuxing/wm-bg.png" />
<h2>文明倡导</h2>
<p>将文明倡导公益海报分享在微信朋友圈50人以上的微信群微博群即可获得积分奖励</p>
</div>
<div class="phone-wrapper">
<h2>我上传的</h2>
<div class="list">
<div class="item" v-for="(item, index) in 10" :key="index">
<image src="https://cdn.cunwuyun.cn/wxmp/tianfuxing/photo-bg.png" />
<span>待审核</span>
<div class="bottom">
<i>10-15 19:25</i>
<span>积分+5</span>
</div>
</div>
</div>
</div>
<div class="btn-wrapper">
<div class="btn" @click="upload" hover-class="text-hover">上传朋友圈截图</div>
<div class="btn" @click="upload" hover-class="text-hover">上传群聊截图</div>
</div>
<AiLogin ref="login"/>
</div>
</template>
<script>
export default {
name: 'Culture',
appName: '文明倡导',
customNavigation: true,
data () {
return {
isFixed: false,
statusBarHeight: 20,
list: [],
hideStatus: false,
pageShow: false
}
},
onLoad () {
this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight
},
methods: {
back () {
uni.navigateBack({
delta: 1
})
},
preview (url) {
let imgs = []
this.list.forEach(item => {
imgs = [...imgs, ...item.list.map(v => v.url)]
})
uni.previewImage({
urls: imgs,
current: url
})
},
upload () {
if (!this.token) {
this.$refs.login.show()
return false
}
this.imgList = []
this.hideStatus = false
uni.chooseImage({
count: this.limit,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: (res) => {
if (res.tempFilePaths.length > 9) {
this.$toast(`图片不能超过9张`)
return false
}
this.$loading('上传中')
res.tempFilePaths.forEach((item, index) => {
if (index === res.tempFilePaths.length - 1) {
this.hideStatus = true
}
this.$nextTick(() => {
this.uploadFile(item, res.tempFilePaths.length)
})
})
},
})
},
uploadFile (img, total) {
uni.uploadFile({
url: this.$instance.defaults.baseURL + '/admin/file/add',
filePath: img,
name: 'file',
header: {
'Content-Type': 'multipart/form-data',
Authorization: uni.getStorageSync('token'),
},
success: (res) => {
const data = JSON.parse(res.data)
if (data.code === 0) {
this.imgList.push(data.data[0].split(';')[0])
} else {
this.$toast(data.msg)
}
},
complete: () => {
this.$nextTick(() => {
if (this.imgList.length === total && this.hideStatus) {
this.$instance.post(`/app/appvillagepicturealbum/addPictures`, {
areaName: uni.getStorageSync('areaName'),
areaId: uni.getStorageSync('areaId'),
type: this.type,
urlList: this.imgList
}).then(res => {
if (res.code == 0) {
this.getList(this.type)
this.getTotalInfo(this.type)
uni.$emit('update')
}
this.$hideLoading()
this.hideStatus = false
})
}
})
}
})
},
getList (type) {
this.$instance.post(`/app/appvillagepicturealbum/queryAlbum?areaId=${uni.getStorageSync('areaId')}&type=${type}`).then(res => {
if (res.code === 0) {
this.list = Object.keys(res.data).map(v => {
return {
name: v,
list: res.data[v]
}
})
this.$nextTick(() => {
this.pageShow = true
})
}
this.$hideLoading()
})
}
},
onPageScroll (params) {
this.isFixed = params.scrollTop > 60
}
}
</script>
<style lang="scss" socped>
.photo {
width: 100vw;
overflow-x: hidden;
padding-bottom: 130px;
div {
box-sizing: border-box;
}
.btn-wrapper {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px 32px!important;
.btn {
width: 328px;
background: #2D7DFF;
&:first-child {
background: #3BBC37;
}
}
}
.back-wrapper {
position: fixed;
z-index: 11;
left: 20px;
top: 24px;
width: 40px;
height: 40px;
image {
width: 40px;
height: 40px;
}
}
.header {
position: fixed;
left: 0;
top: 0;
z-index: 0;
width: 100%;
opacity: 0;
transition: all 0.2s ease;
&.header-active {
z-index: 1111;
opacity: 1;
background: linear-gradient(180deg, #2D7DFF 0%, #2D7DFF 40%);
}
.nav-bar {
position: relative;
height: 88px;
line-height: 88px;
color: #fff;
font-size: 32px;
text-align: center;
image {
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 40px;
height: 40px;
padding: 24px 20px 0 20px;
box-sizing: content-box;
}
}
}
.photo-header {
position: relative;
height: 448px;
padding: 150px 48px 0;
image {
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 100%;
height: 448px;
}
h2 {
position: relative;
z-index: 2;
margin-bottom: 16px;
font-weight: 700;
font-size: 64px;
color: #333333;
}
p {
z-index: 2;
width: 420px;
height: 80px;
line-height: 1.3;
font-size: 28px;
color: #658DC1;
}
}
.phone-wrapper {
margin-top: 26px;
padding: 0 32px;
& > h2 {
margin-bottom: 42px;
font-size: 34px;
font-weight: 600;
color: #333333;
}
.list {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
.item {
position: relative;
width: 336px;
height: 252px;
margin-bottom: 20px;
border-radius: 16px;
overflow: hidden;
& > span {
position: absolute;
top: 16px;
right: 16px;
z-index: 2;
width: 110px;
height: 48px;
line-height: 48px;
font-size: 26px;
text-align: center;
color: #FF883C;
background: rgba($color: #000000, $alpha: 0.8);
border-radius: 8px;
}
.bottom {
display: flex;
position: absolute;
justify-content: space-between;
bottom: 0;
left: 0;
z-index: 2;
width: 100%;
height: 80px;
padding: 28px 16px 0;
background-image: linear-gradient(180deg, rgba(0,0,0,0.00) 0%, #000000 100%);
border-radius: 0 0 16px 16px;
text-align: center;
color: #FF883C;
border-radius: 8px;
i {
font-size: 26px;
color: #FFFFFF;
}
span {
font-size: 26px;
color: #FFB94C;
}
}
image {
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 100%;
height: 100%;
}
}
}
}
}
</style>