123 lines
4.2 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="evaluation-container">
<!-- 评价内容区域 -->
<view>
<view v-for="(item, index) in orderList" :key="index">
<view class="evaluation-content">
<!-- 订单头部信息 -->
<view class="order-header">
<text class="order-name">{{ item.supplier_name }}</text>
<text class="order-number">{{ item.order_no }}</text>
</view>
<view class="evaluation-area">
<text class="evaluation-text">{{ item.evaluate_info.user_review }}</text>
<!-- 评价图片区域 -->
<view class="image-list"
v-if="item.evaluate_info.review_image && item.evaluate_info.review_image.length > 0">
<view class="image-item" v-for="(img, index) in parseReviewImages(item.evaluate_info.review_image)"
:key="index">
<image :src="img" @tap="previewImage(parseReviewImages(item.evaluate_info.review_image), index)">
</image>
</view>
</view>
<text class="order-date">{{ item.evaluate_info.create_time }}</text>
</view>
<!-- 商品信息区域 -->
<view class="product-info" @click="toDetail(item)">
<view class="product-img">
<image :src="item.commodity_order_item_list[0].commodity_pic"></image>
<view class="tag" v-if="item.commodity_order_item_list[0].is_same_day === 1" :key="index">当日达</view>
</view>
<view class="product-details">
<text class="product-name">{{ item.commodity_order_item_list[0].goods_name }}</text>
<text class="product-spec">{{ item.commodity_order_item_list[0].goods_spec }}</text>
<text class="product-unit">{{ item.commodity_order_item_list[0].sales_price }}/{{
item.commodity_order_item_list[0].goods_unit }}</text>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { picUrl, NavgateTo, request } from "../../../utils";
export default {
props: {
orderData: {
type: Array,
default: () => []
}
},
data() {
return {
orderList: [],
};
},
methods: {
toDetail(item) {
const goodId = item.commodity_order_item_list[0].goods_id
const orderInfo = item
NavgateTo(`/packages/myOrders/goodDetails/index?item=${JSON.stringify(orderInfo)} &goodId=${JSON.stringify(goodId)}`);
},
// 预览图片
previewImage(imageList, currentIndex) {
uni.previewImage({
urls: imageList,
current: currentIndex,
showmenu: true
});
},
// 解析评价图片格式
parseReviewImages(reviewImage) {
try {
// 检查是否为字符串类型且包含有效内容
if (typeof reviewImage === 'string' && reviewImage.trim()) {
// 去除可能的引号和空格,然后尝试解析为数组
const cleanStr = reviewImage.replace(/^"|"$/g, '').replace(/^'|'$/g, '').trim();
let images = [];
// 尝试使用JSON解析
if (cleanStr.startsWith('[') && cleanStr.endsWith(']')) {
images = JSON.parse(cleanStr);
} else if (cleanStr.includes(',')) {
// 如果是逗号分隔的字符串
images = cleanStr.split(',').map(img => img.trim());
}
// 确保返回的是数组并且每个元素都是有效的URL
return Array.isArray(images) ? images : [];
}
// 如果已经是数组则直接返回
return Array.isArray(reviewImage) ? reviewImage : [];
} catch (error) {
console.error('解析评价图片失败:', error);
return [];
}
}
},
mounted() {
// 组件挂载时初始化数据
this.orderList = this.orderData;
console.log("🚀 ~ mounted ~ this.orderList:", this.orderList);
},
watch: {
// 监听orderData的变化确保子组件能响应父组件数据更新
orderData: {
handler(newVal) {
this.orderList = newVal;
console.log("🚀 ~ watch orderData ~ this.orderList:", this.orderList);
},
deep: true
}
}
};
</script>
<style>
@import url("./rated.css");
</style>