diff --git a/components/order/ServiceItems.vue b/components/order/ServiceItems.vue
new file mode 100644
index 0000000..27fb4f7
--- /dev/null
+++ b/components/order/ServiceItems.vue
@@ -0,0 +1,352 @@
+
+
+
+ 服务项目及费用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{pet.name}}
+
+
+
+
+
+ {{t.productName}}
+ ¥{{ t.salePrice && t.salePrice.toFixed(2) }} × {{t.quantity}} 次
+
+
+
+
+
+
+
+
+
+
+ 费用合计
+ ¥{{totalAmount.toFixed(2)}}
+
+
+ 平台优惠
+ - ¥{{discount.toFixed(2)}}
+
+
+ 会员优惠
+ - ¥{{memberDiscount.toFixed(2)}}
+
+
+ 应付金额
+ ¥{{finalAmount.toFixed(2)}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/otherPages/authentication/connectAddress/detail.vue b/otherPages/authentication/connectAddress/detail.vue
index 1a16534..d95f6af 100644
--- a/otherPages/authentication/connectAddress/detail.vue
+++ b/otherPages/authentication/connectAddress/detail.vue
@@ -129,10 +129,8 @@
// latitude: eidtItem?.value?.latitude || null,
// longitude: eidtItem?.value?.longitude || null
// }
- });
- onShow(() => {
getDetail()
- })
+ });
const setAddress = (res) => {
form.value.latitude = res.latitude
@@ -164,14 +162,23 @@
const onSave = async () => {
// 验证接单范围是否在3-15公里之间
- if (form.value.rangeNo < 3 || form.value.rangeNo > 15) {
+ if (isNaN(form.value.rangeNo - 1) || form.value.rangeNo < 3 || form.value.rangeNo > 15) {
uni.showToast({
- title: '接单范围必须在3-15公里之间',
+ title: '接单范围必须是3-15公里之间的数字',
icon: 'none'
})
return
}
+ //必须选择地区
+ if (!form.value.area) {
+ uni.showToast({
+ title: '请选择地区',
+ icon: 'none'
+ })
+ return
+ }
+
let code = null;
if (eidtItem?.value?.id) {
let result = await udpateAddress({
@@ -208,7 +215,8 @@
address: eidtItem?.value?.address || null,
status: eidtItem?.value?.status == 'true' || null,
latitude: form.value.latitude || eidtItem?.value?.latitude || null,
- longitude: form.value.latitude || eidtItem?.value?.longitude || null
+ longitude: form.value.latitude || eidtItem?.value?.longitude || null,
+ rangeNo: form.value.rangeNo || eidtItem?.value?.rangeNo || null
}
})
}
diff --git a/otherPages/orderTakingManage/detail/index.vue b/otherPages/orderTakingManage/detail/index.vue
index 7e38464..1e76c57 100644
--- a/otherPages/orderTakingManage/detail/index.vue
+++ b/otherPages/orderTakingManage/detail/index.vue
@@ -61,7 +61,7 @@
-
+
-
+
+ -->
+
+
+
@@ -205,7 +208,7 @@
- {{ pet.breed }}
+ {{ pet.breed }}({{ pet.bodyType }})
@@ -273,6 +276,8 @@
useStore
} from "vuex"
+ import ServiceItems from '@/components/order/ServiceItems.vue'
+
import dayjs from "dayjs";
import configPopup from '@/components/configPopup.vue'
const configPopupRef = ref(null)
@@ -291,6 +296,7 @@
const store = useStore();
const orderId = ref(null);
const orderDetail = ref({});
+ const serviceList = ref([]);
const showConfirmOrder = ref(false);
const showOrderSuccess = ref(false);
const value = ref("45619491656")
@@ -315,7 +321,7 @@
},
{
title : '个人订单',
- content : '订单为系统派发,请确认订单信息后再抢单',
+ content : '订单为个人订单,请确认订单信息后再接单',
},
{
title : '流失订单',
@@ -386,6 +392,78 @@
});
if (response.code == 200 && response.data) {
orderDetail.value = response.data;
+
+ let data = response.data.order.h5OrderVO;
+
+ //=====================服务项目以及费用的计算开始=====================
+
+ let items = []
+
+ //1、找出有哪些日期
+ let days = [...new Set(data.orderServiceList.map(item => item.serviceDate))]
+
+
+ days.forEach(day => {
+
+ let price = 0;
+
+ let itemsText = []
+
+ //2、找出每个日期对应的服务对象
+ let dayItems = data.orderServiceList.filter(item => item.serviceDate === day)
+
+ //3、找出每个服务对象对应的宠物
+ let pets = data.petVOList.filter(item => dayItems.some(dayItem => dayItem.petId === item.id))
+
+ //深度拷贝pets
+ pets = JSON.parse(JSON.stringify(pets))
+
+ //4、将每个服务对象添加进对应的宠物
+ pets.forEach(pet => {
+ pet.serviceList = dayItems.filter(item => item.petId === pet.id)
+
+ let itemList = []
+
+ //5、将每个服务对象中添加对应的项目
+ pet.serviceList.forEach(item => {
+ itemList.push(...(data.orderItemList.filter(n => n.orderServiceId == item.id)))
+ })
+
+ itemList.forEach(p => {
+ price += p.salePrice * p.quantity
+
+ itemsText = [...new Set([...itemsText, p.productName])]
+ })
+
+ pet.itemList = itemList
+ })
+
+ //6、将每个宠物添加进items
+ items.push({
+ price,
+ pets,
+ day,
+ itemsText,
+ })
+ })
+
+
+ //根据日期排序
+ items = items.sort((a, b) => dayjs(a.day).valueOf() - dayjs(b.day).valueOf())
+
+ items.forEach(n => {
+ n.day = dayjs(n.day).format('MM-DD')
+ })
+
+ console.log(items);
+
+ serviceList.value = items
+
+
+ //=====================服务项目以及费用的计算结束=====================
+
+
+
orderDetail.value.order.h5OrderVO.petVOList.forEach(pet => {
pet.productNameText = getProductNameText(pet.id, orderDetail.value.order.h5OrderVO.orderItemList,
@@ -445,9 +523,11 @@
}
function getTextList(){
- return orderDetail.value.order?.h5OrderVO
- .orderServiceList.map(item =>
- dayjs(item.serviceDate).format('MM-DD'))
+ // return orderDetail.value.order?.h5OrderVO
+ // .orderServiceList.map(item =>
+ // dayjs(item.serviceDate).format('MM-DD'))
+
+ return serviceList.value.map(n => n.day)
}
const toDetail = (id) => {
@@ -527,6 +607,8 @@
.desc {
color: #999999;
+ font-size: 28rpx;
+ margin-top: 20rpx;
}
}
@@ -542,7 +624,8 @@
background: #FFBF60;
color: white;
width: 100%;
- height: 60rpx;
+ font-size: 26rpx;
+ padding: 15rpx 20rpx;
border-radius: 30rpx;
}
}
diff --git a/pages/myOrdersManage/index.vue b/pages/myOrdersManage/index.vue
index b607c57..c79b0a2 100644
--- a/pages/myOrdersManage/index.vue
+++ b/pages/myOrdersManage/index.vue
@@ -100,7 +100,12 @@
import {
useStore
} from "vuex"
-import { getOrderServiceText, getProductNameText } from '@/utils/serviceTime.js'
+ import { getOrderServiceText, getProductNameText } from '@/utils/serviceTime.js'
+
+ onLoad(() => {
+ requestId.value = 0;
+ activeIndex.value = 1;
+ })
onShow(() => {
if (!getLoginStatus()) return;
@@ -112,6 +117,7 @@ import { getOrderServiceText, getProductNameText } from '@/utils/serviceTime.js'
const list = ref([])
const dateOrderList = ref([])
const loading = ref(false) // 添加loading状态
+ const requestId = ref(0) // 添加请求序列号
const store = useStore();
const userInfo = computed(() => {
@@ -154,6 +160,8 @@ import { getOrderServiceText, getProductNameText } from '@/utils/serviceTime.js'
function getList() {
loading.value = true; // 开始加载
+ requestId.value++; // 递增请求序列号
+ const currentRequestId = requestId.value; // 保存当前请求的ID
let index = current.value;
@@ -163,6 +171,11 @@ import { getOrderServiceText, getProductNameText } from '@/utils/serviceTime.js'
userId: userInfo.value.userId
})
.then(res => {
+ // 检查请求是否是最新的
+ if (currentRequestId !== requestId.value) {
+ return; // 如果不是最新请求,忽略响应
+ }
+
if (res.code == 200) {
list.value = res.data.rows
@@ -177,7 +190,8 @@ import { getOrderServiceText, getProductNameText } from '@/utils/serviceTime.js'
}
})
.finally(() => {
- if(activeIndex.value == 1){
+ // 只有最新请求才能关闭loading
+ if(activeIndex.value == 1 && currentRequestId === requestId.value){
loading.value = false; // 结束加载
}
})
@@ -189,6 +203,11 @@ import { getOrderServiceText, getProductNameText } from '@/utils/serviceTime.js'
masterId: userInfo.value.userId
})
.then(res => {
+ // 检查请求是否是最新的
+ if (currentRequestId !== requestId.value) {
+ return; // 如果不是最新请求,忽略响应
+ }
+
if (res.code == 200) {
dateOrderList.value = res.data
// 更新标签数量显示
@@ -200,7 +219,8 @@ import { getOrderServiceText, getProductNameText } from '@/utils/serviceTime.js'
}
})
.finally(() => {
- if(activeIndex.value == 2){
+ // 只有最新请求才能关闭loading
+ if(activeIndex.value == 2 && currentRequestId === requestId.value){
loading.value = false; // 结束加载
}
})
diff --git a/pages/orderTakingManage/components/list.vue b/pages/orderTakingManage/components/list.vue
index 56032d8..8035911 100644
--- a/pages/orderTakingManage/components/list.vue
+++ b/pages/orderTakingManage/components/list.vue
@@ -1,15 +1,23 @@
-
-
-
-
-
- 待接单
-
- 本单酬劳
- ¥{{ item.orderGive }}
+
+
+
+
+ 暂无订单数据
+
+
+
+
+
+
+
+
+ 待接单
+
+ 本单酬劳
+ ¥{{ item.orderGive }}
+
-
+
@@ -231,4 +240,23 @@ const noneOrder = async () => {
text-overflow: ellipsis;
-o-text-overflow:ellipsis;
}
+
+.empty-state {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 80rpx 40rpx;
+
+ .empty-image {
+ width: 200rpx;
+ height: 200rpx;
+ margin-bottom: 20rpx;
+ }
+
+ .empty-text {
+ color: #999;
+ font-size: 28rpx;
+ }
+}
\ No newline at end of file
diff --git a/pages/userManage/index.vue b/pages/userManage/index.vue
index 62bc6d0..315b198 100644
--- a/pages/userManage/index.vue
+++ b/pages/userManage/index.vue
@@ -11,11 +11,11 @@
{{getIsLogin()?userInfo.userName:"欢迎来到版宠师"}}
-
diff --git a/utils/getUrl.js b/utils/getUrl.js
index ac138f6..58d19fd 100644
--- a/utils/getUrl.js
+++ b/utils/getUrl.js
@@ -1,4 +1,4 @@
-let current = "develop";
+let current = "trial";
const accountInfo = wx.getAccountInfoSync();
// current = accountInfo.miniProgram.envVersion;
@@ -6,9 +6,9 @@ const api = {
develop:"http://127.0.0.1:8002",
// develop:"http://h5.xzaiyp.top",
// develop:"https://api.catmdogd.com/prod-api",
- // develop:"https://pet-admin.hhlm1688.com/api",
+ trial:"https://pet-admin.hhlm1688.com/api",
// develop: "http://youyi-test.natapp1.cc/prod-api", // 开发
- trial: "https://api.catmdogd.com/prod-api", //测试
+ // trial: "https://api.catmdogd.com/prod-api", //测试
release: "https://api.catmdogd.com/prod-api",
}