初步完成动物管理的动物添加、删除功能

This commit is contained in:
bicey 2024-05-18 17:59:23 +08:00
parent ed3c4d4a7c
commit 7d209d3fbb
4 changed files with 276 additions and 23 deletions

View File

@ -1,11 +1,101 @@
<script> <script>
export default { export default {
name: "ZooAnimalFormDialog" name: "ZooAnimalFormDialog",
data() {
return {
form:{
id: '',
name: '',
sex: '雄',
species: '',//
weight: 0,
height: 0,
state: 0,//0 1
roleId: null,//id
color: '',//
features: '',//
habit: ''//
},
formAction: {
idDisable:false,
}
}
},
props: {
animal: {
type: Object,
}
},
mounted() {
//
if (this.animal) {
this.form = this.animal
this.formAction.idDisable = true
}
},
beforeUnmount() {
console.log('ZooAnimalFormDialog-beforeUnmount',this);
}
} }
</script> </script>
<template> <template>
<el-form label-width="auto">
<!-- <div>-->
<!-- animalForm:{-->
<!-- id: '',-->
<!-- name: '',-->
<!-- sex: '雄',-->
<!-- species: '',//-->
<!-- weight: 0,-->
<!-- height: 0,-->
<!-- state: 0,//0 1-->
<!-- roleId: null,//id-->
<!-- color: '',//-->
<!-- features: '',//-->
<!-- habit: ''//-->
<!-- }-->
<!-- </div>-->
<el-form-item label="动物ID">
<el-input v-model="form.id" placeholder="请设置动物ID" :disabled="formAction.idDisable"/>
</el-form-item>
<el-form-item label="动物名称">
<el-input v-model="form.name" placeholder="动物名称"/>
</el-form-item>
<el-form-item label="性别">
<el-select v-model="form.sex" placeholder="选择性别">
<el-option label="雄性" value="雄性"/>
<el-option label="雌性" value="雌性"/>
</el-select>
</el-form-item>
<el-form-item label="动物种类">
<el-input v-model="form.species" placeholder="动物种类"/>
</el-form-item>
<el-form-item label="动物体重">
<el-input v-model="form.weight" placeholder="动物体重"/>
</el-form-item>
<el-form-item label="动物身高">
<el-input v-model="form.height" placeholder="动物身高"/>
</el-form-item>
<el-form-item label="动物状态">
<el-input v-model="form.state" placeholder="动物状态"/>
</el-form-item>
<el-form-item label="饲养员ID">
<el-input v-model="form.roleId" placeholder="饲养员ID"/>
</el-form-item>
<el-form-item label="动物颜色">
<el-input v-model="form.color" placeholder="动物颜色"/>
</el-form-item>
<el-form-item label="动物特征">
<el-input v-model="form.features" placeholder="动物特征"/>
</el-form-item>
<el-form-item label="生活习性">
<el-input v-model="form.habit" placeholder="生活习性"/>
</el-form-item>
<div class="right">
<slot :form="form"></slot>
</div>
</el-form>
</template> </template>
<style scoped> <style scoped>

View File

