|
@@ -1,13 +1,17 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <el-dialog :model-value="visible" @update:model-value="$emit('update:visible', $event)" title="新增宠物" width="800px" destroy-on-close append-to-body>
|
|
|
|
|
|
|
+ <el-dialog :model-value="visible" @update:model-value="$emit('update:visible', $event)" title="新增宠物" width="800px"
|
|
|
|
|
+ destroy-on-close append-to-body>
|
|
|
<el-tabs v-model="activeTab">
|
|
<el-tabs v-model="activeTab">
|
|
|
<el-tab-pane label="基本信息" name="basic">
|
|
<el-tab-pane label="基本信息" name="basic">
|
|
|
<el-form :model="form" label-width="100px">
|
|
<el-form :model="form" label-width="100px">
|
|
|
<el-row>
|
|
<el-row>
|
|
|
<el-col :span="24" style="display: flex; justify-content: center; margin-bottom: 20px">
|
|
<el-col :span="24" style="display: flex; justify-content: center; margin-bottom: 20px">
|
|
|
- <el-upload class="avatar-uploader" action="#" :show-file-list="false" :auto-upload="false" :on-change="handleUploadFile">
|
|
|
|
|
|
|
+ <el-upload class="avatar-uploader" action="#" :show-file-list="false" :auto-upload="false"
|
|
|
|
|
+ :on-change="handleUploadFile">
|
|
|
<el-avatar v-if="avatarDisplayUrl" :src="avatarDisplayUrl" :size="80" />
|
|
<el-avatar v-if="avatarDisplayUrl" :src="avatarDisplayUrl" :size="80" />
|
|
|
- <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
|
|
|
|
|
|
+ <el-icon v-else class="avatar-uploader-icon">
|
|
|
|
|
+ <Plus />
|
|
|
|
|
+ </el-icon>
|
|
|
</el-upload>
|
|
</el-upload>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
@@ -23,15 +27,14 @@
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="性别">
|
|
<el-form-item label="性别">
|
|
|
<el-select v-model="form.gender" placeholder="请选择">
|
|
<el-select v-model="form.gender" placeholder="请选择">
|
|
|
- <el-option v-for="dict in sys_pet_gender" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
|
|
|
|
|
|
|
+ <el-option v-for="dict in sys_pet_gender" :key="dict.value" :label="dict.label"
|
|
|
|
|
+ :value="parseInt(dict.value)" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="品种" required>
|
|
<el-form-item label="品种" required>
|
|
|
- <el-select v-model="form.breed" placeholder="请选择品种" style="width: 100%" filterable allow-create default-first-option>
|
|
|
|
|
- <el-option v-for="dict in sys_pet_breed" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
|
|
- </el-select>
|
|
|
|
|
|
|
+ <el-input v-model="form.breed" placeholder="请输入品种" style="width: 100%" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
@@ -42,16 +45,19 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="体重(kg)" required><el-input-number v-model="form.weight" :min="0" :precision="1" style="width: 100%" /></el-form-item>
|
|
|
|
|
|
|
+ <el-form-item label="体重(kg)" required><el-input-number v-model="form.weight" :min="0" :precision="1"
|
|
|
|
|
+ style="width: 100%" /></el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="年龄(岁)" required><el-input-number v-model="form.age" :min="0" style="width: 100%" /></el-form-item>
|
|
|
|
|
|
|
+ <el-form-item label="年龄(岁)" required><el-input-number v-model="form.age" :min="0"
|
|
|
|
|
+ style="width: 100%" /></el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="性格关键词"><el-input v-model="form.personality" placeholder="如:活泼、粘人" /></el-form-item>
|
|
<el-form-item label="性格关键词"><el-input v-model="form.personality" placeholder="如:活泼、粘人" /></el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="萌宠性格"><el-input v-model="form.cutePersonality" type="textarea" placeholder="详细描述" /></el-form-item>
|
|
|
|
|
|
|
+ <el-form-item label="萌宠性格"><el-input v-model="form.cutePersonality" type="textarea"
|
|
|
|
|
+ placeholder="详细描述" /></el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
|
<el-form-item label="宠物标签">
|
|
<el-form-item label="宠物标签">
|
|
@@ -77,7 +83,8 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="入门方式" required>
|
|
<el-form-item label="入门方式" required>
|
|
|
<el-radio-group v-model="form.entryMethod">
|
|
<el-radio-group v-model="form.entryMethod">
|
|
|
- <el-radio v-for="dict in sys_entry_method" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
|
|
|
|
|
|
|
+ <el-radio v-for="dict in sys_entry_method" :key="dict.value" :value="dict.value">{{ dict.label
|
|
|
|
|
+ }}</el-radio>
|
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="密码" v-if="form.entryMethod === 'password'" required>
|
|
<el-form-item label="密码" v-if="form.entryMethod === 'password'" required>
|
|
@@ -98,7 +105,8 @@
|
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="是否有攻击倾向" required>
|
|
<el-form-item label="是否有攻击倾向" required>
|
|
|
- <el-switch v-model="form.aggression" active-text="是" inactive-text="否" :active-value="1" :inactive-value="0" />
|
|
|
|
|
|
|
+ <el-switch v-model="form.aggression" active-text="是" inactive-text="否" :active-value="1"
|
|
|
|
|
+ :inactive-value="0" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="疫苗情况" required>
|
|
<el-form-item label="疫苗情况" required>
|
|
|
<el-radio-group v-model="form.vaccineStatus">
|
|
<el-radio-group v-model="form.vaccineStatus">
|
|
@@ -109,9 +117,13 @@
|
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="疫苗凭证">
|
|
<el-form-item label="疫苗凭证">
|
|
|
- <el-upload class="avatar-uploader" action="#" :show-file-list="false" :auto-upload="false" :on-change="handleUploadVaccineCert">
|
|
|
|
|
- <img v-if="vaccineCertDisplayUrl" :src="vaccineCertDisplayUrl" class="avatar" style="width: 100px; height: 100px; object-fit: cover" />
|
|
|
|
|
- <el-icon v-else class="avatar-uploader-icon" style="width: 100px; height: 100px; line-height: 100px"><Plus /></el-icon>
|
|
|
|
|
|
|
+ <el-upload class="avatar-uploader" action="#" :show-file-list="false" :auto-upload="false"
|
|
|
|
|
+ :on-change="handleUploadVaccineCert">
|
|
|
|
|
+ <img v-if="vaccineCertDisplayUrl" :src="vaccineCertDisplayUrl" class="avatar"
|
|
|
|
|
+ style="width: 100px; height: 100px; object-fit: cover" />
|
|
|
|
|
+ <el-icon v-else class="avatar-uploader-icon" style="width: 100px; height: 100px; line-height: 100px">
|
|
|
|
|
+ <Plus />
|
|
|
|
|
+ </el-icon>
|
|
|
</el-upload>
|
|
</el-upload>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="既往病史" required>
|
|
<el-form-item label="既往病史" required>
|
|
@@ -148,8 +160,8 @@ const props = defineProps({
|
|
|
const emit = defineEmits(['update:visible', 'success'])
|
|
const emit = defineEmits(['update:visible', 'success'])
|
|
|
|
|
|
|
|
const { proxy } = getCurrentInstance()
|
|
const { proxy } = getCurrentInstance()
|
|
|
-const { sys_pet_gender, sys_pet_type, sys_pet_size, sys_pet_breed, sys_house_type, sys_entry_method } = toRefs(
|
|
|
|
|
- proxy?.useDict('sys_pet_gender', 'sys_pet_type', 'sys_pet_size', 'sys_pet_breed', 'sys_house_type', 'sys_entry_method')
|
|
|
|
|
|
|
+const { sys_pet_gender, sys_pet_type, sys_pet_size, sys_house_type, sys_entry_method } = toRefs(
|
|
|
|
|
+ proxy?.useDict('sys_pet_gender', 'sys_pet_type', 'sys_pet_size', 'sys_house_type', 'sys_entry_method')
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
const activeTab = ref('basic')
|
|
const activeTab = ref('basic')
|
|
@@ -265,7 +277,7 @@ const handleUploadVaccineCert = async (file) => {
|
|
|
const saveData = () => {
|
|
const saveData = () => {
|
|
|
if (!form.name) return ElMessage.warning('请输入宠物姓名')
|
|
if (!form.name) return ElMessage.warning('请输入宠物姓名')
|
|
|
if (!form.userId) return ElMessage.warning('请先选择或新增所属主人')
|
|
if (!form.userId) return ElMessage.warning('请先选择或新增所属主人')
|
|
|
- if (!form.breed) return ElMessage.warning('请选择品种');
|
|
|
|
|
|
|
+ if (!form.breed) return ElMessage.warning('请输入品种');
|
|
|
if (!form.size) return ElMessage.warning('请选择体型');
|
|
if (!form.size) return ElMessage.warning('请选择体型');
|
|
|
if (form.weight === undefined || form.weight === null) return ElMessage.warning('请输入体重(kg)');
|
|
if (form.weight === undefined || form.weight === null) return ElMessage.warning('请输入体重(kg)');
|
|
|
if (form.age === undefined || form.age === null) return ElMessage.warning('请输入年龄(岁)');
|
|
if (form.age === undefined || form.age === null) return ElMessage.warning('请输入年龄(岁)');
|
|
@@ -306,6 +318,7 @@ onMounted(() => {
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.avatar-uploader-icon:hover {
|
|
.avatar-uploader-icon:hover {
|
|
|
border-color: var(--el-color-primary);
|
|
border-color: var(--el-color-primary);
|
|
|
}
|
|
}
|