mirror of
https://github.com/shawncai/ERP.git
synced 2025-03-04 19:33:18 +08:00
权限
This commit is contained in:
parent
a56fdfb432
commit
0f6c75fa55
6 changed files with 390 additions and 16 deletions
src
api
icons/svg
lang
router
views
33
src/api/Getauthority.js
Normal file
33
src/api/Getauthority.js
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 角色列表
|
||||||
|
export function repairList() {
|
||||||
|
return request({
|
||||||
|
url: '/erp/role/getrolelist',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 角色列表
|
||||||
|
export function getauthoritydetaillist() {
|
||||||
|
return request({
|
||||||
|
url: '/erp/role/getauthoritydetaillist',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加角色
|
||||||
|
export function addrole(query) {
|
||||||
|
var params = new URLSearchParams()
|
||||||
|
if (query.rolename !== '' && query.rolename !== null && query.rolename !== undefined) {
|
||||||
|
params.append('rolename', query.rolename) // 你要传给后台的参数值 key/value
|
||||||
|
}
|
||||||
|
if (query.createPersonId !== '' && query.createPersonId !== null && query.createPersonId !== undefined) {
|
||||||
|
params.append('createPersonId', query.createPersonId) // 你要传给后台的参数值 key/value
|
||||||
|
}
|
||||||
|
return request({
|
||||||
|
url: '/erp/role/addrole',
|
||||||
|
method: 'post',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
1
src/icons/svg/quanxian.svg
Normal file
1
src/icons/svg/quanxian.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1557451461201" class="icon" style="" viewBox="0 0 1102 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6995" xmlns:xlink="http://www.w3.org/1999/xlink" width="215.234375" height="200"><defs><style type="text/css"></style></defs><path d="M511.921243 472.542686a196.892786 196.892786 0 1 0 0-393.785572 196.892786 196.892786 0 0 0 0 393.785572z m0 78.757114a275.6499 275.6499 0 1 1 0-551.2998 275.6499 275.6499 0 0 1 0 551.2998zM693.062606 708.814029h346.531303a63.005691 63.005691 0 0 1 63.005691 63.005691v189.017074a63.005691 63.005691 0 0 1-63.005691 63.005692H693.062606a63.005691 63.005691 0 0 1-63.005692-63.005692V771.81972a63.005691 63.005691 0 0 1 63.005692-63.005691z m15.751423 78.757114v157.514228h315.028457v-157.514228H708.814029z m118.135671 39.378557h78.757114a39.378557 39.378557 0 0 1 0 78.757114h-78.757114a39.378557 39.378557 0 0 1 0-78.757114z" p-id="6996"></path><path d="M866.328257 551.2998a157.514229 157.514229 0 0 1 157.514229 157.514229v78.757114H708.814029V708.814029a157.514229 157.514229 0 0 1 157.514228-157.514229z m-78.757114 157.514229h157.514228a78.757114 78.757114 0 1 0-157.514228 0zM551.2998 945.242886a39.378557 39.378557 0 1 1 0 78.757114L39.378557 1023.842486a39.378557 39.378557 0 0 1-39.378557-39.378557A511.921243 511.921243 0 0 1 511.921243 472.542686H551.2998a39.378557 39.378557 0 0 1 0 78.757114h-39.378557a433.242886 433.242886 0 0 0-431.431472 393.785571L551.2998 945.242886z" p-id="6997"></path></svg>
|
After (image error) Size: 1.6 KiB |
|
@ -267,7 +267,8 @@ export default {
|
||||||
CustomerVisitList: '客户回访列表',
|
CustomerVisitList: '客户回访列表',
|
||||||
GroupBuyRules: '团购活动规则',
|
GroupBuyRules: '团购活动规则',
|
||||||
AddGroupBuyRules: '新建团购活动规则',
|
AddGroupBuyRules: '新建团购活动规则',
|
||||||
GroupBuyRulesList: '团购活动规则列表'
|
GroupBuyRulesList: '团购活动规则列表',
|
||||||
|
Getauthority: '角色权限'
|
||||||
},
|
},
|
||||||
navbar: {
|
navbar: {
|
||||||
logOut: '退出登录',
|
logOut: '退出登录',
|
||||||
|
@ -1712,7 +1713,13 @@ export default {
|
||||||
endTime: '活动结束时间',
|
endTime: '活动结束时间',
|
||||||
isEffective: '应用状态'
|
isEffective: '应用状态'
|
||||||
},
|
},
|
||||||
|
Getauthority: {
|
||||||
|
rolename: '角色名称',
|
||||||
|
createTime: '创建时间',
|
||||||
|
createPersonName: '创建人'
|
||||||
|
},
|
||||||
public: {
|
public: {
|
||||||
|
save: '保存',
|
||||||
modifyDate: '最后修改日期',
|
modifyDate: '最后修改日期',
|
||||||
move: '调入',
|
move: '调入',
|
||||||
judgePersonName: '审核人',
|
judgePersonName: '审核人',
|
||||||
|
|
|
@ -414,6 +414,23 @@ export const asyncRouterMap = [
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/Getauthority',
|
||||||
|
component: Layout,
|
||||||
|
redirect: 'noredirect',
|
||||||
|
meta: {
|
||||||
|
icon: 'quanxian',
|
||||||
|
type: 1
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'index',
|
||||||
|
component: () => import('@/views/Getauthority/index'),
|
||||||
|
name: 'Getauthority',
|
||||||
|
meta: { title: 'Getauthority', noCache: true }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
// 库存管理
|
// 库存管理
|
||||||
{
|
{
|
||||||
path: '/Stockenter',
|
path: '/Stockenter',
|
||||||
|
|
305
src/views/Getauthority/index.vue
Normal file
305
src/views/Getauthority/index.vue
Normal file
|
@ -0,0 +1,305 @@
|
||||||
|
<template>
|
||||||
|
<div class="ERP-container">
|
||||||
|
<div class="app-container" style="padding-right: 0">
|
||||||
|
<!--基本信息-->
|
||||||
|
<el-card class="box-card" shadow="never" style="height: 800px">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-form ref="getemplist" :model="getemplist" label-width="100px" style="margin-top: 10px">
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-form-item label="角色名称" label-width="100px">
|
||||||
|
<el-input v-model="getemplist.rolename" :placeholder="$t('Getauthority.rolename')" clearable/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-button class="filter-item" type="primary" style="width: 86px" @click="newRole">{{ $t('public.save') }}</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-form>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="8" >
|
||||||
|
<div class="container" style="margin-top: 20px">
|
||||||
|
<div style="width: 100%;border: 1px solid #ebeef5;border-bottom:none;height: 30px;padding-top: 5px;padding-left: 28px;color: #606266;">角色列表</div>
|
||||||
|
<el-table
|
||||||
|
v-loading="listLoading"
|
||||||
|
:key="tableKey"
|
||||||
|
:data="list"
|
||||||
|
border
|
||||||
|
fit
|
||||||
|
height="730px"
|
||||||
|
highlight-current-row
|
||||||
|
style="width: 100%;">
|
||||||
|
<el-table-column :label="$t('Getauthority.rolename')" :resizable="false" align="center" min-width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.roleName }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('Getauthority.createTime')" :resizable="false" align="center" min-width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.createTime }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('Getauthority.createPersonName')" :resizable="false" align="center" min-width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.createPersonName }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<div class="container5" style="margin-top: 20px">
|
||||||
|
<div style="width: 100%;border: 1px solid #ebeef5;border-bottom:none;height: 30px;padding-top: 5px;padding-left: 28px;color: #606266;">模块列表</div>
|
||||||
|
<el-card class="box-card" shadow="never" style="height: 800px">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>名称</span>
|
||||||
|
</div>
|
||||||
|
<el-scrollbar class="tree">
|
||||||
|
<el-tree :data="treeData" :props="defaultProps" accordion highlight-current @node-click="handleNodeClick"/>
|
||||||
|
</el-scrollbar>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<div class="container3" style="margin-top: 20px">
|
||||||
|
<div style="width: 100%;border: 1px solid #ebeef5;border-bottom:none;height: 30px;padding-top: 5px;padding-left: 28px;color: #606266;">操作权限</div>
|
||||||
|
<el-card class="box-card" shadow="never" style="height: 730px">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>名称</span>
|
||||||
|
<el-checkbox v-model="checkAll" style="float: right;margin-bottom: -5px" @change="handleCheckAllChange">全选</el-checkbox>
|
||||||
|
</div>
|
||||||
|
<div class="upsides">
|
||||||
|
<el-checkbox-group v-model="operations" @change="handleCheckedCitiesChange">
|
||||||
|
<div v-for="(item,index) in operates" :key="index" class="text item">
|
||||||
|
<el-checkbox :label="item.id">{{ item.name }}</el-checkbox>
|
||||||
|
</div>
|
||||||
|
</el-checkbox-group>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<!--<el-col :span="6">-->
|
||||||
|
<!--<div class="container" style="margin-top: 37px">-->
|
||||||
|
<!--<span>1234</span>-->
|
||||||
|
<!--</div>-->
|
||||||
|
<!--</el-col>-->
|
||||||
|
</el-row>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { repairList, getauthoritydetaillist, addrole } from '@/api/Getauthority'
|
||||||
|
export default {
|
||||||
|
name: 'Getauthority',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
checkAll: false,
|
||||||
|
// 获取的数据
|
||||||
|
operations: [],
|
||||||
|
// 操作权限
|
||||||
|
operates: [],
|
||||||
|
// 所有权限数据
|
||||||
|
details: [],
|
||||||
|
// 树形数据
|
||||||
|
treeData: [],
|
||||||
|
defaultProps: {
|
||||||
|
children: 'authorityVos',
|
||||||
|
label: 'name'
|
||||||
|
},
|
||||||
|
// 表格数据
|
||||||
|
list: [],
|
||||||
|
// 表格数据条数
|
||||||
|
total: 0,
|
||||||
|
// 表格识别
|
||||||
|
tableKey: 0,
|
||||||
|
// 加载表格
|
||||||
|
listLoading: true,
|
||||||
|
getemplist: {
|
||||||
|
createPersonId: 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getlist()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
restAllForm() {
|
||||||
|
this.getemplist.rolename = null
|
||||||
|
},
|
||||||
|
// 新建角色
|
||||||
|
newRole() {
|
||||||
|
addrole(this.getemplist).then(res => {
|
||||||
|
if (res.data.ret === 200) {
|
||||||
|
this.$notify({
|
||||||
|
title: '成功',
|
||||||
|
message: '保存成功',
|
||||||
|
type: 'success',
|
||||||
|
offset: 100
|
||||||
|
})
|
||||||
|
this.restAllForm()
|
||||||
|
this.getlist()
|
||||||
|
} else {
|
||||||
|
this.$notify.error({
|
||||||
|
title: '错误',
|
||||||
|
message: res.data.msg,
|
||||||
|
offset: 100
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCheckAllChange(val) {
|
||||||
|
console.log(val)
|
||||||
|
console.log(this.details)
|
||||||
|
console.log(this.operations)
|
||||||
|
if (val === true) {
|
||||||
|
this.operations = this.details
|
||||||
|
} else {
|
||||||
|
this.operations = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleCheckedCitiesChange(value) {
|
||||||
|
console.log(value)
|
||||||
|
const checkedCount = value.length
|
||||||
|
this.checkAll = checkedCount === this.operates.length
|
||||||
|
this.isIndeterminate = checkedCount > 0 && checkedCount < this.operates.length
|
||||||
|
},
|
||||||
|
// 树列表选择数据
|
||||||
|
handleNodeClick(data) {
|
||||||
|
console.log(data)
|
||||||
|
if (data.authorityDetails !== null) {
|
||||||
|
this.operates = data.authorityDetails
|
||||||
|
this.details = data.detail.split(',').map(function(item) {
|
||||||
|
return Number(item)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.operates = []
|
||||||
|
this.details = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 角色列表
|
||||||
|
getlist() {
|
||||||
|
// 物料需求计划列表数据
|
||||||
|
this.listLoading = true
|
||||||
|
repairList().then(res => {
|
||||||
|
if (res.data.ret === 200) {
|
||||||
|
this.list = res.data.data.content
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
this.listLoading = false
|
||||||
|
}, 0.5 * 100)
|
||||||
|
})
|
||||||
|
|
||||||
|
getauthoritydetaillist().then(res => {
|
||||||
|
if (res.data.ret === 200) {
|
||||||
|
this.treeData = res.data.data.content
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 保存操作
|
||||||
|
// handlesave() {
|
||||||
|
// const Data = this.personalForm
|
||||||
|
// for (const key in Data) {
|
||||||
|
// if (Data[key] === '' || Data[key] === undefined || Data[key] === null) {
|
||||||
|
// delete Data[key]
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// const parms = JSON.stringify(Data)
|
||||||
|
// this.$refs.personalForm.validate((valid) => {
|
||||||
|
// if (valid) {
|
||||||
|
// addCustomerChat(parms).then(res => {
|
||||||
|
// console.log(res)
|
||||||
|
// if (res.data.ret === 200) {
|
||||||
|
// this.$notify({
|
||||||
|
// title: '成功',
|
||||||
|
// message: '保存成功',
|
||||||
|
// type: 'success',
|
||||||
|
// offset: 100
|
||||||
|
// })
|
||||||
|
// this.restAllForm()
|
||||||
|
// this.$refs.personalForm.clearValidate()
|
||||||
|
// this.$refs.personalForm.resetFields()
|
||||||
|
// } else {
|
||||||
|
// this.$notify.error({
|
||||||
|
// title: '错误',
|
||||||
|
// message: res.data.msg,
|
||||||
|
// offset: 100
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// } else {
|
||||||
|
// this.$notify.error({
|
||||||
|
// title: '错误',
|
||||||
|
// message: '信息未填完整',
|
||||||
|
// offset: 100
|
||||||
|
// })
|
||||||
|
// return false
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// 取消操作
|
||||||
|
handlecancel() {
|
||||||
|
this.$router.go(-1)
|
||||||
|
const view = { path: '/GroupBuyRules/AddGroupBuyRules', name: 'AddGroupBuyRules', fullPath: '/GroupBuyRules/AddGroupBuyRules', title: 'AddGroupBuyRules' }
|
||||||
|
this.$store.dispatch('delView', view).then(({ visitedViews }) => {
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style rel="stylesheet/css" scoped>
|
||||||
|
.ERP-container {
|
||||||
|
margin-right: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.ERP-container >>> .el-card__header{
|
||||||
|
padding:13px 28px;
|
||||||
|
color: #909399;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.ERP-container >>> .el-scrollbar__wrap {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
.tree{
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
.tree >>> .el-tree {
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
.upsides >>> .el-checkbox{
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding-right: 46px;
|
||||||
|
flex-flow: row-reverse;
|
||||||
|
}
|
||||||
|
.form-name{
|
||||||
|
font-size: 18px;
|
||||||
|
color: #373e4f;
|
||||||
|
margin-bottom: -20px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
.container{
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
.el-button+.el-button{
|
||||||
|
width: 98px;
|
||||||
|
}
|
||||||
|
.container3 .text {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container3 .item {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
.clearfix:before,
|
||||||
|
.clearfix:after {
|
||||||
|
display: table;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -8,22 +8,24 @@
|
||||||
placeholder="输入关键字进行过滤"
|
placeholder="输入关键字进行过滤"
|
||||||
style="margin-bottom: 30px"
|
style="margin-bottom: 30px"
|
||||||
clearable/>
|
clearable/>
|
||||||
<el-tree
|
<el-scrollbar class="tree">
|
||||||
ref="tree2"
|
<el-tree
|
||||||
:data="detalist"
|
ref="tree2"
|
||||||
:props="detaillistProps"
|
:data="detalist"
|
||||||
:filter-node-method="filterNode"
|
:props="detaillistProps"
|
||||||
:default-expand-all="true"
|
:filter-node-method="filterNode"
|
||||||
class="filter-tree"
|
:default-expand-all="true"
|
||||||
@node-click="handleNodeClick">
|
class="filter-tree"
|
||||||
<span slot-scope="{ node, data }" class="custom-tree-node">
|
@node-click="handleNodeClick">
|
||||||
<span>{{ node.label }}</span>
|
<span slot-scope="{ node, data }" class="custom-tree-node">
|
||||||
<span v-if="data.parentId !== 0" style="margin-left: 50px">
|
<span>{{ node.label }}</span>
|
||||||
<i class="el-icon-edit" @click="edittree(data)"/>
|
<span v-if="data.parentId !== 0" style="margin-left: 50px">
|
||||||
<i class="el-icon-delete" @click="nodedelete(data)"/>
|
<i class="el-icon-edit" @click="edittree(data)"/>
|
||||||
|
<i class="el-icon-delete" @click="nodedelete(data)"/>
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</el-tree>
|
||||||
</el-tree>
|
</el-scrollbar>
|
||||||
<el-dialog :visible.sync="editVisible" title="修改分类" class="normal" width="600px">
|
<el-dialog :visible.sync="editVisible" title="修改分类" class="normal" width="600px">
|
||||||
<el-form :model="edittreeform" label-position="left" label-width="120px" style="width: 400px; margin-left:50px;">
|
<el-form :model="edittreeform" label-position="left" label-width="120px" style="width: 400px; margin-left:50px;">
|
||||||
<el-form-item :label="$t('Product.name')" label-width="120px">
|
<el-form-item :label="$t('Product.name')" label-width="120px">
|
||||||
|
@ -340,6 +342,15 @@ export default {
|
||||||
.ERP-container {
|
.ERP-container {
|
||||||
margin: 0px 20px;
|
margin: 0px 20px;
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.ERP-container >>> .el-scrollbar__wrap {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
.tree{
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
.tree >>> .el-tree {
|
||||||
|
min-width: 100%;
|
||||||
}
|
}
|
||||||
.form-name{
|
.form-name{
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
|
|
Loading…
Reference in a new issue