29 changed files with 1697 additions and 235 deletions
@ -0,0 +1,733 @@ |
|||
<template> |
|||
<view class=""> |
|||
<view class="search-box" v-if="searchNeed"> |
|||
<input class="search-inp" type="text" v-model="keyword"> |
|||
<button class="search-btn" @click="search">搜索</button> |
|||
</view> |
|||
<scroll-view class="tabs-bar" :scroll-x="true"> |
|||
<view class="tabs-bar-item" v-for="(item1,index1) in tabList" :key="index1" |
|||
:class="(current_index==index1&&cc_id=='6')?'active1': (current_index==index1?'active2':'')" |
|||
@click="changeIndex(index1)" |
|||
:style="cc_id=='6'?'margin-right:20px;':''"> |
|||
{{item1.name}} |
|||
</view> |
|||
<!-- cc_id=='6'是校园活动,生活服务的样式和校园活动一样 --> |
|||
</scroll-view> |
|||
<view class="tabs-content"> |
|||
<swiper class="tabs-banner" :indicator-dots="true" v-if="bannerList.length>0"> |
|||
<swiper-item v-for="(item2,index2) in bannerList" :key="index2" @click="navigatorTo(item2.link)"> |
|||
<image :src="item2.thumb" mode="widthFix"></image> |
|||
</swiper-item> |
|||
</swiper> |
|||
<scroll-view class="tabs-video" :scroll-x="true"> |
|||
<view v-for="(item3,index3) in videoList" :key="index3" class="tabs-video-item"> |
|||
<view style=""> |
|||
<video @click="handleV(item3)" :src="item3.video_link" object-fit="cover" |
|||
:show-center-play-btn="false" :controls="false" :direction="0" :poster="item3.video_cover"></video> |
|||
|
|||
</view> |
|||
<view class="video-txt"> |
|||
{{item3.title}} |
|||
</view> |
|||
</view> |
|||
</scroll-view> |
|||
</view> |
|||
|
|||
<PopManager :show="videoshow" type="center"> |
|||
<view v-if="videoshow && cc_id<5" class="status_bar"></view> |
|||
<view v-if="videoshow" style="width: 100vw;height: 100vh;position: relative;background-color: #000;"> |
|||
<video id="myvideo" :src="videolint" |
|||
:style="updateWH" class="myvideo" :show-play-btn="true" object-fit="cover" |
|||
@click.stop="videoControl" :show-fullscreen-btn="false" :autoplay="true" :direction="0" |
|||
@loadedmetadata="changeSize" @ended="play=false"></video> |
|||
<view class="videoNavBar"> |
|||
<text class="iconfont icon-roundleftfill" style="font-size: 48upx;" @click="hideVideo"></text> |
|||
</view> |
|||
<view class="videoTxt"> |
|||
<view class="text-area"> |
|||
<!-- <image src="../../../static/chooseCade/BG.png" mode="" |
|||
style="width: 80upx;height: 80upx;background: #FFF;border-radius: 50%;overflow: hidden;"></image> --> |
|||
{{videoTxt}} |
|||
</view> |
|||
<view class="dis-flex comment-wrapper"> |
|||
<button open-type="share" :id="currentVideo.id" |
|||
style="margin: 0;background: transparent;padding: 0;line-height: normal;font-size: 13px;color: #333;height: 36rpx;" |
|||
@click.stop="share"> |
|||
<image style="width: 36rpx;height: 36rpx;vertical-align: middle;margin-right: 10rpx;" :src="imageRootNew+'share-two.png'" mode=""></image> |
|||
{{currentVideo.share}} |
|||
</button> |
|||
<view class="" @click.stop="showComment"> |
|||
<image style="width: 36rpx;height: 36rpx;vertical-align: middle;margin-right: 10rpx;" :src="imageRootNew+'fa-comment.png'" mode=""></image> |
|||
<text v-if="currentVideo.listTotal">{{currentVideo.listTotal}}</text> |
|||
<text v-else>0</text> |
|||
</view> |
|||
<view class="" @click.stop="fabulous"> |
|||
<image v-if="!currentVideo.is_like" style="width: 36rpx;height: 36rpx;vertical-align: middle;margin-right: 10rpx;" :src="imageRootNew+'appreciate-grey.png'" mode=""></image> |
|||
<image v-else style="width: 36rpx;height: 36rpx;vertical-align: middle;margin-right: 10rpx;" :src="imageRootNew+'appreciate-red.png'" mode=""></image> |
|||
{{currentVideo.likenum||0}} |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</PopManager> |
|||
<!-- 评论区弹窗 --> |
|||
<view class="comment-area" :class="commentShow?'commentShow':''"> |
|||
<view style="text-align: center;line-height: 40px;"> |
|||
共{{currentVideo.listTotal}}条评论 |
|||
<text style="float: right;font-size: 20px;margin-right: 20upx;" @click="hideComment">×</text> |
|||
</view> |
|||
<scroll-view scroll-y="true" class="comment-a-list"> |
|||
<view v-if="currentVideo.CommentList&¤tVideo.CommentList.length>0"> |
|||
<view v-for="(item1,index1) in currentVideo.CommentList" :key="index1" class="comment-item"> |
|||
<view style="width: 100%;"><text>{{item1.content}}</text></view> |
|||
<view style="font-size: 11px;color: #999;margin-right: 20upx;">{{item1.createtime}}</view> |
|||
<view class="reply" @click="editReply(index1)">回复</view> |
|||
|
|||
<view class="comment-item-child" v-if="item1.childCommentList" v-for="(item2,index2) in item1.childCommentList" :key="index2"> |
|||
<view style="width: 100%;"><text>{{item2.content}}</text></view> |
|||
<view style="font-size: 11px;color: #999;margin-right: 20upx;">{{item2.createtime}}</view> |
|||
<view class="reply" @click="editReply(index1, index2)">回复</view> |
|||
</view> |
|||
<view style="width: 100%;font-size: 12px;margin-top: 10upx;color: #666;" v-if="item1.is_query" @click="getChildCommentList(index1, item1.id)"> |
|||
<text v-if="item1.comment_twoPage==1">---展开回复</text><text v-else-if="item1.comment_twoPage>0">---更多回复</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="" v-else style="text-align: center;"> |
|||
暂无评论 |
|||
</view> |
|||
|
|||
<view class="" v-if="currentVideo.CommentList.length!=currentVideo.listTotal" |
|||
style="text-align: center;margin: 10px 0px;color: #666;" @click="showMoreComment"> |
|||
展开更多评论 |
|||
</view> |
|||
</scroll-view> |
|||
<view class="comment-a-b"> |
|||
<textarea v-model="editComment" :placeholder="placeholderText" class="comment-a-b-inp" placeholder-class="comment-a-b-inp-p" |
|||
:fixed="true" :auto-height="true" :adjust-position="false" /> |
|||
<view class="comment-a-b-btn" @click="submitComment">发送</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import App from '@/common/js/app.js'; |
|||
import PopManager from '@/components/template/PopManager'; |
|||
export default{ |
|||
data(){ |
|||
return { |
|||
keyword: '', |
|||
current_index: 0, |
|||
tabList: [], |
|||
child_id: 0, |
|||
bannerList: [], |
|||
videoList: [], |
|||
videoshow: false, |
|||
videolint: '', |
|||
videoTxt: '', |
|||
currentVideo: { |
|||
listTotal: 0, |
|||
CommentList: [] |
|||
}, |
|||
commentShow: false, |
|||
currentVideoW: '', |
|||
currentVideoH: '', |
|||
play: true, |
|||
editComment: '', |
|||
pid: '',// 当前要回复的评论的id |
|||
oneid: '',// 当前要回复的评论的一级评论id |
|||
placeholderText: '输入评论', |
|||
comment_onePage: 1, |
|||
} |
|||
}, |
|||
components: { |
|||
PopManager |
|||
}, |
|||
props: { |
|||
pageType: { |
|||
type: Number | String, |
|||
default: '' |
|||
}, |
|||
cc_id: { |
|||
// 1~4是商品,7~9是招聘就业,6校园活动 |
|||
type: Number | String, |
|||
default: 0 |
|||
}, |
|||
searchNeed: { |
|||
type: Boolean, |
|||
default: false |
|||
} |
|||
}, |
|||
computed:{ |
|||
updateWH(){ |
|||
if(this.currentVideoW>this.currentVideoH){ |
|||
// console.log({ width:'100vw', height: `calc(${this.currentVideoH} / ${this.currentVideoW} * 100vw)` }); |
|||
return `width:100vw; height: calc(${this.currentVideoH} / ${this.currentVideoW} * 100vw);top: 50%;transform: translateY(-50%);`; |
|||
} |
|||
if(this.currentVideoW<this.currentVideoH){ |
|||
// console.log({ height:'100vh', width: `calc(${this.currentVideoW} / ${this.currentVideoH} * 100vh)` }); |
|||
// return `height:calc(100vh - 140rpx); width: calc(${this.currentVideoW} / ${this.currentVideoH} * (100vh - 140rpx))`; |
|||
return `height:calc(100vh - 140rpx); width: 100vw`; |
|||
} |
|||
}, |
|||
}, |
|||
created() { |
|||
this.getTabData(); |
|||
}, |
|||
mounted() { |
|||
// 页面初次渲染! createVideoContext uni video自带 上下文 如果不懂可以去百度 |
|||
this.videoContext = uni.createVideoContext('myvideo', this); |
|||
// this.videoContext.requestFullScreen(); |
|||
}, |
|||
methods: { |
|||
getTabData(){ |
|||
App._post_form( |
|||
`&p=cultivateClass&do=getCultivateClassChildList`, |
|||
{cc_id: this.cc_id}, |
|||
res => { |
|||
if(res.data.length>0){ |
|||
this.tabList = res.data; |
|||
console.log(res.data); |
|||
this.child_id = res.data[0].id; |
|||
this.getInfoData(); |
|||
this.$emit('changeChildType',this.child_id); |
|||
} |
|||
}, |
|||
false, |
|||
() => { |
|||
// this.loadlogo = true; |
|||
} |
|||
); |
|||
}, |
|||
getInfoData(){ |
|||
App._post_form( |
|||
`&p=cultivateClass&do=getCultivateClassInfo`, |
|||
{cc_id: this.child_id}, |
|||
res => { |
|||
this.bannerList = res.data.advs; |
|||
this.videoList = res.data.video; |
|||
// this.videoList = [...res.data.video, ...res.data.video, ...res.data.video, ...res.data.video]; |
|||
}, |
|||
false, |
|||
() => { |
|||
// this.loadlogo = true; |
|||
} |
|||
); |
|||
}, |
|||
changeIndex(i){ |
|||
this.current_index = i; |
|||
this.child_id = this.tabList[i].id; |
|||
this.getInfoData(); |
|||
this.keyword = ''; |
|||
this.$emit('changeChildType',this.child_id); |
|||
}, |
|||
navigatorTo(link){ |
|||
console.log(23232) |
|||
uni.navigateTo({ |
|||
url:'/'+link |
|||
}) |
|||
}, |
|||
// 重置当前视频资源和视频评论 |
|||
handleV(content){ |
|||
console.log(111, content); |
|||
this.videoshow = true; |
|||
this.videolint = content.video_link; |
|||
this.videoTxt = content.title; |
|||
this.currentVideo = {...content, CommentList: [], listTotal: 0,}; |
|||
// this.videoContext.requestFullScreen({ |
|||
// direction:0 |
|||
// }) |
|||
|
|||
this.play = true; |
|||
this.editComment = ''; |
|||
this.oneid = ""; |
|||
this.pid = ''; |
|||
this.comment_onePage = 1; |
|||
this.placeholderText = '输入评论'; |
|||
// 获取视频评论 |
|||
let data = { |
|||
video_id: this.currentVideo.id, |
|||
oneid: '',//当前评论的id(注:打开二级评论时 必传) |
|||
pindex: this.comment_onePage, |
|||
psize: 10 |
|||
} |
|||
this.getVideoComment(data); |
|||
}, |
|||
// 获取一级评论 |
|||
getVideoComment(data){ |
|||
App._post_form( |
|||
`&p=cultivateClass&do=getVideoComment`, |
|||
data, |
|||
res => { |
|||
console.log(res); |
|||
if(this.comment_onePage===1){ |
|||
for(let item of res.data.list){ |
|||
this.currentVideo.CommentList.push({ |
|||
...item, |
|||
comment_twoPage: 1//二级评论的页数 |
|||
}) |
|||
} |
|||
this.currentVideo.listTotal = res.data.total; |
|||
}else{ |
|||
for(let item of res.data.list){ |
|||
this.currentVideo.CommentList.push({ |
|||
...item, |
|||
comment_twoPage: 1//二级评论的页数 |
|||
}) |
|||
} |
|||
this.currentVideo.listTotal = res.data.total; |
|||
} |
|||
this.comment_onePage++; |
|||
}, |
|||
false, |
|||
() => { |
|||
// this.loadlogo = true; |
|||
} |
|||
); |
|||
}, |
|||
// 展开更多评论 |
|||
showMoreComment(){ |
|||
let data = { |
|||
video_id: this.currentVideo.id, |
|||
oneid: '',//当前评论的id(注:打开二级评论时 必传) |
|||
pindex: this.comment_onePage, |
|||
psize: 10 |
|||
} |
|||
this.getVideoComment(data); |
|||
}, |
|||
// 获取更多回复/展开回复/更多回复 |
|||
getChildCommentList(indexA, id){ |
|||
let data = { |
|||
video_id: this.currentVideo.id, |
|||
oneid: id,//当前评论的id(注:打开二级评论时 必传) |
|||
pindex: this.currentVideo.CommentList[indexA].comment_twoPage, |
|||
psize: 10 |
|||
}; |
|||
App._post_form( |
|||
`&p=cultivateClass&do=getVideoComment`, |
|||
data, |
|||
res => { |
|||
console.log(res); |
|||
if(res.data.list.length>0){ |
|||
|
|||
} |
|||
if(this.currentVideo.CommentList[indexA].comment_twoPage === 1){ |
|||
this.currentVideo.CommentList[indexA].childCommentList = res.data.list; |
|||
}else{ |
|||
this.currentVideo.CommentList[indexA].childCommentList = [...this.currentVideo.CommentList[indexA].childCommentList, ...res.data.list]; |
|||
} |
|||
if(res.data.total == this.currentVideo.CommentList[indexA].childCommentList.length){ |
|||
this.currentVideo.CommentList[indexA].comment_twoPage = 0; |
|||
}else{ |
|||
this.currentVideo.CommentList[indexA].comment_twoPage++; |
|||
} |
|||
console.log(this.currentVideo.CommentList[indexA].comment_twoPage, '当前评论comment_twoPage'); |
|||
}, |
|||
false, |
|||
() => { |
|||
// this.loadlogo = true; |
|||
} |
|||
); |
|||
}, |
|||
showComment(){ |
|||
this.commentShow=true; |
|||
}, |
|||
hideComment(){ |
|||
this.commentShow=false; |
|||
this.editComment = ""; |
|||
this.oneid = ""; |
|||
this.pid = ''; |
|||
this.placeholderText = '输入评论'; |
|||
}, |
|||
hideVideo(){ |
|||
this.videoshow = false; |
|||
this.hideComment(); |
|||
}, |
|||
videoControl(e){ |
|||
console.log(e); |
|||
if(this.play){ |
|||
this.play = false; |
|||
this.videoContext.pause(); |
|||
}else{ |
|||
this.play = true; |
|||
this.videoContext.play(); |
|||
} |
|||
}, |
|||
search(){ |
|||
this.$emit('search', this.keyword) |
|||
}, |
|||
share(){ |
|||
App._post_form( |
|||
`&p=cultivateClass&do=shareNum`, |
|||
{id: this.currentVideo.id}, |
|||
res => { |
|||
this.currentVideo.share++; |
|||
}, |
|||
false, |
|||
() => { |
|||
// this.loadlogo = true; |
|||
} |
|||
); |
|||
}, |
|||
fabulous(item){ |
|||
App._post_form( |
|||
`&p=cultivateClass&do=fabulous`, |
|||
{id: this.currentVideo.id}, |
|||
res => { |
|||
this.currentVideo.is_like = !this.currentVideo.is_like; |
|||
this.videoList.map(item=>{ |
|||
if(item.id == this.currentVideo.id){ |
|||
item.is_like = this.currentVideo.is_like; |
|||
if(item.is_like){ |
|||
item.likenum ++; |
|||
uni.showToast({ |
|||
title:'点赞成功', |
|||
icon:'none' |
|||
}) |
|||
}else{ |
|||
item.likenum --; |
|||
uni.showToast({ |
|||
title:'取消点赞', |
|||
icon:'none' |
|||
}) |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
false, |
|||
() => { |
|||
// this.loadlogo = true; |
|||
} |
|||
); |
|||
}, |
|||
submitComment(){ |
|||
let _this = this; |
|||
let data = { |
|||
video_id: this.currentVideo.id, |
|||
text: this.editComment, |
|||
pid: this.pid, |
|||
oneid: this.oneid |
|||
} |
|||
App._post_form( |
|||
`&p=cultivateClass&do=comment`, |
|||
data, |
|||
res => { |
|||
uni.showToast({ |
|||
title:'评论成功', |
|||
icon:'none' |
|||
}) |
|||
|
|||
// 获取视频评论 |
|||
let data1 = { |
|||
video_id: _this.currentVideo.id, |
|||
oneid: '',//当前评论的id(注:打开二级评论时 必传) |
|||
pindex: 1, |
|||
psize: 10 |
|||
} |
|||
_this.comment_onePage = 1; |
|||
|
|||
//评论要审核的,请求了也不一定能显示 |
|||
// _this.getVideoComment(data1); |
|||
//评论要审核的,手动插入页面不对 |
|||
// if(_this.placeholderText == '输入评论'){ |
|||
// this.currentVideo.CommentList.unshift(); |
|||
// this.currentVideo.listTotal++; |
|||
// } |
|||
|
|||
//评论要审核的,请求了也不一定能显示 |
|||
// if(_this.placeholderText == '回复评论'){ |
|||
// let indexA; |
|||
// for(let i = 0;i<_this.currentVideo.CommentList.length;i++){ |
|||
// if(_this.currentVideo.CommentList[i].id==_this.oneid){ |
|||
// indexA = i; |
|||
// } |
|||
// } |
|||
// _this.currentVideo.CommentList[indexA].comment_twoPage = 1; |
|||
// _this.getChildCommentList(indexA, _this.oneid) |
|||
// } |
|||
|
|||
_this.editComment = ""; |
|||
_this.oneid = ""; |
|||
_this.pid = ''; |
|||
_this.placeholderText = '输入评论'; |
|||
}, |
|||
false, |
|||
() => { |
|||
// this.loadlogo = true; |
|||
} |
|||
); |
|||
}, |
|||
// 点击回复 |
|||
editReply(index1, index2){ |
|||
console.log(index1, index2); |
|||
this.oneid = this.currentVideo.CommentList[index1].id; |
|||
if(index2){ |
|||
this.pid = this.currentVideo.CommentList[index1].childCommentList[index2].id; |
|||
}else{ |
|||
this.pid = this.currentVideo.CommentList[index1].id; |
|||
} |
|||
this.placeholderText = '回复评论' |
|||
console.log(this.pid,'this.pid,当前要回复的评论的id'); |
|||
console.log(this.oneid,'this.oneid,当前要回复的评论的一级评论id'); |
|||
|
|||
// this.placeholderText = '输入评论'; |
|||
}, |
|||
changeSize(e){ |
|||
// console.log(e.detail.width, e.detail.height, '视频尺寸'); |
|||
this.currentVideoW = e.detail.width; |
|||
this.currentVideoH = e.detail.height; |
|||
}, |
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.search-box{ |
|||
width: 700upx; |
|||
height: 34px; |
|||
margin: 10px auto; |
|||
border: 1px solid #509DFD; |
|||
border-radius: 30px; |
|||
background-color: #fff; |
|||
display: flex; |
|||
align-items: center; |
|||
.search-inp{ |
|||
flex-grow: 1; |
|||
padding: 0px 10px 0px 20px; |
|||
font-size: 14px; |
|||
} |
|||
.search-btn{ |
|||
width: 120upx; |
|||
height: 30px; |
|||
background-color: #509DFD; |
|||
border-radius: 15px; |
|||
color: #fff; |
|||
font-size: 12px; |
|||
padding: 0px; |
|||
margin-right: 2px; |
|||
} |
|||
} |
|||
.tabs-bar{ |
|||
width: 100%; |
|||
height: 40px; |
|||
padding: 0px 10upx; |
|||
box-sizing: border-box; |
|||
white-space: nowrap; |
|||
|
|||
::-webkit-scrollbar{ |
|||
display: none; |
|||
} |
|||
|
|||
.tabs-bar-item{ |
|||
display: inline-block; |
|||
line-height: 20px; |
|||
padding: 10px; |
|||
font-size: 14px; |
|||
color: #666; |
|||
&.active1{ |
|||
color: #333; |
|||
font-size: 18px; |
|||
position: relative; |
|||
} |
|||
&.active1::after{ |
|||
content: ''; |
|||
width: 26px; |
|||
height: 4px; |
|||
position: absolute; |
|||
bottom: 0px; |
|||
left: 50%; |
|||
transform: translateX(-50%); |
|||
background-color: #509DFD; |
|||
border-radius: 2px; |
|||
} |
|||
&.active2{ |
|||
font-weight: bold; |
|||
color: #333; |
|||
position: relative; |
|||
} |
|||
&.active2::after{ |
|||
content: ''; |
|||
width: 20px; |
|||
height: 3px; |
|||
position: absolute; |
|||
bottom: 0px; |
|||
left: 50%; |
|||
transform: translateX(-50%); |
|||
background-color: #f00; |
|||
} |
|||
} |
|||
} |
|||
.tabs-content{ |
|||
width: 100%; |
|||
padding: 30upx; |
|||
box-sizing: border-box; |
|||
|
|||
.tabs-banner{ |
|||
width: 100%; |
|||
height: 300upx; |
|||
border-radius: 20upx; |
|||
transform: translate3d(0, 0, 0); |
|||
overflow: hidden; |
|||
background-color: #fff; |
|||
margin-bottom: 40upx; |
|||
|
|||
image{ |
|||
width:100%; |
|||
} |
|||
} |
|||
.tabs-video{ |
|||
width: 100%; |
|||
white-space: nowrap; |
|||
|
|||
::-webkit-scrollbar{ |
|||
display: none; |
|||
} |
|||
|
|||
.tabs-video-item{ |
|||
width: 200upx; |
|||
display: inline-block; |
|||
margin-right: 20upx; |
|||
} |
|||
video{ |
|||
width: 200upx; |
|||
height: 300upx; |
|||
border-radius: 20upx; |
|||
overflow: hidden; |
|||
} |
|||
.video-txt{ |
|||
width: 100%; |
|||
font-size: 14px; |
|||
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden; |
|||
} |
|||
} |
|||
} |
|||
.status_bar{ |
|||
height: calc(var(--status-bar-height) * 2); |
|||
width: 100%; |
|||
background-color: #000; |
|||
} |
|||
.videoNavBar{ |
|||
width: 100vw; |
|||
position: absolute; |
|||
left: 0upx; |
|||
// top: calc(var(--status-bar-height) * 2); |
|||
// 保留校园活动导航头的写法↑ |
|||
top: 0px; |
|||
z-index: 1; |
|||
color: #999; |
|||
padding: 16upx 30upx 16upx; |
|||
} |
|||
.myvideo{ |
|||
position: absolute; |
|||
} |
|||
.videoTxt{ |
|||
width: 100vw; |
|||
position: absolute; |
|||
left: 0upx; |
|||
bottom: 0; |
|||
z-index: 1; |
|||
font-size: 28upx; |
|||
padding: 20upx 0upx 80upx; |
|||
box-sizing: border-box; |
|||
color: #ddd; |
|||
// background-color: rgba(255,255,255,0.1); |
|||
white-space: break-spaces; |
|||
|
|||
.text-area{ |
|||
padding: 70px 30upx 70upx; |
|||
background-image: linear-gradient(rgba(0,0,0,0), rgba(0,0,0,.4)); |
|||
} |
|||
.comment-wrapper{ |
|||
height: 25px; |
|||
margin: 5px auto 0px; |
|||
justify-content: space-between; |
|||
font-size: 13px; |
|||
color: #333; |
|||
padding: 0px 30upx; |
|||
} |
|||
} |
|||
.comment-area{ |
|||
position: fixed;z-index: 1000; |
|||
// bottom: 0px; |
|||
bottom: -60vh; |
|||
width: 100vw;height: 60vh;left: 0px; |
|||
background-color: #FFF; |
|||
border-radius: 10px 10px 0px 0px; |
|||
display: flex;flex-direction: column; |
|||
justify-content: start; |
|||
transition: 0.5s; |
|||
|
|||
&.commentShow{ |
|||
bottom: 0px; |
|||
transition: 0.5s; |
|||
|
|||
.comment-a-b{ |
|||
bottom: 0px; |
|||
transition: 0.5s; |
|||
} |
|||
} |
|||
|
|||
.comment-a-list{ |
|||
font-size: 14px; |
|||
margin: 10px auto; |
|||
height: calc(60vh - 120px); |
|||
|
|||
.comment-item{ |
|||
display: flex; |
|||
// justify-content: space-between; |
|||
align-items: center; |
|||
flex-wrap: wrap; |
|||
padding: 10upx 30upx; |
|||
|
|||
.comment-item-child{ |
|||
// width: 80vw; |
|||
margin-left: 30px; |
|||
display: flex; |
|||
align-items: center; |
|||
padding: 10rpx 0px; |
|||
flex-wrap: wrap; |
|||
} |
|||
.reply{ |
|||
padding: 4rpx 10rpx; |
|||
border-radius: 30px; |
|||
font-size: 11px; |
|||
background: #ececec; |
|||
} |
|||
} |
|||
} |
|||
.comment-a-b{ |
|||
position: fixed;z-index: 1001; |
|||
left: 0px; |
|||
transition: 0.5s;bottom: -60vh; |
|||
width: 100vw;min-height: 40px; |
|||
padding-bottom: 20px; |
|||
display: flex; |
|||
align-items: flex-end; |
|||
background-color: #FFF; |
|||
|
|||
.comment-a-b-inp{ |
|||
flex: 1; |
|||
padding: 10rpx 20rpx; |
|||
margin: 0rpx 30rpx; |
|||
background: #ececec; |
|||
border-radius: 15px; |
|||
font-size: 14px; |
|||
// line-height: 30px; |
|||
} |
|||
/deep/.comment-a-b-inp-p{ |
|||
color: #ccc; |
|||
} |
|||
.comment-a-b-btn{ |
|||
width: 60px; |
|||
height: 30px; |
|||
line-height: 30px; |
|||
border-radius: 30px; |
|||
background: #ccc; |
|||
text-align: center; |
|||
margin-right: 30rpx; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,121 @@ |
|||
<template> |
|||
<view style="min-height: 100vh;background-color: #f8f8f8;box-sizing: border-box;"> |
|||
<view class="content_wrapper"> |
|||
<view v-for="(item,index) in dataList" :key="index" class="list-item"> |
|||
<view class="text-box"> |
|||
<view style="font-size: 14px;line-height: 22px;font-weight: bold;">{{item.storename}}</view> |
|||
<view class="text">订单号:{{item.orderno}}</view> |
|||
<view class="text">支付金额:{{item.price}}</view> |
|||
<view class="text">订单状态: |
|||
<text v-if="item.status==8">待发货</text> |
|||
<text v-if="item.status==7">已退款</text> |
|||
<text v-if="item.status==6">待退款</text> |
|||
<text v-if="item.status==5">已取消</text> |
|||
<text v-if="item.status==4">待收货待消费</text> |
|||
<text v-if="item.status==3">已完成</text> |
|||
<text v-if="item.status==2">已消费</text> |
|||
<text v-if="item.status==1">已支付</text> |
|||
<text v-if="item.status==0">未支付</text> |
|||
</view> |
|||
<view class="text" v-if="item.status==3">付款时间:{{formatDate(item.paytime)}}</view> |
|||
</view> |
|||
</view> |
|||
<view class="" v-if="dataList.length==0"> |
|||
<loadmore :isMore="true" v-if="dataList.length=='0'" /> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import App from '@/common/js/app.js'; |
|||
import loadmore from '@/components/template/loadmore.vue' |
|||
export default { |
|||
data() { |
|||
return { |
|||
page: 1, |
|||
dataList: [], |
|||
} |
|||
}, |
|||
components: { |
|||
loadmore |
|||
}, |
|||
onLoad(e){ |
|||
|
|||
}, |
|||
onShow() { |
|||
this.getList(); |
|||
}, |
|||
methods: { |
|||
getList(){ |
|||
let _this = this; |
|||
App._post_form('&p=rights&do=getRightsOrderList', {page:_this.page, page_index: 10}, res => { |
|||
if(_this.page===1){ |
|||
if(res.data.length>0){ |
|||
_this.setData({ |
|||
dataList: res.data |
|||
}) |
|||
} |
|||
}else{ |
|||
if(res.data.length>0){ |
|||
let dataList = _this.dataList.concat(res.data); |
|||
_this.setData({ |
|||
dataList |
|||
}) |
|||
} |
|||
} |
|||
}, false, err=>{ |
|||
|
|||
}); |
|||
}, |
|||
formatDate(timestamp){ |
|||
let date = new Date(parseInt(timestamp) * 1000); |
|||
let Year = date.getFullYear(); |
|||
let Moth = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1); |
|||
let Day = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()); |
|||
let Hour = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()); |
|||
let Minute = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()); |
|||
let Sechond = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()); |
|||
let GMT = Year + '-' + Moth + '-' + Day + ' '+ Hour +':'+ Minute + ':' + Sechond; |
|||
return GMT; |
|||
} |
|||
}, |
|||
onReachBottom(){ |
|||
this.page++; |
|||
this.getList(); |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
.dis-flex{ |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
.content_wrapper{ |
|||
padding: 10px 15px; |
|||
.list-item{ |
|||
display: flex; |
|||
padding: 15px 0px; |
|||
border-bottom: 1px solid #efefef; |
|||
} |
|||
image{ |
|||
width: 80px; |
|||
height: 80px; |
|||
border-radius: 6px; |
|||
margin-right: 10px; |
|||
} |
|||
.text-box{ |
|||
flex: 1; |
|||
overflow: hidden; |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: space-between; |
|||
} |
|||
.text{ |
|||
display: -webkit-box;//将盒子转换为弹性盒子
-webkit-box-orient: vertical;//文本显示方式,默认水平
-webkit-line-clamp: 2;//设置显示多少行
overflow: hidden; |
|||
font-size: 13px; |
|||
color: #999; |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,238 @@ |
|||
<template> |
|||
<view style="min-height: 100vh;background-color: #f8f8f8;box-sizing: border-box;"> |
|||
<tabs-c :cc_id="cc_id" pageType="" @changeChildType="changeChildType" @search="search" :searchNeed="true"></tabs-c> |
|||
<view class="content_wrapper"> |
|||
<view v-for="(item,index) in dataList" :key="index" class="list-item" @click="toDetail(item.id)"> |
|||
<view class="img-box"> |
|||
<image :src="item.promotional_img" mode="aspectFill"></image> |
|||
<view class="text3"> |
|||
<text>{{item.city}}/{{item.address}}</text> |
|||
| |
|||
<text>{{item.km}}km</text> |
|||
</view> |
|||
</view> |
|||
<view class="text-box"> |
|||
<view class="text1">{{item.title}}</view> |
|||
<view class="text2"> |
|||
<text style="color: #D3101E;">¥{{item.price}}</text> |
|||
<text style="color: #999999;font-size: 12px;margin: 0px 4px;text-decoration: line-through;">¥{{item.price1}}</text> |
|||
<text style="color: #999999;font-size: 12px;flex:1;text-align: right;">已售{{item.selled}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view v-if="dataList.length==0" style="width: 100%;"> |
|||
<loadmore :isMore="true" v-if="dataList.length=='0'" /> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import App from '@/common/js/app.js'; |
|||
import loadmore from '@/components/template/loadmore.vue' |
|||
import tabsC from '@/components/template/tabs/tabs-copy.vue'; |
|||
export default { |
|||
data() { |
|||
return { |
|||
page: 1, |
|||
dataList: [], |
|||
cc_id: "51",//生活服务大类 |
|||
cc_cc_id: '',//当前选中的子类 |
|||
keyword: "", |
|||
} |
|||
}, |
|||
components: { |
|||
loadmore, |
|||
tabsC |
|||
}, |
|||
onLoad(e){ |
|||
console.log(e, '-----'); |
|||
if(e.cc_id){ |
|||
this.cc_id = e.cc_id; |
|||
}; |
|||
}, |
|||
onShow() { |
|||
// this.getList(); |
|||
}, |
|||
methods: { |
|||
getList(type){ |
|||
let _this = this; |
|||
let data = { |
|||
page:_this.page, size: 10, |
|||
cc_id: this.cc_cc_id |
|||
} |
|||
if(type=='search'){ |
|||
data = { |
|||
page:_this.page, |
|||
size: 10, |
|||
cc_id: this.cc_cc_id, |
|||
title: this.keyword |
|||
} |
|||
} |
|||
console.log(data, 'p------'); |
|||
App._post_form('&p=student&do=campusActivitiesList', data, res => { |
|||
this.dataList = [{ |
|||
id: '', |
|||
promotional_img: '', |
|||
title: 'XXXXXpdfwe废物i欧风街第三方', |
|||
nickname: '', |
|||
avatar: '', |
|||
publish_time: '', |
|||
cc_name: '', |
|||
price: 12, |
|||
selled: 34, |
|||
km: 23.5, |
|||
price1: 15, |
|||
city: '深圳龙华', |
|||
address: '北站', |
|||
},{ |
|||
id: '', |
|||
promotional_img: '', |
|||
title: 'XXXXXpdfwe废物i欧风街第三方', |
|||
nickname: '', |
|||
avatar: '', |
|||
publish_time: '', |
|||
cc_name: '', |
|||
price: 12, |
|||
selled: 34, |
|||
km: 23.5, |
|||
price1: 15, |
|||
city: '深圳龙华', |
|||
address: '北站', |
|||
},{ |
|||
id: '', |
|||
promotional_img: '', |
|||
title: 'XXXXXpdfwe废物i欧风街第三方', |
|||
nickname: '', |
|||
avatar: '', |
|||
publish_time: '', |
|||
cc_name: '', |
|||
price: 12, |
|||
selled: 34, |
|||
km: 23.5, |
|||
price1: 15, |
|||
city: '深圳龙华', |
|||
address: '北站', |
|||
},{ |
|||
id: '', |
|||
promotional_img: '', |
|||
title: 'XXXXXpdfwe废物i欧风街第三方', |
|||
nickname: '', |
|||
avatar: '', |
|||
publish_time: '', |
|||
cc_name: '', |
|||
price: 12, |
|||
selled: 34, |
|||
km: 23.5, |
|||
price1: 15, |
|||
city: '深圳龙华', |
|||
address: '北站', |
|||
}] |
|||
}, false, err=>{ |
|||
|
|||
}); |
|||
}, |
|||
toDetail(id){ |
|||
// uni.navigateTo({ |
|||
// url:'/pagesA/campusActivities/campusActivities?id='+id |
|||
// }) |
|||
}, |
|||
changeChildType(e){ |
|||
console.log(e); |
|||
this.page = 1; |
|||
this.cc_cc_id = e; |
|||
this.keyword = ''; |
|||
this.getList(); |
|||
}, |
|||
search(e){ |
|||
this.keyword = e; |
|||
this.page = 1; |
|||
this.getList('search'); |
|||
} |
|||
}, |
|||
onReachBottom(){ |
|||
this.page++; |
|||
if(this.keyword){ |
|||
this.getList('search'); |
|||
return; |
|||
} |
|||
this.getList(); |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
.dis-flex{ |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
.content_wrapper{ |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
justify-content: space-between; |
|||
padding: 0px 12px 20px 12px; |
|||
|
|||
.list-item{ |
|||
width: 340upx; |
|||
// display: flex; |
|||
// padding: 15px 0px; |
|||
background-color: #FFF; |
|||
// border-bottom: 1px solid #efefef; |
|||
box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.05); |
|||
margin-bottom: 11px; |
|||
position: relative; |
|||
} |
|||
.img-box{ |
|||
width: 340upx; |
|||
height: 252upx; |
|||
position: relative; |
|||
margin-bottom: 5px; |
|||
|
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
border-radius: 5px 5px 0px 0px; |
|||
} |
|||
.text3{ |
|||
width: 100%; |
|||
padding: 4px 8px; |
|||
box-sizing: border-box; |
|||
position: absolute; |
|||
bottom: 0px; |
|||
left: 0px; |
|||
color: #fff; |
|||
background: rgba(0,0,0,0.2); |
|||
font-size: 12px; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
} |
|||
} |
|||
|
|||
.text-box{ |
|||
flex: 1; |
|||
overflow: hidden; |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: space-between; |
|||
padding: 0px 10px 10px; |
|||
} |
|||
.text1{ |
|||
height: 44px; |
|||
font-size: 14px;line-height: 22px; |
|||
display: -webkit-box;//将盒子转换为弹性盒子
-webkit-box-orient: vertical;//文本显示方式,默认水平
-webkit-line-clamp: 2;//设置显示多少行
overflow: hidden; |
|||
color: #444; |
|||
} |
|||
.text2{ |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
.label{ |
|||
position: absolute; |
|||
top: 0px; |
|||
font-size: 10px; |
|||
padding: 3px 5px; |
|||
color: #666; |
|||
background: rgba(255,255,255,0.5); |
|||
} |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue