刘翔宇-旅管家 3 years ago
parent 6faaf9d111
commit 0ab9cf600d

@ -0,0 +1,31 @@
import request from '@/utils/request'
export function listCommondepartment(params) {
return request({
url: '/api/admin/other/admin-department-list',
method: 'get',
params:params
})
}
export function listCommonuser(params) {
return request({
url: '/api/admin/other/admin-user-list',
method: 'get',
params:params
})
}
export function remoteStatistic(params) {
return request({
url: '/api/admin/other/remot-statistic',
method: 'get',
params:params
})
}

@ -13,7 +13,8 @@ export function list() {
url: '/api/admin/role', url: '/api/admin/role',
method: 'get' method: 'get'
}) })
} }
export function del(data) { export function del(data) {
return request({ return request({
url: '/api/admin/role/delete', url: '/api/admin/role/delete',
@ -21,3 +22,12 @@ export function del(data) {
data data
}) })
} }
export function set(data) {
return request({
url: '/api/admin/admin/set-roles-many',
method: 'post',
data
})
}

@ -76,40 +76,70 @@ const componentHandler = (path) => {
} }
return loadView(path) return loadView(path)
} }
export function generaMenu(routes, data) { /**
data.forEach(item => { * 后台查询的菜单数据拼装成路由格式的数据
if (item.url === "/") { * @param routes
*/
} else { export function generaMenu(routes, data) {
const menu = { data.forEach(item => {
path: pathHandler(item.url,item.id), if (item.url === "/") {
//(item.path === '#'||item.path == '' ? item.id + '_key' : item.path), routes.push({
component: componentHandler(item.url), path: '/',
//(item.path === '#'||item.path == '' ? Layout : loadView(item.path)), component: Layout,
// hidden: true, redirect: '/dashboard',
// hidden: true, children: [{
children: [], path: 'dashboard',
name: 'menu_' + item.id, name: '系统首页',
meta: { component: () => import('@/views/dashboard/index'),
title: item.name, meta: {
id: item.id, title: '系统首页',
roles: ['admin'], icon: 'dashboard'
}
icon: item.icon }]
} })
} } else if (item.url === "##") {
if (item.children) { routes.push({
generaMenu(menu.children, item.children) path: item.path,
} component: Layout,
routes.push(menu) children: [{
} path: item.path,
}) name: item.name,
routes.push({ component: item.url === '#' ? Layout : loadView(item.path),
path: '*', meta: {
redirect: '/404', title: item.name,
hidden: true id: item.id,
}) roles: ['admin'],
icon: item.icon
}
}]
})
} else {
var path = item.url;
if (item.path != "null" && item.path != null && item.path != "") {
path = item.path
}
const menu = {
path: (path === '#' ? item.id + '_key' : path),
redirect: (item.children.length > 0 ? "noRedirect" : ""),
component: item.url === '#' ? Layout : loadView(item.url),
// hidden: true,
children: [],
name: 'menu_' + item.id,
meta: {
title: item.name,
id: item.id,
roles: ['admin'],
icon: item.icon
}
}
if (item.children) {
generaMenu(menu.children, item.children)
}
routes.push(menu)
}
})
} }
const mutations = { const mutations = {

@ -23,6 +23,8 @@
</el-table-column> </el-table-column>
<el-table-column prop="url" label="菜单路径" sortable> <el-table-column prop="url" label="菜单路径" sortable>
</el-table-column> </el-table-column>
<el-table-column prop="path" label="路由" sortable>
</el-table-column>
<el-table-column prop="icon" label="图标" sortable> <el-table-column prop="icon" label="图标" sortable>
</el-table-column> </el-table-column>
<el-table-column prop="api_prefix" label="API前缀" sortable> <el-table-column prop="api_prefix" label="API前缀" sortable>
@ -65,6 +67,13 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="18">
<el-form-item label="路由" prop="path">
<el-input v-model="form.path" autocomplete="off"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@ -178,7 +187,8 @@
pname: "根菜单", pname: "根菜单",
api_prefix: "", api_prefix: "",
auth_node_tagsArr: [], auth_node_tagsArr: [],
auth_node_tags: "" auth_node_tags: "",
path: ""
}, },
actionRules: { actionRules: {
tag: [{ tag: [{

@ -1,159 +1,237 @@
<template> <template>
<div class="container"> <div class="container">
<!-- 查询配置 --> <!-- 查询配置 -->
<div> <div style="padding: 0px 20px">
<div ref="lxHeader"> <div ref="lxHeader">
<LxHeader icon="md-apps" text="角色权限" style="margin-bottom: 10px; border: 0px; margin-top: 15px"> <LxHeader icon="md-apps" text="角色权限" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content"></div> <div slot="content"></div>
<slot> <slot>
<div> <div>
<Input style="width: 200px; margin-right: 10px" v-model.number="searchFields.Name" placeholder="关键字搜索" /> <Input style="width: 200px; margin-right: 10px" v-model.number="searchFields.Name" placeholder="关键字搜索" />
<Button type="primary" @click="load" style="margin-left: 10px">查询</Button> <Button type="primary" @click="load" style="margin-left: 10px">查询</Button>
<Button type="primary" @click="edit()" style="margin-left: 10px">新增角色</Button> <Button type="primary" @click="edit()" style="margin-left: 10px">新增角色</Button>
</div> </div>
</slot> </slot>
</LxHeader> </LxHeader>
</div> </div>
<div class="table-tree"> <div class="table-tree">
<el-table :data="tableData" class="v-table" border style="width: 100%"> <el-table :data="tableData" class="v-table" border style="width: 100%">
<el-table-column type="index" align="center"> <el-table-column type="index" align="center">
</el-table-column> </el-table-column>
<el-table-column prop="name" label="角色名称" width="180"> <el-table-column prop="name" label="角色名称" width="180">
</el-table-column> </el-table-column>
<el-table-column prop="address" label="说明"> <el-table-column prop="address" label="说明">
</el-table-column> </el-table-column>
<el-table-column fixed="right" label="操作" width="300"> <el-table-column fixed="right" label="操作" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<Button ghost size="small" @click="edit(scope.row)" type="primary">编辑</Button> <Button ghost size="small" @click="edit(scope.row)" type="primary">编辑</Button>
<Button @click="del(scope.row)" type="error" ghost size="small" style="margin-left: 10px;">删除</Button> <Button ghost size="small" style="margin-left: 10px;" @click="set(scope.row)" type="primary">设置权限</Button>
</template> <Button @click="del(scope.row)" type="error" ghost size="small" style="margin-left: 10px;">删除</Button>
</el-table-column> </template>
</el-table> </el-table-column>
</div> </el-table>
<el-dialog title="角色编辑" :visible.sync="dialogFormVisible" width="30%"> </div>
<el-form :model="form" ref="form" :rules="rules" label-position="right" :label-width="formLabelWidth"> <el-dialog title="角色编辑" :visible.sync="dialogFormVisible" width="30%">
<el-form :model="form" ref="form" :rules="rules" label-position="right" :label-width="formLabelWidth">
<el-form-item label="角色名称" prop="name">
<el-input v-model="form.name" autocomplete="off"></el-input> <el-form-item label="角色名称" prop="name">
</el-form-item> <el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="排序">
<el-input v-model="form.sortnumber" autocomplete="off"></el-input> <el-form-item label="排序">
</el-form-item> <el-input v-model="form.sortnumber" autocomplete="off"></el-input>
</el-form> </el-form-item>
<div slot="footer" class="dialog-footer"> </el-form>
<el-button @click="resetForm('form')"> </el-button> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm('form')"> </el-button> <el-button @click="resetForm('form')"> </el-button>
</div> <el-button type="primary" @click="submitForm('form')"> </el-button>
</el-dialog> </div>
</div> </el-dialog>
</div>
</template> <el-dialog title="权限设置" :visible.sync="dialogSetVisible" width="60%">
<el-form label-position="right" :label-width="formLabelWidth">
<script>
import LxHeader from "@/components/LxHeader/index.vue"; <el-form-item label="角色名称" prop="name">
import { {{setForm.name}}
save, </el-form-item>
list, <el-form-item label="角色人员">
del <el-transfer filterable :titles="['待选择', '已选择']" :props="{key: 'id',label: 'name'}"
} from "../../api/system/role.js"; :filter-method="filterMethod" :format="{ noChecked: '${total}',hasChecked: '${checked}/${total}' }"
export default { filter-placeholder="请选择人员" v-model="setForm.ids" :data="userdata">
components: { </el-transfer>
LxHeader </el-form-item>
}, </el-form>
created() { <div slot="footer" class="dialog-footer">
this.load(); <el-button @click="dialogSetVisible=false"> </el-button>
}, <el-button type="primary" @click="submitSet()"> </el-button>
mounted() {}, </div>
data() { </el-dialog>
return {
dialogFormVisible: false, </div>
formLabelWidth: "120px", </div>
form: { </template>
name: "",
id: "", <script>
sortnumber: "0" import LxHeader from "@/components/LxHeader/index.vue";
}, import {
rules: { save,
name: [{ list,
required: true, del,
message: '请输入角色名称', set
trigger: 'blur' } from "../../api/system/role.js";
}],
}, import {
tableHeight: 0, listCommondepartment,
// listCommonuser
searchFields: { } from "../../api/common.js"
KeyWord: ""
}, export default {
tableData: [] components: {
} LxHeader
}, },
methods: { created() {
load() { this.load();
var that = this;
list().then(response => { },
that.tableData = response; mounted() {},
}).catch(error => { data() {
//reject(error) return {
}) dialogSetVisible: false,
}, dialogFormVisible: false,
edit(obj) { formLabelWidth: "120px",
if (obj) { form: {
this.form.id = obj.id; name: "",
this.form.name = obj.name; id: "",
} sortnumber: "0"
this.dialogFormVisible = true; },
}, userdata: [],
del(obj) { filterMethod(query, item) {
var that = this; return item.name.indexOf(query) > -1;
if (obj) { },
this.$Modal.confirm({ rules: {
title: '确认要删除数据?', name: [{
onOk: () => { required: true,
del({ message: '请输入角色名称',
id: obj.id trigger: 'blur'
}).then(response => { }],
this.$Message.success('操作成功'); },
that.load(); tableHeight: 0,
}).catch(error => { //
console.log(error) searchFields: {
reject(error) KeyWord: ""
}) },
}, tableData: [],
onCancel: () => { setForm: {
//this.$Message.info('Clicked cancel'); name: "",
} ids: [],
}); role_id:""
} }
}, }
submitForm(formName) { },
var that = this; methods: {
this.$refs[formName].validate((valid) => { load() {
if (valid) { var that = this;
save(that.form).then(response => { list().then(response => {
console.log(response) that.tableData = response;
this.$Message.success('操作成功'); }).catch(error => {
that.load(); //reject(error)
that.dialogFormVisible = false; })
}).catch(error => { },
reject(error) loadUser() {
}) listCommonuser({
} else { page_size: 999
this.$Message.error('数据校验失败'); }).
return false; then((res) => {
} this.userdata = res.data;
}); }).catch(error => {
}, console.log(error)
resetForm(formName) { })
var that = this; },
this.$refs[formName].resetFields(); edit(obj) {
that.dialogFormVisible = false; if (obj) {
} this.form.id = obj.id;
} this.form.name = obj.name;
}; }
</script> this.dialogFormVisible = true;
},
<style> set(obj) {
var that = this;
this.setForm.role_id = "";
this.setForm.ids = [];
this.setForm.name = obj.name;
this.setForm.role_id=obj.id;
if (obj.admin) {
for (var m of obj.admin) {
this.setForm.ids.push(m.id);
}
}
this.dialogSetVisible = true;
this.loadUser();
},
submitSet() {
let that = this;
if (that.setForm.ids.length == 0) {
this.$Message.error("请选择人员");
return false;
}
set(that.setForm).then(response => {
this.$Message.success('操作成功');
that.load();
that.dialogSetVisible = false;
}).catch(error => {
this.$Message.error(error);
})
},
del(obj) {
var that = this;
if (obj) {
this.$Modal.confirm({
title: '确认要删除数据?',
onOk: () => {
del({
id: obj.id
}).then(response => {
this.$Message.success('操作成功');
that.load();
}).catch(error => {
console.log(error)
reject(error)
})
},
onCancel: () => {
//this.$Message.info('Clicked cancel');
}
});
}
},
submitForm(formName) {
var that = this;
this.$refs[formName].validate((valid) => {
if (valid) {
save(that.form).then(response => {
console.log(response)
this.$Message.success('操作成功');
that.load();
that.dialogFormVisible = false;
}).catch(error => {
reject(error)
})
} else {
this.$Message.error('数据校验失败');
return false;
}
});
},
resetForm(formName) {
var that = this;
this.$refs[formName].resetFields();
that.dialogFormVisible = false;
}
}
};
</script>
<style>
</style> </style>

Loading…
Cancel
Save