<template>
|
|
<!-- <view>打卡</view> -->
|
|
<view class="box box-size">
|
|
<view class="top box-size" :style="{borderRadius:'16rpx'}">
|
|
<view class="form-title">
|
|
个人准备
|
|
</view>
|
|
<view class="mt32 ml10">
|
|
<span :style="{fontSize:'30rpx',fontWeight:'400'}">手套照片</span>
|
|
<span :style="{fontSize:'26rpx',color:'#C7C7C7'}">(至少1张)</span>
|
|
</view>
|
|
<view class="level">
|
|
<view class="mt20 ml10">
|
|
|
|
<up-upload :fileList="fileList.glove" @afterRead="afterRead" @delete="deletePic" name="glove"
|
|
multiple :maxCount="2" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
|
|
|
|
</view>
|
|
</view>
|
|
<view class="mt32 ml10">
|
|
<span :style="{fontSize:'30rpx',fontWeight:'400'}">鞋套照片</span>
|
|
<span :style="{fontSize:'26rpx',color:'#C7C7C7'}">(至少1张)</span>
|
|
</view>
|
|
<view class="level">
|
|
<view class="mt20 ml10">
|
|
<up-upload :fileList="fileList.ShoeCover" @afterRead="afterRead" @delete="deletePic"
|
|
name="ShoeCover" multiple :maxCount="2" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
|
|
<view class="form-title">
|
|
宠物状态记录
|
|
</view>
|
|
<view v-for="(pet, index) in petList" :key="index">
|
|
<view class="mt32 ml10">
|
|
<span :style="{fontSize:'30rpx',fontWeight:'400'}">{{ pet.title }}照片</span>
|
|
<span :style="{fontSize:'26rpx',color:'#C7C7C7'}">(至少2张)</span>
|
|
</view>
|
|
<view class="level">
|
|
<view class="mt20 ml10 mr20">
|
|
<up-upload :fileList="fileList['pet' + index]" @afterRead="afterRead" @delete="deletePic"
|
|
:name="'pet' + index" multiple :maxCount="2" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode=""
|
|
:style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
|
|
<view class="form-title">
|
|
基础服务记录
|
|
</view>
|
|
<view class="mt32 ml10" :style="{fontSize:'30rpx',fontWeight:'400'}">粮碗前后对比 </view>
|
|
<view class="level">
|
|
<view class="mt20 ml10">
|
|
<up-upload :fileList="fileList.foodA" @afterRead="afterRead" @delete="deletePic" name="foodA"
|
|
multiple :maxCount="1" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}">前</view>
|
|
</view>
|
|
<view class="mt20 ml10 ml28">
|
|
<up-upload :fileList="fileList.foodB" @afterRead="afterRead" @delete="deletePic" name="foodB"
|
|
multiple :maxCount="1" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}">后</view>
|
|
</view>
|
|
</view>
|
|
<view class="mt32 ml10" :style="{fontSize:'30rpx',fontWeight:'400'}">水碗前后对比 </view>
|
|
<view class="level">
|
|
<view class="mt20 ml10">
|
|
<up-upload :fileList="fileList.waterA" @afterRead="afterRead" @delete="deletePic" name="waterA"
|
|
multiple :maxCount="1" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}">前</view>
|
|
</view>
|
|
<view class="mt20 ml10 ml28">
|
|
<up-upload :fileList="fileList.waterB" @afterRead="afterRead" @delete="deletePic" name="waterB"
|
|
multiple :maxCount="1" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}">后</view>
|
|
</view>
|
|
</view>
|
|
<view class="mt32 ml10" :style="{fontSize:'30rpx',fontWeight:'400'}">猫砂盆、尿垫前后对比 </view>
|
|
<view class="level">
|
|
<view class="mt20 ml10">
|
|
<up-upload :fileList="fileList.urinalA" @afterRead="afterRead" @delete="deletePic" name="urinalA"
|
|
multiple :maxCount="1" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}">前</view>
|
|
</view>
|
|
<view class="mt20 ml10 ml28">
|
|
<up-upload :fileList="fileList.urinalB" @afterRead="afterRead" @delete="deletePic" name="urinalB"
|
|
multiple :maxCount="1" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
<view class="jus-center level" :style="{color:'#999999',fontSize:'22rpx',width:'131rpx'}">后</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
|
|
<view class="form-title">
|
|
定制服务记录
|
|
</view>
|
|
<view class="mt32 ml10">
|
|
<span :style="{fontSize:'30rpx',fontWeight:'400'}">遛狗</span>
|
|
<span :style="{fontSize:'26rpx',color:'#C7C7C7'}">(2-3张)</span>
|
|
</view>
|
|
<view class="level">
|
|
<view class="mt20 ml10 mr20">
|
|
<up-upload :fileList="fileList.testa" @afterRead="afterRead" @delete="deletePic" name="testa"
|
|
multiple :maxCount="3" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
</view>
|
|
</view>
|
|
<view class="mt32 ml10">
|
|
<span :style="{fontSize:'30rpx',fontWeight:'400'}">陪玩</span>
|
|
<span :style="{fontSize:'26rpx',color:'#C7C7C7'}">(2-3张)</span>
|
|
</view>
|
|
<view class="level">
|
|
<view class="mt20 ml10 mr20">
|
|
<up-upload :fileList="fileList.testb" @afterRead="afterRead" @delete="deletePic" name="testb"
|
|
multiple :maxCount="3" width="131rpx" height="131rpx" :disabled="isRead">
|
|
|
|
<image src="/static/images/ydd/add_photo.png" mode="" :style="{width:'131rpx',height:'131rpx'}">
|
|
</image>
|
|
|
|
</up-upload>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="top mt24 box-size" :style="{borderRadius:'16rpx'}">
|
|
<view class="form-title">
|
|
其他补充信息(非必填)
|
|
</view>
|
|
<view class="mt32 ml10" :style="{color:'#999999',fontSize:'30rpx'}">
|
|
可记录一下今日趣事、宠物状况、提醒事项等
|
|
</view>
|
|
<view class="mt24">
|
|
<textarea name="" id="" cols="30" rows="10" placeholder="请输入内容"
|
|
:style="{color:'#999999',fontSize:'30rpx',backgroundColor:'#F5F5F5',borderRadius:'16rpx',width:'681rpx',height:'180rpx'}"
|
|
class="pd20 box-size" :disabled="isRead"></textarea>
|
|
</view>
|
|
</view>
|
|
<view class="buttom mt60 box-size"
|
|
style="display: flex;gap: 20rpx;"
|
|
>
|
|
<view class="buttom-item buttom-item-2 level size-30"
|
|
@click="saveDraft(false)"
|
|
:style="{borderRadius:'41rpx',color:'#ff842c'}">
|
|
保存草稿
|
|
</view>
|
|
|
|
<view class="buttom-item level size-30"
|
|
@click="submit"
|
|
:style="{borderRadius:'41rpx',color:'#fff'}">
|
|
确定提交
|
|
</view>
|
|
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {
|
|
onMounted,
|
|
reactive,
|
|
ref,
|
|
} from "vue";
|
|
import {
|
|
onLoad
|
|
} from '@dcloudio/uni-app'
|
|
import {
|
|
ossUpload
|
|
} from '@/utils/oss-upload/oss/index.js'
|
|
|
|
import { orderItemLogGetByOrderId } from '@/api/order/order.js'
|
|
import {
|
|
getOrderPetById,
|
|
orderItemLogAddOrUpdate,
|
|
} from "@/api/order/order.js";
|
|
|
|
onLoad((options) => {
|
|
orderId.value = options.id || null;
|
|
isRead.value = options.isRead || false;
|
|
itemOrderID.value = options.itemID
|
|
serviceId.value = options.serviceId;
|
|
GetByOrderId()
|
|
});
|
|
|
|
const orderId = ref(0)
|
|
const itemOrderID = ref(0)
|
|
const serviceId = ref(0)
|
|
const isRead = ref(false)
|
|
|
|
|
|
const fileList = reactive({
|
|
// glove: [],//手套
|
|
// ShoeCover: [],//鞋套
|
|
// food: [],//粮碗
|
|
// water: [],//水碗
|
|
// urinal: [],//猫砂盆、尿盆
|
|
})
|
|
|
|
const form = ref({})
|
|
|
|
const petList = ref([
|
|
// {
|
|
// title: '小汪'
|
|
// },
|
|
// {
|
|
// title: '大黄'
|
|
// },
|
|
])
|
|
|
|
|
|
|
|
// 删除图片
|
|
const deletePic = (event) => {
|
|
if (fileList[event.name]) {
|
|
fileList[event.name].splice(event.index, 1);
|
|
}
|
|
};
|
|
|
|
// 新增图片
|
|
const afterRead = (event) => {
|
|
if (!fileList[event.name]) {
|
|
fileList[event.name] = []
|
|
}
|
|
event.file.forEach(n => {
|
|
ossUpload(n.url)
|
|
.then(url => {
|
|
fileList[event.name].push({
|
|
url
|
|
})
|
|
})
|
|
})
|
|
};
|
|
|
|
function submit() {
|
|
// 参数效验
|
|
if (!fileList.glove || fileList.glove.length == 0) {
|
|
return msg('请上传鞋套照片')
|
|
}
|
|
if (!fileList.ShoeCover || fileList.ShoeCover.length == 0) {
|
|
return msg('请上传鞋套照片')
|
|
}
|
|
|
|
for (let i = 0; i < petList.value.length; i++) {
|
|
if (!fileList['pet' + i] || fileList['pet' + i].length < 2) {
|
|
return msg(`请上传${petList.value[i].title}照片`)
|
|
}
|
|
}
|
|
|
|
if (!fileList.foodA || fileList.foodA.length < 1 ||
|
|
!fileList.foodB || fileList.foodB.length < 1) {
|
|
return msg('请上传粮碗前后照片')
|
|
}
|
|
|
|
if (!fileList.waterA || fileList.waterA.length < 1 ||
|
|
!fileList.waterB || fileList.waterB.length < 1) {
|
|
return msg('请上传水碗前后照片')
|
|
}
|
|
|
|
if (!fileList.urinalA || fileList.urinalA.length < 1 ||
|
|
!fileList.urinalB || fileList.urinalB.length < 1) {
|
|
return msg('请上传猫砂盆、尿盆照片')
|
|
}
|
|
|
|
saveDraft(true)
|
|
}
|
|
|
|
function GetByOrderId(){
|
|
orderItemLogGetByOrderId(serviceId.value)
|
|
.then(res => {
|
|
if(res.code == 200 && res.data) {
|
|
const data = res.data;
|
|
form.value = data
|
|
// 回显手套照片
|
|
if(data.glovePhoto) {
|
|
fileList.glove = data.glovePhoto.split(',').map(url => ({ url }));
|
|
}
|
|
// 回显鞋套照片
|
|
if(data.shoeCoverPhoto) {
|
|
fileList.ShoeCover = data.shoeCoverPhoto.split(',').map(url => ({ url }));
|
|
}
|
|
// 回显宠物照片
|
|
if(data.petPhoto) {
|
|
const pets = JSON.parse(data.petPhoto);
|
|
petList.value = pets;
|
|
pets.forEach((pet, index) => {
|
|
if(pet.fileList) {
|
|
fileList['pet' + index] = pet.fileList.split(',').map(url => ({ url }));
|
|
}
|
|
});
|
|
}
|
|
// 回显粮碗照片
|
|
if(data.grainBowlFront) fileList.foodA = data.grainBowlFront.split(',').map(url => ({ url }));
|
|
if(data.grainBowlAfter) fileList.foodB = data.grainBowlAfter.split(',').map(url => ({ url }));
|
|
// 回显水碗照片
|
|
if(data.waterBowlFront) fileList.waterA = data.waterBowlFront.split(',').map(url => ({ url }));
|
|
if(data.waterBowlAfter) fileList.waterB = data.waterBowlAfter.split(',').map(url => ({ url }));
|
|
// 回显猫砂盆/尿垫照片
|
|
if(data.basinFront) fileList.urinalA = data.basinFront.split(',').map(url => ({ url }));
|
|
if(data.basinAfter) fileList.urinalB = data.basinAfter.split(',').map(url => ({ url }));
|
|
// 回显定制服务照片
|
|
if(data.workDogImage) fileList.testa = data.workDogImage.split(',').map(url => ({ url }));
|
|
if(data.workPalyImage) fileList.testb = data.workPalyImage.split(',').map(url => ({ url }));
|
|
}else{
|
|
getOrderPetByIdFN()
|
|
}
|
|
})
|
|
}
|
|
|
|
function getOrderPetByIdFN(){
|
|
getOrderPetById(orderId.value)
|
|
.then(res => {
|
|
if(res.code == 200){
|
|
res.data.forEach((n, i) => {
|
|
fileList['pet' + i] = []
|
|
})
|
|
res.data.forEach((n, i) => {
|
|
petList.value.push({
|
|
title : n.name,
|
|
id : n.id,
|
|
})
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
function saveDraft(flag) {
|
|
// 将所有图片数组转换为逗号分隔的字符串
|
|
const params = {
|
|
orderId: orderId.value,
|
|
itemOrderId : itemOrderID.value,
|
|
itemDateId : serviceId.value,
|
|
glovePhoto: fileList.glove?.map(item => item.url).join(',') || '',
|
|
shoeCoverPhoto: fileList.ShoeCover?.map(item => item.url).join(',') || '',
|
|
// 合并所有宠物照片
|
|
petPhoto: JSON.stringify(
|
|
petList.value.map((pet, index) => {
|
|
return {
|
|
id : pet.id,
|
|
title : pet.title,
|
|
fileList: fileList['pet' + index]?.map(item => item.url).join(',') || ''
|
|
};
|
|
})
|
|
),
|
|
// 粮碗照片
|
|
grainBowlFront: fileList.foodA?.map(item => item.url).join(',') || '',
|
|
grainBowlAfter: fileList.foodB?.map(item => item.url).join(',') || '',
|
|
// 水碗照片
|
|
waterBowlFront: fileList.waterA?.map(item => item.url).join(',') || '',
|
|
waterBowlAfter: fileList.waterB?.map(item => item.url).join(',') || '',
|
|
// 猫砂盆/尿垫照片
|
|
basinFront: fileList.urinalA?.map(item => item.url).join(',') || '',
|
|
basinAfter: fileList.urinalB?.map(item => item.url).join(',') || '',
|
|
// 定制服务照片
|
|
workDogImage: fileList.testa?.map(item => item.url).join(',') || '',
|
|
workPalyImage: fileList.testb?.map(item => item.url).join(',') || '',
|
|
// 备注信息
|
|
notes: form.value.notes || '',
|
|
}
|
|
|
|
if(form.value.id) {
|
|
params.id = form.value.id
|
|
}
|
|
|
|
if(flag) {
|
|
params.submitFlag = 1
|
|
}
|
|
|
|
orderItemLogAddOrUpdate(params)
|
|
.then(res => {
|
|
if(res.code === 200) {
|
|
uni.showToast({
|
|
title: '提交成功',
|
|
icon: 'success'
|
|
})
|
|
// 如果是确认提交(非草稿),则返回上一页
|
|
setTimeout(() => {
|
|
uni.navigateBack()
|
|
}, 1500)
|
|
} else {
|
|
uni.showToast({
|
|
title: res.msg || '提交失败',
|
|
icon: 'none'
|
|
})
|
|
}
|
|
})
|
|
.catch(err => {
|
|
uni.showToast({
|
|
title: '提交失败',
|
|
icon: 'none'
|
|
})
|
|
})
|
|
}
|
|
|
|
function msg(content) {
|
|
uni.showToast({
|
|
title: content,
|
|
icon: 'none'
|
|
})
|
|
}
|
|
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
@import"index.scss"
|
|
</style>
|