jhprjv2/ruoyi-ui/src/components/flow/Role/index.vue

218 lines
6.1 KiB
Vue
Raw Normal View History

2023-08-10 21:09:49 +08:00
<template>
<div class="app-container">
2023-09-07 22:14:21 +08:00
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
>
2023-08-10 21:09:49 +08:00
<el-form-item label="角色名称" prop="roleName">
<el-input
v-model="queryParams.roleName"
placeholder="请输入角色名称"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
2023-09-07 22:14:21 +08:00
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
>搜索</el-button
>
2023-08-10 21:09:49 +08:00
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
2023-09-07 22:14:21 +08:00
<el-table
v-show="checkType === 'multiple'"
ref="dataTable"
v-loading="loading"
:data="roleList"
@selection-change="handleMultipleRoleSelect"
>
<el-table-column width="55" type="selection" align="center" />
<el-table-column label="角色编号" prop="roleId" />
<el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" />
<el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" />
<el-table-column label="显示顺序" prop="roleSort" />
<el-table-column label="创建时间" align="center" prop="createTime">
2023-08-10 21:09:49 +08:00
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
2023-09-07 22:14:21 +08:00
<el-table
v-show="checkType === 'single'"
v-loading="loading"
:data="roleList"
@current-change="handleSingleRoleSelect"
>
<el-table-column width="55" align="center">
2023-08-10 21:09:49 +08:00
<template slot-scope="scope">
<!-- 可以手动的修改label的值从而控制选择哪一项 -->
2023-09-07 22:14:21 +08:00
<el-radio v-model="radioSelected" :label="scope.row.roleId">{{ "" }}</el-radio>
2023-08-10 21:09:49 +08:00
</template>
</el-table-column>
2023-09-07 22:14:21 +08:00
<el-table-column label="角色编号" prop="roleId" />
<el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" />
<el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" />
<el-table-column label="显示顺序" prop="roleSort" />
<el-table-column label="创建时间" align="center" prop="createTime">
2023-08-10 21:09:49 +08:00
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<pagination
2023-09-07 22:14:21 +08:00
v-show="total > 0"
2023-08-10 21:09:49 +08:00
:total="total"
2023-09-07 22:14:21 +08:00
:page-sizes="[5, 10]"
2023-08-10 21:09:49 +08:00
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
2023-09-07 22:14:21 +08:00
import {
listRole,
getRole,
delRole,
addRole,
updateRole,
dataScope,
changeRoleStatus,
deptTreeSelect,
} from "@/api/system/role";
2023-08-10 21:09:49 +08:00
import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu";
2023-09-07 22:14:21 +08:00
import { StrUtil } from "@/utils/StrUtil";
2023-08-10 21:09:49 +08:00
export default {
name: "FlowRole",
2023-09-07 22:14:21 +08:00
dicts: ["sys_normal_disable"],
2023-08-10 21:09:49 +08:00
// 接受父组件的值
props: {
// 回显数据传值
selectValues: {
type: Number | String | Array,
default: null,
2023-09-07 22:14:21 +08:00
required: false,
2023-08-10 21:09:49 +08:00
},
checkType: {
type: String,
2023-09-07 22:14:21 +08:00
default: "multiple",
required: false,
2023-08-10 21:09:49 +08:00
},
},
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 角色表格数据
roleList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 5,
roleName: undefined,
roleKey: undefined,
2023-09-07 22:14:21 +08:00
status: undefined,
2023-08-10 21:09:49 +08:00
},
// 表单参数
form: {},
radioSelected: null, // 单选框传值
2023-09-07 22:14:21 +08:00
selectRoleList: [], // 回显数据传值
2023-08-10 21:09:49 +08:00
};
},
watch: {
selectValues: {
handler(newVal) {
if (StrUtil.isNotBlank(newVal)) {
if (newVal instanceof Number || newVal instanceof String) {
2023-09-07 22:14:21 +08:00
this.radioSelected = newVal;
2023-08-10 21:09:49 +08:00
} else {
this.selectRoleList = newVal;
}
}
},
2023-09-07 22:14:21 +08:00
immediate: true,
2023-08-10 21:09:49 +08:00
},
roleList: {
handler(newVal) {
if (StrUtil.isNotBlank(newVal) && this.selectRoleList.length > 0) {
this.$nextTick(() => {
this.$refs.dataTable.clearSelection();
2023-09-07 22:14:21 +08:00
this.selectRoleList?.split(",").forEach((key) => {
this.$refs.dataTable.toggleRowSelection(
newVal.find((item) => key == item.roleId),
true
);
2023-08-10 21:09:49 +08:00
});
});
}
},
immediate: true, // 立即生效
2023-09-07 22:14:21 +08:00
deep: true, //监听对象或数组的时候,要用到深度监听
},
2023-08-10 21:09:49 +08:00
},
created() {
this.getList();
},
methods: {
/** 查询角色列表 */
getList() {
this.loading = true;
2023-09-07 22:14:21 +08:00
listRole(this.queryParams).then((response) => {
this.roleList = response.rows;
this.total = response.total;
this.loading = false;
});
2023-08-10 21:09:49 +08:00
},
// 多选框选中数据
handleMultipleRoleSelect(selection) {
2023-09-07 22:14:21 +08:00
const idList = selection.map((item) => item.roleId);
const nameList = selection.map((item) => item.roleName);
this.$emit("handleRoleSelect", idList.join(","), nameList.join(","));
2023-08-10 21:09:49 +08:00
},
// 单选框选中数据
handleSingleRoleSelect(selection) {
this.radioSelected = selection.roleId;
const roleName = selection.roleName;
2023-09-07 22:14:21 +08:00
this.$emit("handleRoleSelect", this.radioSelected.toString(), roleName);
2023-08-10 21:09:49 +08:00
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.handleQuery();
},
2023-09-07 22:14:21 +08:00
},
2023-08-10 21:09:49 +08:00
};
</script>
<style>
/*隐藏radio展示的label及本身自带的样式*/
/*.el-radio__label{*/
/* display:none;*/
/*}*/
</style>