|
|
@ -7,7 +7,7 @@ import moment from 'moment' |
|
|
|
import { UserFilled } from '@element-plus/icons-vue' |
|
|
|
import _ from 'lodash' |
|
|
|
import request from '@/util/http' |
|
|
|
|
|
|
|
import API from '@/util/http' |
|
|
|
// 客户明细表格 什么表格??????? |
|
|
|
const tableData = ref([]) |
|
|
|
const total = ref(100) |
|
|
@ -40,8 +40,8 @@ const permissionAddVisible = ref(false) |
|
|
|
const addAdmin = ref({ |
|
|
|
account: '', |
|
|
|
name: '', |
|
|
|
market: '', |
|
|
|
permission: [], |
|
|
|
market: [], |
|
|
|
permission: '', |
|
|
|
postiton: '', |
|
|
|
machineId: '', // 初始机器码输入框 |
|
|
|
machineIds: [], // 动态添加的机器码输入框 |
|
|
@ -51,7 +51,8 @@ const addAdmin = ref({ |
|
|
|
const addRole = ref({ |
|
|
|
roleName: '', |
|
|
|
parentName: '', |
|
|
|
permissionSelect: [] |
|
|
|
checkedKeys: [], |
|
|
|
grade: '' |
|
|
|
}) |
|
|
|
// 新增角色的权限列表 |
|
|
|
const permissionSelect = ref() |
|
|
@ -69,36 +70,13 @@ const permissionEditObj = ref({}) |
|
|
|
const delObj = ref({}) |
|
|
|
// 各角色权限列表 |
|
|
|
const lists = [ |
|
|
|
{name: '管理员', value: '1', permissions: ['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20']}, |
|
|
|
{name: '总部财务', value: '2', permissions: ['2','3','4','5','6','7','8','9']}, |
|
|
|
{name: '总部客服', value: '3', permissions: ['2','3','4','5','6','7','8']}, |
|
|
|
{name: '地区负责人', value: '4', permissions: ['2','3','4','5','6']}, |
|
|
|
{name: '地区财务', value: '5', permissions: ['2','3','4','5']}, |
|
|
|
{name: '客服专员', value: '6', permissions: ['2','3']} |
|
|
|
{ name: '管理员', value: '1', permissions: ['2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20'] }, |
|
|
|
{ name: '总部财务', value: '2', permissions: ['2', '3', '4', '5', '6', '7', '8', '9'] }, |
|
|
|
{ name: '总部客服', value: '3', permissions: ['2', '3', '4', '5', '6', '7', '8'] }, |
|
|
|
{ name: '地区负责人', value: '4', permissions: ['2', '3', '4', '5', '6'] }, |
|
|
|
{ name: '地区财务', value: '5', permissions: ['2', '3', '4', '5'] }, |
|
|
|
{ name: '客服专员', value: '6', permissions: ['2', '3'] } |
|
|
|
] |
|
|
|
const filteredData = ref([]) |
|
|
|
|
|
|
|
watch(() => addRole.value.parentName, (newValue) => { |
|
|
|
const selectedRole = lists.find(role => role.value === newValue) |
|
|
|
if (selectedRole) { |
|
|
|
const allowedPermissions = selectedRole.permissions |
|
|
|
filteredData.value = filterPermissions(data, allowedPermissions) |
|
|
|
} else { |
|
|
|
filteredData.value = data |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
const filterPermissions = (permissions, allowedPermissions) => { |
|
|
|
return permissions.filter(permission => { |
|
|
|
if (allowedPermissions.includes(permission.value)) { |
|
|
|
if (permission.children) { |
|
|
|
permission.children = filterPermissions(permission.children, allowedPermissions) |
|
|
|
} |
|
|
|
return true |
|
|
|
} |
|
|
|
return false |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
const get = async function (val) { |
|
|
|
try { |
|
|
@ -164,6 +142,17 @@ const getStore = async function () { |
|
|
|
// 打开新增用户权限弹窗 |
|
|
|
const openUserAddVisible = function () { |
|
|
|
userAddVisible.value = true |
|
|
|
addAdmin.value = { |
|
|
|
account: '', |
|
|
|
name: '', |
|
|
|
market: '', |
|
|
|
permission: '', |
|
|
|
postiton: '', |
|
|
|
machineId: '', |
|
|
|
machineIds: [], |
|
|
|
remark: '' |
|
|
|
}; |
|
|
|
|
|
|
|
} |
|
|
|
// 新增角色弹窗 |
|
|
|
const openPermissionAddVisible = function () { |
|
|
@ -187,7 +176,6 @@ const closeUserAddVisible = function () { |
|
|
|
} |
|
|
|
const closePermissionAddVisible = function () { |
|
|
|
permissionAddVisible.value = false |
|
|
|
addRole.value = {} |
|
|
|
Ref.value.resetFields(); |
|
|
|
} |
|
|
|
// 新增用户权限初始化 |
|
|
@ -203,6 +191,7 @@ const permissionAddInit = function () { |
|
|
|
|
|
|
|
const permissionAdd = async function () { |
|
|
|
Ref.value.validate(async (valid) => { |
|
|
|
console.log('addRole', addRole.value) |
|
|
|
console.log('valid', valid) |
|
|
|
if (valid) { |
|
|
|
try { |
|
|
@ -350,6 +339,22 @@ const delConfirm = async function () { |
|
|
|
ElMessage.error('删除权限失败') |
|
|
|
} |
|
|
|
} |
|
|
|
const handleAddRole = async function () { |
|
|
|
try { |
|
|
|
const res = await API({ |
|
|
|
url: '/role/add', |
|
|
|
data: { |
|
|
|
"roleName": addRole.value.roleName, |
|
|
|
"menuIds": addRole.value.checkedKeys, |
|
|
|
"priority": addRole.value.grade, |
|
|
|
"fatherId": addRole.value.parentName |
|
|
|
} |
|
|
|
}) |
|
|
|
console.log('成功了,看看addRole', addRole.value) |
|
|
|
} catch (error) { |
|
|
|
console.log('请求失败', error) |
|
|
|
} |
|
|
|
} |
|
|
|
// 禁用启用用户权限 |
|
|
|
const editStatus = async function (row) { |
|
|
|
try { |
|
|
@ -399,109 +404,143 @@ const data = [ |
|
|
|
{ |
|
|
|
value: '3', |
|
|
|
label: '财务审核', |
|
|
|
children:[ |
|
|
|
children: [ |
|
|
|
{ |
|
|
|
value:'11', |
|
|
|
label:'充值审核' |
|
|
|
value: '11', |
|
|
|
label: '充值审核' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'13', |
|
|
|
label:'退款审核' |
|
|
|
},{ |
|
|
|
value:'12',//14 |
|
|
|
label:'审核操作' |
|
|
|
value: '13', |
|
|
|
label: '退款审核' |
|
|
|
}, { |
|
|
|
value: '12',//14 |
|
|
|
label: '审核操作' |
|
|
|
} |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '4', |
|
|
|
label: '汇率管理' |
|
|
|
},{ |
|
|
|
}, { |
|
|
|
value: '5', |
|
|
|
label: '充值管理', |
|
|
|
children:[ |
|
|
|
children: [ |
|
|
|
{ |
|
|
|
value:'17', |
|
|
|
label:'新增充值' |
|
|
|
value: '17', |
|
|
|
label: '新增充值' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'18', |
|
|
|
label:'金币充值明细' |
|
|
|
value: '18', |
|
|
|
label: '金币充值明细' |
|
|
|
} |
|
|
|
] |
|
|
|
},{ |
|
|
|
}, { |
|
|
|
value: '6', |
|
|
|
label: '消耗管理', |
|
|
|
children:[ |
|
|
|
children: [ |
|
|
|
{ |
|
|
|
value:'19', |
|
|
|
label:'新增消耗' |
|
|
|
value: '19', |
|
|
|
label: '新增消耗' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'20', |
|
|
|
label:'金币消耗明细' |
|
|
|
value: '20', |
|
|
|
label: '金币消耗明细' |
|
|
|
} |
|
|
|
] |
|
|
|
},{ |
|
|
|
}, { |
|
|
|
value: '7', |
|
|
|
label: '退款管理', |
|
|
|
children:[ |
|
|
|
children: [ |
|
|
|
{ |
|
|
|
value:'21', |
|
|
|
label:'新增退款' |
|
|
|
value: '21', |
|
|
|
label: '新增退款' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'22', |
|
|
|
label:'金币退款明细' |
|
|
|
value: '22', |
|
|
|
label: '金币退款明细' |
|
|
|
} |
|
|
|
] |
|
|
|
},{ |
|
|
|
}, { |
|
|
|
value: '8', |
|
|
|
label: '客户账户明细', |
|
|
|
children:[ |
|
|
|
children: [ |
|
|
|
{ |
|
|
|
value:'23', |
|
|
|
label:'客户金币明细' |
|
|
|
value: '23', |
|
|
|
label: '客户金币明细' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'24', |
|
|
|
label:'客户金币余额' |
|
|
|
value: '24', |
|
|
|
label: '客户金币余额' |
|
|
|
} |
|
|
|
] |
|
|
|
},{ |
|
|
|
}, { |
|
|
|
value: '9', |
|
|
|
label: '权限管理' |
|
|
|
},{ |
|
|
|
}, { |
|
|
|
value: '100', |
|
|
|
label: '地区数据', |
|
|
|
children:[ |
|
|
|
{ |
|
|
|
value:'101', |
|
|
|
label:'总部' |
|
|
|
children: [ |
|
|
|
{ |
|
|
|
value: '101', |
|
|
|
label: '总部' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'102', |
|
|
|
label:'香港' |
|
|
|
value: '102', |
|
|
|
label: '香港' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'103', |
|
|
|
label:'新加坡' |
|
|
|
value: '103', |
|
|
|
label: '新加坡' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'104', |
|
|
|
label:'马来西亚' |
|
|
|
value: '104', |
|
|
|
label: '马来西亚' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'105', |
|
|
|
label:'越南' |
|
|
|
value: '105', |
|
|
|
label: '越南' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value:'106', |
|
|
|
label:'韩国' |
|
|
|
value: '106', |
|
|
|
label: '韩国' |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
] |
|
|
|
const filteredData = ref([...data]) |
|
|
|
|
|
|
|
watch(() => addRole.value.parentName, (newValue) => { |
|
|
|
if (newValue) { |
|
|
|
const selectedRole = lists.find(role => role.value === newValue) |
|
|
|
if (selectedRole) { |
|
|
|
const allowedPermissions = selectedRole.permissions |
|
|
|
filteredData.value = filterPermissions(data, allowedPermissions) |
|
|
|
} else { |
|
|
|
filteredData.value = data |
|
|
|
} |
|
|
|
} else { |
|
|
|
filteredData.value = data |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
const filterPermissions = (permissions, allowedPermissions) => { |
|
|
|
return permissions.filter(permission => { |
|
|
|
if (allowedPermissions.includes(permission.value)) { |
|
|
|
if (permission.children) { |
|
|
|
permission.children = filterPermissions(permission.children, allowedPermissions) |
|
|
|
} |
|
|
|
return true |
|
|
|
} |
|
|
|
return false |
|
|
|
}) |
|
|
|
} |
|
|
|
const includeHq = computed(() => { |
|
|
|
const i = addAdmin.value.market.includes('总部') |
|
|
|
return (item) => i && item != '总部' |
|
|
|
}) |
|
|
|
const handleCheckChange = (checkedNodes, { checkedKeys }) => { |
|
|
|
addRole.value.checkedKeys = checkedKeys; |
|
|
|
}; |
|
|
|
</script> |
|
|
|
|
|
|
|
<template> |
|
|
@ -610,30 +649,32 @@ const data = [ |
|
|
|
<!-- 居中显示 --> |
|
|
|
|
|
|
|
<el-form ref="Ref" :model="addAdmin" label-width="auto" style="max-width: 600px; align-items: center"> |
|
|
|
<el-form-item prop="account" label="OA号:" required> |
|
|
|
<el-form-item prop="account" label="OA号:" required clearable> |
|
|
|
<el-input v-model="addAdmin.account" placeholder="请输入OA号" style="width: 220px" /> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item prop="name" label="用户名:" required> |
|
|
|
<el-form-item prop="name" label="用户名:" required clearable> |
|
|
|
<el-input v-model="addAdmin.name" placeholder="请输入用户名" style="width: 220px" /> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item prop="market" label="所属地区:" required> |
|
|
|
<el-select multiple v-model="addAdmin.market" placeholder="请选择所属地区" style="width: 440px"> |
|
|
|
<el-option v-for="item in market" :key="item" :label="item" :value="item" /> |
|
|
|
<el-form-item prop="market" label="所属地区:" required clearable> |
|
|
|
<el-select multiple v-model="addAdmin.market" placeholder="请选择所属地区" style="width: 440px" clearable> |
|
|
|
<el-option v-for="item in market" :key="item" :label="item" :value="item" :disabled="includeHq(item)" /> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="permission" label="角色名称:" required> |
|
|
|
<el-select v-model="addAdmin.permission" placeholder="请选择角色名称" style="width: 220px"> |
|
|
|
<el-option v-for="item in permissionList" :key="item.value" :label="item.label" :value="item.value"></el-option> |
|
|
|
<el-select v-model="addAdmin.permission" placeholder="请选择角色名称" style="width: 220px" clearable> |
|
|
|
<el-option v-for="item in permissionList" :key="item.value" :label="item.label" |
|
|
|
:value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="postiton" label="职位:" required> |
|
|
|
<el-input v-model="addAdmin.postiton" placeholder="请输入职位" style="width: 220px" /> |
|
|
|
<el-input v-model="addAdmin.postiton" placeholder="请输入职位" style="width: 220px" clearable /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="machineId" label="机器码:" required> |
|
|
|
<div style="display: flex; align-items: center; flex-wrap: wrap;"> |
|
|
|
<el-input v-model="addAdmin.machineId" placeholder="请输入机器码" style="width: 220px; margin-right: 10px;" /> |
|
|
|
<el-input v-model="addAdmin.machineId" placeholder="请输入机器码" style="width: 220px; margin-right: 10px;" |
|
|
|
clearable /> |
|
|
|
<el-button type="primary" @click="addMachineIdInput">添加</el-button> |
|
|
|
<!-- 动态添加的机器码输入框 --> |
|
|
|
<div v-for="(item, index) in addAdmin.machineIds" :key="index" style="margin-left: 10px;"> |
|
|
@ -661,20 +702,22 @@ const data = [ |
|
|
|
<el-dialog v-model="userEditVisible" title="编辑用户权限" width="800px" :close-on-click-modal="false"> |
|
|
|
<el-form ref="Ref" :model="permissionEditObj" label-width="auto" style="max-width: 600px; align-items: center"> |
|
|
|
<el-form-item prop="userName" label="用户名称:" required> |
|
|
|
<el-input v-model="permissionEditObj.userName" placeholder="请输入用户名" style="width: 220px" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="roleName" label="角色名称:" required> |
|
|
|
<el-input v-model="permissionEditObj.roleName" placeholder="请输入用户名" style="width: 220px" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="parentName" label="上级角色:" required> |
|
|
|
<el-select v-model="permissionEditObj.parentName" placeholder="请选择上级角色" style="width: 220px"> |
|
|
|
<el-option v-for="item in permissionList" :key="item.value" :label="item.label" :value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="permissionSelect" label="权限列表:" required> |
|
|
|
<el-tree multiple v-model="permissionEditObj.permissionSelect" :data="data" :render-after-expand="false" show-checkbox style="width: 700px" /> |
|
|
|
<el-input v-model="permissionEditObj.userName" placeholder="请输入用户名" style="width: 220px" /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<el-form-item prop="roleName" label="角色名称:" required> |
|
|
|
<el-input v-model="permissionEditObj.roleName" placeholder="请输入用户名" style="width: 220px" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="parentName" label="上级角色:" required> |
|
|
|
<el-select v-model="permissionEditObj.parentName" placeholder="请选择上级角色" style="width: 220px"> |
|
|
|
<el-option v-for="item in permissionList" :key="item.value" :label="item.label" |
|
|
|
:value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="permissionSelect" label="权限列表:" required> |
|
|
|
<el-tree multiple v-model="permissionEditObj.permissionSelect" :data="data" :render-after-expand="false" |
|
|
|
show-checkbox style="width: 700px" /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<div> |
|
|
|
</div> |
|
|
|
<template #footer> |
|
|
@ -696,20 +739,22 @@ const data = [ |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="parentName" label="上级角色:"> |
|
|
|
<el-select v-model="addRole.parentName" placeholder="请选择上级角色" style="width: 220px" clearable> |
|
|
|
<el-option v-for="item in permissionList" :key="item.value" :label="item.label" :value="item.value"></el-option> |
|
|
|
<el-option v-for="item in permissionList" :key="item.value" :label="item.label" |
|
|
|
:value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="permissionSelect" label="权限列表:" required> |
|
|
|
<el-tree multiple v-model="addRole.permissionSelect" :data="filteredData" :render-after-expand="false" show-checkbox style="width: 700px" /> |
|
|
|
<el-form-item prop="checkedKeys" label="权限列表:" required> |
|
|
|
<el-tree :data="filteredData" show-checkbox node-key="value" :props="{ label: 'label', children: 'children' }" |
|
|
|
:checked-keys="addRole.checkedKeys" @check="handleCheckChange" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="grade" label="优先级:" required> |
|
|
|
<el-form-item prop="grade" label="优先级:" required> |
|
|
|
<el-input v-model="addRole.grade" placeholder="数字1~999" style="width: 220px" /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
|
|
|
|
|
|
|
|
<div> |
|
|
|
<el-button @click="closePermissionAddVisible()">取消</el-button> |
|
|
|
<el-button type="primary" @click="throttledPermissionAdd()"> |
|
|
|
<el-button type="primary" @click="handleAddRole"> |
|
|
|
提交 |
|
|
|
</el-button> |
|
|
|
</div> |
|
|
|