审核角色配置

This commit is contained in:
cwchen 2025-03-06 19:15:14 +08:00
parent a1de52de8f
commit 1b1e7bbb65
4 changed files with 615 additions and 1 deletions

View File

@ -3870,5 +3870,67 @@ export function addAuditFlow (data) {
url: '/greenH5/greenWebmodul/rest/greenRole/addAuditFlow',
method: 'post',
data
})
});
}
// 审批角色列表
export function auditRoleList (data) {
return request({
url: '/greenH5/greenWebmodul/rest/greenRole/getHouseCheckRoleList',
method: 'post',
data
});
}
// 获取用户
export function getCheckUserInfo (data) {
return request({
url: '/greenH5/greenWebmodul/rest/greenRole/getCheckUserInfo',
method: 'post',
data
});
}
// 新增审批角色
export function addHouseCheckRole (data) {
return request({
url: '/greenH5/greenWebmodul/rest/greenRole/addHouseCheckRole',
method: 'post',
data
});
}
// 编辑审批角色
export function editAuditRole (data) {
return request({
url: '/greenH5/greenWebmodul/rest/greenRole/modify',
method: 'post',
data
});
}
// 编辑审批角色
export function delAuditRole (data) {
return request({
url: '/greenH5/greenWebmodul/rest/greenRole/delete',
method: 'post',
data
});
}
// 审批角色详情
export function getAuditRoleDetail (data) {
return request({
url: '/greenH5/greenWebmodul/rest/greenRole/getCheckUserByRole',
method: 'post',
data
});
}
// 审批角色-绑定用户
export function bandAuditUser (data) {
return request({
url: '/greenH5/greenWebmodul/rest/greenRole/addPersonByRole',
method: 'post',
data
});
}

View File

