Browse Source

feat(订单管理): 新增宠物服务时间弹窗并优化订单管理功能

- 新增宠物服务时间弹窗组件 `petServicePopup.vue`,用于展示订单中的宠物服务时间列表
- 修改 `systemOrder.vue`,将打卡按钮点击事件改为显示服务时间弹窗
- 优化 `timelineService.vue`,支持循环渲染多个服务时间点
- 新增 `additionalService.vue`,用于处理附加服务逻辑
- 更新 `detail.vue`,增加附加服务展示和步骤切换功能
- 添加 `testData.json`,提供订单管理模块的测试数据
master
前端-胡立永 1 month ago
parent
commit
5f5aff3667
8 changed files with 1778 additions and 61 deletions
  1. +3
    -0
      otherPages/myOrdersManage/clock/index.vue
  2. +371
    -0
      otherPages/myOrdersManage/service/additionalService.vue
  3. +209
    -21
      otherPages/myOrdersManage/service/detail.vue
  4. +145
    -0
      pages/myOrdersManage/components/petServicePopup.vue
  5. +47
    -5
      pages/myOrdersManage/components/systemOrder.vue
  6. +958
    -0
      pages/myOrdersManage/components/testData.json
  7. +37
    -34
      pages/myOrdersManage/components/timelineService.vue
  8. +8
    -1
      pages/myOrdersManage/index.vue

+ 3
- 0
otherPages/myOrdersManage/clock/index.vue View File

