|
|
- <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>
|