Browse Source

新增角色完成

lihuilin/feature-20250715112412-金币二期
lihuilin 3 weeks ago
parent
commit
dca0266032
  1. 2
      .env.development
  2. 265
      src/views/permissions/permission.vue
  3. 4
      src/views/workspace/index.vue

2
.env.development

@ -1,4 +1,4 @@
# VITE_API_BASE='https://hwjb.homilychart.com/dev/admin'
VITE_UPLOAD_URL=http://39.101.133.168:8828/hljw/api/aws/upload
VITE_API_BASE='http://192.168.8.246:8081/'
VITE_API_BASE='http://192.168.9.21:8081/'

265
src/views/permissions/permission.vue

@ -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>

4
src/views/workspace/index.vue

@ -390,8 +390,8 @@ const processData = (data) => {
yearlyRechargeNum.value = summary.yearlyRechargeNum
sumWow.value = (summary.sumWow / length.value).toFixed(2)
sumDaily.value = (summary.sumDaily / length.value).toFixed(2)
rechargeNum.value = summary.rechargeNum.toFixed(2)
firstRecharge.value = summary.firstRecharge.toFixed(2)
rechargeNum.value = summary.rechargeNum
firstRecharge.value = summary.firstRecharge
}
//

Loading…
Cancel
Save