From a7e18f3eba7a5bd2008e9aeac9cf4edcc995749a Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期日, 06 十月 2024 23:12:16 +0800
Subject: [PATCH] 1.商品评论

---
 pages.json                            |    9 
 sub_pages/customer/shop/shop.vue      |  189 +++++++++
 pages/order/order.vue                 |   13 
 pages/order/order-detail.vue          |   11 
 pages/order/comment/order-comment.vue |  896 +++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 1,103 insertions(+), 15 deletions(-)

diff --git a/pages.json b/pages.json
index 5c8e879..f716fba 100644
--- a/pages.json
+++ b/pages.json
@@ -99,7 +99,14 @@
 				"navigationBarTitleText": "订单详情",
 				"enablePullDownRefresh": false
 			}
-		}, {
+		},{
+			"path": "pages/order/comment/order-comment",
+			"style": {
+				"navigationBarTitleText": "商品评价",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
 			"path": "pages/help/content",
 			"style": {
 				"navigationBarTitleText": ""
diff --git a/pages/order/comment/order-comment.vue b/pages/order/comment/order-comment.vue
new file mode 100644
index 0000000..27d93cc
--- /dev/null
+++ b/pages/order/comment/order-comment.vue
@@ -0,0 +1,896 @@
+<script>
+	export default {
+		data() {
+			return {
+				id: '',
+				dto: {},
+				showSales: false,
+				submitForm: {},
+				timer: undefined,
+				type: '',
+				// #ifdef PUB_CUSTOMER
+				type: 'customer',
+				// #endif
+				// #ifdef PUB_PARTNER
+				type: 'partner',
+				// #endif
+				salesTypeDef: 0,
+				salesTypeList: [],
+			};
+		},
+		onUnload() {
+			this.timer && clearTimeout(this.timer)
+		},
+
+		async onLoad(options) {
+			console.log('options', options)
+			console.log("订单评价页面...")
+
+			this.id = options.id || ''
+			if (this.id) {
+
+				await this.getDetail()
+				await this.getItemList()
+				this.submitForm = {
+					orderId: this.id,
+					// imageList: [],
+					videoList: [],
+					salesType: '',
+					reason: '',
+					// orderItems: [],
+					orderItemId: options.flowerId || '',
+					num: 0,
+					pictureList: []
+				}
+
+
+				if (this.dto.statusBackend === 'PENDING' || this.dto.status === 'PENDING') {
+
+
+					this.timer = setInterval(() => {
+						//倒计时
+						var nowdate = new Date().getTime() - 1000 * 60 * 5
+						var change = false
+
+						//计算倒计时
+						var diff = new Date(this.dto.createTime).getTime() - nowdate
+						console.log('diff', diff)
+						if (diff <= 2000 && true) {
+							//超过了5分钟
+							this.dto.statusBackend = 'CANCEL'
+							this.dto.statusBackendStr = '已取消'
+							this.dto.status = 'CANCEL'
+							this.dto.statusStr = '已取消'
+
+							this.dto.bctime = ''
+							// console.log('change cancel', this.dto)
+							change = true
+							clearInterval(this.timer)
+							this.timer = undefined
+						} else {
+							//相差
+							var alltime = parseInt(diff / 1000)
+							var tt = 0
+							if (alltime > 60) {
+								tt = alltime - parseInt(alltime / 60) * 60
+							} else {
+								tt = alltime
+							}
+							this.dto.bctime = `0${parseInt(alltime / 60)}:${tt<10?'0':''}${tt}`
+							change = true
+
+						}
+
+
+						if (change)
+							this.$forceUpdate()
+					}, 1000)
+				}
+
+
+			}
+
+			this.$http.request('get', '/api/code/value', {
+				params: {
+					type: 'after_sale_type'
+				}
+			}).then(res => {
+				var data = res.data;
+
+				let tmpData = data.map(item => ({
+					value: item.value,
+					label: item.label
+				}));
+
+				// 将 '全部' 选项插入到 tmpData 的开头
+				this.salesTypeList = tmpData;
+				this.salesTypeList.unshift({
+					label: '全部',
+					value: ''
+				});
+
+			})
+
+		},
+		methods: {
+			
+			async submitCommit(){
+				console.log("提交评价")
+				console.log(this.list)
+				
+				 const tmpList= this.list
+				 .filter(item => item.commentGrade > 0) // 过滤 commentGrade > 0 的数据
+				 .map(item => {
+				  return {
+				    orderItemId:item.id,
+					commentGrade:item.commentGrade,
+				    comment: item.comment, // 添加特定的属性
+					commentImages:JSON.stringify(item.pictureList),
+					anonymityFalg:item.anonymityFalg, // 匿名
+				  };
+				});
+				
+				// 检查是否有 comment 为空的情况
+				const hasEmptyComment = tmpList.some(item => !item.comment || item.comment.trim() === '');
+				
+				
+				// 检查 tmpList 是否为 null 或为空数组,或者是否有 comment 为空的情况
+				if (!tmpList || tmpList.length === 0) {
+				  this.$message.showToast('评论不能为空')
+				  return 
+				} else if (tmpList.some(item => !item.comment || item.comment.trim() === '')) {
+				  this.$message.showToast('评论内容不能为空')
+				  return ;
+				} 
+				
+				// 需要新增list
+				console.log(tmpList)
+				const param={
+					orderId:this.id,
+					list:tmpList,
+				}
+				// return ;
+				this.$message.showLoading()
+				const re = await this.$http.request('post', `/api/v2/flower-comment/batch`, {
+					data: param
+				})
+				this.$message.hideLoading()
+				if (re.code == 2000 || re.code == 0) {
+					this.$message.showToast('操作成功')
+					//需要标记加一下
+					this.$store.dispatch('sign_add', 'flower');
+				
+					this.backpage()
+				} else {
+					console.log('error re', re)
+					if (re.code === 30000 && Array.isArray(re.msg)) {
+						this.$message.showToast('字段未填写完整')
+				
+					}
+				}
+			},
+
+			openbrand(item) {
+				//也要判断一下是否重复进入
+				//判断堆栈,如果是店铺,就直接返回
+				//或者是:从商铺到列表再到详情,再到商铺,这种也不行
+				const pages = getCurrentPages();
+				console.log('toShopping', pages)
+				if (pages && pages.length >= 2) {
+					if (pages[pages.length - 2].route === "sub_pages/customer/shop/shop") {
+						uni.navigateBack()
+						return
+					}
+				}
+				if (pages && pages.length >= 3) {
+					if (pages[pages.length - 3].route === "sub_pages/customer/shop/shop" &&
+						pages[pages.length - 2].route === "sub_pages/customer/trade/list"
+					) {
+						uni.navigateBack({
+							delta: 2
+						})
+						return
+					}
+				}
+
+				if (pages.length >= 10) {
+					//直接强制购物车
+					uni.reLaunch({
+						url: '/sub_pages/customer/shop/shop?id=' + (item.supplierId || '')
+					})
+				} else {
+					uni.navigateTo({
+						url: '/sub_pages/customer/shop/shop?id=' + (item.supplierId || '')
+					})
+				}
+
+			},
+
+			toFlowerDetail(item) {
+				console.log(item)
+				uni.navigateTo({
+					url: `/sub_pages/customer/trade/detail?id=${item.flowerId}`
+				})
+			},
+			salesTypeChange(e) {
+				this.submitForm.salesType = e.value
+			},
+
+			async getDetail() {
+				this.$message.showLoading()
+				const {
+					code,
+					data
+				} = await this.$http.request('get', `/api/${this.type}/order/list/view`, {
+					params: {
+						id: this.id
+					}
+				})
+				this.$message.hideLoading()
+				console.log('getDetail', data)
+				if (code === 0) {
+					this.dto = {
+						...this.dto,
+						...data,
+						// pointGoodsList: [{
+						// 	name: '1',
+						// 	num: 1,
+						// 	description: 'descriptiondescriptiondescriptiondescriptiondescription'
+						// }]
+					}
+					if (this.dto.statusBackend === 'PENDING') {
+						//先判断要不要字节变成已取消
+						var nowdate = new Date().getTime() - 1000 * 60 * 5
+						var diff = new Date(this.dto.createTime).getTime() - nowdate
+
+						if (diff <= 2000 && true) {
+							//超过了5分钟
+							this.dto.statusBackend = 'CANCEL'
+							this.dto.statusBackendStr = '已取消'
+							this.dto.status = 'CANCEL'
+							this.dto.statusStr = '已取消'
+							this.dto.bctime = ''
+							this.$forceUpdate()
+						}
+					}
+
+				}
+			},
+
+			async getItemList() {
+				this.$message.showLoading()
+				const {
+					code,
+					data
+				} = await this.$http.request('get', `/api/${this.type}/order/item/list`, {
+					params: {
+						id: this.id
+					}
+				})
+				this.$message.hideLoading()
+				console.log('getItemList', data)
+				// if (code === 0) {
+				// 	this.list = data || []
+				// 	console.log('data', this.list)
+				// }
+				if (code === 0) {
+				  this.list = (data || []).map(item => {
+				    return {
+				      ...item,
+					  comment:item.comment?item.comment:"",
+					  pictureList:item.commentImages ? JSON.parse(item.commentImages) : [], // 将字符串转换成数组
+				    };
+				  });
+				  console.log('data', this.list);
+				}
+
+			},
+			async buttonClick(buttontype) {
+				switch (buttontype) {
+					case 'refund': {
+						await this.$message.confirm('是否确定申请退款')
+						// 发送请求
+						this.$message.showLoading()
+						const {
+							code
+						} = await this.$http.request('get', '/api/customer/order/refund', {
+							params: {
+								id: this.id,
+							}
+						})
+						this.$message.hideLoading()
+						if (code === 0) {
+							this.getDetail()
+						}
+					}
+					break
+					case 'confirm': {
+						await this.$message.confirm('是否确定收货')
+
+						var tryCallWx = false
+						// #ifdef MP
+						let tmp = this
+						if (wx.openBusinessView && tmp.dto && tmp.dto.paymentTrId) {
+							tryCallWx = true
+							wx.openBusinessView({
+								businessType: 'weappOrderConfirm',
+								extraData: {
+									// merchant_id: '',
+									// merchant_trade_no: '',
+									// merchant_id: '1661512517',
+									// merchant_trade_no: tmp.id || '',
+									transaction_id: tmp.dto && tmp.dto.paymentTrId || ''
+								},
+								async success(info) {
+									console.log('info', info)
+									//dosomething
+									// 发送请求
+									if (info.extraData && info.extraData.status === 'fail') {
+										tmp.$message.showToast('支付和确认收货需要是同一微信号,请联系实际支付人登录确认')
+
+									} else if (info.extraData && info.extraData.status === 'cancel') {
+
+									} else {
+										tmp.$message.showLoading()
+										const {
+											code
+										} = await tmp.$http.request('get',
+											'/api/customer/order/receive/confirm', {
+												params: {
+													id: tmp.id,
+												}
+											})
+										tmp.$message.hideLoading()
+										if (code === 0) {
+											tmp.getDetail()
+											tmp.$store.dispatch('getCurrentInfo')
+										}
+
+									}
+
+								},
+								fail(e) {
+									//dosomething
+									console.log('error fail', e)
+									tmp.$message.showToast('收货失败')
+								},
+								complete() {
+									//dosomething
+								}
+							});
+						}
+
+						// #endif
+
+						if (!tryCallWx) {
+
+							// 发送请求
+							this.$message.showLoading()
+							const {
+								code
+							} = await this.$http.request('get', '/api/customer/order/receive/confirm', {
+								params: {
+									id: this.id,
+								}
+							})
+							this.$message.hideLoading()
+							if (code === 0) {
+								this.getDetail()
+							}
+						}
+
+					}
+					break
+					case 'payAgain': {
+						await this.$message.confirm('是否确定重新支付')
+						// 发送请求
+						this.$message.showLoading()
+						const {
+							code,
+							data
+						} = await this.$http.request('get', '/api/customer/order/payAgain', {
+							params: {
+								id: this.id,
+							}
+						})
+
+						this.$message.hideLoading()
+						if (code === 0) {
+							//微信接口
+							let that = this
+							wx.requestPayment({
+								...data,
+								async success(res) {
+									console.log('pay success', res)
+									await that.$message.showToast('支付成功')
+									that.getDetail()
+								},
+								fail(err) {
+									console.error('pay fail', err)
+									that.$message.showToast('支付失败')
+								}
+							})
+
+						}
+
+					}
+					break
+					case 'evaluate': {
+						const res = await this.$message.confirm('', {
+							editable: true,
+							title: '请输入评价信息'
+						})
+						if (res.content && res.confirm) {
+							// 发送请求
+							this.$message.showLoading()
+							const {
+								code
+							} = await this.$http.request('post', '/api/customer/order/evaluate', {
+								data: {
+									id: this.id,
+									evaluate: res.content
+								}
+							})
+							this.$message.hideLoading()
+							if (code === 0) {
+								this.getDetail()
+							}
+						}
+					}
+					break
+					// case 'sales': {
+					// 	//新增售后单
+					// 	//去新的页面加上这些选择?
+					// 	this.submitForm = {
+					// 		orderId: this.id,
+					// 		imageList: [],
+					// 		videoList: [],
+					// 		reason: '',
+					// 		orderItems: [],
+					// 	}
+					// 	this.showSales = true
+
+					// }
+					default:
+						break
+				}
+			},
+			changeSalesOrderItem(dto) {
+				if (this.submitForm.orderItems.indexOf(dto.id) < 0) {
+					this.submitForm.orderItems.push(dto.id)
+				} else {
+					this.submitForm.orderItems.splice(this.submitForm.orderItems.indexOf(dto.id), 1)
+				}
+			},
+			deleteCheckImage(key, index) {
+				this.submitForm[key].splice(index, 1)
+				this.$forceUpdate()
+			},
+			uploadIcon(item,key) {
+				console.log('that dto key', key)
+				const that = this
+				if (key === 'video') {
+					uni.chooseVideo({
+						maxDuration: 30,
+						sourceType: ['camera', 'album'],
+						success: function(res) {
+							if (res.size > 1024 * 1024 * 50) {
+								that.$message.confirm('视频最多支持50M大小,超出大小限制')
+								return
+							}
+							if (res.tempFilePath) {
+								console.log('res.tempFilePath', res.tempFilePath)
+								that.$message.showLoading()
+								that.$http.upload(res.tempFilePath).then(async res => {
+									var pic = res.data && res.data.length > 0 && res.data[
+											0]
+										.url || ''
+									that.$message.hideLoading()
+									that.submitForm.videoList.push(pic || '')
+
+									that.$forceUpdate()
+								}).catch(res => {
+									that.$message.hideLoading()
+									console.error(res)
+								})
+							}
+						}
+					});
+				} else {
+
+					uni.chooseImage({
+						count: 1, // 最多可以选择的图片张数,默认9
+						sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有
+						sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
+						success: function(res) {
+							let errMsg = res.errMsg
+							let tempFiles = res.tempFiles
+							if (errMsg === 'chooseImage:ok') {
+								// console.log(tempFiles[0])
+								if (tempFiles[0].size > 1024 * 1024 * 5) {
+									that.$message.confirm('图片最多支持5M大小,超出大小限制')
+									return
+								}
+								that.$message.showLoading()
+								that.$http.upload(tempFiles[0].path).then(async res => {
+									console.log('res1', res)
+									var pic = res.data && res.data.length > 0 && res.data[
+											0]
+										.url || ''
+									that.$message.hideLoading()
+									that.submitForm.pictureList.push(pic)
+									if(!item.pictureList){
+										item.pictureList=[]
+									}
+									item.pictureList.push(pic)
+									console.log("图片上传")
+									console.log(item)
+
+									that.$forceUpdate()
+								}).catch(res => {
+									that.$message.hideLoading()
+									console.error(res)
+								})
+							}
+						}
+					})
+				}
+			},
+			async deleteImg(item, index) {
+				await this.$message.confirm('是否确认删除此图片')
+				if (Array.isArray(item.pictureList)) {
+					item.pictureList.splice(index, 1)
+			
+				} else {
+					item.pictureList = []
+				}
+				this.$forceUpdate()
+			},
+
+			async submitSales() {
+				// if (this.submitForm.orderItems.length < 1) {
+				// 	this.$message.showToast('未选择需要售后的商品')
+				// 	return
+				// }
+				// if (this.submitForm.orderItems.length < 1) {
+				// 	this.$message.showToast('未选择需要售后的商品')
+				// 	return
+				// }
+				if (isNaN(parseInt(this.submitForm.num)) || this.submitForm.num <= 0 || parseInt(this.submitForm
+						.num) <= 0) {
+					this.$message.showToast('售后数量需要大于0')
+					return
+				}
+				this.submitForm.num = parseInt(this.submitForm.num) || 1
+
+				if (!this.submitForm.salesType) {
+					this.$message.showToast('未填写售后类型')
+					return
+				}
+				if (!this.submitForm.reason) {
+					this.$message.showToast('未填写理由')
+					return
+				}
+				if (!this.submitForm.pictureList || this.submitForm.pictureList.length < 1) {
+					this.$message.showToast('未上传图片')
+					return
+				}
+				await this.$message.confirm('确定申请售后吗')
+				this.$message.showLoading()
+				const {
+					code,
+					data
+				} = await this.$http.request('post', '/api/customer/sales/add', {
+					data: {
+						...this.submitForm
+					}
+				})
+				this.$message.hideLoading()
+				if (code == 0) {
+					await this.$message.showToast('提交成功')
+					uni.navigateBack()
+					// this.showSales = false
+					// this.$forceUpdate()
+					// setTimeout(() => {
+					// uni.navigateBack()
+					// }, 1200)
+				}
+			},
+		},
+	}
+</script>
+
+<template>
+	<view class="order-detail-page">
+
+		<view v-for="(item,index) of list" :key="index">
+			<view class="flower-info m-b-20 m-t-12 br-4">
+				<view class="supplier-name ">
+					<view @click.stop="openbrand(item)" style="display: inline-block;">
+						<image class="icon-dp br-4" src="/static/common/icon-dp.png"></image>
+						{{ item.supplierName|| '' }} >
+					</view>
+				</view>
+
+				<view class="m-t-12">
+
+					<u-row justify="space-between">
+						<u-col span="2">
+							<u--image :showLoading="true" :src="item.flowerCover" width="30px" height="30px"@click="toFlowerDetail(item)" shape="circle"></u--image>
+						</u-col>
+						<u-col span="8">
+							<view class="title">
+								<span class="level">{{ item.flowerCategory || ''}}</span><span
+									class="level">{{ item.flowerLevelStr || ''}}</span>{{ item.flowerName || ''}}
+							</view>
+						</u-col>
+						<u-col span="2">
+							<u-rate count="5" v-model="item.commentGrade"></u-rate>
+						</u-col>
+					</u-row>
+					<u-row  v-if=" item.commentGrade>0 ">
+						<u-col span="12">
+							<u-radio-group v-model="item.anonymityFalg" :labelSize="10">
+								<u-radio  label="匿名" :name="1"></u-radio>
+							</u-radio-group>
+							
+							<u--textarea v-model="item.comment" placeholder="请输入内容"  count></u--textarea>
+							<view class="component-button-upload" @click="uploadIcon(item,'image')"></view>
+							<view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx"
+								v-if="item.pictureList&&item.pictureList.length>0">
+								<view class="m-t-12 m-r-10 " v-for="(tBanner,index2) of item.pictureList" :key="index2">
+									<!-- <image :src="tBanner" @click.stop="previewImg(tBanner)" width="30px" height="30px" style=  ></image> -->
+									<u--image :showLoading="true" :src="tBanner" width="50px" height="50px"></u--image>
+									<view class="t-red text-center" @click.stop="deleteImg(item,index2)">删除</view>
+								</view>
+							</view>
+						</u-col>
+					</u-row>
+
+
+				</view>
+
+			</view>
+		</view>
+
+		<u-button type="primary" text="提交评价" @click="submitCommit"></u-button>
+
+
+	</view>
+</template>
+
+<style lang="scss" scoped>
+	.order-detail-page {
+		background: #F7F7F7;
+		padding: 30rpx;
+
+		.check-img {
+			width: 96rpx;
+			height: 96rpx;
+			border-radius: 4rpx;
+			border: 2rpx dashed #CECECE;
+		}
+
+		.bottom-price {
+			position: fixed;
+			background-color: #ffffff;
+			left: 0rpx;
+			padding: 20rpx;
+			padding-bottom: 40rpx;
+			right: 0rpx;
+			bottom: 0rpx;
+
+			.button-green-1 {
+				min-width: 400rpx;
+				padding-left: 20rpx;
+				padding-right: 20rpx;
+			}
+		}
+
+		.button-space {
+			min-height: 140rpx;
+		}
+
+		.buttons-bottom {
+			position: fixed;
+			left: 0;
+			bottom: 0;
+			right: 0;
+			height: 120rpx;
+			background-color: #FFFFFF;
+			box-shadow: 0 2rpx 30rpx rgba(0, 0, 0, .3);
+
+			.button {
+				border-radius: 42rpx;
+				border: 2rpx solid #CECECE;
+				font-weight: 400;
+				font-size: 30rpx;
+				color: #999999;
+				text-align: center;
+				line-height: 60rpx;
+				height: 60rpx;
+				padding: 10rpx 30rpx;
+				background-color: #FFFFFF;
+				margin: 0 auto;
+				display: inline-block;
+				vertical-align: middle;
+				margin-top: 20rpx;
+				min-width: 120rpx;
+			}
+
+			.button-1 {}
+		}
+
+		.info-container {
+
+
+			.icon-kf {
+				width: 44rpx;
+				height: 44rpx;
+			}
+
+			.icon-call {
+				width: 32rpx;
+				height: 32rpx;
+			}
+
+			.icon-view {
+				line-height: 40rpx;
+
+				.icon {
+					display: inline-block;
+					vertical-align: middle;
+				}
+			}
+
+		}
+
+		.info-container {
+			padding: 28rpx;
+
+			.form-item {
+				font-weight: 400;
+				font-size: 28rpx;
+				color: #666666;
+				line-height: 60rpx;
+				display: flex;
+
+				.label {
+					min-width: 140rpx;
+					margin-right: 20rpx;
+				}
+
+				.value {
+					word-break: break-all;
+				}
+			}
+
+			.line {
+				height: 2rpx solid #EEEEEE;
+			}
+		}
+
+		.top-tip {
+			.icon-car {
+				width: 52rpx;
+				height: 52rpx;
+			}
+		}
+
+		.address-container {
+			padding: 28rpx;
+
+			.image {
+				// background-color: #20613D;
+				border-radius: 50%;
+				margin-top: 8rpx;
+				margin-left: 8rpx;
+				width: 32rpx;
+				height: 32rpx;
+				// padding: 8rpx;
+			}
+
+			.info {
+				.title {
+					font-weight: 600;
+					font-size: 32rpx;
+					color: #000000;
+					line-height: 44rpx;
+
+					.tel {
+						display: inline-block;
+						margin-left: 20rpx;
+					}
+				}
+
+				.content {
+					font-weight: 400;
+					font-size: 28rpx;
+					color: #000000;
+					line-height: 40rpx;
+				}
+
+			}
+		}
+
+		.flower-info {
+			padding: 28rpx;
+
+			background: #FFFFFF;
+			border-radius: 8rpx;
+
+			.supplier-name {
+				border-bottom: 2rpx solid #EEEEEE;
+				font-weight: 600;
+				font-size: 28rpx;
+				color: #000000;
+				padding-bottom: 10rpx;
+				line-height: 40rpx;
+
+				.icon-dp {
+					width: 27rpx;
+					height: 27rpx;
+					display: inline-block;
+					vertical-align: middle;
+				}
+			}
+
+			.title {
+				font-weight: 600;
+				font-size: 28rpx;
+				color: #000000;
+				line-height: 40rpx;
+
+				.level {
+					font-weight: 400;
+					font-size: 28rpx;
+					color: #20613D;
+					line-height: 40rpx;
+					margin-right: 20rpx;
+				}
+			}
+
+			.flower-img {
+				width: 128rpx;
+				height: 118rpx;
+				min-width: 128rpx;
+				min-height: 118rpx;
+			}
+
+			.each-list {
+				display: flex;
+				flex-wrap: wrap;
+				margin-top: 6rpx;
+
+				.each-item {
+					min-width: 30%;
+					max-width: 40%;
+					text-align: center;
+					margin-left: 0rpx;
+					margin-right: auto;
+					display: flex;
+
+					.label {
+						font-weight: 400;
+						font-size: 24rpx;
+						color: #666666;
+						text-align: left;
+						padding-right: 10rpx;
+					}
+
+					.label::after {
+						content: ": "
+					}
+
+					.value {
+						font-weight: 400;
+						font-size: 24rpx;
+						color: #666666;
+					}
+				}
+			}
+
+		}
+
+	}
+</style>
\ No newline at end of file
diff --git a/pages/order/order-detail.vue b/pages/order/order-detail.vue
index 3630110..3b6c0b3 100644
--- a/pages/order/order-detail.vue
+++ b/pages/order/order-detail.vue
@@ -124,6 +124,13 @@
 
 		},
 		methods: {
+			// 商品评论
+			commentButtonClick(){
+				// 跳转的到评论列表
+				uni.navigateTo({
+					url: '/pages/order/comment/order-comment?orderId='+this.id
+				})
+			},
 
 			openbrand(item) {
 				//也要判断一下是否重复进入
@@ -898,8 +905,8 @@
 			<view class="button button-1" @click="buttonClick('payAgain')" v-if=" dto.status === 'PENDING'"> 重新支付<span
 					v-if="dto.bctime">({{dto.bctime}})</span>
 			</view>
-			<view class="button button-1" @click="buttonClick('evaluate')" v-if=" dto.status === 'EVALUATE'"> 评价
-			</view>
+			<!-- <view class="button button-1" @click="commentButtonClick('evaluate')" v-if=" dto.status === 'EVALUATE'"> 评价 </view> -->
+			<!-- <view class="button button-1" @click="buttonClick('evaluate')" v-if=" dto.status === 'EVALUATE'"> 评价 </view> -->
 			<!-- ||dto.status=='COMPLETED' -->
 			<!-- 在外面申请了,里面不允许了 -->
 			<!-- 	<view class="button button-1" @click="buttonClick('sales')" v-if=" dto.status === 'RECEIVE'"> 申请售后
diff --git a/pages/order/order.vue b/pages/order/order.vue
index 2551a87..7c5142f 100644
--- a/pages/order/order.vue
+++ b/pages/order/order.vue
@@ -179,9 +179,15 @@
 					url: '/pages/order/order-detail?id=' + item.id
 				})
 			},
+			
+			commentButtonClick(item){
+				uni.navigateTo({
+					url: '/pages/order/comment/order-comment?id='+item.id
+				})
+			},
+			
 
 			async copyOrder(item) {
-				console.log(item)
 				await this.$message.confirm('是否确定再来一单')
 				// 发送请求
 				this.$message.showLoading()
@@ -625,7 +631,10 @@
 					<!-- 		<view class="button button-1 m-l-a m-r-15" @click="toDetailSale(dto)"
 						v-if="dto.statusBackend === 'RECEIVE'"> 申请售后
 					</view> -->
-					<view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'evaluate')"
+					<!-- <view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'evaluate')"
+						v-if="dto.statusBackend === 'EVALUATE'"> 评价
+					</view> -->
+					<view class="button button-0 m-l-a m-r-15" @click="commentButtonClick(dto)"
 						v-if="dto.statusBackend === 'EVALUATE'"> 评价
 					</view>
 