@ -0,0 +1,361 @@
<template>
<el-container class="container">
<el-header class="filter-container">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<div>
<el-form-item label="角色名称" class="form-flex">
<el-input @input="e => formInline.roleName = validForbid(e)" :value="formInline.roleName" maxlength="20"
placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit()">查询</el-button>
<el-button type="primary" @click="newAdd()">新增</el-button>
</el-form-item>
</div>
</el-form>
</el-header>
<div class="table">
<el-table :element-loading-text="loadingMsg" v-loading="loading" :data="tableData" stripe border
style="width:100%">
<el-table-column fixed prop="num" label="序号" min-width="50" width="50">
<template slot-scope="scope">{{ page.sizePage * ((page.limit == 0 ? 1 : page.limit) - 1) + (scope.$index + 1)
}}</template>
</el-table-column>
<el-table-column prop="roleName" label="角色名称" min-width="150">
<template slot-scope="scope">
<el-popover placement="top-start" title width="200" trigger="hover" :content="scope.row.roleName">
<div class="maxsize" slot="reference">{{ scope.row.roleName }}</div>
</el-popover>
</template>
</el-table-column>
<el-table-column label="操作" min-width="100" align="center">
<template slot-scope="{row}">
<el-button type="primary" size="mini" @click="editUser(row)">编辑</el-button>
<el-button type="primary" size="mini" @click="bandUser(row)">绑定用户</el-button>
<el-button type="danger" size="mini" @click="del(row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
<!-- 分页 -->
<div class="foot-total">
<Paging @currentChanges="currentChanges" :pageNum="parseInt(page.limit)" :size="parseInt(page.sizePage)"
:total="parseInt(page.total)" />
</div>
<!-- 编辑 -->
<Ticketopop v-if="isflag" :btn="num" :title="title" @closeDialog="closeDialog" @submit="submit" :dataForm="row"
:disabled="loading" :width="600" />
<!-- 绑定用户 -->
<BandUser v-if="isflag2" :btn="num" :title="title2" @closeDialog2="closeDialog2" @submit2="submit2" :dataForm="row2"
:usersList="usersList" :disabled="loading" :width="600" />
</el-container>
</template>
<script>
import Paging from "@/views/Public/paging.vue";
import { auditRoleList, getCheckUserInfo, addHouseCheckRole, editAuditRole, delAuditRole, bandAuditUser, getAuditRoleDetail } from "@/api/getdata";
import Ticketopop from "./popup/ticketpop.vue";
import BandUser from "./popup/bandUser.vue";
export default {
data() {
return {
loading: false, //loading
loadingMsg: "",
row: {},
row2: {},
title: '',
dataList: [],
usersList: [],
validation: false,
formInline: {
roleName: "",
roleCode: "",
roleType: ""
},
page: {
limit: 0 /** 当前点击*/,
sizePage: 10 /** 当前多少页*/,
total: 0 /**总数 */
},
tableData: [],
isflag: false /**用于设置弹窗 */,
isflag2: false /**用于绑定用户设置弹窗 */,
num: 3
};
},
components: {
Paging,
Ticketopop,
BandUser
},
mounted() {
this.createLoad();
if (this.$route.params.index) {
this.currentChanges(this.$route.params.index);
} else {
this.getlist();
}
this.getUserList();
},
methods: {
createLoad() {
this.loading = true;
this.loadingMsg = "加载中...";
},
clearLoad() {
this.loading = false;
this.loadingMsg = "";
},
//
currentChanges(val) {
this.createLoad();
this.page.limit = val;
this.getlist();
},
getlist() {
this.createLoad();
let Content = {
roleName: this.formInline.roleName,
currentPage: this.page.limit == 0 ? 1 : this.page.limit,
pageIndex: this.page.limit == 0 ? 1 : this.page.limit,
pageSize: 10,
};
auditRoleList(Content)
.then(res => {
if (res.returnCode == "1") {
this.clearLoad();
this.tableData = res.returnData.data;
this.page.total = res.returnData.total;
this.page.limit = res.returnData.currentPage;
this.tableData.id = res.returnData.data.id;
} else {
this.$message({
message: res.returnMsg,
type: "warning"
});
setTimeout(() => {
this.clearLoad();
}, 300);
}
})
.catch(err => {
console.log(err);
setTimeout(() => {
this.clearLoad();
}, 300);
});
},
//
getUserList() {
getCheckUserInfo({})
.then(res => {
console.log(res);
if (res.returnCode == '1') {
this.usersList = res.returnData;
}
}).catch(err => {
console.log(err);
});
},
//
getAuditRole(id) {
getAuditRoleDetail({ roleId: id })
.then(res => {
if (res.returnCode == '1') {
let userObjArr = res.returnData;
let userIdArr = [];
for (let i = 0; i < userObjArr.length; i++) {
userIdArr.push(userObjArr[i].USER_ID);
}
this.row2.userId = userIdArr;
this.title2 = '绑定用户';
this.isflag2 = true;
// return res.returnData;
}
}).catch(err => {
console.log(err);
});
},
onSubmit() {
console.log(this.formInline);
this.page.limit = 1;
this.createLoad();
this.getlist();
},
newAdd() {
var data = {
id: 0,
roleCode: '',
roleName: '',
roleType: '3',
isDeleted: 'N'
};
this.row = data;
this.title = '新增角色';
this.isflag = true;
},
del(id) {
this.$alert("确认进行删除嘛?", "确认", {
confirmButtonText: "确定",
callback: action => {
if (action == "confirm") {
this.createLoad();
let Content = {
id: id
};
delAuditRole(Content)
.then(res => {
if (res.returnCode == "1") {
this.$message({
message: res.returnMsg,
type: "success"
});
this.getlist();
this.dialogTableVisible = false;
} else {
this.$message({
message: res.returnMsg,
type: "warning"
});
setTimeout(() => {
this.clearLoad();
}, 300);
}
})
.catch(err => {
console.log(err);
setTimeout(() => {
this.clearLoad();
}, 300);
});
}
}
});
},
editUser(data) {
// this.row = data;
this.row = Object.assign({}, data);
this.title = '修改角色';
this.isflag = true;
},
bandUser(data) {
data.userId = [];
this.row2 = Object.assign({}, data);
this.getAuditRole(data.id);
},
closeDialog() {
this.isflag = false;
this.row = {};
},
closeDialog2() {
this.isflag2 = false;
this.row2 = {};
},
//
submit(e) {
this.createLoad();
if (e.id == 0) {
e.creator = 'admin';
e.modifier = 'admin';
e.id = null;
addHouseCheckRole(e)
.then(res => {
if (res.returnCode == '1') {
this.$message({
message: res.returnMsg,
type: "success"
});
this.isflag = false;
this.getlist();
this.row = {};
} else {
this.clearLoad();
this.$message({
message: res.returnMsg,
type: "warning"
});
}
})
.catch(err => {
this.clearLoad();
});
} else {
e.modifier = 'admin';
editAuditRole(e)
.then(res => {
if (res.returnCode == '1') {
this.$message({
message: res.returnMsg,
type: "success"
});
this.isflag = false;
this.getlist();
this.row = {};
} else {
this.clearLoad();
this.$message({
message: res.returnMsg,
type: "warning"
});
}
})
.catch(err => {
this.clearLoad();
});
}
},
submit2(e) {
this.createLoad();
bandAuditUser(e)
.then(res => {
if (res.returnCode == '1') {
this.$message({
message: res.returnMsg,
type: "success"
});
this.isflag2 = false;
this.getlist();
this.row2 = {};
} else {
this.clearLoad();
this.$message({
message: res.returnMsg,
type: "warning"
});
}
}).catch(err => {
this.clearLoad();
});
}
}
};
</script>
<style>
.filter-container {
width: 100%;
height: auto !important;
/* flex-basis: 120px; */
}
.block {
display: inline-block;
}
.secondrow {
margin-top: 16px;
}
.table {
/* width: */
background: #eeeeee;
padding: 10px;
margin: 10px;
}
.upload-demo {
margin: 0 -21px;
}
</style>

