<template> <view class="content"> <view class="order-item"> <view class="goods-box-single"> <image class="goods-img" :src="productInfo.image" mode="aspectFill"></image> <view class="right position-relative"> <view class="flex"> <text class="title">{{ productInfo.store_name }}</text> <view class="title-right"> <view class="price">{{ productInfo.price }}</view> <view class="attr-box">x{{ list.cart_num }}</view> </view> </view> </view> </view> <view> <view class="flex_item zhil"> <view>商品质量</view> <view><uniRate text="1" size="20" margin="10" :value="rateValue1" @change="rateChange1"></uniRate></view> </view> <view class="flex_item zhil"> <view>服务态度</view> <view><uniRate text="1" size="20" margin="10" :value="rateValue2" @change="rateChange2"></uniRate></view> </view> <view class="equity_box"> <view class="text-box uni-textarea"> <textarea placeholder-style="color:#999" :placeholder="placeholder" @blur="bindTextAreaBlur"></textarea> </view> <view class=""> <view class="add-img-box flex_item"> <view class="add-img-item" v-for="(item, index) in imgList" :key="index"> <image class="add-img" @click.stop="imgInfo(index)" :src="item.url" mode="aspectFill"></image> <image class="add-img-del" @click.stop="delImg(index)" src="/static/img/delete.png"></image> </view> <view v-if="imgList.length < 9" class="add-img-item" @click.stop="scImg()"> <image class="add-img" src="/static/img/add.png"></image> </view> </view> </view> </view> </view> </view> <view @click.stop="submit" class="address-box submit-box"><text class="submit-btn">提交评论</text></view> </view> </template> <script> import { product, upload, order_comment } from '@/api/order.js'; import uniRate from '@/components/uni-rate/uni-rate.vue'; export default { components: { uniRate }, data() { return { list: '', //订单详情 productInfo: '', text: '', //评论内容 placeholder: '商品满足你的期待么?说说你的想法,分享给想买的他们吧~', imgList: [], unique: '', //商品唯一标识码 cloudimgList: [], rateValue1: '', //商品质量 rateValue2: '', //服务态度 imgCount: 6 //最多支持9张上传,可以修改 }; }, onLoad(option) { this.unique = option.unique; this.loadOrder(); }, onShow() {}, methods: { //text bindTextAreaBlur: function(e) { this.text = e.detail.value; }, //获取收入支出信息 async loadOrder() { product({ unique: this.unique }).then(e => { this.list = e.data; this.productInfo = e.data.productInfo; }); }, //商品质量评分 rateChange1(val) { this.rateValue1 = val.value; }, //服务态度评分 rateChange2(val) { this.rateValue2 = val.value; }, //单张上传图片 scImg() { let obj = this; console.log(obj.imgCount, 11); if (obj.imgCount == 0) { uni.showToast({ title: '最多添加6张图片', icon: 'none' }); return; } upload({ file: '' }) .then(e => { console.log(e,'e') obj.imgList = [...obj.imgList, ...e]; console.log(obj.imgList,'imgList') obj.imgCount = 10 - obj.imgList.length; console.log(obj.imgCount ,'imgCount ') }) .catch(e => {}); }, //提交评论 submit(e) { let obj = this; if (obj.imgList.length < 1) { uni.showToast({ title: '请添加图片', icon: 'none' }); return; } for (let i = 0; i < obj.imgList.length; i++) { obj.cloudimgList.push(obj.imgList[i].url); } let arr = obj.cloudimgList.join(','); order_comment({ pics: arr, comment: obj.text, product_score: obj.rateValue1, service_score: obj.rateValue2, unique: obj.unique, }) .then(e => { uni.navigateTo({ url: '/pages/order/order?state=4' }); }) .catch(e => { uni.navigateTo({ url: '/pages/order/order?state=4' }); }); }, //点击图片显示大图 imgInfo(i) { let tempList = []; console.log(111); this.imgList.forEach(e => { tempList.push(e.url); }); console.log(tempList); //显示图片 uni.previewImage({ current: i, loop: false, urls: tempList, indicator: 'default' }); }, //删除图片 delImg(i) { uni.showModal({ content: '确定删除这张吗', success: res => { if (res.confirm) { this.imgList.splice(i, 1); this.imgCount++; } else if (res.cancel) { } } }); }, // 页面跳转 navto(e) { uni.navigateTo({ url: e }); } } }; </script> <style lang="scss"> page { background: #ffffff; height: 100%; .content { background: #ffffff; height: 100%; } } /* 多条商品 */ .order-item { display: flex; flex-direction: column; padding: 0rpx 30rpx; background: #fff; margin-top: 20rpx; /* 单条商品 */ .goods-box-single { display: flex; padding: 20rpx 0; .goods-img { display: block; width: 120rpx; height: 120rpx; } .right { flex: 1; display: flex; flex-direction: column; padding: 0 30rpx 0 24rpx; overflow: hidden; height: 100%; .title { align-self: flex-start; font-size: $font-base + 2rpx; color: $font-color-dark; height: 80rpx; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; } .title-right { flex-shrink: 0; text-align: right; align-self: flex-start; } .attr-box { font-size: $font-sm + 2rpx; color: $font-color-light; } .price { font-size: $font-base + 2rpx; color: $font-color-dark; &:before { content: '¥'; font-size: $font-sm; margin: 0 2rpx 0 8rpx; } } } } } .equity_box { background-color: #fafafa; border-radius: 10rpx; padding: 25rpx 25rpx; margin: 25rpx 0rpx; .text-box { height: 200rpx; textarea { font-size: 25rpx; width: 100%; height: 100%; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; } } } .zhil { font-size: 28rpx !important; padding: 15rpx 15rpx; } .submit-box { bottom: 0; left: 0; width: 750rpx; } .submit-btn { margin-top: 10px; display: inline-block; width: 670rpx; height: 96rpx; line-height: 96rpx; text-align: center; background-color: #1BCC26 !important; opacity: 1; border-radius: 32rpx; border-width: 8rpx; border-color: rgba(255, 255, 255, 1); box-shadow: 0rpx 8rpx 12rpx rgba(0, 0, 0, 0.16); border-radius: 56rpx; font-size: 39rpx; font-weight: bold; color: rgba(255, 255, 255, 1); } .submit-btn-txt { font-size: 39rpx; font-weight: bold; line-height: 47rpx; color: rgba(255, 255, 255, 1); opacity: 1; } .map-box { width: 484rpx; height: 256rpx; border-width: 4rpx; border-color: rgba(255, 255, 255, 1); box-shadow: 0rpx 0rpx 24rpx rgba(0, 0, 0, 0.16); /* border-radius: 12rpx; */ position: relative; } .map { position: absolute; top: 0; left: 0; right: 0; bottom: 0; width: 476rpx; height: 250rpx; } .map-img { position: absolute; top: 90rpx; left: 156rpx; width: 230rpx; height: 68rpx; background-color: rgba(51, 51, 51, 0.64); border-width: 1rpx; border-color: rgba(0, 0, 0, 0); border-radius: 34px; font-size: 28rpx; font-weight: bold; line-height: 66rpx; color: rgba(255, 255, 255, 1); text-align: center; } .address-box { padding: 15rpx 40rpx; margin-bottom: 10px; } .label { font-size: 36rpx; font-weight: bold; line-height: 50rpx; color: #222222; } .label-img { padding-left: 40rpx; } .add-img-box { width: 100%; flex-direction: row; flex-wrap: wrap; margin-top: 50rpx; } .add-img-item { width: 180rpx; height: 180rpx; border-radius: 24rpx; position: relative; margin: 0rpx 20rpx; margin-bottom: 25rpx; .add-img { width: 100%; height: 100%; border-radius: 24rpx; } } .add-img-camera { flex: 1; } .add-img-del { position: absolute; width: 40rpx; height: 40rpx; left: 155rpx; bottom: 155rpx; //background-color: rgba(238, 0, 0, 1); border-radius: 20rpx; } .address-time { width: 484rpx; height: 88rpx; background-color: rgba(245, 245, 245, 1); opacity: 1; border-radius: 24rpx; text-align: center; font-size: 35rpx; font-weight: 500; color: rgba(51, 51, 51, 1); } .line { width: 750rpx; height: 1px; transform: scaleY(0.3); background-color: rgba(0, 0, 0, 0.5); } </style>