Commit d3641432 by 李宁

1

1 parent 354b32d5
...@@ -4,7 +4,7 @@ import LoginPage from './components/LoginPage.vue' ...@@ -4,7 +4,7 @@ import LoginPage from './components/LoginPage.vue'
import DesktopMain from './components/DesktopMain.vue' import DesktopMain from './components/DesktopMain.vue'
// 登录状态管理 // 登录状态管理
const isLoggedIn = ref(false) const isLoggedIn = ref(localStorage.getItem('pcUserInfo')?true:false)
const currentUser = ref<{ username: string; role: 'admin' | 'viewer' } | null>(null) const currentUser = ref<{ username: string; role: 'admin' | 'viewer' } | null>(null)
// 登录处理 // 登录处理
...@@ -15,6 +15,7 @@ const handleLogin = (username: string, role: 'admin' | 'viewer') => { ...@@ -15,6 +15,7 @@ const handleLogin = (username: string, role: 'admin' | 'viewer') => {
// 登出处理 // 登出处理
const handleLogout = () => { const handleLogout = () => {
localStorage.removeItem('pcUserInfo')
currentUser.value = null currentUser.value = null
isLoggedIn.value = false isLoggedIn.value = false
} }
......
...@@ -30,8 +30,7 @@ ...@@ -30,8 +30,7 @@
v-if="isSidebarCollapsed" v-if="isSidebarCollapsed"
:content="item.label" :content="item.label"
placement="right" placement="right"
:delay="0" :delay="0">
>
<button <button
@click="handleMenuChange(item.id)" @click="handleMenuChange(item.id)"
:class="` :class="`
...@@ -57,8 +56,7 @@ ...@@ -57,8 +56,7 @@
? 'bg-brand-primary text-white' ? 'bg-brand-primary text-white'
: 'text-neutral-400 hover:bg-white/10 hover:text-neutral-100' : 'text-neutral-400 hover:bg-white/10 hover:text-neutral-100'
} }
`" `">
>
<component :is="item.icon" class="h-4 w-4 shrink-0" /> <component :is="item.icon" class="h-4 w-4 shrink-0" />
<span class="text-[14px]">{{ item.label }}</span> <span class="text-[14px]">{{ item.label }}</span>
</button> </button>
...@@ -458,141 +456,7 @@ const roles = ref<Role[]>([ ...@@ -458,141 +456,7 @@ const roles = ref<Role[]>([
]) ])
// 权限数据 // 权限数据
const permissions = ref<Permission[]>([ const permissions = ref<Permission[]>(JSON.parse(localStorage.getItem('pcUserInfo')).functions)
{
id: 'order',
name: '订单管理',
code: 'order',
description: '订单相关的所有权限',
children: [
{
id: 'order:view',
name: '查看订单',
code: 'order:view',
description: '查看订单列表和详情',
parentId: 'order'
},
{
id: 'order:complete',
name: '填写办结信息',
code: 'order:complete',
description: '填写CRM订单编号和办理备注',
parentId: 'order'
},
{
id: 'order:reward',
name: '填写酬金金额',
code: 'order:reward',
description: '填写和修改实际发放酬金',
parentId: 'order'
},
{
id: 'order:approve',
name: '审核',
code: 'order:approve',
description: '审核通过或驳回订单',
parentId: 'order'
}
]
},
{
id: 'business',
name: '业务酬金管理',
code: 'business',
description: '业务酬金相关权限',
children: [
{
id: 'business:view',
name: '查看业务酬金',
code: 'business:view',
description: '查看业务酬金列表',
parentId: 'business'
},
{
id: 'business:create',
name: '创建业务酬金',
code: 'business:create',
description: '创建新的业务酬金',
parentId: 'business'
},
{
id: 'business:edit',
name: '编辑业务酬金',
code: 'business:edit',
description: '修改和停用业务酬金',
parentId: 'business'
}
]
},
{
id: 'system',
name: '系统管理',
code: 'system',
description: '系统管理相关权限',
children: [
{
id: 'system:role',
name: '角色管理',
code: 'system:role',
description: '角色管理相关权限',
parentId: 'system',
children: [
{
id: 'system:role:view',
name: '查看角色',
code: 'system:role:view',
description: '查看角色列表',
parentId: 'system:role'
},
{
id: 'system:role:create',
name: '创建角色',
code: 'system:role:create',
description: '创建新角色',
parentId: 'system:role'
},
{
id: 'system:role:edit',
name: '编辑角色',
code: 'system:role:edit',
description: '编辑角色信息和权限',
parentId: 'system:role'
}
]
},
{
id: 'system:account',
name: '账号管理',
code: 'system:account',
description: '账号管理相关权限',
parentId: 'system',
children: [
{
id: 'system:account:view',
name: '查看账号',
code: 'system:account:view',
description: '查看账号列表',
parentId: 'system:account'
},
{
id: 'system:account:create',
name: '创建账号',
code: 'system:account:create',
description: '创建新账号',
parentId: 'system:account'
},
{
id: 'system:account:edit',
name: '编辑账号',
code: 'system:account:edit',
description: '编辑账号信息',
parentId: 'system:account'
}
]
}
]
}
])
// 根据订单ID获取订单详情 // 根据订单ID获取订单详情
const getOrderById = (orderId: string) => { const getOrderById = (orderId: string) => {
......
...@@ -280,7 +280,7 @@ const handleSendSms = async () => { ...@@ -280,7 +280,7 @@ const handleSendSms = async () => {
// 演示用:实际验证码为 123456 // 演示用:实际验证码为 123456
console.log('演示验证码:123456') console.log('演示验证码:123456')
} else { } else {
ElMessage.error(response?.msg || '发送验证码失败') ElMessage.error(response?.m || '发送验证码失败')
generateCaptcha() generateCaptcha()
loginForm.captchaInput = '' loginForm.captchaInput = ''
} }
...@@ -331,9 +331,9 @@ const handleSubmit = async () => { ...@@ -331,9 +331,9 @@ const handleSubmit = async () => {
if (response.d) { if (response.d) {
localStorage.setItem('pcUserInfo', JSON.stringify(response.d)) localStorage.setItem('pcUserInfo', JSON.stringify(response.d))
} }
props.onLogin(loginForm.phone, 'admin') props.onLogin(response.d.nickname, 'admin')
} else { } else {
ElMessage.error(response?.msg || '登录失败') ElMessage.error(response?.m || '登录失败')
generateCaptcha() generateCaptcha()
loginForm.captchaInput = '' loginForm.captchaInput = ''
loginForm.smsCode = '' loginForm.smsCode = ''
......
...@@ -14,7 +14,6 @@ import router from './router' ...@@ -14,7 +14,6 @@ import router from './router'
// 引入 API 接口和工具方法 // 引入 API 接口和工具方法
import api from './assets/js/api/interface/index.js' import api from './assets/js/api/interface/index.js'
import request from './assets/js/api/request.js'
import stores from './assets/js/stores/index.js' import stores from './assets/js/stores/index.js'
import commonUtils from './assets/js/const/common.js' import commonUtils from './assets/js/const/common.js'
...@@ -31,7 +30,6 @@ app.use(ElementPlus) ...@@ -31,7 +30,6 @@ app.use(ElementPlus)
// 将 API 接口、请求实例、状态管理和工具方法挂载到全局 // 将 API 接口、请求实例、状态管理和工具方法挂载到全局
app.config.globalProperties.$api = api app.config.globalProperties.$api = api
app.config.globalProperties.$request = request
app.config.globalProperties.$stores = stores app.config.globalProperties.$stores = stores
app.config.globalProperties.$utils = commonUtils app.config.globalProperties.$utils = commonUtils
......
<template>
<div class="min-h-screen bg-gray-50 p-6">
<div class="max-w-7xl mx-auto">
<h1 class="text-2xl font-bold text-gray-900 mb-6">角色管理测试页面</h1>
<RoleManagement
:roles="roles"
:permissions="permissions"
@add-role="handleAddRole"
@update-role="handleUpdateRole"
/>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import RoleManagement from '@/components/RoleManagement.vue'
import { ElMessage } from 'element-plus'
// 类型定义
interface Role {
id: string
name: string
description?: string
level: '地市级' | '区县级' | '一线人员'
permissionIds: string[]
status: '启用' | '禁用'
createTime?: string
}
interface Permission {
id: string
name: string
code: string
description?: string
parentId?: string
children?: Permission[]
}
// 测试数据
const roles = ref<Role[]>([
{
id: 'role-001',
name: '区县全权管理员',
description: '拥有区县级别的所有管理权限,可以管理订单、用户和业务规则',
level: '区县级',
permissionIds: [
'order',
'order:view',
'order:complete',
'order:reward',
'order:approve',
'business',
'business:view',
'business:create',
'business:edit',
'system',
'system:role',
'system:role:view',
'system:role:create',
'system:role:edit',
'system:account',
'system:account:view',
'system:account:create',
'system:account:edit'
],
status: '启用',
createTime: '2025-10-20 09:00:00'
},
{
id: 'role-002',
name: '订单管理员',
description: '负责订单的日常管理和处理',
level: '一线人员',
permissionIds: ['order', 'order:view', 'order:complete', 'order:reward', 'order:approve'],
status: '启用',
createTime: '2025-10-20 09:30:00'
},
{
id: 'role-003',
name: '业务规则管理员',
description: '负责业务规则的配置和维护',
level: '区县级',
permissionIds: ['business', 'business:view', 'business:create', 'business:edit'],
status: '启用',
createTime: '2025-10-20 10:00:00'
}
])
const permissions = ref<Permission[]>([
{
id: 'order',
name: '订单管理',
code: 'order',
description: '订单相关的所有权限',
children: [
{
id: 'order:view',
name: '查看订单',
code: 'order:view',
description: '查看订单列表和详情',
parentId: 'order'
},
{
id: 'order:complete',
name: '填写办结信息',
code: 'order:complete',
description: '填写CRM订单编号和办理备注',
parentId: 'order'
},
{
id: 'order:reward',
name: '填写酬金金额',
code: 'order:reward',
description: '填写和修改实际发放酬金',
parentId: 'order'
},
{
id: 'order:approve',
name: '审核',
code: 'order:approve',
description: '审核通过或驳回订单',
parentId: 'order'
}
]
},
{
id: 'business',
name: '业务规则管理',
code: 'business',
description: '业务规则相关权限',
children: [
{
id: 'business:view',
name: '查看业务规则',
code: 'business:view',
description: '查看业务规则列表',
parentId: 'business'
},
{
id: 'business:create',
name: '创建业务规则',
code: 'business:create',
description: '创建新的业务规则',
parentId: 'business'
},
{
id: 'business:edit',
name: '编辑业务规则',
code: 'business:edit',
description: '修改和停用业务规则',
parentId: 'business'
}
]
},
{
id: 'system',
name: '系统管理',
code: 'system',
description: '系统管理相关权限',
children: [
{
id: 'system:role',
name: '角色管理',
code: 'system:role',
description: '角色管理相关权限',
parentId: 'system',
children: [
{
id: 'system:role:view',
name: '查看角色',
code: 'system:role:view',
description: '查看角色列表',
parentId: 'system:role'
},
{
id: 'system:role:create',
name: '创建角色',
code: 'system:role:create',
description: '创建新角色',
parentId: 'system:role'
},
{
id: 'system:role:edit',
name: '编辑角色',
code: 'system:role:edit',
description: '编辑角色信息和权限',
parentId: 'system:role'
}
]
},
{
id: 'system:account',
name: '账号管理',
code: 'system:account',
description: '账号管理相关权限',
parentId: 'system',
children: [
{
id: 'system:account:view',
name: '查看账号',
code: 'system:account:view',
description: '查看账号列表',
parentId: 'system:account'
},
{
id: 'system:account:create',
name: '创建账号',
code: 'system:account:create',
description: '创建新账号',
parentId: 'system:account'
},
{
id: 'system:account:edit',
name: '编辑账号',
code: 'system:account:edit',
description: '编辑账号信息',
parentId: 'system:account'
}
]
}
]
}
])
// 事件处理
const handleAddRole = (roleData: Omit<Role, 'id' | 'createTime'>) => {
const newRole: Role = {
id: `role-${Date.now()}`,
...roleData,
createTime: new Date().toLocaleString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
})
}
roles.value.push(newRole)
ElMessage.success('角色创建成功')
console.log('新增角色:', newRole)
}
const handleUpdateRole = (roleId: string, updates: Partial<Role>) => {
const roleIndex = roles.value.findIndex(role => role.id === roleId)
if (roleIndex !== -1) {
roles.value[roleIndex] = { ...roles.value[roleIndex], ...updates }
ElMessage.success('角色更新成功')
console.log('更新角色:', roleId, updates)
}
}
</script>
<style scoped>
/* 测试页面样式 */
</style>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!