guigu-oa-admin/src/views/system/sysRole/list.vue
yovinchen f68997e6ac docs: update readme
Signed-off-by: yovinchen <gzh298255@gmail.com>
2023-06-10 23:56:33 +08:00

241 lines
7.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<!--查询表单-->
<div class="search-div">
<el-form label-width="70px" size="small">
<el-row>
<el-col :span="24">
<el-form-item label="角色名称">
<el-input v-model="searchObj.roleName" placeholder="角色名称" style="width: 100%" />
</el-form-item>
</el-col>
</el-row>
<el-row style="display:flex">
<el-button :loading="loading" icon="el-icon-search" size="mini" type="primary" @click="fetchData()">搜索
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetData">重置</el-button>
<!-- 工具条 -->
<!-- <div class="tools-div">-->
<el-button
:disabled="$hasBP('bnt.sysRole.add') === false"
icon="el-icon-plus"
size="mini"
type="success"
@click="add"
>添 加
</el-button>
<el-button class="btn-add" size="mini" @click="batchRemove()">批量删除</el-button>
<!-- </div>-->
</el-row>
</el-form>
</div>
<!-- 表格 -->
<el-table
v-loading="listLoading"
:data="list"
border
stripe
style="width: 100%;margin-top: 10px;"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" />
<el-table-column
align="center"
label="序号"
width="70"
>
<template slot-scope="scope">
{{ (page - 1) * limit + scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column label="角色名称" prop="roleName" />
<el-table-column label="角色编码" prop="roleCode" />
<el-table-column label="创建时间" prop="createTime" width="160" />
<el-table-column align="center" label="操作" width="200">
<template slot-scope="scope">
<el-button icon="el-icon-edit" size="mini" title="修改" type="primary" @click="edit(scope.row.id)" />
<el-button
icon="el-icon-delete"
size="mini"
title="删除"
type="danger"
@click="removeDataById(scope.row.id)"
/>
<el-button
icon="el-icon-baseball"
size="mini"
title="分配权限"
type="warning"
@click="showAssignAuth(scope.row)"
/>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<el-pagination
:current-page="page"
:page-size="limit"
:total="total"
layout="total, prev, pager, next, jumper"
style="padding: 30px 0; text-align: center;"
@current-change="fetchData"
/>
<el-dialog :visible.sync="dialogVisible" title="添加/修改" width="40%">
<el-form ref="dataForm" :model="sysRole" label-width="150px" size="small" style="padding-right: 40px;">
<el-form-item label="角色名称">
<el-input v-model="sysRole.roleName" />
</el-form-item>
<el-form-item label="角色编码">
<el-input v-model="sysRole.roleCode" />
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button icon="el-icon-refresh-right" size="small" @click="dialogVisible = false">取 消</el-button>
<el-button icon="el-icon-check" size="small" type="primary" @click="saveOrUpdate()"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
// 引入定义接口js文件
import api from '@/api/system/sysRole'
export default {
// vue代码结构
// 初始值
data() {
return {
list: [], // 角色列表
page: 1, // 当前页
limit: 10, // 每页显示记录数
total: 0, // 总记录数
searchObj: {}, // 条件对象
selections: [], // 多个复选框值
sysRole: {}, // 封装表单角色数据
dialogVisible: false// 是否弹框
}
},
created() { // 渲染之前执行
this.fetchData()
},
methods: { // 操作方法
// 跳转分配菜单页面
showAssignAuth(row) {
this.$router.push('/system/assignAuth?id=' + row.id + '&roleName=' + row.roleName)
},
// 选择复选框,把复选框所在行内容传递
handleSelectionChange(selection) {
this.selections = selection
console.log(this.selections)
},
// 批量删除
batchRemove() {
// 判断
if (this.selections.length === 0) {
this.$message.warning('请选择要删除的记录!')
return
}
this.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// [1,2,3]
var idList = []
// 选择复选框数据在数组里面 this.selections
this.selections.forEach(item => {
var id = item.id
idList.push(id)
})
return api.batchRemove(idList)
}).then(response => {
this.$message.success(response.message)
this.fetchData()
})
},
// 点击修改弹出框根据id查询数据显示
edit(id) {
// 弹出框
this.dialogVisible = true
// 根据id查询
this.fetchDataById(id)
},
// 根据id查询
fetchDataById(id) {
api.getById(id)
.then(response => {
this.sysRole = response.data
})
},
// 点击添加弹出框
add() {
this.dialogVisible = true
},
// 添加或者修改
saveOrUpdate() {
// 根据id判断
if (!this.sysRole.id) { // 添加
this.save()
} else { // 修改
this.update()
}
},
save() { // 添加
api.saveRole(this.sysRole)
.then(response => {
// 提示
this.$message.success(response.message || '操作成功')
// 关闭弹框
this.dialogVisible = false
// 刷新页面
this.fetchData()
})
},
update() { // 修改
api.updateById(this.sysRole)
.then(response => {
// 提示
this.$message.success(response.message || '操作成功')
// 关闭弹框
this.dialogVisible = false
// 刷新页面
this.fetchData()
})
},
// 条件分页查询
fetchData(current = 1) {
this.page = current
api.getPageList(this.page, this.limit, this.searchObj)
.then(response => {
this.list = response.data.records
this.total = response.data.total
})
},
// 删除
removeDataById(id) {
this.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// 调用
return api.removeById(id)
}).then(response => {
// 刷新页面
this.fetchData()
// 提示信息
this.$message.success(response.message || '删除成功')
})
}
}
}
</script>