完善售后模块

This commit is contained in:
赵毅 2025-09-15 11:56:23 +08:00
parent 1e347ca68f
commit 38eedaffe0
8 changed files with 264 additions and 217 deletions

View File

@ -7,4 +7,5 @@ export const apiArr = {
revokeApply: "/api/v2/wechat/commodity/after-sales/revoke-apply", //撤销售后申请 revokeApply: "/api/v2/wechat/commodity/after-sales/revoke-apply", //撤销售后申请
changeGoodsList: "/api/v2/wechat/commodity/after-sales/change-goods-list", //商品售后换货商品列表 changeGoodsList: "/api/v2/wechat/commodity/after-sales/change-goods-list", //商品售后换货商品列表
updateApply: "/api/v2/wechat/commodity/after-sales/update-apply", //商品订单售后修改申请 updateApply: "/api/v2/wechat/commodity/after-sales/update-apply", //商品订单售后修改申请
createReview: "/api/v2/wechat/commodity/review/create", //创建订单评价
}; };

View File

@ -2,24 +2,20 @@
<view class="order-list"> <view class="order-list">
<view class="order-item" v-for="(item, index) in orderList" :key="index"> <view class="order-item" v-for="(item, index) in orderList" :key="index">
<view class="order-header"> <view class="order-header">
<text class="order-name">{{ item.orderName }}</text> <text class="order-name">{{ item.supplier_name }}</text>
<text class="order-number">{{ item.orderNumber }}</text> <text class="order-number">{{ item.order_no }}</text>
</view> </view>
<view class="product-list"> <view class="product-list">
<view <view class="product-item" v-for="(product, pIndex) in item.commodity_order_item_list" :key="pIndex">
class="product-item"
v-for="(product, pIndex) in item.products"
:key="pIndex"
>
<view class="product-info"> <view class="product-info">
<view class="product-img"> <view class="product-img">
<image :src="product.imageUrl" mode="aspectFit"></image> <image :src="product.commodity_pic"></image>
<view class="tag" v-if="product.tag">{{ product.tag }}</view> <view class="tag" v-if="product.is_same_day === 1">当日达</view>
</view> </view>
<view class="product-details"> <view class="product-details">
<text class="product-name">{{ product.name }}</text> <text class="product-name">{{ product.goods_name }}</text>
<text class="product-spec">{{ product.spec }}</text> <text class="product-spec">{{ product.goods_spec }}</text>
<text class="product-unit">{{ product.unit }}</text> <text class="product-unit">{{ product.sales_price }}/{{ product.goods_unit }}</text>
</view> </view>
</view> </view>
<button class="evaluate-btn" @click="evaluateOrder(product)"> <button class="evaluate-btn" @click="evaluateOrder(product)">
@ -35,56 +31,15 @@
import { request, NavgateTo } from "../../../utils"; import { request, NavgateTo } from "../../../utils";
export default { export default {
props: {
orderData: {
type: Array,
default: () => []
}
},
data() { data() {
return { return {
orderList: [ orderList: [],
{
orderName: "衡水商贸国际公司",
orderNumber: "4534534255",
products: [
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "当日达",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "当日达",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
],
},
{
orderNumber: "54352342331",
products: [
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
],
},
],
}; };
}, },
methods: { methods: {
@ -93,6 +48,21 @@ export default {
NavgateTo(`../evaluate/index?item=${JSON.stringify(item)}`); NavgateTo(`../evaluate/index?item=${JSON.stringify(item)}`);
}, },
}, },
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> </script>

View File

@ -6,11 +6,11 @@
<!-- 订单编号 --> <!-- 订单编号 -->
<view class="order-info"> <view class="order-info">
<text class="order-label">订单编号</text> <text class="order-label">订单编号</text>
<text class="order-value">38757328485</text> <text class="order-value">{{ itemObj.order_no }}</text>
</view> </view>
<view class="goods"> <view class="goods">
<view> <view>
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png" class="goodsImg"></image> <image :src="itemObj.commodity_order_item_list[0].commodity_pic" class="goodsImg"></image>
</view> </view>
<view class="rating"> <view class="rating">
<view>很差</view> <view>很差</view>
@ -23,70 +23,38 @@
<!-- 商品品质 --> <!-- 商品品质 -->
<view class="rating-item"> <view class="rating-item">
<text class="rating-label">商品品质</text> <text class="rating-label">商品品质</text>
<u-rate <u-rate v-model="qualityRating" size="40" active-color="#FFB400" inactive-color="#EEEEEE" gutter="60"></u-rate>
v-model="qualityRating"
size="40"
active-color="#FFB400"
inactive-color="#EEEEEE"
gutter="60"
></u-rate>
</view> </view>
<!-- 配送速度 --> <!-- 配送速度 -->
<view class="rating-item"> <view class="rating-item">
<text class="rating-label">配送速度</text> <text class="rating-label">配送速度</text>
<u-rate <u-rate v-model="speedRating" size="40" active-color="#FFB400" inactive-color="#EEEEEE" gutter="60"></u-rate>
v-model="speedRating"
size="40"
active-color="#FFB400"
inactive-color="#EEEEEE"
gutter="60"
></u-rate>
</view> </view>
<!-- 快递员服务 --> <!-- 快递员服务 -->
<view class="rating-item"> <view class="rating-item">
<text class="rating-label">快递员服务</text> <text class="rating-label">快递员服务</text>
<u-rate <u-rate v-model="serviceRating" size="40" active-color="#FFB400" inactive-color="#EEEEEE" gutter="60"></u-rate>
v-model="serviceRating"
size="40"
active-color="#FFB400"
inactive-color="#EEEEEE"
gutter="60"
></u-rate>
</view> </view>
<!-- 评价输入 --> <!-- 评价输入 -->
<view class="comment-section"> <view class="comment-section">
<textarea <textarea class="comment-input" placeholder="展开说说对商品的想法吧…" v-model="comment"></textarea>
class="comment-input"
placeholder="展开说说对商品的想法吧…"
v-model="comment"
></textarea>
</view> </view>
<!-- 图片上传 --> <!-- 图片上传 -->
<view class="upload-section"> <view class="upload-section">
<view class="image-list"> <view class="image-list">
<view <view class="image-item" v-for="(img, index) in imageList" :key="index">
class="image-item"
v-for="(img, index) in imageList"
:key="index"
>
<image :src="img" class="uploaded-img"></image> <image :src="img" class="uploaded-img"></image>
<view class="delete-btn" @click="deleteImage(index)"> <view class="delete-btn" @click="deleteImage(index)">
<text class="delete-icon">×</text> <text class="delete-icon">×</text>
</view> </view>
</view> </view>
</view> </view>
<view <view class="upload-btn" @click="chooseImage" v-if="imageList.length < 3">
class="upload-btn" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/upload.png" class="upload-icon">
@click="chooseImage" </image>
v-if="imageList.length < 3"
>
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/upload.png"
class="upload-icon"
></image>
<view class="upload-text">上传图片</view> <view class="upload-text">上传图片</view>
<view class="upload-count">({{ imageList.length }}/3)</view> <view class="upload-count">({{ imageList.length }}/3)</view>
</view> </view>
@ -101,31 +69,22 @@
<script> <script>
import uImage from "../../../uni_modules/uview-ui/components/u--image/u--image.vue"; import uImage from "../../../uni_modules/uview-ui/components/u--image/u--image.vue";
import { picUrl, NavgateTo, request } from "../../../utils";
import { apiArr } from "../../../api/afterSale";
export default { export default {
components: { uImage }, components: { uImage },
data() { data() {
return { return {
//
goods: [
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index1.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index2.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index3.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index4.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index5.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index1.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index2.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index3.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index4.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index5.png" },
],
// //
qualityRating: 5, qualityRating: 0,
speedRating: 0, speedRating: 0,
serviceRating: 0, serviceRating: 0,
// //
comment: "", comment: "",
// //
imageList: [], imageList: [],
itemObj: {},
}; };
}, },
methods: { methods: {
@ -160,7 +119,17 @@ export default {
}); });
return; return;
} }
// const params = {
order_id: this.itemObj.id,
goods_id: this.itemObj.commodity_order_item_list[0].goods_id,
user_id: uni.getStorageSync("userId"),
quality_score: this.qualityRating,
speed_score: this.speedRating,
service_score: this.serviceRating,
user_review: this.comment,
review_image: this.imageList,
}
request(apiArr.createReview, "POST", params).then((res) => {
uni.showToast({ uni.showToast({
title: "评价提交成功", title: "评价提交成功",
icon: "success", icon: "success",
@ -168,11 +137,11 @@ export default {
setTimeout(() => { setTimeout(() => {
uni.navigateBack(); uni.navigateBack();
}, 1500); }, 1500);
});
}, },
}, },
onLoad(options) { onLoad(options) {
console.log("🚀 ~ onLoad ~ options:", options); this.itemObj = JSON.parse(decodeURIComponent(options.item));
const itemObj = JSON.parse(decodeURIComponent(options.item));
}, },
}; };
</script> </script>

