glhcp/uniapp/bundle/pages/goods_reviews/goods_reviews.vue

194 lines
5.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="goods-reviews">
<view class="bg-white flex p-20">
<u-image width="160rpx" height="160rpx" border-radius="6rpx" :src="goodsInfo.goods_item.image"></u-image>
<view class="goods-desc flex-1 m-l-24">
<view class="goods-name line-2">{{goodsInfo.goods_name}}</view>
<view class="m-t-10 xs muted" >{{goodsInfo.goods_item.spec_value_str}}</view>
<view class="flex row-between m-t-20">
<price-format :price="goodsInfo.goods_price" :subscript-size="26"
:first-size="30" :second-size="30" />
<view class="nr">x{{goodsInfo.goods_num}}</view>
</view>
</view>
</view>
<view class="goods-evaluate bg-white flex">
<view class="lable">商品评价</view>
<u-rate name="goodsRate" :count="5" :size="42" active-color="#FF2C3C" v-model="goodsRate"
@change="goodsRateChange" />
<view :class="'desc ' + ((goodsRate<=2)? 'muted': 'primary') + ' '" v-show="!(goodsRate == 0)">
{{goodsRateDesc}}
</view>
</view>
<view class="bg-white p-20 lighter">{{goodsInfo.shop.name}}</view>
<view class="rate bg-white">
<view class="item flex m-b-20">
<view class="lable">描述相符</view>
<u-rate name="descRate" :size="42" active-color="#FF2C3C" v-model="descRate" />
</view>
<view class="item flex m-b-20">
<view class="lable">服务态度</view>
<u-rate name="serverRate" :size="42" active-color="#FF2C3C" v-model="serverRate" />
</view>
<view class="item flex m-b-20">
<view class="lable">配送服务</view>
<u-rate name="deliveryRate" :size="42" active-color="#FF2C3C" v-model="deliveryRate" />
</view>
</view>
<view class="goods-dec bg-white m-t-20">
<view class="title m-b-20 md bold">商品描述</view>
<view class="p-20" style="background-color: #F8F8F8;">
<u-input v-model="comment" type="textarea" placeholder="宝贝收到还满意吗,说说你的使用心得。分享给想买的他们吧!!" :border="false"
:height="160" />
</view>
<view class="m-t-20">
<u-upload ref="uUpload" :show-progress="false" :header="{token: $store.getters.token}"
:max-count="8" width="150" height="150" :action="action" upload-text="上传图片"
@on-success="onSuccess" @on-remove="onRemove" />
</view>
<view class="muted m-t-20 m-b-10">支持jpg、png、jpeg格式的图片最多可上传8张</view>
</view>
<button class="btn br60" type="primary" size="lg" @tap="onSubmit"></button>
</view>
</template>
<script>
import {
baseURL
} from '@/config/app.js';
import {
goodsComment,
getCommentInfo
} from '@/api/user';
import {
uploadFile
} from '@/utils/tools.js';
export default {
data() {
return {
action: baseURL + '/api/file/formimage',
goodsRate: 0,
descRate: 0,
serverRate: 0,
deliveryRate: 0,
goodsRateDesc: "",
fileList: [],
goodsInfo: {
shop: {},
goods_item: {}
},
comment: '',
type: ""
};
},
onLoad() {
this.id = this.$Route.query.id
this.getCommentInfoFun();
},
methods: {
onSuccess(e) {
this.fileList.push(e.data.base_uri)
},
onRemove(index) {
this.fileList.splice(index, 1)
},
goodsRateChange(e) {
let goodsRateDesc = "";
if (e <= 2) {
goodsRateDesc = "差评";
} else if (e == 3) {
goodsRateDesc = "中评";
} else {
goodsRateDesc = "好评";
}
this.goodsRateDesc = goodsRateDesc;
},
onSubmit() {
let {
goodsRate,
fileList,
comment,
deliveryRate,
descRate,
serverRate
} = this;
if (!goodsRate) return this.$toast({
title: '请对商品进行评分'
});
if (!descRate) return this.$toast({
title: '请对描述相符进行评分'
});
if (!serverRate) return this.$toast({
title: '请对服务态度进行评分'
});
if (!deliveryRate) return this.$toast({
title: '请对配送服务进行评分'
});
goodsComment({
order_goods_id: parseInt(this.id),
goods_comment: goodsRate,
service_comment: serverRate,
express_comment: deliveryRate,
description_comment: descRate,
comment,
image: fileList
}).then(res => {
if (res.code == 1) {
this.$toast({
title: '评价成功'
}, {
tab: 3,
url: 1
});
uni.$emit('refreshcomment')
}
});
},
getCommentInfoFun() {
getCommentInfo({
order_goods_id: this.id
}).then(res => {
if (res.code == 1) {
this.goodsInfo = res.data
}
});
},
}
};
</script>
<style>
.goods-reviews {
padding: 20rpx 0 40rpx;
}
.goods-reviews .rate {
padding: 20rpx 20rpx;
}
.goods-reviews .lable {
width: 170rpx;
}
.goods-reviews .goods-dec {
padding: 30rpx 20rpx;
}
.goods-reviews .btn {
width: 698rpx;
margin: 30rpx 26rpx 0;
}
.goods-reviews .goods-evaluate {
padding: 20rpx;
border: 1rpx solid #F2F2F2;
}
</style>