xiaokuaisong-xiaochengxu/uniapp04/pages/orderEvaluation/orderEvaluation.vue

220 lines
4.6 KiB
Vue
Raw Normal View History

2025-04-11 06:42:29 +00:00
<script setup>
import { ref, onMounted } from 'vue';
import { onLoad } from '@dcloudio/uni-app';
import { apiImageUrl } from '../../API/api';
const orderData = ref(null);
const userId = ref(uni.getStorageSync("userId")); // 从存储获取用户ID
const getOrder = () => {
uni.request({
url: apiImageUrl + '/api/orders/get/my',
method: 'GET',
data: {
id: uni.getStorageSync("evaluationOrderID")
},
header: {
'Content-Type': 'application/json',
'cookie': uni.getStorageSync("cookie") || ''
},
success(res) {
console.log(res);
orderData.value = res.data.data;
uni.setStorageSync("orderData", orderData.value)
showBusinessReview.value = true;
showDeliveryReview.value = !!orderData.value.errandId;
},
fail(err) {
console.log(err);
}
})
}
onMounted(() => {
getOrder();
});
// 评分和评价内容
const rateValueBusiness = ref(0);
const rateValueDelivery = ref(0);
const reviewContentBusiness = ref('');
const reviewContentDelivery = ref('');
// 显示控制
const showBusinessReview = ref(false);
const showDeliveryReview = ref(false);
// 评分变化处理
const onChangeBusiness = (e) => {
rateValueBusiness.value = e.value;
};
const onChangeDelivery = (e) => {
rateValueDelivery.value = e.value;
};
// 提交评价函数
const orderEvaluation = (isDelivery) => {
const baseData = {
orderId: orderData.value.id, // 订单ID
userId: orderData.value.userId, // 用户ID
rating: isDelivery ? rateValueDelivery.value : rateValueBusiness.value,
review: isDelivery ? reviewContentDelivery.value : reviewContentBusiness.value
};
const requestData = {
...baseData,
ratedEntityId: isDelivery===1 ? orderData.value.errandId : orderData.value.businessId,
ratedEntityType: isDelivery ? 1 : 0
};
uni.request({
url: apiImageUrl + '/api/level/add',
method: 'POST',
data: requestData,
header: {
'Content-Type': 'application/json',
'cookie': uni.getStorageSync("cookie") || ''
},
success(res) {
console.log(res);
if(res.data.code===0){
uni.showToast({
title: '评价成功',
icon: 'success'
});
setTimeout(() => {
uni.navigateBack();
}, 1500);
}
// 提交成功后跳转回订单页
else {
uni.showToast({
title:res.description,
icon: 'fail'
})
}
},
fail(err) {
console.log(err);
uni.showToast({
title: '提交失败',
icon: 'error'
});
}
});
}
2024-10-18 07:53:00 +00:00
</script>
<template>
2025-04-11 06:42:29 +00:00
<view class="viewport">
<!-- 商家评价 -->
<view v-if="showBusinessReview" class="center">
<p class="title">评价商家</p>
<uni-rate
v-model="rateValueBusiness"
@change="onChangeBusiness"
class="rate"
/>
<textarea
v-model="reviewContentBusiness"
class="review-content"
placeholder="请输入商家评价内容"
></textarea>
<button class="submit-button" @click="orderEvaluation(0)">提交商家评价</button>
</view>
<!-- 跑腿评价 -->
<view v-if="showDeliveryReview && orderData?.errandId" class="center">
<p class="title">评价跑腿</p>
<uni-rate
v-model="rateValueDelivery"
@change="onChangeDelivery"
class="rate"
/>
<textarea
v-model="reviewContentDelivery"
class="review-content"
placeholder="请输入跑腿评价内容"
></textarea>
<button class="submit-button" @click="orderEvaluation(1)">提交跑腿评价</button>
</view>
</view>
2024-10-18 07:53:00 +00:00
</template>
<style lang="scss">
page {
2025-04-11 06:42:29 +00:00
height: 100vh;
2024-10-18 07:53:00 +00:00
overflow: hidden;
background-color: #4095e5;
}
.active {
float: left;
width: 30%;
height: 100%;
}
.img {
margin: 15px;
}
.aboutMessage {
float: right;
width: 240px;
height: 100%;
.title {
font-size: 20px;
padding: 10px;
font-weight: 700;
}
.total {
color: #999;
padding-left: 10px;
}
.money {
color: #4095e5;
padding: 10px;
font-weight: 700;
}
}
.message {
width: 90%;
height: 100px;
border-radius: 25px;
background-color: #fff;
margin: 0 auto;
}
.viewport {
width: 90%;
2025-04-11 06:42:29 +00:00
height: 100vh;
2024-10-18 07:53:00 +00:00
border-radius: 15px;
background-color: #fff;
margin: 0 auto;
}
.center {
width: 80%;
2025-04-11 06:42:29 +00:00
height: 350px;
2024-10-18 07:53:00 +00:00
margin: 0 auto;
padding-top: 20px;
.title {
font-size: 20px;
padding: 10px;
font-weight: 700;
}
}
.review-content {
margin-top: 20px;
resize: none;
height: 100px;
margin-bottom: 16px;
}
.submit-button {
background-color: #4095e5;
color: white;
padding: 8px 16px;
border: none;
line-height: 30px;
border-radius: 30px;
}
</style>