View File

@ -0,0 +1,99 @@
<template>
<!-- 小型弹窗用于完成删除保存等操作 -->
<el-dialog class="l-dialog" :class="lDialog" :title="title" :visible.sync="dialogVisible" :showClose="false"
:closeOnClickModal="false">
<div>
<el-form :model="dataForm" ref="ruleForm" label-width="110px">
<el-form-item label="角色名称">
<el-input style="width:100%" v-model="dataForm.roleName" :disabled="true" maxlength="20"></el-input>
</el-form-item>
<el-form-item label="绑定用户">
<el-select style="width:100%" v-model="dataForm.userId" multiple filterable default-first-option placeholder="请选择用户">
<el-option v-for="item in usersList" :key="item.userId" :label="`${item.roleName} - ${item.userName}`" :value="item.userId">
</el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button class="clear-btn" @click="handleClose" :disabled="disabled">取消</el-button>
<el-button type="primary" class="search-btn" :disabled="disabled" @click="submitForm()">确认</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
props: ["width", "dataForm", "title", "disabled", "usersList"],
data() {
return {
roles: [],
lDialog: this.width > 500 ? "w700" : "w500",
dialogVisible: true,
isDisabled: true,
options: [],
roleIds: [],
menuIds: [],
menuList: [],
defaultProps: {
children: 'children',
label: 'name'
},
roleTypes: ['WEB角色', 'APP角色'],
};
},
mounted() {
},
methods: {
/*关闭弹窗 */
handleClose() {
this.dialogVisible = false;
this.$emit("closeDialog2");
setTimeout(() => {
this.dialogVisible = true;
});
},
/**确认弹窗 */
sureBtnClick() {
this.dialogVisible = false;
this.$emit("closeDialog2");
setTimeout(() => {
this.dialogVisible = true;
});
},
/**验证 */
submitForm() {
let data = JSON.parse(JSON.stringify(this.dataForm));
data.userId = data.userId.join(',');
data.roleId = data.id;
this.$emit('submit2', data);
}
}
};
</script>
<style lang="scss">
.w700 .el-dialog {
width: 700px;
}
.w500 .el-dialog {
width: 500px;
}
.w500 .el-dialog__header,
.w700 .el-dialog__header {
background: #eeeeee;
text-align: center;
.el-dialog__title {
font-size: 16px;
}
}
.yxq .el-range-separator {
margin-right: 7px !important;
}
.el-date-editor--daterange.el-input__inner {
width: 260px;
}
</style>

View File

@ -0,0 +1,92 @@
<template>
<!-- 小型弹窗用于完成删除保存等操作 -->
<el-dialog class="l-dialog" :class="lDialog" :title="title" :visible.sync="dialogVisible" :showClose="false"
:closeOnClickModal="false">
<div>
<el-form :model="dataForm" ref="ruleForm" label-width="110px">
<el-form-item label="角色名称">
<el-input style="width:100%" v-model="dataForm.roleName" maxlength="20"></el-input>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button class="clear-btn" @click="handleClose" :disabled="disabled">取消</el-button>
<el-button type="primary" class="search-btn" :disabled="disabled" @click="submitForm()">确认</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
props: ["width", "dataForm", "title", "disabled", "usersList"],
data() {
return {
roles: [],
lDialog: this.width > 500 ? "w700" : "w500",
dialogVisible: true,
isDisabled: true,
options: [],
roleIds: [],
menuIds: [],
menuList: [],
defaultProps: {
children: 'children',
label: 'name'
},
roleTypes: ['WEB角色', 'APP角色'],
};
},
mounted() {
},
methods: {
/*关闭弹窗 */
handleClose() {
this.dialogVisible = false;
this.$emit("closeDialog");
setTimeout(() => {
this.dialogVisible = true;
});
},
/**确认弹窗 */
sureBtnClick() {
this.dialogVisible = false;
this.$emit("closeDialog");
setTimeout(() => {
this.dialogVisible = true;
});
},
/**验证 */
submitForm(formName) {
let data = this.dataForm;
data.roleType = '3';
this.$emit('submit', data);
}
}
};
</script>
<style lang="scss">
.w700 .el-dialog {
width: 700px;
}
.w500 .el-dialog {
width: 500px;
}
.w500 .el-dialog__header,
.w700 .el-dialog__header {
background: #eeeeee;
text-align: center;
.el-dialog__title {
font-size: 16px;
}
}
.yxq .el-range-separator {
margin-right: 7px !important;
}
.el-date-editor--daterange.el-input__inner {
width: 260px;
}
</style>