<template>
|
|
<view class="">
|
|
<view class="personal-pet-basic-info">
|
|
<view class="personal-pet-info-title border-bottom">
|
|
宠物基本信息
|
|
</view>
|
|
<u--form labelPosition="left" :model="model" ref="uForm">
|
|
<u-form-item required label="昵称" prop="petBaseInfo.name" labelWidth="80" borderBottom>
|
|
<u--input v-model="petBaseInfo.name" placeholder="请输入宠物昵称" @change="nameChange"
|
|
placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
|
|
</u-form-item>
|
|
<u-form-item label="性别" prop="petBaseInfo.gender" labelWidth="80" borderBottom @click="showSex = true">
|
|
<u--input v-model="petBaseInfo.gender" disabled disabledColor="#ffffff" placeholder="请选择"
|
|
placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
|
|
<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
|
|
</u-form-item>
|
|
<u-form-item required label="品种" prop="petBaseInfo.breed" labelWidth="80" borderBottom @click="breedSelectOpen">
|
|
<u--input v-model="petBaseInfo.breed" disabled disabledColor="#ffffff" placeholder="请选择"
|
|
placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
|
|
<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
|
|
</u-form-item>
|
|
<u-form-item required label="体重" prop="petBaseInfo.bodyType" labelWidth="80" borderBottom @click="showWeight = true"
|
|
ref="item1">
|
|
<u--input v-model="petBaseInfo.bodyType" disabled disabledColor="#ffffff" placeholder="请选择"
|
|
placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
|
|
<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
|
|
</u-form-item>
|
|
<u-form-item label="出生年月" prop="petBaseInfo.birthDate" labelWidth="80" borderBottom @click="yearMonthOpen">
|
|
<u--input v-model="petBaseInfo.birthDate" disabled disabledColor="#ffffff" placeholder="请选择"
|
|
placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
|
|
<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
|
|
</u-form-item>
|
|
<u-form-item required label="性格" prop="petBaseInfo.personality" labelWidth="80" borderBottom
|
|
@click="dispositionSelectOpen">
|
|
<u--input v-model="petBaseInfo.personality" disabled disabledColor="#ffffff" placeholder="请选择"
|
|
placeholderStyle="text-align:right;color:#AAA" border="none" inputAlign="right"></u--input>
|
|
<u-icon slot="right" name="arrow-right" color="#AAA"></u-icon>
|
|
</u-form-item>
|
|
</u--form>
|
|
</view>
|
|
|
|
<u-picker :show="showSex" :showToolbar='false' :columns="sexActions" @cancel="showSex = false" :immediateChange="true"
|
|
@confirm="sexSelect"></u-picker>
|
|
<u-picker :show="showWeight" :showToolbar='false' :columns="weightActions" @cancel="showWeight = false" :immediateChange="true"
|
|
@confirm="weightSelect"></u-picker>
|
|
|
|
|
|
<u-datetime-picker :maxDate='getMaxDate()' :minDate="getMinDate()" :show="showBirthday" v-model="tempBirthday" mode="year-month" @confirm="yearMonthConfirm"
|
|
@cancel="yearMonthClose"></u-datetime-picker>
|
|
|
|
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { getDictList } from "@/api/system/user"
|
|
export default {
|
|
data() {
|
|
return {
|
|
showSex: false,
|
|
showWeight: false,
|
|
showBirthday: false,
|
|
sexActions: [['男生','女生']],
|
|
weightActions: [['小型(<10 KG)','中型(10~20KG)', '大型(20KG以上)']],
|
|
tempBirthday: ''
|
|
}
|
|
},
|
|
|
|
watch: {
|
|
'petBaseInfo.breed': {
|
|
handler(newVal) {
|
|
console.log('品种数据更新:', newVal);
|
|
this.updatePetBaseInfo();
|
|
},
|
|
immediate: true
|
|
}
|
|
},
|
|
props:{
|
|
petType: {
|
|
type: String,
|
|
default: 'dog'
|
|
},
|
|
petBaseInfo:{
|
|
type: Object,
|
|
default: ()=> ({
|
|
name: '',
|
|
gender: '',
|
|
breed: '',
|
|
bodyType: '',
|
|
birthDate: '',
|
|
personality: ''
|
|
})
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
nameChange(){
|
|
this.updatePetBaseInfo()
|
|
},
|
|
sexSelect(e) {
|
|
this.petBaseInfo.gender = e.value[0];
|
|
this.showSex = false;
|
|
this.updatePetBaseInfo()
|
|
},
|
|
weightSelect(e) {
|
|
this.petBaseInfo.bodyType = e.value[0];
|
|
this.showWeight=false;
|
|
this.updatePetBaseInfo()
|
|
},
|
|
breedSelectOpen() {
|
|
// 跳转到品种选择页面
|
|
uni.navigateTo({
|
|
url: `/pages/personalCenter/breedSelect?petType=${this.petType}&selectedBreed=${encodeURIComponent(this.petBaseInfo.breed || '')}`
|
|
});
|
|
},
|
|
|
|
yearMonthOpen() {
|
|
if (this.petBaseInfo.birthDate) {
|
|
this.tempBirthday = Number(new Date(this.petBaseInfo.birthDate))
|
|
} else {
|
|
this.tempBirthday = Number(new Date())
|
|
}
|
|
this.showBirthday = true;
|
|
},
|
|
yearMonthClose() {
|
|
this.showBirthday = false;
|
|
},
|
|
yearMonthConfirm(e) {
|
|
const timeFormat = uni.$u.timeFormat;
|
|
this.petBaseInfo.birthDate = timeFormat(e.value, 'yyyy-mm');
|
|
this.showBirthday = false;
|
|
this.updatePetBaseInfo()
|
|
},
|
|
dispositionSelectOpen() {
|
|
// 跳转到性格选择页面
|
|
uni.navigateTo({
|
|
url: `/pages/personalCenter/personalitySelect?personality=${encodeURIComponent(this.petBaseInfo.personality || '')}`
|
|
});
|
|
},
|
|
|
|
updatePetBaseInfo() {
|
|
// 触发 update 事件,将修改后的 petBaseInfo 对象发送给父组件
|
|
this.$emit('update:petBaseInfo', this.petBaseInfo);
|
|
},
|
|
|
|
|
|
getMaxDate(){
|
|
return Date.now()
|
|
},
|
|
getMinDate(){
|
|
let dt = new Date();
|
|
dt.setFullYear(dt.getFullYear() - 30)
|
|
return Date.parse(dt)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style >
|
|
.personal-pet-basic-info{
|
|
background-color: #fff;
|
|
margin-top: 10px;
|
|
padding: 10px 20px;
|
|
}
|
|
|
|
</style>
|