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.
351 lines
9.0 KiB
351 lines
9.0 KiB
<template>
|
|
<!--<import src="../../../component/rater/rater.wxml"></import>-->
|
|
|
|
<view id="order-comment">
|
|
<view class="order-items">
|
|
<view class="order-item" v-for="(item, index) in orderData.items" :key="index">
|
|
<view class="order-info mx-1px-bottom">
|
|
<view class="image">
|
|
<image :src="item.item_meta.image"></image>
|
|
</view>
|
|
|
|
|
|
<view class="texts">
|
|
<view class="name">{{item.item_name}}</view>
|
|
<view class="spec">{{item.item_meta.specs_text}}</view>
|
|
<view class="content">
|
|
<view class="item_start">
|
|
|
|
<uni-rate size="18" active-color="red" value="5" @change="changeStar"></uni-rate>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="comment-content mx-1px-bottom">
|
|
<view class="content">
|
|
<textarea @input="changeEvaluate" :data-index="index" :value="item.comment" placeholder="请输入您对该商品的想法"></textarea>
|
|
<view class="number">还可以输入{{500 - length}}字</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="uploading-box">
|
|
<view class="img-item uploading-item" v-for="(itemVal,idx) in item.upload_images" :key="idx">
|
|
<view class="img">
|
|
<image mode="widthFix" :src="itemVal"></image>
|
|
</view>
|
|
<span class="delete" :data-index="index" :data-idx="idx" :data-images="item.upload_images" @tap="deleteImg($event,item.upload_images)">
|
|
x
|
|
</span>
|
|
</view>
|
|
<view class="uploading uploading-item" @tap="upload" v-if="item.upload_images.length<5" :data-index="index">
|
|
<view class="uploading-input">
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="submit" :disabled="disabled" @tap="submit">提交评价</view>
|
|
</view>
|
|
|
|
|
|
</template>
|
|
<script>
|
|
|
|
import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
|
|
import uniRate from "@/components/score/uni-rate/uni-rate.vue"
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
orderData:'',
|
|
minLength: 5,
|
|
disabled: true,
|
|
order_no: '',
|
|
length: '',
|
|
star:5
|
|
};
|
|
},
|
|
|
|
components:{
|
|
uniRate
|
|
},
|
|
|
|
onLoad(e) {
|
|
console.log(e);
|
|
var no = e.no;
|
|
this.initOrderComment(no);
|
|
this.setData({
|
|
order_no: no
|
|
});
|
|
},
|
|
methods: {
|
|
upload(e) {
|
|
var index = e.currentTarget.dataset.index;
|
|
var that = this;
|
|
wx.chooseImage({
|
|
count: 1,
|
|
// 默认9
|
|
success: function (res) {
|
|
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
|
|
var tempFilePaths = res.tempFilePaths;
|
|
|
|
var token = that.$cookieStorage.get('user_token');
|
|
/* that.$http.uploadFile({
|
|
header: {
|
|
'content-type': 'multipart/form-data',
|
|
Authorization: token
|
|
},
|
|
api: 'api/users/upload/avatar',
|
|
//仅为示例,非真实的接口地址
|
|
filePath: tempFilePaths[0],
|
|
name: 'avatar_file'
|
|
}).then(res => {
|
|
var result = JSON.parse(res.data);
|
|
var arr = that.orderData.items[index].upload_images;
|
|
arr.push(result.data.url);
|
|
var uploadData = `orderData.items[${index}]`;
|
|
|
|
|
|
that.orderData.items[index].upload_images=arr;
|
|
|
|
}); */
|
|
uni.uploadFile({
|
|
header: {
|
|
Authorization: token
|
|
},
|
|
url: config.GLOBAL.baseUrl + 'api/users/upload/avatar',
|
|
filePath: tempFilePaths[0],
|
|
fileType: 'image',
|
|
name: 'avatar_file',
|
|
success: res => {
|
|
var result = JSON.parse(res.data);
|
|
var arr = that.orderData.items[index].upload_images;
|
|
arr.push(result.data.url);
|
|
var uploadData = `orderData.items[${index}]`;
|
|
|
|
|
|
that.orderData.items[index].upload_images=arr;
|
|
}
|
|
})
|
|
}
|
|
});
|
|
},
|
|
|
|
changeEvaluate(e) {
|
|
var len = e.detail.value;
|
|
var index = e.currentTarget.dataset.index;
|
|
|
|
if (e.detail.value.length > 500) {
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: '超出字数限制'
|
|
});
|
|
len = len.slice(0, 500);
|
|
}
|
|
|
|
// this.setData({
|
|
// [`orderData.items[${index}].comment`]: len,
|
|
// length: e.detail.value.length
|
|
// });
|
|
|
|
this.length=e.detail.value.length;
|
|
this.orderData.items[index].comment=len;
|
|
|
|
|
|
},
|
|
|
|
deleteImg(e,images) {
|
|
var index = e.currentTarget.dataset.index;
|
|
var idx = e.currentTarget.dataset.idx;
|
|
// #ifndef H5
|
|
|
|
// #endif
|
|
// #ifdef H5
|
|
images = images
|
|
// #endif
|
|
images.splice(idx, 1);
|
|
// this.setData({
|
|
// [`orderData.items[${index}].upload_images`]: images
|
|
// });
|
|
|
|
this.orderData.items[index].upload_images=images;
|
|
|
|
},
|
|
|
|
|
|
allowComment() {
|
|
|
|
if (this.orderData.items && this.orderData.items.length) {
|
|
for (let item of this.orderData.items) {
|
|
if (item.comment.length < this.minLength) return false;
|
|
}
|
|
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
},
|
|
|
|
submit() {
|
|
if (this.allowComment()) {
|
|
var no = this.order_no;
|
|
var comments = [];
|
|
var data = this.orderData.items;
|
|
|
|
var rater = this.star;
|
|
data.forEach((item,index) => {
|
|
comments.push({
|
|
order_no: no,
|
|
order_item_id: item.id,
|
|
contents: item.comment,
|
|
point: rater,
|
|
images:item.upload_images
|
|
})
|
|
});
|
|
this.postSubmit(comments);
|
|
} else {
|
|
wx.showModal({
|
|
content: "请填写完成",
|
|
showCancel: false
|
|
});
|
|
}
|
|
},
|
|
|
|
changeStar(e){
|
|
this.star=e.value;
|
|
},
|
|
|
|
postSubmit(comments) {
|
|
wx.showLoading({
|
|
title: "加载中",
|
|
mask: true
|
|
});
|
|
var data = {};
|
|
comments.forEach((comment, index) => {
|
|
data[index] = comment;
|
|
});
|
|
|
|
this.$http.post({
|
|
api: 'api/shopping/order/review',
|
|
header: {
|
|
Authorization: this.$cookieStorage.get('user_token')
|
|
},
|
|
data: data
|
|
}).then(res => {
|
|
if (res.statusCode == 200) {
|
|
res = res.data;
|
|
|
|
if (res.status
|
|
&& comments.length
|
|
) {
|
|
console.log(23423423);
|
|
wx.showModal({
|
|
content: '评价成功',
|
|
showCancel: false,
|
|
success: res => {
|
|
if (res.confirm || !res.cancel && !res.confirm) {
|
|
wx.redirectTo({
|
|
url: '/pages/order/comment/comment'
|
|
});
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || "请求失败",
|
|
showCancel: false
|
|
});
|
|
}
|
|
|
|
wx.hideLoading();
|
|
} else {
|
|
wx.showModal({
|
|
content: "请求失败",
|
|
showCancel: false
|
|
});
|
|
wx.hideLoading();
|
|
}
|
|
});
|
|
},
|
|
|
|
initOrderComment(id) {
|
|
wx.showLoading({
|
|
title: "加载中",
|
|
mask: true
|
|
});
|
|
this.$http.get({
|
|
api: 'api/order/' + id,
|
|
header: {
|
|
Authorization: this.$cookieStorage.get('user_token')
|
|
}
|
|
}).then(res => {
|
|
if (res.statusCode == 200) {
|
|
res = res.data;
|
|
|
|
if (res.status) {
|
|
// var start = Rater;
|
|
var data = res.data;
|
|
data.items.forEach((v, index) => {
|
|
/* start.init(index, {
|
|
value: 5
|
|
})*/
|
|
v.score = '';
|
|
v.comment = '';
|
|
v.upload_images = [];
|
|
});
|
|
this.setData({
|
|
orderData: data
|
|
});
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || "请求失败",
|
|
showCancel: false
|
|
});
|
|
}
|
|
|
|
wx.hideLoading();
|
|
} else {
|
|
wx.showModal({
|
|
content: "请求失败",
|
|
showCancel: false
|
|
});
|
|
wx.hideLoading();
|
|
}
|
|
});
|
|
},
|
|
|
|
setData: function (obj) {
|
|
let that = this;
|
|
let keys = [];
|
|
let val, data;
|
|
Object.keys(obj).forEach(function (key) {
|
|
keys = key.split('.');
|
|
val = obj[key];
|
|
data = that.$data;
|
|
keys.forEach(function (key2, index) {
|
|
if (index + 1 == keys.length) {
|
|
that.$set(data, key2, val);
|
|
} else {
|
|
if (!data[key2]) {
|
|
that.$set(data, key2, {});
|
|
}
|
|
}
|
|
|
|
data = data[key2];
|
|
});
|
|
});
|
|
}
|
|
},
|
|
computed: {},
|
|
watch: {}
|
|
};
|
|
</script>
|
|
<style rel="stylesheet/less" lang="less">
|
|
@import "evaluate";
|
|
</style>
|