diff --git a/sub_pages/customer/shop/shop.vue b/sub_pages/customer/shop/shop.vue
index 14f0a17..e7b63b0 100644
--- a/sub_pages/customer/shop/shop.vue
+++ b/sub_pages/customer/shop/shop.vue
@@ -159,12 +159,63 @@
 				</view>
 			</view>
 
-			<!-- <view v-show="flg==='1'" class="brand-info-1">
-				<trade :hidefooter="true" :supplierId="id" :catgoryTree="catgoryTree" v-if="catgoryTree" ref="trade">
-				</trade>
+			<view v-show="flg==='2'" class="brand-info-1">
+				<!-- <trade :hidefooter="true" :supplierId="id" :catgoryTree="catgoryTree" v-if="catgoryTree" ref="trade">
+				</trade> -->
+						
+				<view class="m-t-12" style="text-align: center;">
+					
+					<span style="">综合评分<span style="color: #F8353A; margin-left: 5px;">{{comment.avg}}</span> </span>
+					
+				</view>
+				<view class="m-t-12">
+				
+					<view v-for="(item,index) of commentList" >
+						<u-row justify="space-between"  >
+							<u-col span="1">
+								<u--image v-if="item.anonymityFalg==1 " :showLoading="true" 
+								src="https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png" width="30px" height="30px"  shape="circle"></u--image>
+								<u--image v-else :showLoading="true" :src="item.customerCover" width="30px" height="30px"  shape="circle"></u--image>
+							
+							</u-col>
+							<u-col span="4">
+								<view v-if="item.anonymityFalg==1 " >匿名用户</view>
+								<view v-else>{{item.customerName}}</view>
+							</u-col>
+							<u-col span="2">
+								<u-rate count="5" v-model="item.commentGrade" readonly></u-rate>
+							</u-col>
+							<u-col span="4">
+								<view style="font-size: 12px;">{{item.updateTime}}</view>
+							</u-col>
+						</u-row>
+						<u-row justify="space-between"  >
+							<u-col span="2"></u-col>
+							<u-col span="10">
+								<view> 		
+									<span style="color:#3E9FFB;border: 1px solid #3E9FFB; padding:2px 2px ;font-size: 12px;">
+										{{item.flowerName}}({{item.flowerColor}}){{item.flowerLevel}}
+									</span>
+									{{item.comment}}
+									<view class="flex" >
+										<u--image v-for="(commentImg,index2) of item.commentImagesList" :key="index2" style="margin:10px;"
+										:showLoading="true" :src="commentImg"></u--image>
+									</view>
+								
+								 </view>
+							</u-col>
+						</u-row>
+						
+					</view>
+					
+					
+				
+				
+				</view>
+				
 			</view>
