Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
李宁
/
Activity
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 723d1ec0
authored
Nov 26, 2025
by
李宁
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1
1 parent
8e7e552c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1 additions
and
372 deletions
channelBusiManage/src/components/WelcomeItem.vue
channelBusiManage/src/router/index.ts
channelBusiManage/src/views/AboutView.vue
channelBusiManage/src/views/HomeView.vue
channelBusiManage/src/views/RoleTestView.vue
channelBusiManage/src/components/WelcomeItem.vue
deleted
100644 → 0
View file @
8e7e552
<
template
>
<div
class=
"item"
>
<i>
<slot
name=
"icon"
></slot>
</i>
<div
class=
"details"
>
<h3>
<slot
name=
"heading"
></slot>
</h3>
<slot></slot>
</div>
</div>
</
template
>
<
style
scoped
>
.item
{
margin-top
:
2rem
;
display
:
flex
;
position
:
relative
;
}
.details
{
flex
:
1
;
margin-left
:
1rem
;
}
i
{
display
:
flex
;
place-items
:
center
;
place-content
:
center
;
width
:
32px
;
height
:
32px
;
color
:
var
(
--color-text
);
}
h3
{
font-size
:
1.2rem
;
font-weight
:
500
;
margin-bottom
:
0.4rem
;
color
:
var
(
--color-heading
);
}
@media
(
min-width
:
1024px
)
{
.item
{
margin-top
:
0
;
padding
:
0.4rem
0
1rem
calc
(
var
(
--section-gap
)
/
2
);
}
i
{
top
:
calc
(
50%
-
25px
);
left
:
-26px
;
position
:
absolute
;
border
:
1px
solid
var
(
--color-border
);
background
:
var
(
--color-background
);
border-radius
:
8px
;
width
:
50px
;
height
:
50px
;
}
.item
:before
{
content
:
' '
;
border-left
:
1px
solid
var
(
--color-border
);
position
:
absolute
;
left
:
0
;
bottom
:
calc
(
50%
+
25px
);
height
:
calc
(
50%
-
25px
);
}
.item
:after
{
content
:
' '
;
border-left
:
1px
solid
var
(
--color-border
);
position
:
absolute
;
left
:
0
;
top
:
calc
(
50%
+
25px
);
height
:
calc
(
50%
-
25px
);
}
.item
:first-of-type:before
{
display
:
none
;
}
.item
:last-of-type:after
{
display
:
none
;
}
}
</
style
>
channelBusiManage/src/router/index.ts
View file @
723d1ec
import
{
createRouter
,
createWebHistory
}
from
'vue-router'
import
HomeView
from
'../views/HomeView.vue'
const
router
=
createRouter
({
history
:
createWebHistory
(
import
.
meta
.
env
.
BASE_URL
),
routes
:
[
{
path
:
'/'
,
name
:
'home'
,
component
:
HomeView
,
},
{
path
:
'/about'
,
name
:
'about'
,
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component
:
()
=>
import
(
'../views/AboutView.vue'
),
},
{
path
:
'/role-test'
,
name
:
'role-test'
,
component
:
()
=>
import
(
'../views/RoleTestView.vue'
),
},
],
})
...
...
channelBusiManage/src/views/AboutView.vue
deleted
100644 → 0
View file @
8e7e552
<
template
>
<div
class=
"about"
>
<h1>
This is an about page
</h1>
</div>
</
template
>
<
style
>
@media
(
min-width
:
1024px
)
{
.about
{
min-height
:
100vh
;
display
:
flex
;
align-items
:
center
;
}
}
</
style
>
channelBusiManage/src/views/HomeView.vue
deleted
100644 → 0
View file @
8e7e552
<
script
setup
lang=
"ts"
>
import
TheWelcome
from
'../components/TheWelcome.vue'
</
script
>
<
template
>
<main>
<TheWelcome
/>
</main>
</
template
>
channelBusiManage/src/views/RoleTestView.vue
deleted
100644 → 0
View file @
8e7e552
<
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
,
{
type
Role
,
type
Permission
,
type
RoleStatus
}
from
'@/components/RoleManagement.vue'
import
{
ElMessage
}
from
'element-plus'
// 测试数据
const
roles
=
ref
<
Role
[]
>
([
{
id
:
1
as
Number
,
name
:
'区县全权管理员'
,
description
:
'拥有区县级别的所有管理权限,可以管理订单、用户和业务规则'
,
level
:
'区县级'
,
permissions
:
[
'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
:
1
as
RoleStatus
,
createTime
:
'2025-10-20 09:00:00'
},
{
id
:
2
as
Number
,
name
:
'订单管理员'
,
description
:
'负责订单的日常管理和处理'
,
level
:
'一线人员'
,
permissions
:
[
'order'
,
'order:view'
,
'order:complete'
,
'order:reward'
,
'order:approve'
],
status
:
1
as
RoleStatus
,
createTime
:
'2025-10-20 09:30:00'
},
{
id
:
3
as
Number
,
name
:
'业务规则管理员'
,
description
:
'负责业务规则的配置和维护'
,
level
:
'区县级'
,
permissions
:
[
'business'
,
'business:view'
,
'business:create'
,
'business:edit'
],
status
:
1
as
RoleStatus
,
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
:
any
)
=>
{
const
newRole
:
any
=
{
id
:
Date
.
now
(),
name
:
roleData
.
name
,
description
:
roleData
.
description
,
level
:
roleData
.
level
,
permissions
:
roleData
.
permissions
||
[],
status
:
1
,
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
:
number
,
updates
:
Partial
<
Role
>
)
=>
{
const
roleIndex
=
roles
.
value
.
findIndex
(
role
=>
role
.
id
===
roleId
)
if
(
roleIndex
!==
-
1
)
{
roles
.
value
[
roleIndex
]
=
{
...
roles
.
value
[
roleIndex
],
...
updates
}
as
Role
ElMessage
.
success
(
'角色更新成功'
)
console
.
log
(
'更新角色:'
,
roleId
,
updates
)
}
}
</
script
>
<
style
scoped
>
/* 测试页面样式 */
</
style
>
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment