26.编辑管理员-路由传参

This commit is contained in:
李龙龙 2024-07-21 20:32:23 +08:00
parent 46ce3c8fbf
commit 808b557b02
3 changed files with 200 additions and 64 deletions

View File

@ -23,6 +23,10 @@ const routes= [
path: "administrator/add", // http://localhost:5173/admin/administrator/add
component: () => import("@/views/admin/administrator/add.vue")
},
{
path: "administrator/edit", // http://localhost:5173/admin/administrator/edit
component: () => import("@/views/admin/administrator/edit.vue")
},
{
path: "administrator/list", // http://localhost:5173/admin/administrator/list
component: () => import("@/views/admin/administrator/list.vue")

View File

@ -0,0 +1,112 @@
<script setup>
import { reactive,onMounted } from 'vue'
import { ElMessage } from 'element-plus'
import { useRoute,useRouter } from 'vue-router'
import AxiosDR from '@/utils/AxiosDr.js'
//
const data = reactive({
name: '',
password: '',
email: '',
gender: '0',
remark: 'dengruicode.com',
})
//
const route = useRoute() //
const router = useRouter() //
//
let id = route.query.id
//console.log(id)
onMounted(() => {
//
AxiosDR.get(`/api/adm/getById?id=${id}`).then(res => {
console.log(res)
if(!res.status){
ElMessage.error(res.msg)
return
}
data.name = res.data.name
data.email = res.data.email
data.gender = String(res.data.gender)
data.remark = res.data.remark
}).catch(err => {
console.log("err:", err)
})
})
//
const edit = () => {
//console.log(data)
if (data.name == '') {
ElMessage.error("请填写名称")
return
}
data.id = id //
if (data.password == '') {
delete data.password //
}
AxiosDR.post('/api/adm/edit',data).then(res => {
console.log(res)
if(!res.status){
ElMessage.error(res.msg)
return
}
ElMessage.success("编辑成功")
}).catch(err => {
console.log("err:", err)
})
}
//
const back = () => {
router.go(-1)
}
</script>
<template>
<el-form label-width="80" style="width: 400px;">
<el-form-item label="名称">
<el-input v-model="data.name" placeholder="请填写名称" />
</el-form-item>
<el-form-item label="密码">
<el-input v-model="data.password" show-password placeholder="请填写密码" />
</el-form-item>
<el-form-item label="邮箱">
<el-input v-model="data.email" />
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="data.remark" rows="4" />
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="data.gender">
<el-radio value="0">未知</el-radio>
<el-radio value="1"></el-radio>
<el-radio value="2"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="edit">编辑</el-button>
<el-button @click="back">返回</el-button>
</el-form-item>
</el-form>
</template>
<style scoped>
</style>

View File

@ -1,79 +1,99 @@
<script setup>
import { reactive,onMounted } from 'vue'
import { ElMessage,ElMessageBox } from 'element-plus'
import { useRouter } from 'vue-router'
import AxiosDR from '@/utils/AxiosDr.js'
//
const router = useRouter()
//
const data = reactive({
list: []
})
//DOM
onMounted(() => {
AxiosDR.get('/api/adm/list').then(res => {
//console.log(result)
if(!res.status){
ElMessage.error(res.msg)
return
}
data.list = res.data.list
}).catch(err => {
console.log("err:", err)
})
})
//
/*
const del = (row) => {
ElMessageBox.confirm('确认删除?', '标题', {
type: 'warning', // success | warning | info | error
confirmButtonText: '确认',
cancelButtonText: '取消'
}).then(() => {
console.log('确认删除 id:',row.id)
}).catch(() => {
console.log('取消删除')
})
}
*/
const del = async (row) => {
try {
await ElMessageBox.confirm('确认删除?', '标题', {
type: 'warning',
confirmButtonText: '确认',
cancelButtonText: '取消'
})
//
//let delResult = await AxiosDR.post('/api/adm/del',{id: row.id})
let delResult = await AxiosDR.post('/api/adm/del',{id: String(row.id)})
if(!delResult.status){
ElMessage.error(delResult.msg)
return
}
//
let getListResult = await AxiosDR.get('/api/adm/list')
if(!getListResult.status){
ElMessage.error(delResult.msg)
return
}
data.list = getListResult.data.list //
} catch (err) {
console.log("err:", err)
}
}
//
const edit = (row) => {
//
router.push({ path: '/admin/administrator/edit', query: { id: row.id } })
}
</script>
<template>
<el-table :data="data.list" border>
<el-table-column prop="id" label="ID" width="60" />
<el-table-column prop="name" label="名称" />
<el-table-column prop="email" label="邮箱" />
<el-table-column prop="remark" label="备注" />
<el-table-column prop="remark" label="备注"/>
<el-table-column label="操作" width="150">
<template #default="scope">
<el-button size="small" type="primary">编辑</el-button>
<el-button size="small" type="primary" @click="edit(scope.row)">编辑</el-button>
<el-button size="small" @click="del(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script setup>
<style scoped>
//
import { reactive } from "vue";
import AxiosDR from "@/utils/AxiosDr.js";
import { ElMessage, ElMessageBox } from "element-plus";
const data = reactive({
list:[
{id: '1', name: '李龙龙', email:'lilonglong@koteladt.com', remark:'lll'},
{id: '2', name: '张三', email:'zhangsan@koteladt.com', remark:'zs'},
]
})
AxiosDR.get('/api/adm/list').then(res => {
console.log(res)
//
if ( !res.status ) {
ElMessage.error(res.msg)
return
}
data.list = res.data.list
}) .catch (err => {
console.log("err:",err)
})
const del = async (row) => {
try {
await ElMessageBox.confirm('确认删除?', '标题', {
type: 'warning',
confirmButtonText: '确认',
cancelButtonText: '取消'
})
//
//let delResult = await AxiosDR.post('/api/adm/del',{id: row.id})
let delResult = await AxiosDR.post('/api/adm/del', {id: String(row.id)})
if (!delResult.status) {
ElMessage.error(delResult.msg)
return
}
//
let getListResult = await AxiosDR.get('/api/adm/list')
if (!getListResult.status) {
ElMessage.error(getListResult.msg)
return
}
data.list = getListResult.data.list //
} catch (err) {
console.log("err:", err)
}
}
</script>
<style lang="scss" scoped>
</style>
</style>