金诚优选前端代码
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

<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>