Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
19a0a830
authored
Nov 22, 2023
by
puhui999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
crm-数据权限:完善团队成员公共组件
parent
ebb19cfe
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
47 additions
and
61 deletions
+47
-61
src/api/crm/permission/index.ts
+3
-3
src/utils/dict.ts
+0
-0
src/views/crm/components/CrmPermissionForm.vue
+10
-4
src/views/crm/components/CrmPermissionList.vue
+31
-49
src/views/crm/components/index.ts
+3
-5
No files found.
src/api/crm/permission/index.ts
View file @
19a0a830
...
...
@@ -6,9 +6,9 @@ export interface PermissionVO {
bizType
:
number
|
undefined
// Crm 类型
bizId
:
number
|
undefined
// Crm 类型数据编号
level
:
number
|
undefined
// 权限级别
deptName
?:
string
// 部门名称
// 岗位名称数组 TODO @puhui999:数组?
deptName
?:
string
// 部门名称
nickname
?:
string
// 用户昵称
postNames
?:
string
// 岗位名称数组 TODO @puhui999:数组?
postNames
?:
string
[]
// 岗位名称数组
createTime
?:
Date
}
...
...
@@ -19,7 +19,7 @@ export const getPermissionList = async (params) => {
// 新增团队成员
export
const
createPermission
=
async
(
data
:
PermissionVO
)
=>
{
return
await
request
.
post
({
url
:
`/crm/permission/
add
`
,
data
})
return
await
request
.
post
({
url
:
`/crm/permission/
create
`
,
data
})
}
// 修改团队成员权限级别
...
...
src/utils/dict.ts
View file @
19a0a830
This diff is collapsed.
Click to expand it.
src/views/crm/components/CrmPermissionForm.vue
View file @
19a0a830
...
...
@@ -19,9 +19,14 @@
</el-form-item>
<el-form-item
label=
"权限级别"
prop=
"level"
>
<el-radio-group
v-model=
"formData.level"
>
<!-- TODO @puhui999:搞个字典配置?然后这里 remove 掉负责人 -->
<el-radio
:label=
"CrmPermissionLevelEnum.READ"
>
只读
</el-radio>
<el-radio
:label=
"CrmPermissionLevelEnum.WRITE"
>
读写
</el-radio>
<template
v-for=
"dict in getIntDictOptions(DICT_TYPE.CRM_PERMISSION_LEVEL)"
:key=
"dict.value"
>
<el-radio
v-if=
"dict.value != CrmPermissionLevelEnum.OWNER"
:label=
"dict.value"
>
{{
dict
.
label
}}
</el-radio>
</
template
>
</el-radio-group>
</el-form-item>
</el-form>
...
...
@@ -34,7 +39,8 @@
<
script
lang=
"ts"
setup
>
import
*
as
UserApi
from
'@/api/system/user'
import
*
as
PermissionApi
from
'@/api/crm/permission'
import
{
CrmPermissionLevelEnum
}
from
'./index'
import
{
DICT_TYPE
,
getIntDictOptions
}
from
'@/utils/dict'
import
{
CrmPermissionLevelEnum
}
from
'@/views/crm/components/index'
defineOptions
({
name
:
'CrmPermissionForm'
})
...
...
src/views/crm/components/Crm
Team
List.vue
→
src/views/crm/components/Crm
Permission
List.vue
View file @
19a0a830
<
template
>
<!-- 操作栏 -->
<el-row
justify=
"end"
>
<el-button
type=
"primary"
@
click=
"
handleAdd
"
>
<el-button
type=
"primary"
@
click=
"
openForm
"
>
<Icon
class=
"mr-5px"
icon=
"ep:plus"
/>
新增
</el-button>
...
...
@@ -9,7 +9,7 @@
<Icon
class=
"mr-5px"
icon=
"ep:edit"
/>
编辑
</el-button>
<el-button
@
click=
"handle
Remov
e"
>
<el-button
@
click=
"handle
Delet
e"
>
<Icon
class=
"mr-5px"
icon=
"ep:delete"
/>
移除
</el-button>
...
...
@@ -30,45 +30,32 @@
<el-table-column
align=
"center"
label=
"岗位"
prop=
"postNames"
/>
<el-table-column
align=
"center"
label=
"权限级别"
prop=
"level"
>
<template
#
default=
"
{ row }">
<
el-tag>
{{
getLevelName
(
row
.
level
)
}}
</el-tag
>
<
dict-tag
:type=
"DICT_TYPE.CRM_PERMISSION_LEVEL"
:value=
"row.level"
/
>
</
template
>
</el-table-column>
<el-table-column
:formatter=
"dateFormatter"
align=
"center"
label=
"加入时间"
prop=
"createTime"
/>
</el-table>
<CrmPermissionForm
ref=
"
crmPermissionFormRef
"
/>
<CrmPermissionForm
ref=
"
permissionFormRef"
@
success=
"getList
"
/>
</template>
<
script
lang=
"ts"
setup
>
// TODO @puhui999:改成 CrmPermissionList
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
{
ElTable
}
from
'element-plus'
import
*
as
PermissionApi
from
'@/api/crm/permission'
import
{
useUserStoreWithOut
}
from
'@/store/modules/user'
import
CrmPermissionForm
from
'./CrmPermissionForm.vue'
import
{
CrmPermissionLevelEnum
}
from
'./index'
import
{
DICT_TYPE
}
from
'@/utils/dict'
defineOptions
({
name
:
'Crm
Team
'
})
defineOptions
({
name
:
'Crm
PermissionList
'
})
const
message
=
useMessage
()
// 消息
const
props
=
defineProps
<
{
bizType
:
number
bizId
:
number
bizType
:
number
// 模块类型
bizId
:
number
// 模块数据编号
}
>
()
const
loading
=
ref
(
true
)
// 列表的加载中
const
list
=
ref
<
PermissionApi
.
PermissionVO
[]
>
([
// TODO 测试数据
{
id
:
1
,
// 数据权限编号
userId
:
1
,
// 用户编号
bizType
:
1
,
// Crm 类型
bizId
:
1
,
// Crm 类型数据编号
level
:
1
,
// 权限级别
deptName
:
'研发部门'
,
// 部门名称
nickname
:
'芋道源码'
,
// 用户昵称
postNames
:
'全栈开发工程师'
,
// 岗位名称数组
createTime
:
new
Date
()
}
])
// 列表的数据
const
list
=
ref
<
PermissionApi
.
PermissionVO
[]
>
([])
// 列表的数据
/** 查询列表 */
const
getList
=
async
()
=>
{
...
...
@@ -83,40 +70,28 @@ const getList = async () => {
loading
.
value
=
false
}
}
// TODO @puhui999:字典格式化
/**
* 获得权限级别名称
* @param level 权限级别
*/
const
getLevelName
=
computed
(()
=>
(
level
:
number
)
=>
{
switch
(
level
)
{
case
CrmPermissionLevelEnum
.
OWNER
:
return
'负责人'
case
CrmPermissionLevelEnum
.
READ
:
return
'只读'
case
CrmPermissionLevelEnum
.
WRITE
:
return
'读写'
default
:
break
}
})
// TODO @puhui999:空行稍微注意下哈;一些注释补齐下;
const
multipleSelection
=
ref
<
PermissionApi
.
PermissionVO
[]
>
([])
const
multipleSelection
=
ref
<
PermissionApi
.
PermissionVO
[]
>
([])
// 选择的团队成员
const
handleSelectionChange
=
(
val
:
PermissionApi
.
PermissionVO
[])
=>
{
multipleSelection
.
value
=
val
}
// TODO @puhui999:一些变量命名,看看有没可能跟列表界面的 index.vue 保持他统一的风格;
const
crmPermissionFormRef
=
ref
<
InstanceType
<
typeof
CrmPermissionForm
>>
()
const
permissionFormRef
=
ref
<
InstanceType
<
typeof
CrmPermissionForm
>>
()
// 权限表单 Ref
/**
* 编辑团队成员
*/
const
handleEdit
=
()
=>
{
if
(
multipleSelection
.
value
?.
length
===
0
)
{
message
.
warning
(
'请先选择团队成员后操作!'
)
return
}
const
ids
=
multipleSelection
.
value
?.
map
((
item
)
=>
item
.
id
)
crmP
ermissionFormRef
.
value
?.
open
(
'update'
,
props
.
bizType
,
props
.
bizId
,
ids
)
p
ermissionFormRef
.
value
?.
open
(
'update'
,
props
.
bizType
,
props
.
bizId
,
ids
)
}
const
handleRemove
=
async
()
=>
{
/**
* 移除团队成员
*/
const
handleDelete
=
async
()
=>
{
if
(
multipleSelection
.
value
?.
length
===
0
)
{
message
.
warning
(
'请先选择团队成员后操作!'
)
return
...
...
@@ -129,11 +104,18 @@ const handleRemove = async () => {
ids
})
}
const
handleAdd
=
()
=>
{
crmPermissionFormRef
.
value
?.
open
(
'create'
,
props
.
bizType
,
props
.
bizId
)
/**
* 添加团队成员
*/
const
openForm
=
()
=>
{
permissionFormRef
.
value
?.
open
(
'create'
,
props
.
bizType
,
props
.
bizId
)
}
const
userStore
=
useUserStoreWithOut
()
const
userStore
=
useUserStoreWithOut
()
// 用户信息缓存
/**
* 退出团队
*/
const
handleQuit
=
async
()
=>
{
const
permission
=
list
.
value
.
find
(
(
item
)
=>
item
.
userId
===
userStore
.
getUser
.
id
&&
item
.
level
===
CrmPermissionLevelEnum
.
OWNER
...
...
src/views/crm/components/index.ts
View file @
19a0a830
import
Crm
Team
from
'./CrmTeam
List.vue'
import
Crm
PermissionList
from
'./CrmPermission
List.vue'
enum
CrmBizTypeEnum
{
CRM_LEADS
=
1
,
// 线索
...
...
@@ -9,9 +9,7 @@ enum CrmBizTypeEnum {
}
enum
CrmPermissionLevelEnum
{
OWNER
=
1
,
// 负责人
READ
=
2
,
// 读
WRITE
=
3
// 写
OWNER
=
1
// 负责人
}
export
{
Crm
Team
,
CrmBizTypeEnum
,
CrmPermissionLevelEnum
}
export
{
Crm
PermissionList
,
CrmBizTypeEnum
,
CrmPermissionLevelEnum
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment