齐采药WEB端项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

369 lines
8.3 KiB

<template>
<!-- 商品评价 -->
<div class="evaluation wrapper_1200">
<ul class="goods">
<li class="acea-row item">
<div class="image">
<img :src="info.productInfo.image" alt />
</div>
<div class="text">
<div>{{ info.productInfo.store_name }}</div>
<div>
{{ info.productInfo.price }}
<span>x{{ info.cart_num }}</span>
</div>
</div>
</li>
</ul>
<client-only>
<el-form ref="form" :model="form" label-width="80px">
<div class="cont">
<div class="rate-group">
<div class="group-hd">商品评分</div>
<el-form-item label="商品质量">
<el-rate v-model="value1" show-text></el-rate>
</el-form-item>
<el-form-item label="服务态度">
<el-rate
v-model="value2"
:colors="['#E93323', '#E93323', '#E93323']"
:icon-classes="iconClasses"
void-icon-class="iconfont icon-fuwu"
show-text
></el-rate>
</el-form-item>
</div>
<el-form-item label="商品描述" class="fontSize">
<el-input
type="textarea"
placeholder="商品满足您的期待吗?说说你的想法,分享给想买的他们吧~"
:autosize="{ minRows: 4 }"
maxlength="100"
v-model="form.desc"
></el-input>
</el-form-item>
<el-form-item label="上传图片" class="fontSize">
<div class="img-box-wrapper">
<el-upload
list-type="picture-card"
:action="upLoadUrl"
:headers="myHeaders"
:limit="10"
:on-remove="handleRemove"
:on-success="handleSuccess"
:on-exceed="handleExceed"
:before-upload="beforeUpload"
>
<i class="el-icon-plus"></i>
</el-upload>
</div>
<div class="tip">每张图片大小不超过5M,支持jpg,png,jpeg格式文件</div>
</el-form-item>
</div>
<el-form-item>
<el-button type="primary" @click="onSubmit" :loading="isLoading">立即评价</el-button>
</el-form-item>
</el-form>
<!-- 弹窗 -->
<el-dialog :modal="true" :visible.sync="isDialog" width="370px" :show-close="false">
<div class="refund-box">
<img src="~assets/images/evaluation.png" alt />
<p class="title">评价成功</p>
<span>我们会继续为您提供更优质的商品及服务</span>
<el-button type="primary" @click="subBtn">确认</el-button>
</div>
</el-dialog>
</client-only>
</div>
</template>
<script>
import setting from "~/setting";
export default {
auth: "guest",
data() {
return {
isDialog: false,
isLoading: false,
form: {
desc: ""
},
value1: null,
value2: null,
iconClasses: [
"iconfont icon-fuwu",
"iconfont icon-fuwu",
"iconfont icon-fuwu"
],
unique: "",
pics: [],
upLoadUrl: setting.apiBaseURL + "/upload/image",
myHeaders: {},
info: {
productInfo: {}
}
};
},
fetch({ store }) {
store.commit("isHeader", true);
store.commit("isFooter", true);
},
head() {
return {
title: "我的评价-" + this.$store.state.titleCon
};
},
created() {
this.unique = this.$route.query.unique;
let local = this.$cookies.get("auth.strategy");
this.myHeaders = {
Authorization: this.$cookies.get(`auth._token.${local}`)
};
this.getOrderProduct();
},
mounted() {},
methods: {
//获取订单商品
getOrderProduct() {
this.$axios
.post("order/product", {
unique: this.unique
})
.then(res => {
this.info = res.data;
});
},
onSubmit() {
if (!this.value1) {
this.$message.error("请选择商品质量");
}
if (!this.value2) {
this.$message.error("请选择服务态度");
}
this.isLoading = true;
this.$axios
.post("order/comment", {
unique: this.unique,
comment: this.form.desc,
pics: this.pics,
product_score: this.value1,
service_score: this.value2
})
.then(res => {
this.isDialog = true;
})
.catch(error => {
this.isLoading = false;
});
},
handleExceed() {
this.$message.warning("最多上传10张图片");
},
handleSuccess(response) {
if (response.status === 200) {
this.pics.push(response.data.url);
} else if (response.status === 400) {
this.$message.error(response.msg);
}
},
beforeUpload(file) {
const isImage = file.type === "image/jpeg" || file.type === "image/png";
if (!isImage) {
this.$message.error("上传图片只能是 JPG、PNG 格式!");
}
return isImage;
},
handleRemove(file, fileList) {
this.pics = [];
fileList.forEach(item => {
this.pics.push(item.response.data.url);
});
},
subBtn() {
this.isDialog = false;
this.$router.go(-1);
}
}
};
</script>
<style lang="scss" scoped>
.evaluation {
padding: 0 20px 46px;
margin-top: 60px;
background: #ffffff;
.fontSize {
/deep/.el-form-item__label {
font-size: 16px;
}
.tip {
font-size: 12px;
color: #969696;
}
}
.goods {
width: 450px;
.item {
padding: 36px 14px;
}
.image {
width: 70px;
height: 70px;
overflow: hidden;
img {
display: block;
width: 100%;
height: 100%;
}
}
.text {
flex: 1;
margin-left: 20px;
font-size: 14px;
color: #282828;
div {
&:first-child {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
margin-bottom: 13px;
overflow: hidden;
}
span {
margin-left: 10px;
font-size: 12px;
color: #b1b1b1;
}
}
}
}
.el-form {
.cont {
padding: 25px 30px;
border: 1px solid #efefef;
> .el-form-item {
padding-top: 25px;
padding-bottom: 25px;
border-top: 1px solid #efefef;
}
}
.el-rate {
display: inline-block;
vertical-align: middle;
}
> .el-form-item {
margin-top: 25px;
margin-bottom: 0;
text-align: right;
}
.rate-group {
padding-bottom: 21px;
.group-hd {
width: 80px;
text-align: center;
margin-bottom: 10px;
font-size: 16px;
}
.el-form-item {
margin-left: 20px;
margin-bottom: 0;
/deep/.el-form-item__label {
line-height: 30px;
}
/deep/.el-form-item__content {
line-height: 30px;
}
}
}
.el-textarea {
width: 820px;
}
/deep/.el-textarea__inner {
border: none;
background-color: #f7f7f7;
}
/deep/.el-upload--picture-card {
width: 70px;
height: 70px;
border-style: solid;
border-color: #d0d0d0;
line-height: 68px;
i {
margin-top: 20px;
}
}
/deep/.el-upload-list--picture-card .el-upload-list__item {
width: 70px;
height: 70px;
}
/deep/.el-upload-list__item.is-success .el-upload-list__item-status-label {
display: none;
}
}
}
.img-box-wrapper {
display: flex;
flex-wrap: wrap;
.img-item {
position: relative;
width: 70px;
height: 70px;
margin-right: 20px;
margin-bottom: 12px;
border: 1px solid #c0ccda;
border-radius: 6px;
img {
width: 100%;
height: 100%;
border-radius: 6px;
}
.icon {
position: absolute;
right: -10px;
top: -8px;
font-size: 20px;
cursor: pointer;
color: #e93323;
}
}
}
.refund-box {
display: flex;
flex-direction: column;
align-items: center;
.title {
color: #e93323;
font-size: 20px;
margin-top: 20px;
}
span {
margin: 10px 0 40px;
color: #939393;
font-size: 14px;
}
button {
width: 150px;
}
}
</style>