<template>
|
|
<view class="personal-pet">
|
|
<view v-if="petList.length > 0" class="personal-pet-list">
|
|
<view v-for="(item, index) in petList" :key="index">
|
|
<view
|
|
:class="['personal-pet-list-item', item.sex === 0 ? 'personal-pet-list-item_backgroud_m' : 'personal-pet-list-item_backgroud_f' ]">
|
|
<view class="personal-pet-info">
|
|
<view>
|
|
<u-avatar :src="item.headImage || defaultPhoto" size="60" shape="circle"></u-avatar>
|
|
</view>
|
|
<view class="personal-pet-info-1">
|
|
<view class="personal-pet-info-2">
|
|
<view class="personal-pet-name">
|
|
{{ item.nickName }}
|
|
</view>
|
|
<view class="personal-pet-sex">
|
|
<img :src="item.sex === 0 ? '../../../static/images/sex/boy.svg' : '../../../static/images/sex/girl.svg'"
|
|
alt="sex" style="width: 16px;height: 16px;" />
|
|
</view>
|
|
</view>
|
|
<view class="personal-pet-info-3" style="width: 100%;">
|
|
<view style="max-width: 35%;">
|
|
{{ item.type || '未知' }}
|
|
</view>
|
|
<view class="personal-pet-info-age" style="max-width: 90px;">
|
|
{{ item.age || '未知' }}
|
|
</view>
|
|
<view style="max-width: 25%;">
|
|
体重{{ item.weight }}kg
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="personal-pet-info-disposition ellipsis">
|
|
性格: {{ item.personality }}
|
|
</view>
|
|
<view class="personal-pet-info-btns">
|
|
<view class="personal-pet-info-btn" @click="editPet(item)">
|
|
<u-icon name="edit-pen" color="#7d8196" size="16" style="margin-right: 5px;"></u-icon>
|
|
<view style="margin-left: 5px;">
|
|
编辑
|
|
</view>
|
|
</view>
|
|
<view class="personal-pet-info-btn" @click="deletePet(item)">
|
|
<u-icon name="trash" color="#7d8196" size="16"></u-icon>
|
|
<view style="margin-left: 5px;">
|
|
删除
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view v-else class="personal-pet-none">
|
|
<img src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/pet/catdog.png" alt="pet"
|
|
style="width: 149px;height: 124px;" mode="widthFix" />
|
|
<view class="personal-pet-none-text">这里还没有您的宠物,请点击添加吧~</view>
|
|
</view>
|
|
|
|
<view class="personal-pet-add">
|
|
<button class="personal-pet-add-btn" @click="addPet">
|
|
<view style="font-size: 16px;font-weight: 500;">
|
|
添加宠物
|
|
</view>
|
|
</button>
|
|
</view>
|
|
|
|
<view>
|
|
<u-picker :show="show" :columns="petTypes" @confirm="petTypeChange" @cancel="cancel"
|
|
:immediateChange="true"></u-picker>
|
|
</view>
|
|
|
|
<u-modal :show="showDel" @confirm="confirmDel" @cancel="cancelDel" ref="uModal" showCancelButton
|
|
:asyncClose="true" :content="delContent"></u-modal>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {
|
|
ref,
|
|
onMounted,
|
|
computed
|
|
} from 'vue';
|
|
// import {
|
|
// getDictList
|
|
// } from "@/api/system/user.js"
|
|
import {
|
|
getpetList,
|
|
delByPetId
|
|
} from "@/api/pet/index.js";
|
|
import {
|
|
useRouter
|
|
} from 'vue-router';
|
|
import {
|
|
onShow,
|
|
onPullDownRefresh
|
|
} from '@dcloudio/uni-app'
|
|
import {
|
|
useStore
|
|
} from "vuex"
|
|
|
|
const store = useStore();
|
|
const userInfo = computed(() => {
|
|
return store.getters.userInfo
|
|
})
|
|
|
|
const router = useRouter();
|
|
const defaultPhoto = ref('https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/pet/catdog.png');
|
|
const petList = ref([]);
|
|
const show = ref(false);
|
|
const showDel = ref(false);
|
|
const petTypes = ref([
|
|
[
|
|
'猫咪', '狗狗'
|
|
]
|
|
]);
|
|
const delContent = ref('');
|
|
const deleteId = ref('');
|
|
const petType = ref('');
|
|
|
|
const getPetList = async () => {
|
|
petList.value = [];
|
|
try {
|
|
const res = await getpetList({
|
|
userId: userInfo.value.userId
|
|
});
|
|
if (res && res.data) {
|
|
petList.value = res.data;
|
|
showDel.value = false;
|
|
}
|
|
} catch (error) {
|
|
console.error('获取宠物列表失败', error);
|
|
}
|
|
};
|
|
|
|
// const getPetTypeList = async () => {
|
|
// try {
|
|
// const res = await getDictList('pet_type');
|
|
// if (res.code === 200) {
|
|
// const petType = res.data.map(e => e.dictLabel);
|
|
// petTypes.value = [petType];
|
|
// } else {
|
|
// console.error('获取pet type失败');
|
|
// }
|
|
// } catch (error) {
|
|
// console.error('获取pet type列表失败', error);
|
|
// }
|
|
// };
|
|
|
|
const addPet = () => {
|
|
show.value = true;
|
|
};
|
|
|
|
const cancel = () => {
|
|
show.value = false;
|
|
};
|
|
|
|
const petTypeChange = (e) => {
|
|
petType.value = e.value[0];
|
|
show.value = false;
|
|
if (petType.value === '猫咪') {
|
|
uni.navigateTo({
|
|
url: "/otherPages/userManage/pet/petInfo?petType=0&optionType=add&userId="+userInfo.value.userId
|
|
})
|
|
}
|
|
if (petType.value === '狗狗') {
|
|
uni.navigateTo({
|
|
url: "/otherPages/userManage/pet/petInfo?petType=1&optionType=add&userId="+userInfo.value.userId
|
|
})
|
|
}
|
|
};
|
|
|
|
const editPet = (item) => {
|
|
if (item.petType === '猫咪' || item.petType === 0) {
|
|
uni.navigateTo({
|
|
url: `/otherPages/userManage/pet/petInfo?petType=0&optionType=edit&petId=${item.id}`
|
|
})
|
|
}
|
|
if (item.petType === '狗狗' || item.petType === 1) {
|
|
uni.navigateTo({
|
|
url: `/otherPages/userManage/pet/petInfo?petType=1&optionType=edit&petId=${item.id}`
|
|
})
|
|
}
|
|
};
|
|
|
|
const deletePet = (item) => {
|
|
delContent.value = "确定要删除" + item.nickName + '?';
|
|
showDel.value = true;
|
|
deleteId.value = item.id;
|
|
};
|
|
|
|
const confirmDel = async () => {
|
|
try {
|
|
await delByPetId({
|
|
id: deleteId.value
|
|
});
|
|
getPetList();
|
|
} catch (error) {
|
|
console.error('删除宠物失败', error);
|
|
}
|
|
};
|
|
|
|
const cancelDel = () => {
|
|
showDel.value = false;
|
|
deleteId.value = '';
|
|
};
|
|
|
|
// onMounted(() => {
|
|
// // getPetTypeList();
|
|
// getPetList();
|
|
// });
|
|
|
|
onShow(() => {
|
|
getPetList();
|
|
});
|
|
|
|
onPullDownRefresh(() => {
|
|
getPetList();
|
|
});
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.personal-pet {
|
|
position: relative;
|
|
height: 100%;
|
|
padding-bottom: 90px;
|
|
|
|
.personal-pet-add {
|
|
box-sizing: border-box;
|
|
background-color: #FFFFFF;
|
|
padding: 20rpx 20rpx 40rpx 20rpx;
|
|
width: 100%;
|
|
height: 160rpx;
|
|
position: fixed;
|
|
bottom: 0;
|
|
z-index: 100;
|
|
display: flex;
|
|
|
|
.personal-pet-add-btn {
|
|
width: 100%;
|
|
height: 90rpx;
|
|
border-radius: 6px;
|
|
background: #FFB13F;
|
|
font-size: 16px;
|
|
color: #FFFFFF;
|
|
}
|
|
}
|
|
|
|
.personal-pet-list {
|
|
.personal-pet-list-add {
|
|
width: 100%;
|
|
height: 44px;
|
|
background-color: #FFFFFF;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 0 15px;
|
|
|
|
.personal-pet-list-add-btn {
|
|
font-size: 14px;
|
|
color: #AAA;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
}
|
|
|
|
.personal-pet-list-item_backgroud_m {
|
|
background: linear-gradient(179deg, #EDF5FE 0.75%, #FFF 34.11%);
|
|
}
|
|
|
|
.personal-pet-list-item_backgroud_f {
|
|
background: linear-gradient(179deg, #FFF4F6 0.75%, #FFF 34.11%);
|
|
}
|
|
|
|
.personal-pet-list-item {
|
|
margin: 10px 10px 0 10px;
|
|
border-radius: 5px;
|
|
padding: 20px 10px 10px;
|
|
|
|
.personal-pet-info {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-start;
|
|
|
|
.personal-pet-info-1 {
|
|
margin-left: 10px;
|
|
width: calc(100% - 60px);
|
|
|
|
.personal-pet-info-2 {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
|
|
.personal-pet-name {
|
|
color: #333;
|
|
font-size: 16px;
|
|
margin-right: 10px;
|
|
}
|
|
}
|
|
|
|
.personal-pet-info-3 {
|
|
display: flex;
|
|
align-items: baseline;
|
|
font-size: 14px;
|
|
margin-top: 5px;
|
|
color: #7D8196;
|
|
|
|
.personal-pet-info-age {
|
|
padding: 0 10px;
|
|
margin: 0 10px;
|
|
border-left: solid 2px #7D8196;
|
|
border-right: solid 2px #7D8196;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.personal-pet-info-disposition {
|
|
padding: 10px;
|
|
color: #7D8196;
|
|
font-size: 14px;
|
|
background: #f9f9f9;
|
|
border-radius: 5px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.personal-pet-info-btns {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
margin-top: 10px;
|
|
|
|
.personal-pet-info-btn {
|
|
display: flex;
|
|
font-size: 14px;
|
|
color: #7D8196;
|
|
margin-left: 20px;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
.personal-pet-none {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
margin-top: 40%;
|
|
|
|
.personal-pet-none-text {
|
|
color: #666;
|
|
text-align: center;
|
|
font-size: 14px;
|
|
width: 100%;
|
|
margin-top: 10px;
|
|
}
|
|
}
|
|
|
|
}
|
|
</style>
|