@ -225,10 +225,12 @@
onLoad((options) => {
orderId.value = options.id || null;
isRead.value = options.isRead || false;
itemOrderID.value = options.itemID
GetByOrderId()
});
const orderId = ref(0)
const itemOrderID = ref(0)
const isRead = ref(false)
@ -372,6 +374,7 @@
//
const params = {
orderId: orderId.value,
itemOrderId : itemOrderID.value,
glovePhoto: fileList.glove?.map(item => item.url).join(',') || '',
shoeCoverPhoto: fileList.ShoeCover?.map(item => item.url).join(',') || '',
//


+ 371
- 0
otherPages/myOrdersManage/service/additionalService.vue View File

@ -0,0 +1,371 @@
<template>
<view class="box box-size">
<view style="margin: 32rpx 0;">
<up-steps :current="currentStep" activeColor="#FFA042" inactiveColor="#999999" class="up-steps-custom">
<up-steps-item title="喂养要求" :titleStyle="{fontSize: '32rpx', fontWeight: 'bold', color: currentStep === 0 ? '#FFA042' : '#999999'}"></up-steps-item>
<up-steps-item title="清洁要求" :titleStyle="{fontSize: '32rpx', fontWeight: 'bold', color: currentStep === 1 ? '#FFA042' : '#999999'}"></up-steps-item>
<up-steps-item title="附加服务" :titleStyle="{fontSize: '32rpx', fontWeight: 'bold', color: currentStep === 2 ? '#FFA042' : '#999999'}"></up-steps-item>
</up-steps>
</view>
<view class="top box-size" :style="{borderRadius:'16rpx'}">
<view class="form-title">
您需要的附加服务
</view>
<!-- 陪玩服务 -->
<view class="mt32 ml10" v-if="form.playtimeService">
<view class="color-A55 size-30 fw400">
陪玩
</view>
<view class="size-30 mt32 fw400">
陪玩用具摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(form.playtimeToolsLocation)" :key="index"></u-image>
<view class="upload-btn" @click="uploadImage('playtimeToolsLocation')">
<up-icon name="camera-fill" size="40rpx" color="#FFBF60"></up-icon>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
您希望的互动方式和要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.playtimeRequirements" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="form.playtimeService"></view>
<!-- 活动区吸毛 -->
<view class="mt32 ml10" v-if="form.furCleaningService">
<view class="color-A55 size-30 fw400">
活动区吸毛
</view>
<view class="size-30 mt32 fw400">
吸毛用品摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(form.furCleaningToolsLocation)" :key="index"></u-image>
<view class="upload-btn" @click="uploadImage('furCleaningToolsLocation')">
<up-icon name="camera-fill" size="40rpx" color="#FFBF60"></up-icon>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明吸毛区域及要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.furCleaningRequirements" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="form.furCleaningService"></view>
<!-- 毛发梳理 -->
<view class="mt32 ml10" v-if="form.groomingService">
<view class="color-A55 size-30 fw400">
毛发梳理
</view>
<view class="size-30 mt32 fw400">
毛发梳理用品摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(form.groomingToolsLocation)" :key="index"></u-image>
<view class="upload-btn" @click="uploadImage('groomingToolsLocation')">
<up-icon name="camera-fill" size="40rpx" color="#FFBF60"></up-icon>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明毛发梳理要求(: 天数,次数等)
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.groomingRequirements" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="form.groomingService"></view>
<!-- 食具深度清洁 -->
<view class="mt32 ml10" v-if="form.deepCleaningService">
<view class="color-A55 size-30 fw400">
食具深度清洁
</view>
<view class="size-30 mt32 fw400">
需深度清洁的用具及消毒剂摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(form.deepCleaningToolsLocation)" :key="index"></u-image>
<view class="upload-btn" @click="uploadImage('deepCleaningToolsLocation')">
<up-icon name="camera-fill" size="40rpx" color="#FFBF60"></up-icon>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明食具/饮水机深度清洁要求(如清洁方式消毒剂使用方式频率等)
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.deepCleaningRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="form.deepCleaningService"></view>
<!-- 喂药上药 -->
<view class="mt32 ml10" v-if="form.administerMedication">
<view class="color-A55 size-30 fw400">
喂药上药
</view>
<view class="size-30 mt32 fw400">
药品摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(form.administerMedicationLocation)" :key="index"></u-image>
<view class="upload-btn" @click="uploadImage('administerMedicationLocation')">
<up-icon name="camera-fill" size="40rpx" color="#FFBF60"></up-icon>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明药品使用方式
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.administerMedicationRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<!-- 遛狗服务 -->
<view class="mt32 ml10" v-if="form.walkDog">
<view class="color-A55 size-30 fw400">
遛狗服务
</view>
<view class="size-30 mt32 fw400">
遛狗用品摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(form.walkDogToolsLocation)" :key="index"></u-image>
<view class="upload-btn" @click="uploadImage('walkDogToolsLocation')">
<up-icon name="camera-fill" size="40rpx" color="#FFBF60"></up-icon>
</view>
</view>
<!-- 雨天遛狗 -->
<view v-if="form.walkDogRainyDay">
<view class="size-30 mt32 fw400">
狗狗雨具位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(form.dogRainGearLocation)" :key="index"></u-image>
<view class="upload-btn" @click="uploadImage('dogRainGearLocation')">
<up-icon name="camera-fill" size="40rpx" color="#FFBF60"></up-icon>
</view>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
下雨天遛狗要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.walkDogRainRemark" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<!-- 遛狗时长 -->
<view v-if="form.isWalkDogDuration">
<view class="size-30 mt24" :style="{color:'#999999'}">
遛狗时长
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.walkDogDuration" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<!-- 狗狗行为 -->
<view v-if="form.isDogBehavior">
<view class="size-30 mt24" :style="{color:'#999999'}">
狗狗行为
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.dogBehavior" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<!-- 偏好区域 -->
<view v-if="form.isFavoriteRegion">
<view class="size-30 mt24" :style="{color:'#999999'}">
偏好区域
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.favoriteRegion" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<!-- 偏好路线 -->
<view v-if="form.isFavoriteRoute">
<view class="size-30 mt24" :style="{color:'#999999'}">
偏好路线
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.favoriteRoute" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<!-- 附加服务备注 -->
<view class="mt32 ml10" v-if="form.additionalService">
<view class="size-30 mt24" :style="{color:'#999999'}">
附加服务备注
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="form.additionalServicesRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<view class="buttom_ mt60 box-size level">
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}" @click="prevStep">
上一页
</view>
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}" @click="nextStep">
完成
</view>
</view>
</view>
</template>
<script>
import { getPetCareByPetId, savePetCare } from "@/api/order/order.js";
export default {
data() {
return {
form: {
//
additionalService: false,
playtimeService: false,
playtimeToolsLocation: '',
playtimeRequirements: '',
furCleaningService: false,
furCleaningToolsLocation: '',
furCleaningRequirements: '',
groomingService: false,
groomingToolsLocation: '',
groomingRequirements: '',
deepCleaningService: false,
deepCleaningToolsLocation: '',
deepCleaningRemarks: '',
administerMedication: false,
administerMedicationLocation: '',
administerMedicationRemarks: '',
additionalServicesPlacement: '',
additionalServicesPlacementRemark: '',
additionalServicesRemarks: '',
//
walkDog: false,
walkDogToolsLocation: '',
walkDogRainyDay: false,
dogRainGearLocation: '',
walkDogRainRemark: '',
isWalkDogDuration: false,
walkDogDuration: '',
isDogBehavior: false,
dogBehavior: '',
isFavoriteRegion: false,
favoriteRegion: '',
isFavoriteRoute: false,
favoriteRoute: ''
},
currentStep: 2, //
petId: 0,
imageField: '' //
}
},
onLoad(options) {
this.petId = options.petId;
if (this.petId) {
this.getPetCareData();
}
},
methods: {
//
getPetCareData() {
getPetCareByPetId(this.petId).then(res => {
if (res.data) {
this.form = { ...this.form, ...res.data };
}
}).catch(err => {
console.error('获取宠物服务档案失败', err);
});
},
// URL
handleImageUrl(url) {
if (!url) return [];
return url.split(',');
},
//
previewImage(url) {
uni.previewImage({
urls: [url]
});
},
//
uploadImage(field) {
this.imageField = field;
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: (res) => {
const tempFilePaths = res.tempFilePaths;
//
// URL
this.form[this.imageField] = tempFilePaths[0];
}
});
},
//
prevStep() {
uni.navigateBack();
},
// /
nextStep() {
//
this.saveData();
},
//
saveData() {
//
//
uni.showToast({
title: '保存成功',
icon: 'success',
duration: 2000,
success: () => {
setTimeout(() => {
uni.navigateBack({
delta: 2 //
});
}, 2000);
}
});
}
}
}
</script>
<style scoped lang="scss">
@import "detail.scss";
@import "steps-custom.scss";
.upload-btn {
width: 173rpx;
height: 230rpx;
background-color: #f5f5f5;
display: flex;
align-items: center;
justify-content: center;
margin-right: 10rpx;
}
.form-title {
font-size: 32rpx;
font-weight: bold;
color: #333;
padding: 30rpx 0 10rpx 0;
}
.fw400 {
font-weight: 400;
}
</style>

