...
|
...
|
@@ -17,9 +17,9 @@ |
|
|
|
|
|
<!--列表-->
|
|
|
<el-table :data="tableList" highlight-current-row v-loading="listLoading" @selection-change="selsChange" style="width: 100%;"
|
|
|
row-key="permissionId"
|
|
|
border
|
|
|
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
|
|
row-key="permissionId"
|
|
|
border
|
|
|
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
|
|
>
|
|
|
<el-table-column type="selection" width="55">
|
|
|
</el-table-column>
|
...
|
...
|
@@ -50,86 +50,109 @@ |
|
|
</el-pagination>
|
|
|
</el-col>
|
|
|
|
|
|
<!--编辑界面-->
|
|
|
<el-dialog title="编辑" :visible.sync="editFormVisible" :close-on-click-modal="false">
|
|
|
<el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
|
|
|
<el-form-item label="ID">
|
|
|
<span>{{editForm.permissionId}}</span>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="权限名称" prop="name">
|
|
|
<el-input v-model="editForm.name" auto-complete="off" placeholder="请输入权限名称:例如:用户新增权限"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="权限描述" prop="description">
|
|
|
<el-input v-model="editForm.description" auto-complete="off" placeholder="请输入权限描述:例如:用户管理员"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="权限总路径" prop="path">
|
|
|
<el-input v-model="editForm.path" auto-complete="off" placeholder="请输入父目录ID:例如:123"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="权限路径" prop="url">
|
|
|
<el-input v-model="editForm.url" auto-complete="off" placeholder="请输入权限描述:例如:/user/update"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="权限排序" prop="permissionOrder">
|
|
|
<el-input v-model="editForm.permissionOrder" auto-complete="off" placeholder="请输入权限排序:例如:123"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="父目录ID" prop="parentId">
|
|
|
<el-input v-model="editForm.parentId" auto-complete="off" placeholder="请输入父目录ID:例如:123"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="ismenu" prop="ismenu">
|
|
|
<el-switch
|
|
|
v-model="editForm.ismenu"
|
|
|
active-color="#13ce66"
|
|
|
inactive-color="#ff4949"
|
|
|
active-text="是"
|
|
|
inactive-text="否"
|
|
|
active-value="1"
|
|
|
inactive-value="0">
|
|
|
</el-switch>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button @click.native="editFormVisible = false">取消</el-button>
|
|
|
<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
<!--新增界面-->
|
|
|
<el-dialog title="新增" :visible.sync="addFormVisible" :close-on-click-modal="false">
|
|
|
<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
|
|
|
<el-form-item label="权限名称" prop="name">
|
|
|
<el-input v-model="addForm.name" auto-complete="off" placeholder="请输入权限名称:例如:用户新增权限"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="权限描述" prop="description">
|
|
|
<el-input v-model="addForm.description" auto-complete="off" placeholder="请输入权限描述:例如:用户管理员"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="权限总路径" prop="path">
|
|
|
<el-input v-model="addForm.path" auto-complete="off" placeholder="请输入父目录ID:例如:123"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="权限路径" prop="url">
|
|
|
<el-input v-model="addForm.url" auto-complete="off" placeholder="请输入权限描述:例如:/user/update"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="权限排序" prop="permissionOrder">
|
|
|
<el-input v-model="addForm.permissionOrder" auto-complete="off" placeholder="请输入权限排序:例如:123"></el-input>
|
|
|
<el-dialog :title="dialogMap[dialogStatus]" :visible.sync="addFormVisible" :close-on-click-modal="false">
|
|
|
<el-form :model="addForm" label-width="110px" :rules="addFormRules" ref="addForm">
|
|
|
|
|
|
<el-form-item label="ID">
|
|
|
<span>{{addForm.permissionId}}</span>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="父目录ID" prop="parentId">
|
|
|
<el-input v-model="addForm.parentId" auto-complete="off" placeholder="请输入父目录ID:例如:123"></el-input>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="权限名称" prop="name">
|
|
|
<el-input v-model="addForm.name" auto-complete="off" placeholder="请输入权限名称:例如:用户新增权限"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="权限描述" prop="description">
|
|
|
<el-input v-model="addForm.description" auto-complete="off" placeholder="请输入权限描述:例如:用户管理员"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col>
|
|
|
<el-form-item label="权限总路径" prop="path">
|
|
|
<el-input v-model="addForm.path" auto-complete="off" placeholder="设置为前端router的path值"></el-input>
|
|
|
<el-cascader-panel
|
|
|
v-model="addForm.path"
|
|
|
:options="cascaderOptions"
|
|
|
:props="pannelProps"
|
|
|
></el-cascader-panel>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-form-item label="具体访问路径" prop="url">
|
|
|
<el-input v-model="addForm.url" auto-complete="off" placeholder="设置为后端微服务路径:例如:/cloud-user-center/user/update"></el-input>
|
|
|
<el-cascader-panel
|
|
|
v-model="addForm.url"
|
|
|
:options="tableList"
|
|
|
:props="pannelUrlProps"
|
|
|
></el-cascader-panel>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="ismenu" prop="ismenu">
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="权限排序" prop="permissionOrder">
|
|
|
<el-input v-model="addForm.permissionOrder" auto-complete="off" placeholder="请输入权限排序:例如:123"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="设置权限上级" prop="parentId">
|
|
|
<el-input v-model="addForm.parentId" auto-complete="off" placeholder="请输入或者选择适配权限"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-button type="info" size="mini" @click="drawer = true">设置权限上级</el-button>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
<el-form-item label="是否是目录" prop="ismenu">
|
|
|
<el-switch
|
|
|
v-model="addForm.ismenu"
|
|
|
active-color="#13ce66"
|
|
|
inactive-color="#ff4949"
|
|
|
active-text="是"
|
|
|
inactive-text="否"
|
|
|
active-value="1"
|
|
|
inactive-value="0">
|
|
|
>
|
|
|
</el-switch>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button @click.native="addFormVisible = false">取消</el-button>
|
|
|
<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
|
|
|
<el-button type="primary" @click.native="dialogStatus==='create'?addSubmit():editSubmit()" :loading="addLoading">提交</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
<el-drawer
|
|
|
title="设置权限上级"
|
|
|
:visible.sync="drawer"
|
|
|
append-to-body
|
|
|
withHeader>
|
|
|
<el-row>
|
|
|
<el-col :span="7" :offset="1">
|
|
|
<span style="color:#E6A23C">不设置为顶级权限</span>
|
|
|
</el-col>
|
|
|
<el-col :span="8" >
|
|
|
<el-button type="primary" @click.native="treeMerge(false)">合并节点</el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-button type="primary" @click.native="treeMerge(true)">展开节点</el-button>
|
|
|
</el-col>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</el-row>
|
|
|
<el-tree :data="tableList" :props="treeDefaultProps"
|
|
|
@check="clickDeal"
|
|
|
:default-expand-all = "treeExpand"
|
|
|
show-checkbox
|
|
|
highlight-current
|
|
|
check-strictly
|
|
|
node-key="permissionId" ref="tree">
|
|
|
</el-tree>
|
|
|
</el-drawer>
|
|
|
</section>
|
|
|
</template>
|
|
|
|
...
|
...
|
@@ -137,71 +160,73 @@ |
|
|
import util from '../../common/js/util'
|
|
|
//import NProgress from 'nprogress'
|
|
|
import { getList, remove, batchRemove, edit, add } from '../../api/perm_api';
|
|
|
import moment from 'moment'
|
|
|
import moment from 'moment'
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
filters: {
|
|
|
name: ''
|
|
|
name: ''
|
|
|
},
|
|
|
cascaderOptions:[],
|
|
|
tableList: [],
|
|
|
total: 0,
|
|
|
pageNum: 1,
|
|
|
pageSize: 100,
|
|
|
pageNum: 1,
|
|
|
pageSize: 500,
|
|
|
listLoading: false,
|
|
|
sels: [],//列表选中列
|
|
|
//编辑界面是否显示
|
|
|
editFormVisible: false,
|
|
|
editLoading: false,
|
|
|
editFormRules: {
|
|
|
roleName: [
|
|
|
{ required: true, message: '请输入权限名称', trigger: 'blur' }
|
|
|
]
|
|
|
treeDefaultProps: {
|
|
|
children: 'children',
|
|
|
label: 'name',
|
|
|
},
|
|
|
//编辑界面数据
|
|
|
editForm: {
|
|
|
permissionId:'',
|
|
|
description: '',
|
|
|
name: '',
|
|
|
url: '',
|
|
|
path: '',
|
|
|
parentId: '',
|
|
|
ismenu: '',
|
|
|
permissionOrder:''
|
|
|
pannelProps: {
|
|
|
children: 'children',
|
|
|
label: 'name',
|
|
|
value: 'path',
|
|
|
checkStrictly: true,
|
|
|
},
|
|
|
|
|
|
pannelUrlProps: {
|
|
|
children: 'children',
|
|
|
label: 'name',
|
|
|
value: 'url',
|
|
|
checkStrictly: true,
|
|
|
emitPath: false
|
|
|
},
|
|
|
treeExpand: true,
|
|
|
addFormVisible: false,//新增界面是否显示
|
|
|
dialogMap: {
|
|
|
update: '编辑',
|
|
|
create: '新增',
|
|
|
},
|
|
|
dialogStatus: 'create',
|
|
|
drawer: false,
|
|
|
addLoading: false,
|
|
|
addFormRules: {
|
|
|
name: [
|
|
|
name: [
|
|
|
{ required: true, message: '请输入权限名称', trigger: 'blur' }
|
|
|
],
|
|
|
description: [
|
|
|
{ required: true, message: '请输入权限描述', trigger: 'blur' }
|
|
|
path: [
|
|
|
{ required: true, message: '请输入总路径', trigger: 'blur' }
|
|
|
],
|
|
|
url: [
|
|
|
{ required: true, message: '请输入权限路径', trigger: 'blur' }
|
|
|
],
|
|
|
paht: [
|
|
|
{ required: true, message: '请输入总路径', trigger: 'blur' }
|
|
|
],
|
|
|
url: [
|
|
|
{ required: true, message: '请输入权限路径', trigger: 'blur' }
|
|
|
],
|
|
|
permissionOrder: [
|
|
|
{ required: true, message: '请输入排序字段', trigger: 'blur' }
|
|
|
],
|
|
|
parentId: [
|
|
|
{ required: true, message: '请输入父类ID', trigger: 'blur' }
|
|
|
]
|
|
|
permissionOrder: [
|
|
|
{ required: true, message: '请输入排序字段', trigger: 'blur' }
|
|
|
]
|
|
|
},
|
|
|
//新增界面数据
|
|
|
addForm: {
|
|
|
description: '',
|
|
|
name: '',
|
|
|
url: '',
|
|
|
permissionId:'',
|
|
|
description: '',
|
|
|
name: '',
|
|
|
url: '',
|
|
|
path: '',
|
|
|
parentId: '',
|
|
|
ismenu: '',
|
|
|
permissionOrder:''
|
|
|
|
|
|
parentId: 0,
|
|
|
ismenu: true,
|
|
|
permissionOrder: '0',
|
|
|
chidren: [],
|
|
|
component: '',
|
|
|
method: ''
|
|
|
}
|
|
|
|
|
|
}
|
...
|
...
|
@@ -211,9 +236,9 @@ |
|
|
formatSex: function (row, column) {
|
|
|
return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
|
|
|
},
|
|
|
formatState: function (row, column) {
|
|
|
return row.ismenu == true ? '是' : row.ismenu == false ? '否' : '未知';
|
|
|
},
|
|
|
formatState: function (row, column) {
|
|
|
return row.ismenu == true ? '是' : row.ismenu == false ? '否' : '未知';
|
|
|
},
|
|
|
handleCurrentChange(val) {
|
|
|
this.pageNum = val;
|
|
|
this.getTableList();
|
...
|
...
|
@@ -221,30 +246,26 @@ |
|
|
//获取列表
|
|
|
getTableList() {
|
|
|
let para = {
|
|
|
pageNum: this.pageNum,
|
|
|
pageSize: this.pageSize,
|
|
|
name: this.filters.name
|
|
|
pageNum: this.pageNum,
|
|
|
pageSize: this.pageSize,
|
|
|
name: this.filters.name
|
|
|
};
|
|
|
this.listLoading = true;
|
|
|
//NProgress.start();
|
|
|
getList(para).then((res) => {
|
|
|
getList(para).then((res) => {
|
|
|
this.total = res.data.total;
|
|
|
this.tableList = res.data.list;
|
|
|
this.listLoading = false;
|
|
|
//NProgress.done();
|
|
|
}).catch((error) => {
|
|
|
|
|
|
this.listLoading = false;
|
|
|
if(null!= error.response && error.response!==undefined){
|
|
|
let status= error.response.status;
|
|
|
let msg = error.response.statusText;
|
|
|
alert(status+msg);
|
|
|
this.listLoading = false;
|
|
|
if(null!= error.response && error.response!==undefined){
|
|
|
let status= error.response.status;
|
|
|
let msg = error.response.statusText;
|
|
|
alert(status+msg);
|
|
|
}else {
|
|
|
alert(error);
|
|
|
alert(error);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
...
|
...
|
@@ -256,7 +277,7 @@ |
|
|
this.listLoading = true;
|
|
|
//NProgress.start();
|
|
|
let para = { permissionId: row.permissionId };
|
|
|
remove(para).then((res) => {
|
|
|
remove(para).then((res) => {
|
|
|
this.listLoading = false;
|
|
|
//NProgress.done();
|
|
|
this.$message({
|
...
|
...
|
@@ -265,53 +286,55 @@ |
|
|
});
|
|
|
this.getTableList();
|
|
|
}).catch((error) => {
|
|
|
this.listLoading = false;
|
|
|
alert(error);
|
|
|
this.listLoading = false;
|
|
|
alert(error);
|
|
|
});
|
|
|
}).catch();
|
|
|
},
|
|
|
/**
|
|
|
/**
|
|
|
* 显示编辑界面
|
|
|
* @param index
|
|
|
* @param row 为这行的数据对象
|
|
|
*/
|
|
|
* @param index
|
|
|
* @param row 为这行的数据对象
|
|
|
*/
|
|
|
handleEdit: function (index, row) {
|
|
|
this.editFormVisible = true;
|
|
|
this.editForm = Object.assign({}, row);
|
|
|
this.addFormVisible = true;
|
|
|
this.dialogStatus= 'update',
|
|
|
this.addForm = Object.assign({}, row);
|
|
|
},
|
|
|
//显示新增界面,每次点开初始化数据
|
|
|
handleAdd: function () {
|
|
|
this.addFormVisible = true;
|
|
|
this.dialogStatus= 'create',
|
|
|
this.addForm = {
|
|
|
username: '',
|
|
|
password: '',
|
|
|
sex: 1,
|
|
|
address: '',
|
|
|
realname: '',
|
|
|
email: '',
|
|
|
mobilephone: '',
|
|
|
age: 1
|
|
|
description: '',
|
|
|
name: '',
|
|
|
url: '',
|
|
|
path: '',
|
|
|
parentId: 0,
|
|
|
ismenu: '',
|
|
|
permissionOrder:'0'
|
|
|
|
|
|
};
|
|
|
},
|
|
|
//编辑
|
|
|
editSubmit: function () {
|
|
|
this.$refs.editForm.validate((valid) => {
|
|
|
this.$refs.addForm.validate((valid) => {
|
|
|
if (valid) {
|
|
|
this.$confirm('确认提交吗?', '提示', {}).then(() => {
|
|
|
this.editLoading = true;
|
|
|
this.addLoading = true;
|
|
|
//NProgress.start();
|
|
|
let para = Object.assign({}, this.editForm);
|
|
|
para.creattime = moment(para.creattime).format('YYYY-MM-DD HH:mm:ss');
|
|
|
this.editLoading = false;
|
|
|
edit(para).then((res) => {
|
|
|
let para = Object.assign({}, this.addForm);
|
|
|
para.creattime = moment(para.creattime).format('YYYY-MM-DD HH:mm:ss');
|
|
|
this.addLoading = false;
|
|
|
edit(para).then((res) => {
|
|
|
|
|
|
//NProgress.done();
|
|
|
this.$message({
|
|
|
message: '提交成功',
|
|
|
type: 'success'
|
|
|
});
|
|
|
this.$refs['editForm'].resetFields();
|
|
|
this.editFormVisible = false;
|
|
|
this.$refs['addForm'].resetFields();
|
|
|
this.addFormVisible = false;
|
|
|
this.getTableList();
|
|
|
}).catch(error => alert(error));
|
|
|
});
|
...
|
...
|
@@ -327,7 +350,7 @@ |
|
|
//NProgress.start();
|
|
|
let para = Object.assign({}, this.addForm);
|
|
|
para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
|
|
|
add(para).then((res) => {
|
|
|
add(para).then((res) => {
|
|
|
this.addLoading = false;
|
|
|
//NProgress.done();
|
|
|
this.$message({
|
...
|
...
|
@@ -354,7 +377,7 @@ |
|
|
this.listLoading = true;
|
|
|
//NProgress.start();
|
|
|
let para = { ids: ids };
|
|
|
batchRemove(para).then((res) => {
|
|
|
batchRemove(para).then((res) => {
|
|
|
this.listLoading = false;
|
|
|
//NProgress.done();
|
|
|
this.$message({
|
...
|
...
|
@@ -366,15 +389,43 @@ |
|
|
}).catch(() => {
|
|
|
|
|
|
});
|
|
|
},
|
|
|
showDrawer: function(){
|
|
|
this.drawer = true;
|
|
|
this.$nextTick(() => {
|
|
|
//反向适配
|
|
|
this.$refs.tree.setCheckedKeys([this.addForm.parentId]);
|
|
|
});
|
|
|
},
|
|
|
clickDeal: function (currentObj, treeStatus) {
|
|
|
this.addForm.parentId = currentObj.permissionId;
|
|
|
this.$refs.tree.setCheckedKeys([currentObj.permissionId]);
|
|
|
// this.drawer = false;
|
|
|
},
|
|
|
treeMerge: function (expand) {
|
|
|
this.treeExpand = expand;
|
|
|
for(var i=0;i<this.$refs.tree.store._getAllNodes().length;i++){
|
|
|
this.$refs.tree.store._getAllNodes()[i].expanded=this.treeExpand;
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
this.getTableList();
|
|
|
this.cascaderOptions = this.$router.options.routes;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
<style rel="stylesheet/scss" lang="scss">
|
|
|
.el-drawer.rtl {
|
|
|
overflow: scroll
|
|
|
}
|
|
|
.el-row{
|
|
|
.el-col {
|
|
|
margin-right: 0px;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
</style> |
|
|
\ No newline at end of file |
...
|
...
|
|