-			 -->
-			<view v-if="flg==='2'" class="brand-info-3">
+			
+			<view v-if="flg==='3'" class="brand-info-3">
 				<view class="title">
 					基础信息
 				</view>
@@ -252,6 +303,16 @@
 		},
 		data() {
 			return {
+				comment:{
+					avg:0,
+					commentAmount:0,
+				},
+				commentList:[],
+				commentPage:{
+					size: 10,
+					current: 1,
+					total: 0,
+				},
 				// search_flow: '',
 				flg: '0',
 				tabs: [{
@@ -260,9 +321,9 @@
 					{
 						name: '分类'
 					},
-					// {
-					// 	name: '评价'
-					// },
+					{
+						name: '评价'
+					},
 					{
 						name: '商家'
 					},
@@ -278,6 +339,7 @@
 					level: '',
 					name: '',
 					categoryRoot: '',
+					
 				},
 				level_show: false,
 				level_columns: [
@@ -287,7 +349,8 @@
 				order_show: false,
 				order_columns: [
 					[]
-				]
+				],
+				
 			}
 		},
 		onShow() {
@@ -300,9 +363,19 @@
 			}
 			await this.refreshList('post')
 			uni.stopPullDownRefresh()
-
+			
+			if(this.flg=="2"){
+				// 评论相关下拉刷新
+				this.getCommentsStatis()
+				
+				this.commentList=[]
+				this.commentPage.current=1
+				this.getComments()
+			}
+			
 		},
 		onLoad(options) {
+			
 			this.id = options.id || ''
 			this.page.size = 300
 			if (this.id) {
@@ -335,6 +408,11 @@
 					value: ''
 				})
 			})