+ 209
- 21
otherPages/myOrdersManage/service/detail.vue View File

@ -59,7 +59,7 @@
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.dryFoodRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.dryFoodRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.includeDryFood"></view>
@ -77,7 +77,7 @@
<view :style="{color:'#999999'}">湿粮喂养重量</view>
<view class="level">
<view class="input_ mr10">
<input type="text" v-model="detail.wetFoodFeedWeight" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.wetFoodFeedWeight" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view>/(单位:)</view>
</view>
@ -86,11 +86,11 @@
<view :style="{color:'#999999'}">湿粮喂养频率</view>
<view class="level">
<view class="input_ mr10">
<input type="text" v-model="detail.wetFoodFeedFrequencyDays" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.wetFoodFeedFrequencyDays" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
<view class="input_ mr10">
<input type="text" v-model="detail.wetFoodFeedFrequencyTimes" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.wetFoodFeedFrequencyTimes" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
</view>
@ -135,7 +135,7 @@
生骨肉喂食说明
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.rawMeatFeedingInstructions" :style="{height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.rawMeatFeedingInstructions" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.includeRawMeat"></view>
@ -153,7 +153,7 @@
保健品喂养方式
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.healthSupplementsFeedingInstructions" :style="{height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.healthSupplementsFeedingInstructions" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.includeHealthSupplements"></view>
@ -171,7 +171,7 @@
零食喂养方式
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.snacksFeedingMethod" :style="{height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.snacksFeedingMethod" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.includeSnacks"></view>
@ -191,7 +191,7 @@
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.feedingTrayAutomaticFeederRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.feedingTrayAutomaticFeederRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
@ -210,7 +210,7 @@
饮用水添加要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.waterBowlRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.waterBowlRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
@ -223,7 +223,7 @@
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.otherRemark" :style="{height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.otherRemark" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
@ -249,11 +249,11 @@
<view :style="{color:'#999999'}">猫砂更换频率</view>
<view class="level">
<view class="input_ mr10">
<input type="text" v-model="detail.catLitterChangeFrequencyDays" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.catLitterChangeFrequencyDays" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
<view class="input_ mr10">
<input type="text" v-model="detail.catLitterChangeFrequencyTimes" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.catLitterChangeFrequencyTimes" :style="{width:'80rpx',height:'50rpx',fontSize:'30rpx'}">
</view>
<view></view>
</view>
@ -303,7 +303,7 @@
备注信息
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.urinePadRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
<input type="text" disabled v-model="detail.urinePadRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
@ -311,28 +311,206 @@
<!-- 附加服务内容 -->
<view v-if="currentStep === 2">
<view class="top box-size" :style="{borderRadius:'16rpx'}">
<view class="top box-size" :style="{borderRadius:'16rpx'}" v-if="detail.additionalService">
<view class="form-title">
附加服务
您需要的附加服务
</view>
<!-- 陪玩服务 -->
<view class="mt32 ml10" v-if="detail.playtimeService">
<view class="color-A55 size-30 fw400">
陪玩
</view>
<view class="size-30 mt32 fw400">
陪玩用具摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(detail.playtimeToolsLocation)" :key="index"></u-image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
您希望的互动方式和要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.playtimeRequirements" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.playtimeService"></view>
<!-- 活动区吸毛 -->
<view class="mt32 ml10" v-if="detail.furCleaningService">
<view class="color-A55 size-30 fw400">
活动区吸毛
</view>
<view class="size-30 mt32 fw400">
吸毛用品摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(detail.furCleaningToolsLocation)" :key="index"></u-image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明吸毛区域及要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.furCleaningRequirements" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.furCleaningService"></view>
<!-- 毛发梳理 -->
<view class="mt32 ml10" v-if="detail.groomingService">
<view class="color-A55 size-30 fw400">
毛发梳理
</view>
<view class="size-30 mt32 fw400">
毛发梳理用品摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(detail.groomingToolsLocation)" :key="index"></u-image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明毛发梳理要求(: 天数,次数等)
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.groomingRequirements" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.groomingService"></view>
<!-- 食具深度清洁 -->
<view class="mt32 ml10" v-if="detail.deepCleaningService">
<view class="color-A55 size-30 fw400">
食具深度清洁
</view>
<view class="size-30 mt32 fw400">
需深度清洁的用具及消毒剂摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(detail.deepCleaningToolsLocation)" :key="index"></u-image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明食具/饮水机深度清洁要求(如清洁方式消毒剂使用方式频率等)
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.deepCleaningRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.deepCleaningService"></view>
<!-- 喂药上药 -->
<view class="mt32 ml10" v-if="detail.administerMedication">
<view class="color-A55 size-30 fw400">
喂药上药
</view>
<view class="size-30 mt32 fw400">
药品摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(detail.administerMedicationLocation)" :key="index"></u-image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
请说明药品使用方式
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" disabled v-model="detail.administerMedicationRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<view class="line" :style="{borderRadius:'1rpx'}" v-if="detail.administerMedication"></view>
<!-- 遛狗服务 -->
<view class="mt32 ml10" v-if="detail.walkDog">
<view class="color-A55 size-30 fw400">
遛狗服务
</view>
<view class="size-30 mt32 fw400">
遛狗用品摆放位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(detail.walkDogToolsLocation)" :key="index"></u-image>
</view>
<!-- 雨天遛狗 -->
<view v-if="detail.walkDogRainyDay">
<view class="size-30 mt32 fw400">
狗狗雨具位置
</view>
<view class="img mt20">
<u-image class="img" :src="item" mode="aspectFill" width="173rpx" height="230rpx" @click="previewImage(item)" v-for="(item, index) in handleImageUrl(detail.dogRainGearLocation)" :key="index"></u-image>
</view>
<view class="size-30 mt24" :style="{color:'#999999'}">
下雨天遛狗要求
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.walkDogRainRemark" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<!-- 遛狗时长 -->
<view v-if="detail.isWalkDogDuration">
<view class="size-30 mt24" :style="{color:'#999999'}">
遛狗时长
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.walkDogDuration" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<!-- 狗狗行为 -->
<view v-if="detail.isDogBehavior">
<view class="size-30 mt24" :style="{color:'#999999'}">
狗狗行为
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.dogBehavior" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<!-- 偏好区域 -->
<view v-if="detail.isFavoriteRegion">
<view class="size-30 mt24" :style="{color:'#999999'}">
偏好区域
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.favoriteRegion" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
<!-- 偏好路线 -->
<view v-if="detail.isFavoriteRoute">
<view class="size-30 mt24" :style="{color:'#999999'}">
偏好路线
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.favoriteRoute" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
<!-- 这里可以添加附加服务的内容 -->
<!-- 附加服务备注 -->
<view class="mt32 ml10">
<view class="size-30 mt24" :style="{color:'#999999'}">
备注信息
附加服务备注
</view>
<view class="notes mt16 box-size ml--15" :style="{borderRadius:'16rpx'}">
<input type="text" v-model="detail.additionalServiceRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
<input type="text" v-model="detail.additionalServicesRemarks" :style="{height:'50rpx',fontSize:'30rpx'}">
</view>
</view>
</view>
</view>
<!-- 底部按钮 -->
<view class="buttom mt60 box-size">
<view class="buttom-item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}" @click="nextStep">
<view class="buttom_ mt60 box-size level" v-if="currentStep > 0">
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}" @click="prevStep">
上一页
</view>
<view class="buttom_item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}" @click="nextStep">
{{ currentStep === 2 ? '完成' : '下一页' }}
</view>
</view>
<view class="buttom mt60 box-size" v-else>
<view class="buttom-item level size-30" :style="{borderRadius:'41rpx',color:'#fff'}" @click="nextStep">
下一页
</view>
</view>
</view>
</template>
@ -361,11 +539,15 @@
onLoad(options) {
this.orderId = options.petId
this.getPetCareByPetId()
//
if (options.step) {
this.currentStep = parseInt(options.step)
}
},
methods: {
getPetCareByPetId() {
getPetCareByPetId(this.orderId).then(res => {
this.detail = res.data
this.detail = res.data || {}
})
},
handleImageUrl(url) {
@ -377,6 +559,12 @@
urls: [url]
})
},
//
prevStep() {
if (this.currentStep > 0) {
this.currentStep--;
}
},
//
nextStep() {
if (this.currentStep < 2) {


+ 145
- 0
pages/myOrdersManage/components/petServicePopup.vue View File

@ -0,0 +1,145 @@
<template>
<up-popup :show="show" mode="bottom" @close="close" :round="10" :closeable="true">
<view class="popup-container">
<view class="popup-title">宠物服务时间列表</view>
<view class="service-list">
<view class="service-item" v-for="(service, index) in serviceList" :key="index">
<view class="service-date">{{ service.serviceDate }}</view>
<view class="service-products">
<view class="product-item" v-for="(product, pIndex) in service.products" :key="pIndex">
<view class="product-name">{{ product.productName }}</view>
<view class="product-price">{{ product.salePrice }}</view>
</view>
</view>
</view>
</view>
</view>
</up-popup>
</template>
<script setup>
import { ref, defineProps, defineEmits } from 'vue';
const props = defineProps({
show: {
type: Boolean,
default: false
},
orderData: {
type: Object,
default: () => ({})
}
});
const emit = defineEmits(['close']);
const serviceList = ref([]);
//
const close = () => {
emit('close');
};
//
const processOrderData = (orderData) => {
if (!orderData || !orderData.h5OrderVO) return [];
const { orderServiceList, orderItemList } = orderData.h5OrderVO;
if (!orderServiceList || !orderItemList) return [];
//
const serviceMap = {};
//
orderServiceList.forEach(service => {
const serviceId = service.id;
const serviceDate = service.serviceDate;
if (!serviceMap[serviceId]) {
serviceMap[serviceId] = {
serviceDate,
products: []
};
}
});
//
orderItemList.forEach(item => {
const serviceId = item.orderServiceId;
if (serviceMap[serviceId]) {
serviceMap[serviceId].products.push({
productName: item.productName,
salePrice: item.salePrice,
pic: item.pic,
quantity: item.quantity,
spData: item.spData ? JSON.parse(item.spData) : {}
});
}
});
//
return Object.values(serviceMap);
};
// orderData
const updateServiceList = () => {
if (props.orderData && props.orderData.h5OrderVO) {
serviceList.value = processOrderData(props.orderData);
}
};
//
defineExpose({
updateServiceList
});
</script>
<style scoped lang="scss">
.popup-container {
padding: 30rpx;
max-height: 70vh;
overflow-y: auto;
}
.popup-title {
font-size: 32rpx;
font-weight: bold;
text-align: center;
margin-bottom: 30rpx;
}
.service-list {
.service-item {
margin-bottom: 30rpx;
background-color: #f8f8f8;
border-radius: 12rpx;
padding: 20rpx;
.service-date {
font-size: 28rpx;
font-weight: bold;
color: #333;
margin-bottom: 20rpx;
padding-bottom: 10rpx;
border-bottom: 1px solid #eee;
}
.service-products {
.product-item {
display: flex;
justify-content: space-between;
padding: 10rpx 0;
.product-name {
font-size: 26rpx;
color: #666;
}
.product-price {
font-size: 26rpx;
color: #FF530A;
}
}
}
}
}
</style>

+ 47
- 5
pages/myOrdersManage/components/systemOrder.vue View File

@ -23,7 +23,7 @@
<view class="mb28" v-if="item.type == 0">订单为系统派发请确认订单信息后再抢单</view>
<view class="flex flex-between">
<up-button type="primary" :text="btnTexts[item.orderStatus]" @click="toClock(item)" shape="circle"
<up-button type="primary" :text="btnTexts[item.orderStatus]" @click="showServicePopup(item)" shape="circle"
class="mr20" color="#FFAA48"></up-button>
<up-button type="primary" text="宠物档案" @click="toPet(item)" shape="circle" class="mr20"
@ -36,9 +36,13 @@
</view>
</up-list-item>
</up-list>
<!-- 宠物服务时间弹窗 -->
<pet-service-popup :show="popupVisible" :orderData="currentOrder" @close="closeServicePopup" ref="servicePopupRef" />
</template>
<script setup>
import { onMounted } from 'vue';
import { onMounted, ref } from 'vue';
import PetServicePopup from './petServicePopup.vue';
const scrolltolower = () => {
@ -60,18 +64,56 @@ import { onMounted } from 'vue';
});
const btnTexts = ['打卡', '打卡', '打开记录']
const orderStatus = ['待接单','进行中','已完成']
//
const popupVisible = ref(false);
const currentOrder = ref(null);
const servicePopupRef = ref(null);
function toClock(item) {
item.h5OrderVO.orderItemList
let itemID = 0
if(item.h5OrderVO.orderServiceList && item.h5OrderVO.orderServiceList[0]){
itemID = item.h5OrderVO.orderServiceList[0].id
}
const paths = [
`/otherPages/myOrdersManage/clock/index?id=${item.orderId}`,
`/otherPages/myOrdersManage/clock/index?id=${item.orderId}`,
`/otherPages/orderTakingManage/detail/index?isRead=true&id=${item.orderId}`,
`/otherPages/myOrdersManage/clock/index?id=${item.orderId}&itemID=${itemID}`,
`/otherPages/myOrdersManage/clock/index?id=${item.orderId}&itemID=${itemID}`,
`/otherPages/myOrdersManage/clock/index?isRead=true&id=${item.orderId}&itemID=${itemID}`,
]
uni.navigateTo({
url: paths[item.orderStatus]
})
}
//
function showServicePopup(item) {
//
// if (item.orderStatus === 2) {
return toClock(item);
// }
//
currentOrder.value = item;
popupVisible.value = true;
//
setTimeout(() => {
if (servicePopupRef.value) {
servicePopupRef.value.updateServiceList();
}
}, 100);
}
//
function closeServicePopup() {
popupVisible.value = false;
}
function toPet(item) {
uni.navigateTo({


+ 958
- 0
pages/myOrdersManage/components/testData.json View File

@ -0,0 +1,958 @@
{
"msg": "我的订单数据列表",
"code": 200,
"data": {
"total": 2,
"rows": [{
"id": 65,
"createTime": "2025-04-09 21:48:16",
"createBy": null,
"updateTime": "2025-04-14 21:01:28",
"updateBy": null,
"payTime": null,
"status": 1,
"num": null,
"price": 456.28,
"address": "上海市上海市长宁区江苏北路105弄小区5号楼503",
"type": "0",
"reason": null,
"userId": 1744109632960,
"userIdJson": null,
"petId": null,
"orderId": 6158437407770624,
"orderSn": "250123-6158437407770624",
"h5OrderVO": {
"orderId": 6158437407770624,
"payId": 6158437407770625,
"orderSn": "250123-6158437407770624",
"memberId": 40,
"totalAmount": 456.28,
"payAmount": 456.28,
"status": 3,
"aftersaleStatus": 1,
"orderItemList": [{
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437408278528,
"orderId": 6158437407770624,
"orderServiceId": 6158437407901696,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437408901120,
"orderId": 6158437407770624,
"orderServiceId": 6158437408540672,
"productId": 68,
"outProductId": "204",
"skuId": 410,
"outSkuId": "20401",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/15c037a63146da44d397c3ecf66ac342ec毛发梳理@3x.png",
"productName": "毛发梳理",
"salePrice": 15.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"版本\":\"通用\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437409130496,
"orderId": 6158437407770624,
"orderServiceId": 6158437408540672,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437410621440,
"orderId": 6158437407770624,
"orderServiceId": 6158437409916928,
"productId": 67,
"outProductId": "203",
"skuId": 407,
"outSkuId": "2031",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/103f9df8607139449881e320f15b218d88陪玩@3x.png",
"productName": "陪玩",
"salePrice": 20.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"时间\":\"15min\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437410981888,
"orderId": 6158437407770624,
"orderServiceId": 6158437409916928,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437412292608,
"orderId": 6158437407770624,
"orderServiceId": 6158437411702784,
"productId": 68,
"outProductId": "204",
"skuId": 410,
"outSkuId": "20401",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/15c037a63146da44d397c3ecf66ac342ec毛发梳理@3x.png",
"productName": "毛发梳理",
"salePrice": 15.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"版本\":\"通用\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437412587520,
"orderId": 6158437407770624,
"orderServiceId": 6158437411702784,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437413521408,
"orderId": 6158437407770624,
"orderServiceId": 6158437413095424,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437414176768,
"orderId": 6158437407770624,
"orderServiceId": 6158437413783552,
"productId": 68,
"outProductId": "204",
"skuId": 410,
"outSkuId": "20401",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/15c037a63146da44d397c3ecf66ac342ec毛发梳理@3x.png",
"productName": "毛发梳理",
"salePrice": 15.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"版本\":\"通用\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437414389760,
"orderId": 6158437407770624,
"orderServiceId": 6158437413783552,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437416028160,
"orderId": 6158437407770624,
"orderServiceId": 6158437415454720,
"productId": 67,
"outProductId": "203",
"skuId": 407,
"outSkuId": "2031",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/103f9df8607139449881e320f15b218d88陪玩@3x.png",
"productName": "陪玩",
"salePrice": 20.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"时间\":\"15min\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437416339456,
"orderId": 6158437407770624,
"orderServiceId": 6158437415454720,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}],
"orderServiceList": [{
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437415454720,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-31",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": {
"createBy": null,
"createTime": null,
"updateBy": null,
"updateTime": "2025-01-23 10:03:47",
"id": 69,
"name": "lulu",
"petType": "cat",
"gender": "女生",
"birthDate": null,
"remark": null,
"photo": "https://cdn.catmdogd.com/2025/01/1161c3c8198b4b4b81b39aa5abca194a68tmp_810ff2b601f3c6f93548a09a1c13b483.jpg",
"breed": "金渐层",
"bodyType": "小型(<10 KG)",
"personality": ["比较顽皮"],
"vaccineStatus": "每年都免疫",
"sterilization": null,
"dewormingStatus": "有驱虫史",
"doglicenseStatus": null,
"healthStatus": ["身体健康,无异常"],
"owner": "40"
},
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437413783552,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-30",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437413095424,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-29",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437411702784,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-28",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437409916928,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-27",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437408540672,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-26",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437407901696,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-25",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "EVENING",
"feedCount": null,
"petVo": null,
"pets": null
}],
"service": null,
"note": null,
"deliverySn": "12345678",
"createTime": "2025-01-23 20:22:11",
"paymentTime": "2025-01-23 20:22:16",
"receiverName": "郑巧",
"receiverPhone": "15154177708",
"receiverProvince": "上海市",
"receiverCity": "上海市",
"receiverDistrict": "长宁区",
"receiverDetailAddress": "江苏北路105弄小区5号楼503",
"timeToPay": null,
"staffId": null,
"petVOList": [{
"createBy": null,
"createTime": null,
"updateBy": null,
"updateTime": "2025-01-23 10:03:47",
"id": 69,
"name": "lulu",
"petType": "cat",
"gender": "女生",
"birthDate": null,
"remark": null,
"photo": "https://cdn.catmdogd.com/2025/01/1161c3c8198b4b4b81b39aa5abca194a68tmp_810ff2b601f3c6f93548a09a1c13b483.jpg",
"breed": "金渐层",
"bodyType": "小型(<10 KG)",
"personality": ["比较顽皮"],
"vaccineStatus": "每年都免疫",
"sterilization": null,
"dewormingStatus": "有驱虫史",
"doglicenseStatus": null,
"healthStatus": ["身体健康,无异常"],
"owner": "40"
}]
},
"managerOrderDetailVO": null,
"startTime": "2025-04-14 21:01:28",
"name": "胡立永",
"phone": "13055015802",
"orderStatus": 0,
"orderGiveProportion": 0.75,
"orderGivePrice": 342.21,
"isDate": 1,
"isAddress": 1,
"isPet": 1
}, {
"id": 68,
"createTime": "2025-04-09 21:48:16",
"createBy": null,
"updateTime": "2025-04-15 14:40:35",
"updateBy": null,
"payTime": null,
"status": 1,
"num": null,
"price": 456.28,
"address": "上海市上海市长宁区江苏北路105弄小区5号楼503",
"type": "0",
"reason": null,
"userId": 1744109632960,
"userIdJson": null,
"petId": null,
"orderId": 6158437407770624,
"orderSn": "250123-6158437407770624",
"h5OrderVO": {
"orderId": 6158437407770624,
"payId": 6158437407770625,
"orderSn": "250123-6158437407770624",
"memberId": 40,
"totalAmount": 456.28,
"payAmount": 456.28,
"status": 3,
"aftersaleStatus": 1,
"orderItemList": [{
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437408278528,
"orderId": 6158437407770624,
"orderServiceId": 6158437407901696,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437408901120,
"orderId": 6158437407770624,
"orderServiceId": 6158437408540672,
"productId": 68,
"outProductId": "204",
"skuId": 410,
"outSkuId": "20401",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/15c037a63146da44d397c3ecf66ac342ec毛发梳理@3x.png",
"productName": "毛发梳理",
"salePrice": 15.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"版本\":\"通用\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437409130496,
"orderId": 6158437407770624,
"orderServiceId": 6158437408540672,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437410621440,
"orderId": 6158437407770624,
"orderServiceId": 6158437409916928,
"productId": 67,
"outProductId": "203",
"skuId": 407,
"outSkuId": "2031",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/103f9df8607139449881e320f15b218d88陪玩@3x.png",
"productName": "陪玩",
"salePrice": 20.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"时间\":\"15min\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437410981888,
"orderId": 6158437407770624,
"orderServiceId": 6158437409916928,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437412292608,
"orderId": 6158437407770624,
"orderServiceId": 6158437411702784,
"productId": 68,
"outProductId": "204",
"skuId": 410,
"outSkuId": "20401",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/15c037a63146da44d397c3ecf66ac342ec毛发梳理@3x.png",
"productName": "毛发梳理",
"salePrice": 15.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"版本\":\"通用\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437412587520,
"orderId": 6158437407770624,
"orderServiceId": 6158437411702784,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437413521408,
"orderId": 6158437407770624,
"orderServiceId": 6158437413095424,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437414176768,
"orderId": 6158437407770624,
"orderServiceId": 6158437413783552,
"productId": 68,
"outProductId": "204",
"skuId": 410,
"outSkuId": "20401",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/15c037a63146da44d397c3ecf66ac342ec毛发梳理@3x.png",
"productName": "毛发梳理",
"salePrice": 15.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"版本\":\"通用\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437414389760,
"orderId": 6158437407770624,
"orderServiceId": 6158437413783552,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437416028160,
"orderId": 6158437407770624,
"orderServiceId": 6158437415454720,
"productId": 67,
"outProductId": "203",
"skuId": 407,
"outSkuId": "2031",
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/103f9df8607139449881e320f15b218d88陪玩@3x.png",
"productName": "陪玩",
"salePrice": 20.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 78,
"spData": "{\"时间\":\"15min\"}"
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437416339456,
"orderId": 6158437407770624,
"orderServiceId": 6158437415454720,
"productId": 63,
"outProductId": "P001",
"skuId": 404,
"outSkuId": null,
"productSnapshotId": null,
"skuSnapshotId": null,
"pic": "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/08ba3980c107c2472397b13ef9769257e1陪玩.png",
"productName": "专业遛狗",
"salePrice": 75.00,
"purchasePrice": null,
"quantity": 1,
"productCategoryId": 76,
"spData": "{\"时间\":\"60\"}"
}],
"orderServiceList": [{
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437415454720,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-31",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": {
"createBy": null,
"createTime": null,
"updateBy": null,
"updateTime": "2025-01-23 10:03:47",
"id": 69,
"name": "lulu",
"petType": "cat",
"gender": "女生",
"birthDate": null,
"remark": null,
"photo": "https://cdn.catmdogd.com/2025/01/1161c3c8198b4b4b81b39aa5abca194a68tmp_810ff2b601f3c6f93548a09a1c13b483.jpg",
"breed": "金渐层",
"bodyType": "小型(<10 KG)",
"personality": ["比较顽皮"],
"vaccineStatus": "每年都免疫",
"sterilization": null,
"dewormingStatus": "有驱虫史",
"doglicenseStatus": null,
"healthStatus": ["身体健康,无异常"],
"owner": "40"
},
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437413783552,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-30",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437413095424,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-29",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437411702784,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-28",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437409916928,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-27",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437408540672,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-26",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "AFTERNOON",
"feedCount": null,
"petVo": null,
"pets": null
}, {
"createBy": 40,
"createTime": "2025-01-23 20:22:11",
"updateBy": null,
"updateTime": null,
"id": 6158437407901696,
"orderId": 6158437407770624,
"pet": null,
"serviceFrequency": null,
"serviceDate": "2025-01-25",
"serviceTimeFirst": null,
"serviceTimeSecond": null,
"delFlag": 0,
"petId": 69,
"expectServiceTime": "EVENING",
"feedCount": null,
"petVo": null,
"pets": null
}],
"service": null,
"note": null,
"deliverySn": "12345678",
"createTime": "2025-01-23 20:22:11",
"paymentTime": "2025-01-23 20:22:16",
"receiverName": "郑巧",
"receiverPhone": "15154177708",
"receiverProvince": "上海市",
"receiverCity": "上海市",
"receiverDistrict": "长宁区",
"receiverDetailAddress": "江苏北路105弄小区5号楼503",
"timeToPay": null,
"staffId": null,
"petVOList": [{
"createBy": null,
"createTime": null,
"updateBy": null,
"updateTime": "2025-01-23 10:03:47",
"id": 69,
"name": "lulu",
"petType": "cat",
"gender": "女生",
"birthDate": null,
"remark": null,
"photo": "https://cdn.catmdogd.com/2025/01/1161c3c8198b4b4b81b39aa5abca194a68tmp_810ff2b601f3c6f93548a09a1c13b483.jpg",
"breed": "金渐层",
"bodyType": "小型(<10 KG)",
"personality": ["比较顽皮"],
"vaccineStatus": "每年都免疫",
"sterilization": null,
"dewormingStatus": "有驱虫史",
"doglicenseStatus": null,
"healthStatus": ["身体健康,无异常"],
"owner": "40"
}]
},
"managerOrderDetailVO": null,
"startTime": "2025-04-15 14:40:34",
"name": "胡立永",
"phone": "13055015802",
"orderStatus": 0,
"orderGiveProportion": 0.75,
"orderGivePrice": 342.21,
"isDate": 1,
"isAddress": 1,
"isPet": 1
}],
"code": 200,
"msg": "查询成功"
}
}

+ 37
- 34
pages/myOrdersManage/components/timelineService.vue View File

@ -13,15 +13,14 @@
</view>
<!-- 时间线主体 -->
<view class="timeline-body">
<view class="timeline-body" v-for="(item, index) in list">
<view class="timeline-line" :class="{'timeline-line-completed': status === 'completed'}"></view>
<!-- 服务时间点 -->
<view class="time-point">
<view class="time-icon">
<image src="/static/images/ydd/icon1.png" mode="aspectFit" class="time-image"></image>
</view>
<view class="time-text">{{ timeOfDay }}</view>
<view class="time-text">{{ item.address }}</view>
</view>
<!-- 服务内容卡片 -->
@ -33,7 +32,7 @@
<text>服务日期</text>
</view>
<view class="section-content date-content">
{{ fullDate }}
{{ item.fullDate }}
</view>
</view>
@ -47,7 +46,7 @@
</view>
</view>
<view class="section-content pet-list" v-if="!petListCollapsed">
<view v-for="(pet, index) in pets" :key="index" class="pet-item">
<view v-for="(pet, i) in item.petList" :key="i" class="pet-item">
<view class="pet-avatar">
<image :src="pet.avatar || '/static/images/ydd/dog.png'" mode="aspectFill" class="avatar-image"></image>
</view>
@ -73,7 +72,7 @@
<text>上门地址</text>
</view>
<view class="section-content address-content">
{{ address }}
{{ item.addressDetail }}
</view>
</view>
@ -98,39 +97,43 @@
type: String,
default: '2024-12-08'
},
timeOfDay: {
type: String,
default: '早上'
},
status: {
type: String,
default: 'pending' // 'pending' 'completed'
},
orderCount: {
type: Number,
default: 2
},
pets: {
type: Array,
default: () => [{
name: '小汪',
gender: 'male',
breed: '中华田园犬',
bodyType: '(小型犬)',
services: ['专业喂养', '提前熟悉', '陪玩'],
avatar: '/static/images/ydd/dog.png'
}, {
name: 'Billion',
gender: 'female',
breed: '豹猫',
bodyType: '(小型猫)',
services: ['上门喂养', '陪玩'],
avatar: '/static/images/ydd/cat.png'
}]
},
address: {
status : {
type: String,
default: '重庆市南岸区长嘉汇18栋9-2'
default: 'pending'
},
list: {
type: Array,
default: () => [
{
id: 1,
orderId: 1,
address: '广东省深圳市南山区',
addressDetail: '科技南二路111号',
fullDate : '2024-12-08 10:00',
petList : [
{
name: '小汪',
gender: 'male',
breed: '中华田园犬',
bodyType: '(小型犬)',
services: ['专业喂养', '提前熟悉', '陪玩'],
avatar: '/static/images/ydd/dog.png'
},
{
name: 'Billion',
gender: 'female',
breed: '豹猫',
bodyType: '(小型猫)',
services: ['上门喂养', '陪玩'],
avatar: '/static/images/ydd/cat.png'
}
]
}
]
}
});


+ 8
- 1
pages/myOrdersManage/index.vue View File

@ -35,7 +35,14 @@
<view class="container">
<systemOrder :list="list" :current="current" v-if="activeIndex == 1" />
<timelineService v-else />
<view v-else>
<timelineService
v-for="(item,index) in 10"
:key="index"
/>
</view>
<!-- <orderListByData :list="list" v-else /> -->
</view>
</view>


Loading…
Cancel
Save