先看一下整体效果:
在网上看了一下,不是界面功能风格不符合要求,就是代码搞得太复杂, 还不如自己写一个
WXML代码
<view>
<view class='head-main'>
<view class='head'>
<view>发表评价</view>
<view class='release' bindtap='onSubmit'>发布</view>
</view>
</view>
<view class='score'>
<view class='score-left'>
<image src='{{goods_img}}' />
<view>
<text>描述相符</text>
</view>
</view>
<view class='score-right'>
<view wx:for-items="{{score_img_arr}}" wx:for-item="img" wx:key="index">
<image bindtap='onScore' data-score='{{index+1}}' src="{{img}}" />
</view>
<view class='score_text'>
<text>{{score_text}}</text>
</view>
</view>
</view>
<view class='textarea'>
<textarea placeholder-class='textarea-text' placeholder='宝贝满足你的期待吗?说说你的使用心得,分享给想买的他们吧'></textarea>
<view class='picture'>
<view class='picture' wx:if="{{!is_upload}}">
<view class='picture_item' bindtap="chooseImage">
<image src='{{camera_pic}}' />
</view>
</view>
<view wx:else class='picture'>
<view class='picture_upload' bindtap="" wx:for-items="{{upload_pic}}" wx:for-item="pic" wx:key="index" >
<image src='{{pic}}' />
<view class='picture_delete' bindtap='deletePic' data-pic_index='{{index}}'>
<image src='{{delete_ico}}' />
</view>
</view>
<view class='picture_item' bindtap="chooseImage" hidden="{{pic_length}}">
<image src='{{camera_pic}}' />
</view>
</view>
</view>
</view>
</view>
JS代码
// pages/evaluate/index.js
Page({
/**
* 页面的初始数据
*/
data: {
default_score: 5,
score_text_arr: ['非常差','差','一般','好','非常好'],
score_text: "",
score_img_arr: [],
upload_pic: [],
upload_pic_name: [],
upload_succ: true,
pic_length: false,
is_upload: false,
delete_ico: "https://api.gzshisu.com/data/xcx/images/delete_ico.png",
camera_pic: "http://pnga.mypng.cn/1324/98-Camera.png",
goods_img:"https://img.alicdn.com/imgextra/i2/2585780740/O1CN011HKxYBjGug0VPwX_!!2585780740-0-beehive-scenes.jpg_180x180xzq90.jpg_.webp",
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options)
this.setData({
order_id: options.order_id,
goods_id: options.goods_id,
goods_ext_id: options.goods_ext_id
});
this.get_goods( options.goods_id, options.goods_ext_id)
this._default_score(this.data.default_score);
},
get_goods:function(goods_id, goods_ext_id){
var that= this;
wx.request({
url: 'https://xxx.com/home/goods/goodsEvaluate',
method: 'POST',
data: {
token: wx.getStorageSync('token'),
goods_id: that.data.goods_id,
goods_ext_id: that.data.goods_ext_id
},
success: function (res) {
that.setData({
goods_img: res.data.goods_ext_image,
});
}
})
},
_default_score: function (tauch_score = 0){
var score_img= [];
var score= 0;
for (let i = 0; i < 5; i++) {
if (i < tauch_score) {
score_img[i] = "img/star_on.png"
score= i;
} else {
score_img[i] = "img/star_off.png"
}
}
this.setData({
score_img_arr: score_img,
score_text: this.data.score_text_arr[score]
});
},
onScore:function(e){
var score = e.currentTarget.dataset.score;
this._default_score(score);
},
chooseImage(e) {
var that= this;
wx.chooseImage({
count: 3,
sizeType: ['original', 'compressed'], //可选择原图或压缩后的图片
sourceType: ['album', 'camera'], //可选择性开放访问相册、相机
success: res => {
var addImg = res.tempFilePaths;
var pic_length= false;
if (addImg.length<3){
pic_length= false;
}else{
pic_length = true;
}
that.setData({
upload_pic: addImg,
pic_length: pic_length,
is_upload: true
})
}
})
},
//上传评论
onSubmit:function(){
var that= this;
var is= false;
var upload_picture_list = that.data.upload_pic
var upload_img =[]
for (var i in upload_picture_list) {
that.upload_file_server(that, upload_picture_list, i)
}
setTimeout(function () {
if (that.data.upload_succ) {
var ddd = [];
for (var i in that.data.upload_pic_name) {
console.log(that.data.upload_pic_name[i]);
ddd.push(that.data.upload_pic_name[i])
}
console.log(that.data.upload_pic_name);
wx.request({
url: 'https://xxx.com/home/order/addEvaluate',
method: 'POST',
data: {
token: wx.getStorageSync('token'),
order_evaluate: {
"order_id": that.data.order_id,
"goods_id": that.data.goods_id,
"goods_ext_id": that.data.goods_ext_id,
"img_name": that.data.upload_pic_name
},
},
success: function (res) {
}
})
}
}, 800);
},
upload_file_server: function (that, upload_picture_list, i){
var upload_task = wx.uploadFile({
header: { "Content-Type": "multipart/form-data" },
url: "https://xxx.com/home/goods/goodsEvaluatePic",
filePath: upload_picture_list[i],
name: 'img_file',
formData: {
token: wx.getStorageSync('token'),
},
success: function (res) {
let json_data= JSON.parse(res.data);
if (json_data.code==200){
let img_name= json_data.img_name;
that.data.upload_pic_name[i]= img_name;
that.setData({
upload_pic_name: that.data.upload_pic_name
})
}else{
that.data.upload_succ= false;
wx.showToast({
title: json_data.msg,
icon: 'loading',
duration: 2000
})
}
}
});
},
deletePic:function(e){
var pic_index = e.currentTarget.dataset.pic_index;
var upload_pic = [];
for (let i in this.data.upload_pic){
if (i != pic_index){
upload_pic.push(this.data.upload_pic[i])
}
}
console.log(upload_pic)
this.setData({
upload_pic: upload_pic,
pic_length: false,
is_upload: true
})
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
})
WCSS代码
.head-main{
height: 100rpx;
display: flex;
flex-direction: row;
justify-content: center;
background: #f8f8f8;
}
.head{
display: flex;
width: 90%;
flex-direction: row;
align-items: center;
justify-content: space-between;
font-size: 38rpx;
font-weight: bold;
}
.release{
color: #f95807;
}
.score{
height: 150rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
border-bottom: 1rpx #e6e6e6 solid;
/* background: cornflowerblue; */
}
.score-left{
width: 33%;
display: flex;
flex-direction: row;
align-items: center;
font-size: 37rpx;
font-weight: bold;
justify-content: space-between;
}
.score-left image{
height: 100rpx;
width: 100rpx;
}
.score-right{
height: 150rpx;
display: flex;
flex-direction: row;
align-items: center;
width: 65%;
/* background: red; */
}
.score-right image{
width: 60rpx;
height: 60rpx;
margin-right: 12rpx;
}
.score_text{
width: 150rpx;
text-align: center;
color: #b0b0b0;
}
.textarea{
position: relative;
margin-top: 20rpx;
height: 600rpx;
width: 100%;
border-bottom: 1rpx #e6e6e6 solid;
}
.textarea textarea{
height: 400rpx;
width: 100%;
}
.textarea-text{
color: #b0b0b0;
}
.picture{
position: absolute;
z-index: 99;
bottom: 30rpx;
height: 200rpx;
display: flex;
flex-direction: row;
justify-content: space-around;
width: 100%;
}
.picture_item{
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 200rpx;
width: 200rpx;
border: 1rpx #e6e6e6 dashed;
}
.picture_item image{
width: 100rpx;
height: 100rpx;
}
.picture_upload{
position: relative;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 200rpx;
width: 200rpx;
}
.picture_upload image{
height: 200rpx;
width: 200rpx;
}
.picture_delete{
width: 200rpx;
height: 50rpx;
position: absolute;
display: flex;
box-sizing: border-box;
justify-content: center;
bottom:-50rpx;
right:0rpx;
border: 1rpx #e6e6e6 solid;
border-top: none;
}
.picture_delete image{
width: 50rpx;
height: 50rpx;
}