编辑角色
<template>
<div class="container">
<div class="app-container">
<!-- 角色管理内容 -->
<div class="role-operate">
<el-button size="mini" type="primary" @click="showDialog = true">添加角色</el-button>
</div>
<!-- 放置table组件 -->
<el-table :data="list">
<!-- 放置列 -->
<el-table-column prop="name" align="center" width="200" label="角色">
<template v-slot="{ row }">
<!-- 条件判断 -->
<el-input v-if="row.isEdit" v-model="row.editRow.name" size="mini" />
<span v-else>{{ row.name }}</span>
</template>
</el-table-column>
<el-table-column prop="state" align="center" width="200" label="启用">
<!-- 自定义列结构 -->
<template v-slot="{ row }">
<!-- 开 1 关 0 -->
<el-switch v-if="row.isEdit" v-model="row.editRow.state" :active-value="1" :inactive-value="0" />
<span v-else> {{ row.state === 1 ? "已启用" : row.state === 0 ? "未启用" : "无" }} </span>
</template>
</el-table-column>
<el-table-column prop="description" align="center" label="描述">
<template v-slot="{ row }">
<el-input v-if="row.isEdit" v-model="row.editRow.description" size="mini" type="textarea" />
<span v-else>{{ row.description }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<!-- 放置操作按钮 -->
<template v-slot="{ row }">
<template v-if="row.isEdit">
<!-- 编辑状态 -->
<el-button type="primary" size="mini" @click="btnEditOK(row)">确定</el-button>
<el-button size="mini" @click="row.isEdit = false">取消</el-button>
</template>
<template v-else>
<!-- 非编辑状态 -->
<el-button size="mini" type="text" @click="btnPermission(row.id)">分配权限</el-button>
<el-button size="mini" type="text" @click="btnEditRow(row)">编辑</el-button>
<el-popconfirm
title="这是一段内容确定删除吗?"
@onConfirm="confirmDel(row.id)"
>
<el-button slot="reference" style="margin-left:10px" size="mini" type="text">删除</el-button>
</el-popconfirm>
</template>
</template>
</el-table-column>
</el-table>
<!-- 放置分页组件 -->
<el-row type="flex" style="height:60px" align="middle" justify="end">
<!-- 放置分页组件 -->
<el-pagination
:page-size="pageParams.pagesize"
:current-page="pageParams.page"
:total="pageParams.total"
layout="prev, pager, next"
@current-change="changePage"
/>
</el-row>
</div>
<!-- 放置弹层 -->
<el-dialog width="500px" title="新增角色" :visible.sync="showDialog" @close="btnCancel">
<!-- 表单内容 -->
<el-form ref="roleForm" :model="roleForm" :rules="rules" label-width="120px">
<el-form-item prop="name" label="角色名称">
<el-input v-model="roleForm.name" style="width:300px" size="mini" />
</el-form-item>
<el-form-item label="启用" prop="state">
<!-- 重置表单数据 需要prop属性 -->
<!-- 如果不需要校验 就不需要写 prop属性 -->
<el-switch v-model="roleForm.state" :active-value="1" :inactive-value="0" size="mini" />
</el-form-item>
<el-form-item prop="description" label="角色描述">
<el-input v-model="roleForm.description" type="textarea" :rows="3" style="width:300px" size="mini" />
</el-form-item>
<el-form-item>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-button type="primary" size="mini" @click="btnOK">确定</el-button>
<el-button size="mini" @click="btnCancel">取消</el-button>
</el-col>
</el-row>
</el-form-item>
</el-form>
</el-dialog>
<!-- 放置权限弹层 -->
<el-dialog :visible.sync="showPermissionDialog" title="分配权限">
<!-- 放置权限数据 -->
<el-tree
ref="permTree"
check-strictly
node-key="id"
:data="permissionData"
:props="{ label: 'name' }"
show-checkbox
default-expand-all
:default-checked-keys="permIds"
/>
<el-row slot="footer" type="flex" justify="center">
<el-col :span="6">
<el-button type="primary" size="mini" @click="btnPermissionOK">确定</el-button>
<el-button size="mini" @click="showPermissionDialog = false">取消</el-button>
</el-col>
</el-row>
</el-dialog>
</div>
</template>
删除角色
el-dialog width="500px" title="新增角色" :visible.sync="showDialog" @close="btnCancel">
<!-- 表单内容 -->
<el-form ref="roleForm" :model="roleForm" :rules="rules" label-width="120px">
<el-form-item prop="name" label="角色名称">
<el-input v-model="roleForm.name" style="width:300px" size="mini" />
</el-form-item>
<el-form-item label="启用" prop="state">
<!-- 重置表单数据 需要prop属性 -->
<!-- 如果不需要校验 就不需要写 prop属性 -->
<el-switch v-model="roleForm.state" :active-value="1" :inactive-value="0" size="mini" />
</el-form-item>
<el-form-item prop="description" label="角色描述">
<el-input v-model="roleForm.description" type="textarea" :rows="3" style="width:300px" size="mini" />
</el-form-item>
<el-form-item>
<el-row type="flex" justify="center">
<el-col :span="12">
<el-button type="primary" size="mini" @click="btnOK">确定</el-button>
<el-button size="mini" @click="btnCancel">取消</el-button>
</el-col>
</el-row>
</el-form-item>
</el-form>
</el-dialog>
员工管理
左树右表
methods: {
// 封装好方法
async getDepartment() {
const result = await getDepartment()
this.depts = transListToTreeData(result, 0)
},
// 操作部门方法
operateDept(type, id) {
if (type === 'add') {
// 添加子部门
this.showDialog = true // 显示弹层
this.currentNodeId = id
} else if (type === 'edit') {
// 编辑部门场景
this.showDialog = true
this.currentNodeId = id // 记录id 要用它获取数据
// 更新props- 异步动作
// 直接调用了子组件的方法 同步的方法
// 要在子组件获取数据
// 父组件调用子组件的方法来获取数据
this.$nextTick(() => {
this.$refs.addDept.getDepartmentDetail() // this.$refs.addDept等同于子组件的this
})
} else {
// 删除部门
this.$confirm('您确认要删除该部门吗').then(async() => {
await delDepartment(id)
// 提示消息
this.$message.success('删除部门成功')
this.getDepartment()
})
}
}
}