@ -3,11 +3,13 @@ export default {
name: "ZooUserFormDialog", name: "ZooUserFormDialog",
data() { data() {
return { return {
userForm: { form: {
username: '', username: '',
password: '', password: '',
auth: 0, auth: 0,
},
formAction: {
usernameDisable:false,
} }
} }
}, },
@ -19,7 +21,8 @@ export default {
mounted() { mounted() {
// //
if (this.user) { if (this.user) {
this.userForm = this.user this.formAction.usernameDisable = true
this.form = this.user
} }
}, },
beforeUnmount() { beforeUnmount() {
@ -31,25 +34,25 @@ export default {
<template> <template>
<el-form label-width="auto"> <el-form label-width="auto">
<el-form-item label="用户名"> <el-form-item label="用户名">
<el-input v-model="userForm.username" autocomplete="off" placeholder="请设置用户名"/> <el-input v-model="form.username" placeholder="请设置用户名" :disabled="formAction.usernameDisable"/>
</el-form-item> </el-form-item>
<el-form-item label="密码"> <el-form-item label="密码">
<el-input <el-input
v-model="userForm.password" v-model="form.password"
type="password" type="password"
placeholder="请设置登录密码" placeholder="请设置登录密码"
show-password show-password
/> />
</el-form-item> </el-form-item>
<el-form-item label="身份"> <el-form-item label="身份">
<el-select v-model="userForm.auth" placeholder="选择身份"> <el-select v-model="form.auth" placeholder="选择身份">
<el-option label="管理员" :value="0"/> <el-option label="管理员" :value="0"/>
<el-option label="饲养员" :value="1"/> <el-option label="饲养员" :value="1"/>
<el-option label="兽医" :value="2"/> <el-option label="兽医" :value="2"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<div class="right"> <div class="right">
<slot :form="userForm"></slot> <slot :form="form"></slot>
</div> </div>
</el-form> </el-form>
</template> </template>

View File

@ -1,15 +1,37 @@
<script> <script>
import {copy} from "@/utils/common.js"; import {copy} from "@/utils/common.js";
import {Delete, DocumentAdd, Edit} from "@element-plus/icons-vue";
import ZooUserFormDialog from "@/components/ZooUserFormDialog.vue";
import ZooAnimalFormDialog from "@/components/ZooAnimalFormDialog.vue";
export default { export default {
name: "ZooAnimal", name: "ZooAnimal",
components: {ZooAnimalFormDialog, ZooUserFormDialog},
data() { data() {
return { return {
animals:[], animals:[],
tableData:[] tableData:[],
searchInput: {
// auth: '',
// keyWord: ''
},
dialog: {
addDialogVisible: false,//
editDialogVisible: false,//
editData: {}
}
} }
}, },
computed: { computed: {
DocumentAdd() {
return DocumentAdd
},
Edit() {
return Edit
},
Delete() {
return Delete
},
dataFilters() { dataFilters() {
// //
// let data = copy(this.tableData) // let data = copy(this.tableData)
@ -24,7 +46,114 @@ export default {
// }) // })
// return data // return data
return this.tableData return this.tableData
} },
},
methods: {
showEditDialog(animal) {
//使animalid
this.dialog.editData = this.animals.find(e => e.id === animal.id)
console.log('点击了编辑', this.dialog.editData)
this.dialog.editDialogVisible = true
},
//
isEmpty(form) {
// if (!form.username || !form.password) {
if (!form.name) {
//
return ElMessage({
message: '动物名不能为空',
type: 'warning',
})
}
},
editAnimal(form) {
console.log('确认编辑动物', form)
//
return this.isEmpty(form);
//
if (false) {
return ElMessage({
message: '编辑失败',
type: 'warning',
})
}
//
if (false) {
return ElMessage({
message: '编辑成功',
type: 'success',
})
}
//
this.dialog.editDialogVisible = false//
},
deleteUser(animal) {
console.log('删除动物', animal)
return ElMessageBox.confirm(
'该操作不可撤销,是否继续?',
'删除动物:'+animal.name,
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {
//
//
ElMessage({
type: 'success',
message: '删除成功',
})
}).catch(() => {
ElMessage({
type: 'info',
message: '取消删除',
})
})
},
addAnimal(form) {
console.log('添加动物', form)
//
return this.isEmpty(form);
//
if (false) {
return ElMessage({
message: '该动物已存在',
type: 'warning',
})
}
//
if (false) {
return ElMessage({
message: '添加成功',
type: 'success',
})
}
//
this.dialog.addDialogVisible = false//
},
// searchUser() {
// console.log('', this.searchInput)
// let searchResult = []
// this.users.forEach(e => {
// if (e.username.includes(this.searchInput.keyWord)) {
// searchResult.push(this.copy(e))
// }
// })
// let searchResult2 = []
// console.log('this.searchInput.auth', this.searchInput.auth, typeof this.searchInput.auth == 'number')
// if (typeof this.searchInput.auth === 'number') {
// searchResult.forEach(e => {
// if (e.auth === this.searchInput.auth) {
// searchResult2.push(this.copy(e))
// }
// })
// searchResult = searchResult2
// }
// this.tableData = searchResult;
// },
}, },
mounted() { mounted() {
// //
@ -32,7 +161,7 @@ export default {
let animal = { let animal = {
id: i, id: i,
name: 'animal' + (i + 3), name: 'animal' + (i + 3),
sex: Math.floor(Math.random() * 2) === 0 ? '雌' : '雄', sex: Math.floor(Math.random() * 2) === 0 ? '雌' : '雄',
species: Math.floor(Math.random() * 10).toString(),// species: Math.floor(Math.random() * 10).toString(),//
weight: (Math.random() * 2000).toFixed(2), weight: (Math.random() * 2000).toFixed(2),
height: (Math.random() * 10).toFixed(2), height: (Math.random() * 10).toFixed(2),
@ -53,7 +182,7 @@ export default {
<div class="animals-root"> <div class="animals-root">
<div class="select"> <div class="select">
<div class="left"> <div class="left">
<!-- <el-button type="primary" :icon="User" @click="dialog.addDialogVisible = true">创建用户</el-button>--> <el-button type="primary" :icon="DocumentAdd" @click="dialog.addDialogVisible = true">添加动物</el-button>
</div> </div>
<div class="right"> <div class="right">
<!-- <el-input--> <!-- <el-input-->
@ -103,6 +232,35 @@ export default {
</el-table> </el-table>
</div> </div>
</div> </div>
<!-- 添加动物对话框-->
<el-dialog v-model="dialog.addDialogVisible" title="添加动物" width="500" align-center draggable overflow>
<ZooAnimalFormDialog>
<template #default="scope">
<el-button @click="dialog.addDialogVisible = false">
取消
</el-button>
<el-button type="primary" @click="addAnimal(scope.form)">
添加
</el-button>
</template>
</ZooAnimalFormDialog>
</el-dialog>
<!-- 编辑用户对话框-->
<el-dialog v-model="dialog.editDialogVisible" title="编辑动物" width="500" align-center draggable overflow
destroy-on-close>
<ZooAnimalFormDialog :animal="dialog.editData">
<template #default="scope">
<el-button @click="dialog.editDialogVisible = false">
取消
</el-button>
<el-button type="primary" @click="editAnimal(scope.form)">
修改
</el-button>
</template>
</ZooAnimalFormDialog>
</el-dialog>
</template> </template>
<style scoped> <style scoped>

View File

@ -59,7 +59,7 @@ export default {
dialog: { dialog: {
addDialogVisible: false,// addDialogVisible: false,//
editDialogVisible: false,// editDialogVisible: false,//
editUser: {} editData: {}
} }
} }
}, },
@ -67,8 +67,8 @@ export default {
showEditDialog(user) { showEditDialog(user) {
// console.log('',user) // console.log('',user)
//使user //使user
this.dialog.editUser = this.users.find(e => e.username === user.username) this.dialog.editData = this.users.find(e => e.username === user.username)
console.log('点击了编辑', this.dialog.editUser) console.log('点击了编辑', this.dialog.editData)
this.dialog.editDialogVisible = true this.dialog.editDialogVisible = true
}, },
// //
@ -103,7 +103,9 @@ export default {
this.dialog.editDialogVisible = false// this.dialog.editDialogVisible = false//
}, },
deleteUser(user) { deleteUser(user) {
console.log('确认删除用户', user) //使user
user = this.users.find(e => e.username === user.username)
console.log('删除用户', user)
return ElMessageBox.confirm( return ElMessageBox.confirm(
'该操作不可撤销,是否继续?', '该操作不可撤销,是否继续?',
'删除用户:'+user.username, '删除用户:'+user.username,
@ -236,12 +238,12 @@ export default {
<!-- 添加用户对话框--> <!-- 添加用户对话框-->
<el-dialog v-model="dialog.addDialogVisible" title="添加用户" width="400" align-center draggable overflow> <el-dialog v-model="dialog.addDialogVisible" title="添加用户" width="400" align-center draggable overflow>
<ZooUserFormDialog class="dialog-form"> <ZooUserFormDialog>
<template #default="form"> <template #default="scope">
<el-button @click="dialog.addDialogVisible = false"> <el-button @click="dialog.addDialogVisible = false">
取消 取消
</el-button> </el-button>
<el-button type="primary" @click="addUser(form)"> <el-button type="primary" @click="addUser(scope.form)">
添加 添加
</el-button> </el-button>
</template> </template>
@ -251,12 +253,12 @@ export default {
<!-- 编辑用户对话框--> <!-- 编辑用户对话框-->
<el-dialog v-model="dialog.editDialogVisible" title="编辑用户" width="400" align-center draggable overflow <el-dialog v-model="dialog.editDialogVisible" title="编辑用户" width="400" align-center draggable overflow
destroy-on-close> destroy-on-close>
<ZooUserFormDialog :user="dialog.editUser"> <ZooUserFormDialog :user="dialog.editData">
<template #default="form"> <template #default="scope">
<el-button @click="dialog.editDialogVisible = false"> <el-button @click="dialog.editDialogVisible = false">
取消 取消
</el-button> </el-button>
<el-button type="primary" @click="editUser(form)"> <el-button type="primary" @click="editUser(scope.form)">
修改 修改
</el-button> </el-button>
</template> </template>