sadjv3_user/package/pages/zysc/index/pinglunList.vue

234 lines
6.4 KiB
Vue

<template>
<view>
<view style="margin: 20upx 15upx;border-radius: 15upx;background-color: #FFFFFF;">
<view style="padding: 20rpx 0 0 30rpx;color: #666666;font-size: 24rpx;display: flex;">
<view style="margin-top: 7rpx;">商品好评率</view>
<!-- #ifdef MP-WEIXIN -->
<view style="margin-left: 10rpx;margin-top: 8rpx;">{{count1 > 0 ? count1 : '无'}}</view>
<uni-rate style="margin-left: 15rpx;margin-top: 30rpx;" :size='14' :value="count1" />
<!-- #endif -->
<!-- #ifndef MP-WEIXIN -->
<view style="margin-left: 10rpx;margin-top: 10rpx;">{{count1 > 0 ? count1 : '无'}}</view>
<uni-rate style="margin-left: 15rpx;margin-top: 12rpx;" :size='14' :value="count1" />
<!-- #endif -->
</view>
<view class="tui-tabs" style="margin-left: 10rpx;">
<view style="display: flex;flex-wrap: wrap;">
<view v-for="(tab, index) in scoreTypeList" :id="index" :data-current="index" @tap='tabSlect(tab)'>
<view v-if="CountTypeList.length > 0 && CountTypeList[index].count != 0" class="tui-tab-item-title" style="margin:15rpx;"
:class="{ 'tui-tab-item-title-active': tabIndex == index }">{{ tab.name }}({{CountTypeList[index].count}})
</view>
</view>
</view>
</view>
<view style="width: 100%;padding:20upx 0upx 20upx 20upx;" v-for="(ping,index) in pinglunList" v-if="pinglunList.length > 0">
<view style="display: flex;padding: 20rpx;">
<image :src="ping.userHeader ? ping.userHeader : '/static/logo.png'" style="width: 80rpx;height: 80rpx;border-radius: 50rpx;"></image>
<view style="margin-top: 5rpx;margin-left: 10rpx;width: 42%;">
<view style="margin-left: 15rpx;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;">{{ping.userName}}</view>
<uni-rate style="margin-left: 15rpx;margin-top: 10rpx;" :size='15' :value="ping.score" />
</view>
<view style="margin-left: 20rpx;margin-top: 20rpx;color: #666666;">{{ping.createTime}}</view>
</view>
<view style="padding: 0rpx 20rpx 0 20rpx;">{{ping.content}}</view>
<view style="display: flex;padding: 10rpx 0 0 10rpx;flex-wrap: wrap;" v-if="ping.img && ping.img.length > 0">
<view style="margin: 5rpx;" v-for="(item,index) in ping.img">
<image :src="item" style="width: 210rpx;height: 210rpx;border-radius: 10rpx;" @tap='selectPhoto(item)'></image>
</view>
</view>
<view v-if="ping.reply">
<view style="margin-left: 20rpx;font-size: 26rpx;color: #666666;">商家回复:{{ping.reply}}</view>
</view>
</view>
<!-- 悬浮上拉 -->
<view class="scroll_top" @tap="topScrollTap" v-bind:class="[scrollTop ? 'active' : '', '']" style="bottom: 56px;"><text
class="iconfont icon-shangla"></text></view>
<!-- 加载更多提示 -->
<view class="s-col is-col-24" v-if="pinglunList.length > 0">
<load-more :loadingType="loadingType" :contentText="contentText"></load-more>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
page: 0,
size: 10,
loadingType: 0,
scrollTop: false,
tabIndex: 0,
count1: 0,
CountTypeList: [],
scoreTypeList: [{
index: '0',
name: '全部'
},
{
index: '1',
name: '好评'
},
{
index: '2',
name: '中评'
},
{
index: '3',
name: '差评'
}
],
contentText: {
contentdown: '上拉显示更多',
contentrefresh: '正在加载...',
contentnomore: '没有更多数据了'
},
pinglunList: []
};
},
onLoad(d) {
if (d.id) {
this.ordersId = d.id;
this.getPingLunList('');
this.getCount(d.id);
}
},
methods: {
tabSlect(item) {
this.tabIndex = item.index;
this.page = 0;
this.getPingLunList('');
},
selectPhoto(item) {
let imgsArray = [];
imgsArray[0] = item;
uni.previewImage({
current: 0,
urls: imgsArray
});
},
getCount(id) {
this.$Request.getT('/app/selfGoodsComment/count?goodsId=' + id).then(res => {
if (res.status === 0) {
this.count1 = res.data.count1;
let data = {};
data.count = res.data.count;
this.CountTypeList.push(data);
let data1 = {};
data1.count = res.data.count2;
this.CountTypeList.push(data1);
let data2 = {};
data2.count = res.data.count3;
this.CountTypeList.push(data2);
let data3 = {};
data3.count = res.data.count4;
this.CountTypeList.push(data3);
}
});
},
getPingLunList(type) {
this.loadingType = 1;
uni.showLoading({
title: '加载中...'
});
this.$Request.getT('/app/selfGoodsComment/list?scoreType=' + this.tabIndex + '&page=' + this.page + '&size=' + this.size +
'&goodsId=' +
this.ordersId)
.then(res => {
if (res.status === 0) {
if (this.page === 0 || res.status) {
this.pinglunList = [];
}
res.data.content.forEach(d => {
if (d.img) {
let img = d.img.split(',');
d.img = img;
}
this.pinglunList = res.data.content;
});
if (res.data.content.length === this.size) {
this.loadingType = 0;
} else {
this.loadingType = 3;
}
} else {
this.loadingType = 2;
}
uni.hideLoading();
if (type === 'Refresh') {
uni.stopPullDownRefresh(); // 停止刷新
}
});
},
topScrollTap: function() {
uni.pageScrollTo({
scrollTop: 0,
duration: 300
});
}
},
onPageScroll: function(e) {
this.scrollTop = e.scrollTop > 200;
},
onReachBottom: function() {
this.page = this.page + 1;
this.getPingLunList('');
},
onPullDownRefresh: function() {
this.page = 0;
this.getPingLunList('Refresh');
}
};
</script>
<style>
@import '../../../../static/css/index.css';
page {
background: #F2F2F2;
}
.tui-tabs {
flex: 1;
flex-direction: column;
overflow: hidden;
background-color: #FFFFFF;
/* #ifdef MP-ALIPAY || MP-BAIDU */
height: 100vh;
/* #endif */
}
.tui-tab-item {
/* #ifndef APP-PLUS */
display: flex;
/* #endif */
// flex-wrap: nowrap;
// padding-left: 34rpx;
// padding-right: 34rpx;
}
.tui-tab-item-title {
color: #333333;
font-size: 28rpx;
line-height: 48rpx;
border-radius: 50rpx;
background: #F2F2F2;
width: max-content;
padding: 0 20rpx 0 20rpx;
text-align: center;
height: 50rpx;
}
.tui-tab-item-title-active {
color: #FFFFFF;
background: #FF440C;
font-size: 28upx;
border-bottom-width: 6upx;
text-align: center;
}
</style>