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
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
54 additions
and
64 deletions
+54
-64
src/api/crm/permission/index.ts
+3
-3
src/utils/dict.ts
+7
-3
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 {
...
@@ -6,9 +6,9 @@ export interface PermissionVO {
bizType
:
number
|
undefined
// Crm 类型
bizType
:
number
|
undefined
// Crm 类型
bizId
:
number
|
undefined
// Crm 类型数据编号
bizId
:
number
|
undefined
// Crm 类型数据编号
level
:
number
|
undefined
// 权限级别
level
:
number
|
undefined
// 权限级别
deptName
?:
string
// 部门名称
// 岗位名称数组 TODO @puhui999:数组?
deptName
?:
string
// 部门名称
nickname
?:
string
// 用户昵称
nickname
?:
string
// 用户昵称
postNames
?:
string
// 岗位名称数组 TODO @puhui999:数组?
postNames
?:
string
[]
// 岗位名称数组
createTime
?:
Date
createTime
?:
Date
}
}
...
@@ -19,7 +19,7 @@ export const getPermissionList = async (params) => {
...
@@ -19,7 +19,7 @@ export const getPermissionList = async (params) => {
// 新增团队成员
// 新增团队成员
export
const
createPermission
=
async
(
data
:
PermissionVO
)
=>
{
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
/**
/**
* 数据字典工具类
* 数据字典工具类
*/
*/
import
{
useDictStoreWithOut
}
from
'@/store/modules/dict'
import
{
useDictStoreWithOut
}
from
'@/store/modules/dict'
import
{
ElementPlusInfoType
}
from
'@/types/elementPlus'
import
{
ElementPlusInfoType
}
from
'@/types/elementPlus'
const
dictStore
=
useDictStoreWithOut
()
const
dictStore
=
useDictStoreWithOut
()
...
@@ -195,5 +195,9 @@ export enum DICT_TYPE {
...
@@ -195,5 +195,9 @@ export enum DICT_TYPE {
CRM_CUSTOMER_INDUSTRY
=
'crm_customer_industry'
,
CRM_CUSTOMER_INDUSTRY
=
'crm_customer_industry'
,
CRM_CUSTOMER_LEVEL
=
'crm_customer_level'
,
CRM_CUSTOMER_LEVEL
=
'crm_customer_level'
,
CRM_CUSTOMER_SOURCE
=
'crm_customer_source'
,
CRM_CUSTOMER_SOURCE
=
'crm_customer_source'
,
CRM_PRODUCT_STATUS
=
'crm_product_status'
CRM_PRODUCT_STATUS
=
'crm_product_status'
,
// ========== CRM - 数据权限模块 ==========
CRM_BIZ_TYPE
=
'crm_biz_type'
,
// 数据模块类型
CRM_PERMISSION_LEVEL
=
'crm_permission_level'
// 用户数据权限类型
}
}
src/views/crm/components/CrmPermissionForm.vue
View file @
19a0a830
...
@@ -19,9 +19,14 @@
...
@@ -19,9 +19,14 @@
</el-form-item>
</el-form-item>
<el-form-item
label=
"权限级别"
prop=
"level"
>
<el-form-item
label=
"权限级别"
prop=
"level"
>
<el-radio-group
v-model=
"formData.level"
>
<el-radio-group
v-model=
"formData.level"
>
<!-- TODO @puhui999:搞个字典配置?然后这里 remove 掉负责人 -->
<template
<el-radio
:label=
"CrmPermissionLevelEnum.READ"
>
只读
</el-radio>
v-for=
"dict in getIntDictOptions(DICT_TYPE.CRM_PERMISSION_LEVEL)"
<el-radio
:label=
"CrmPermissionLevelEnum.WRITE"
>
读写
</el-radio>
:key=
"dict.value"
>
<el-radio
v-if=
"dict.value != CrmPermissionLevelEnum.OWNER"
:label=
"dict.value"
>
{{
dict
.
label
}}
</el-radio>
</
template
>
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
...
@@ -34,7 +39,8 @@
...
@@ -34,7 +39,8 @@
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
*
as
UserApi
from
'@/api/system/user'
import
*
as
UserApi
from
'@/api/system/user'
import
*
as
PermissionApi
from
'@/api/crm/permission'
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'
})
defineOptions
({
name
:
'CrmPermissionForm'
})
...
...
src/views/crm/components/Crm
Team
List.vue
→
src/views/crm/components/Crm
Permission
List.vue
View file @
19a0a830
<
template
>
<
template
>
<!-- 操作栏 -->
<!-- 操作栏 -->
<el-row
justify=
"end"
>
<el-row
justify=
"end"
>
<el-button
type=
"primary"
@
click=
"
handleAdd
"
>
<el-button
type=
"primary"
@
click=
"
openForm
"
>
<Icon
class=
"mr-5px"
icon=
"ep:plus"
/>
<Icon
class=
"mr-5px"
icon=
"ep:plus"
/>
新增
新增
</el-button>
</el-button>
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
<Icon
class=
"mr-5px"
icon=
"ep:edit"
/>
<Icon
class=
"mr-5px"
icon=
"ep:edit"
/>
编辑
编辑
</el-button>
</el-button>
<el-button
@
click=
"handle
Remov
e"
>
<el-button
@
click=
"handle
Delet
e"
>
<Icon
class=
"mr-5px"
icon=
"ep:delete"
/>
<Icon
class=
"mr-5px"
icon=
"ep:delete"
/>
移除
移除
</el-button>
</el-button>
...
@@ -30,45 +30,32 @@
...
@@ -30,45 +30,32 @@
<el-table-column
align=
"center"
label=
"岗位"
prop=
"postNames"
/>
<el-table-column
align=
"center"
label=
"岗位"
prop=
"postNames"
/>
<el-table-column
align=
"center"
label=
"权限级别"
prop=
"level"
>
<el-table-column
align=
"center"
label=
"权限级别"
prop=
"level"
>
<template
#
default=
"
{ row }">
<template
#
default=
"
{ row }">
<
el-tag>
{{
getLevelName
(
row
.
level
)
}}
</el-tag
>
<
dict-tag
:type=
"DICT_TYPE.CRM_PERMISSION_LEVEL"
:value=
"row.level"
/
>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
:formatter=
"dateFormatter"
align=
"center"
label=
"加入时间"
prop=
"createTime"
/>
<el-table-column
:formatter=
"dateFormatter"
align=
"center"
label=
"加入时间"
prop=
"createTime"
/>
</el-table>
</el-table>
<CrmPermissionForm
ref=
"
crmPermissionFormRef
"
/>
<CrmPermissionForm
ref=
"
permissionFormRef"
@
success=
"getList
"
/>
</template>
</template>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
// TODO @puhui999:改成 CrmPermissionList
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
{
ElTable
}
from
'element-plus'
import
{
ElTable
}
from
'element-plus'
import
*
as
PermissionApi
from
'@/api/crm/permission'
import
*
as
PermissionApi
from
'@/api/crm/permission'
import
{
useUserStoreWithOut
}
from
'@/store/modules/user'
import
{
useUserStoreWithOut
}
from
'@/store/modules/user'
import
CrmPermissionForm
from
'./CrmPermissionForm.vue'
import
CrmPermissionForm
from
'./CrmPermissionForm.vue'
import
{
CrmPermissionLevelEnum
}
from
'./index'
import
{
CrmPermissionLevelEnum
}
from
'./index'
import
{
DICT_TYPE
}
from
'@/utils/dict'
defineOptions
({
name
:
'Crm
Team
'
})
defineOptions
({
name
:
'Crm
PermissionList
'
})
const
message
=
useMessage
()
// 消息
const
message
=
useMessage
()
// 消息
const
props
=
defineProps
<
{
const
props
=
defineProps
<
{
bizType
:
number
bizType
:
number
// 模块类型
bizId
:
number
bizId
:
number
// 模块数据编号
}
>
()
}
>
()
const
loading
=
ref
(
true
)
// 列表的加载中
const
loading
=
ref
(
true
)
// 列表的加载中
const
list
=
ref
<
PermissionApi
.
PermissionVO
[]
>
([
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
getList
=
async
()
=>
{
const
getList
=
async
()
=>
{
...
@@ -83,40 +70,28 @@ const getList = async () => {
...
@@ -83,40 +70,28 @@ const getList = async () => {
loading
.
value
=
false
loading
.
value
=
false
}
}
}
}
const
multipleSelection
=
ref
<
PermissionApi
.
PermissionVO
[]
>
([])
// 选择的团队成员
// 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
handleSelectionChange
=
(
val
:
PermissionApi
.
PermissionVO
[])
=>
{
const
handleSelectionChange
=
(
val
:
PermissionApi
.
PermissionVO
[])
=>
{
multipleSelection
.
value
=
val
multipleSelection
.
value
=
val
}
}
// TODO @puhui999:一些变量命名,看看有没可能跟列表界面的 index.vue 保持他统一的风格;
const
crmPermissionFormRef
=
ref
<
InstanceType
<
typeof
CrmPermissionForm
>>
()
const
permissionFormRef
=
ref
<
InstanceType
<
typeof
CrmPermissionForm
>>
()
// 权限表单 Ref
/**
* 编辑团队成员
*/
const
handleEdit
=
()
=>
{
const
handleEdit
=
()
=>
{
if
(
multipleSelection
.
value
?.
length
===
0
)
{
if
(
multipleSelection
.
value
?.
length
===
0
)
{
message
.
warning
(
'请先选择团队成员后操作!'
)
message
.
warning
(
'请先选择团队成员后操作!'
)
return
return
}
}
const
ids
=
multipleSelection
.
value
?.
map
((
item
)
=>
item
.
id
)
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
)
{
if
(
multipleSelection
.
value
?.
length
===
0
)
{
message
.
warning
(
'请先选择团队成员后操作!'
)
message
.
warning
(
'请先选择团队成员后操作!'
)
return
return
...
@@ -129,11 +104,18 @@ const handleRemove = async () => {
...
@@ -129,11 +104,18 @@ const handleRemove = async () => {
ids
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
handleQuit
=
async
()
=>
{
const
permission
=
list
.
value
.
find
(
const
permission
=
list
.
value
.
find
(
(
item
)
=>
item
.
userId
===
userStore
.
getUser
.
id
&&
item
.
level
===
CrmPermissionLevelEnum
.
OWNER
(
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
{
enum
CrmBizTypeEnum
{
CRM_LEADS
=
1
,
// 线索
CRM_LEADS
=
1
,
// 线索
...
@@ -9,9 +9,7 @@ enum CrmBizTypeEnum {
...
@@ -9,9 +9,7 @@ enum CrmBizTypeEnum {
}
}
enum
CrmPermissionLevelEnum
{
enum
CrmPermissionLevelEnum
{
OWNER
=
1
,
// 负责人
OWNER
=
1
// 负责人
READ
=
2
,
// 读
WRITE
=
3
// 写
}
}
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