View File

@ -10,12 +10,12 @@
<view class="content"> <view class="content">
<view v-if="selectedTab === 6"> <view v-if="selectedTab === 6">
<awaitRated /> <awaitRated :orderData="orderData" />
</view> </view>
<view v-if="selectedTab === 7"> <view v-else-if="selectedTab === 7">
<rated /> <rated :orderData="orderData" />
</view> </view>
<view v-if="selectedTab === 8"> <view v-else-if="selectedTab === 8">
<afterSale :afterSaleList="afterSaleList" @revokeApply="revokeApply" /> <afterSale :afterSaleList="afterSaleList" @revokeApply="revokeApply" />
</view> </view>
<view v-else> <view v-else>
@ -69,17 +69,17 @@
<view class="btn-group" v-if="item.order_status === 5"> <view class="btn-group" v-if="item.order_status === 5">
<text class="afterSaleNum">{{ item.commodity_order_item_list.length }}笔售后</text> <text class="afterSaleNum">{{ item.commodity_order_item_list.length }}笔售后</text>
<button class="cancel-btn" @click="afterSale(item)">退换/售后</button> <button class="cancel-btn" @click="afterSale(item)">退换/售后</button>
<button class="pay-btn">评价</button> <button class="pay-btn" @click="orderEvaluate(item)" :disabled="item.evauate_status === 1">评价</button>
</view> </view>
<view class="btn-group" v-if="item.order_status === 6"> <view class="btn-group" v-if="item.order_status === 6">
<!-- <button class="cancel-btn" @click="orderEvaluate"> <!-- <button class="cancel-btn" @click="orderEvaluate">
服务评价 服务评价
</button> </button>
<button class="yfd-btn" @click="cancelOrder">运费单</button> <button class="yfd-btn" @click="cancelOrder">运费单</button> -->
<button class="pay-btn" @click="cancelOrder">再来一单</button> --> <button class="pay-btn" @click="goToPay(item)">再来一单</button>
</view> </view>
<view class="btn-group" v-if="item.order_status === 7"> <view class="btn-group" v-if="item.order_status === 7">
<button class="pay-btn" @click="cancelOrder">再来一单</button> <button class="pay-btn" @click="goToPay(item)">再来一单</button>
</view> </view>
</view> </view>
</view> </view>
@ -164,14 +164,27 @@ export default {
showTkPopup: false,//退 showTkPopup: false,//退
afterSaleItem: '',// afterSaleItem: '',//
afterSaleList: [],// afterSaleList: [],//
selectStatus: '',//status
evaluateStatus: '',//
}; };
}, },
methods: { methods: {
selectTab(index, item) { selectTab(index, item) {
this.selectedTab = index; this.selectedTab = index;
if (index !== 6) { if (index == 6) {
this.getOrderList(); this.evaluateStatus = 2;
this.selectStatus = ''
} else if (index == 7) {
this.evaluateStatus = 1;
this.selectStatus = ''
} else if (index == 2) {
this.selectStatus = 6;
this.evaluateStatus = ''
} else {
this.selectStatus = index;
this.evaluateStatus = ''
} }
this.getOrderList();
}, },
// //
cancelOrder(item) { cancelOrder(item) {
@ -181,7 +194,6 @@ export default {
// //
handleOrderCancelled(data) { handleOrderCancelled(data) {
console.log("🚀 ~ handleOrderCancelled ~ 取消原因:", data.reason);
const params = { const params = {
order_id: this.afterSaleItem.id, order_id: this.afterSaleItem.id,
method: 1, method: 1,
@ -195,7 +207,6 @@ export default {
// //
afterSale(item) { afterSale(item) {
console.log("🚀 ~ afterSale ~ item:", item)
this.afterSaleGoods = item.commodity_order_item_list; this.afterSaleGoods = item.commodity_order_item_list;
// //
this.afterSaleOrderItem = item; this.afterSaleOrderItem = item;
@ -206,7 +217,6 @@ export default {
// request(afterSaleApi.isAllow, "POST", { // request(afterSaleApi.isAllow, "POST", {
// order_id: item.id, // order_id: item.id,
// }).then((res) => { // }).then((res) => {
// console.log("🚀 ~ afterSale ~ res:", res)
// if (res.data.is_allow_after_sales) { // if (res.data.is_allow_after_sales) {
// this.afterSaleGoods = res.data.allow_items; // this.afterSaleGoods = res.data.allow_items;
// // this.selectedAsGood = item.commodity_order_item_list[0].id; // // this.selectedAsGood = item.commodity_order_item_list[0].id;
@ -219,8 +229,6 @@ export default {
// 退 // 退
handleRefundSubmitted(data) { handleRefundSubmitted(data) {
console.log("🚀 ~ handleRefundSubmitted ~ handleRefundSubmitted:", this.afterSaleOrderItem)
console.log("🚀 ~ handleRefundSubmitted ~ 退款申请提交成功:", data);
const params = { const params = {
nick_name: uni.getStorageSync("nickName"), nick_name: uni.getStorageSync("nickName"),
order_id: this.afterSaleOrderItem.id, order_id: this.afterSaleOrderItem.id,
@ -236,7 +244,6 @@ export default {
receiving_address: data.merchantAddress, receiving_address: data.merchantAddress,
change_goods_id: data.changeServiceId change_goods_id: data.changeServiceId
} }
console.log("🚀 ~ handleRefundConfirmed ~ parasm:", params)
// request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => { // request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => {
// this.getOrderList(); // this.getOrderList();
// }); // });
@ -256,8 +263,6 @@ export default {
// 退 // 退
handleRefundConfirmed(data) { handleRefundConfirmed(data) {
console.log("🚀 ~ handleRefundConfirmed ~ handleRefundConfirmed:", this.afterSaleItem)
console.log("🚀 ~ handleRefundConfirmed ~ 退款原因:", data.reason);
const params = { const params = {
nick_name: uni.getStorageSync("nickName"), nick_name: uni.getStorageSync("nickName"),
order_id: this.afterSaleItem.id, order_id: this.afterSaleItem.id,
@ -267,7 +272,6 @@ export default {
refund_amount: this.afterSaleItem.total_amount, refund_amount: this.afterSaleItem.total_amount,
order_status: 3 order_status: 3
} }
console.log("🚀 ~ handleRefundConfirmed ~ parasm:", params)
request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => { request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => {
this.getOrderList(); this.getOrderList();
}); });
@ -284,7 +288,6 @@ export default {
order_id: item.id, order_id: item.id,
method: 2, method: 2,
} }
console.log("🚀 ~ confirmReceiving ~ params:", params)
request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => { request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => {
this.getOrderList(); this.getOrderList();
}); });
@ -293,7 +296,44 @@ export default {
}); });
}, },
goToPay(item) { goToPay(item) {
console.log(item); //
const transformedItems = item.commodity_order_item_list.map(goods => ({
checked: true,
commodity_goods_info: {
commodity_brief: "",
commodity_id: goods.goods_id,
commodity_pic: goods.commodity_pic,
goods_alias: goods.goods_name,
goods_carousel: "",
goods_detail_pic: "",
goods_intro: goods.goods_name,
goods_name: goods.goods_name,
goods_no: "",
goods_spec: goods.goods_spec,
goods_status: 1,
goods_unit: goods.goods_unit,
goods_video: "",
group_buy_activity_info: null,
id: goods.id,
is_same_day: goods.is_same_day || false,
is_support_same_day: goods.is_support_same_day || 2,
market_price: goods.sales_price,
sales_price: goods.sales_price,
stock_quantity: goods.stock_quantity
},
commodity_id: goods.goods_id,
count: goods.count,
create_time: item.create_time,
goods_id: goods.id,
group_buy_id: 0,
id: goods.id,
supplier_id: item.supplier_id,
supplier_name: item.supplier_name,
update_time: item.update_time,
user_id: item.user_id
}));
NavgateTo(`/packages/shop/groupPurchaseSubmit/index?shopCarList=${JSON.stringify(transformedItems)}`)
}, },
toDetails(item) { toDetails(item) {
NavgateTo( NavgateTo(
@ -305,8 +345,8 @@ export default {
NavgateTo(`/packages/myOrders/logistics/index`); NavgateTo(`/packages/myOrders/logistics/index`);
}, },
orderEvaluate() { orderEvaluate(item) {
NavgateTo(`/packages/myOrders/orderEvaluate/index`); NavgateTo(`/packages/myOrders/evaluate/index?item=${JSON.stringify(item)}`);
}, },
getOrderStatus(order_status) { getOrderStatus(order_status) {
@ -331,8 +371,10 @@ export default {
}, },
getOrderList() { getOrderList() {
this.orderData = []
request(afterSaleApi.orderList, "POST", { request(afterSaleApi.orderList, "POST", {
order_status: this.selectedTab, order_status: this.selectStatus,
evaluate_status: this.evaluateStatus,
user_id: uni.getStorageSync("userId"), user_id: uni.getStorageSync("userId"),
}).then((res) => { }).then((res) => {
res.order_list.forEach(item => { res.order_list.forEach(item => {

View File

@ -140,17 +140,17 @@
<view class="bottom-buttons" v-if="status === '4'"> <view class="bottom-buttons" v-if="status === '4'">
<button class="cancel-btn" @click="checkLogistics">查看物流</button> <button class="cancel-btn" @click="checkLogistics">查看物流</button>
<!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> --> <!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> -->
<button class="pay-btn" @click="gotoPayment">立即支付</button> <button class="pay-btn" @click="confirmReceiving">确认收货</button>
</view> </view>
<view class="bottom-buttons" v-if="status === '5'"> <view class="bottom-buttons" v-if="status === '5'">
<!-- <button class="cancel-btn" @click="orderEvaluate">服务评价</button> --> <!-- <button class="cancel-btn" @click="afterSale">退换/售后</button> -->
<!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> --> <!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> -->
<button class="pay-btn" @click="gotoPayment">立即支付</button> <button class="pay-btn" @click="orderEvaluate" :disabled="orderInfo.evauate_status === 1">评价</button>
</view> </view>
<view class="bottom-buttons" v-if="status === '6'"> <view class="bottom-buttons" v-if="status === '6'">
<!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> --> <!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> -->
<!-- <button class="cancel-btn" @click="cancelOrder">服务评价</button> --> <!-- <button class="cancel-btn" @click="cancelOrder">服务评价</button> -->
<!-- <button class="pay-btn" @click="gotoPayment">再来一单</button> --> <button class="pay-btn" @click="gotoPayment">再来一单</button>
</view> </view>
</view> </view>
</view> </view>
@ -267,17 +267,56 @@ export default {
}); });
}, },
gotoPayment() { gotoPayment() {
// //
// uni.navigateTo({ const transformedItems = this.orderInfo.commodity_order_item_list.map(goods => ({
// url: "/kitchen/pay/index", checked: true,
// }); commodity_goods_info: {
commodity_brief: "",
commodity_id: goods.goods_id,
commodity_pic: goods.commodity_pic,
goods_alias: goods.goods_name,
goods_carousel: "",
goods_detail_pic: "",
goods_intro: goods.goods_name,
goods_name: goods.goods_name,
goods_no: "",
goods_spec: goods.goods_spec,
goods_status: 1,
goods_unit: goods.goods_unit,
goods_video: "",
group_buy_activity_info: null,
id: goods.id,
is_same_day: goods.is_same_day || false,
is_support_same_day: goods.is_support_same_day || 2,
market_price: goods.sales_price,
sales_price: goods.sales_price,
stock_quantity: goods.stock_quantity
},
commodity_id: goods.goods_id,
count: goods.count,
create_time: this.orderInfo.create_time,
goods_id: goods.id,
group_buy_id: 0,
id: goods.id,
supplier_id: this.orderInfo.supplier_id,
supplier_name: this.orderInfo.supplier_name,
update_time: this.orderInfo.update_time,
user_id: this.orderInfo.user_id
}));
NavgateTo(`/packages/shop/groupPurchaseSubmit/index?shopCarList=${JSON.stringify(transformedItems)}`)
}, },
checkLogistics() { checkLogistics() {
NavgateTo(`/packages/myOrders/logistics/index`); NavgateTo(`/packages/myOrders/logistics/index`);
}, },
orderEvaluate() { orderEvaluate() {
NavgateTo(`/packages/myOrders/orderEvaluate/index`); NavgateTo(`/packages/myOrders/evaluate/index?item=${JSON.stringify(this.orderInfo)}`);
},
//
afterSale() {
NavgateTo(`/packages/myOrders/afterSale/index`);
} }
}, },
}; };

View File

@ -66,8 +66,8 @@
} }
.image-item image { .image-item image {
width: 80rpx; width: 100%;
height: 80rpx; height: 100%;
} }
.image-text { .image-text {

View File

@ -1,44 +1,38 @@
<template> <template>
<view class="evaluation-container"> <view class="evaluation-container">
<!-- 评价内容区域 --> <!-- 评价内容区域 -->
<view>
<view v-for="(item, index) in orderList" :key="index">
<view class="evaluation-content"> <view class="evaluation-content">
<!-- 订单头部信息 --> <!-- 订单头部信息 -->
<view class="order-header"> <view class="order-header">
<text class="order-name">{{ orderInfo.orderName }}</text> <text class="order-name">{{ item.supplier_name }}</text>
<text class="order-number">{{ orderInfo.orderNumber }}</text> <text class="order-number">{{ item.order_no }}</text>
</view> </view>
<view class="evaluation-area"> <view class="evaluation-area">
<text class="evaluation-text">{{ evaluationInfo.content }}</text> <text class="evaluation-text">{{ item.evaluate_info.user_review }}</text>
<!-- 评价图片区域 --> <!-- 评价图片区域 -->
<view class="image-list"> <view class="image-list" v-if="item.evaluate_info.review_image && item.evaluate_info.review_image.length > 0">
<view <view class="image-item" v-for="(img, index) in parseReviewImages(item.evaluate_info.review_image)" :key="index">
class="image-item" <image :src="img"></image>
v-for="(img, index) in evaluationInfo.images"
:key="index"
>
<image :src="img.url" mode="aspectFill"></image>
<text class="image-text">{{ img.text }}</text>
</view> </view>
</view> </view>
<text class="order-date">{{ orderInfo.date }}</text> <text class="order-date">{{ item.evaluate_info.create_time }}</text>
</view> </view>
<!-- 商品信息区域 --> <!-- 商品信息区域 -->
<view class="product-info"> <view class="product-info">
<view class="product-img"> <view class="product-img">
<image :src="productInfo.imageUrl" mode="aspectFit"></image> <image :src="item.commodity_order_item_list[0].commodity_pic"></image>
<view <view class="tag" v-if="item.commodity_order_item_list[0].is_same_day === 1" :key="index">当日达</view>
class="tag"
v-for="(tag, index) in productInfo.tags"
:key="index"
>{{ tag }}</view
>
</view> </view>
<view class="product-details"> <view class="product-details">
<text class="product-name">{{ productInfo.name }}</text> <text class="product-name">{{ item.commodity_order_item_list[0].goods_name }}</text>
<text class="product-spec">{{ productInfo.spec }}</text> <text class="product-spec">{{ item.commodity_order_item_list[0].goods_spec }}</text>
<text class="product-unit">{{ productInfo.unit }}</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>
</view> </view>
@ -47,30 +41,61 @@
<script> <script>
export default { export default {
props: {
orderData: {
type: Array,
default: () => []
}
},
data() { data() {
return { return {
orderInfo: { orderList: [],
orderName: "衡水商贸国际公司",
orderNumber: "4534534255",
date: "2025-07-21",
},
evaluationInfo: {
content: "评价文字内容",
images: [
{ url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/eval1.png", text: "评价图片" },
{ url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/eval2.png", text: "评价图片" },
{ url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/eval3.png", text: "评价图片" },
],
},
productInfo: {
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tags: ["当日达", "当日达"],
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
}; };
}, },
methods: {
//
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> </script>

View File

@ -334,6 +334,7 @@ export default {
}, },
onLoad(options) { onLoad(options) {
this.carList = JSON.parse(options.shopCarList) this.carList = JSON.parse(options.shopCarList)
console.log("🚀 ~ onLoad ~ JSON.parse(options.shopCarList):", JSON.parse(options.shopCarList))
}, },
onShow() { onShow() {
this.getUserAddress() this.getUserAddress()