+			
+			
+			this.getCommentsStatis()
+			
+			
 		},
 		// #ifdef PUB_CUSTOMER
 		onShareAppMessage() {
@@ -361,11 +439,96 @@
 		},
 		// #endif
 		onReachBottom() {
+			console.log("下拉")
 			// if (this.flg === '0') {
 			// 	this.getMore('post')
 			// }
+			if (this.flg ==2) {
+				// debugger;
+				// this.listApi="/api/v2/flower-comment/page"
+				// this.query={
+				// 	supplierId:this.id 
+				// }
+				// this.getMore()
+				this.commentPage.current++
+				this.getComments()
+			}
 		},
 		methods: {
+			
+			async getCommentsStatis() {
+				{
+					this.$message.showLoading()
+			
+					const {
+						code,
+						data
+					} = await this.$http.request('get', `/api/v2/flower-comment/statis/${this.id}`, {
+						params: {}
+					})
+					if (code === 0) {
+						this.comment=data
+						this.tabs[2].name=`评价(${this.comment.commentAmount})`
+					}
+			
+					this.$message.hideLoading()
+				}
+			
+			},
+			
+			async getComments() {
+			
+				{
+					this.$message.showLoading()
+					const params={
+						supplierId:this.id ,
+						...this.commentPage,
+					}
+					const {
+						code,
+						data
+					} = await this.$http.request('get', `/api/v2/flower-comment/page`, {
+						params: params
+					})
+					if (code === 0) {
+						// this.commentList=data.records
+						this.commentPage.current=data.current
+						this.commentPage.pages=data.pages
+						this.commentPage.size=data.size
+						this.commentPage.total=data.total
+						// this.commentList = data.records.map(item => {
+						//   return {
+						//     ...item,
+						//     commentImagesList: item.commentImages ? JSON.parse(item.commentImages) : [] // 将字符串转换成数组
+						//   };
+						// });
+						data.records.forEach(item => {
+						    const commentImagesList = item.commentImages ? JSON.parse(item.commentImages) : [];
+						    const existingCommentIndex = this.commentList.findIndex(comment => comment.id === item.id);
+						    
+						    if (existingCommentIndex !== -1) {
+						        // 更新已存在的评论
+						        this.commentList[existingCommentIndex] = {
+						            ...this.commentList[existingCommentIndex],
+						            ...item,
+						            commentImagesList
+						        };
+						    } else {
+						        // 新增评论
+						        this.commentList.push({
+						            ...item,
+						            commentImagesList
+						        });
+						    }
+						 });
+
+					}
+			
+					this.$message.hideLoading()
+				}
+			
+			},
+			
 			getList_after() {
 				if (this.list) {
 					for (var item of this.list) {
@@ -482,6 +645,12 @@
 					}
 
 				}
+			
+				if(flg=="2"){
+					this.getCommentsStatis()
+					this.getComments()
+				}
+				
 				this.flg = '' + flg
 				//如果没有加载数据,需要加载一下
 

--
Gitblit v1.9.3