Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-dml
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-dml
Commits
1fd37cc1
提交
1fd37cc1
authored
2月 10, 2025
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 新增同步用户和事件数据按钮
上级
18991ed7
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
75 行增加
和
24 行删除
+75
-24
api.ts
src/modules/user/api.ts
+27
-3
Index.vue
src/modules/user/views/Index.vue
+48
-21
没有找到文件。
src/modules/user/api.ts
浏览文件 @
1fd37cc1
import
httpRequest
from
'@/utils/axios'
// 人员列表
export
function
getMemberList
(
params
:
{
name
?:
string
;
id
?:
string
;
mobile
?:
string
;
status
?:
string
;
page
?:
number
;
page_size
?:
number
})
{
export
function
getMemberList
(
params
:
{
name
?:
string
id
?:
string
mobile
?:
string
status
?:
string
page
?:
number
page_size
?:
number
})
{
return
httpRequest
.
get
(
'/api/lab/v1/experiment/member/list'
,
{
params
})
}
...
...
@@ -16,7 +23,14 @@ export function getMemberFieldsList() {
}
// 新建用户
export
function
createMember
(
data
:
{
name
:
string
;
status
:
string
;
experiment_connection_id
:
string
;
gender
:
string
;
mobile
:
string
;
fields
:
string
})
{
export
function
createMember
(
data
:
{
name
:
string
status
:
string
experiment_connection_id
:
string
gender
:
string
mobile
:
string
fields
:
string
})
{
return
httpRequest
.
post
(
'/api/lab/v1/experiment/member/create'
,
data
)
}
...
...
@@ -79,7 +93,13 @@ export function importEvent(data: { event_id: string; url: string; name: string;
// headers: { 'Content-Type': 'multipart/form-data' }
// })
// }
export
function
importMember
(
data
:
{
groups_id
?:
string
;
connection_id
:
string
;
url
:
string
;
name
:
string
;
size
:
string
})
{
export
function
importMember
(
data
:
{
groups_id
?:
string
connection_id
:
string
url
:
string
name
:
string
size
:
string
})
{
return
httpRequest
.
post
(
'/api/lab/v1/experiment/member/member-upload'
,
data
)
}
...
...
@@ -96,3 +116,7 @@ export function getProgress(params: { page?: number; 'per-page'?: number }) {
export
function
getConnectionList
()
{
return
httpRequest
.
get
(
'/api/lab/v1/experiment/member/has-data-connections'
)
}
// 同步用户和事件数据
export
function
syncMember
()
{
return
httpRequest
.
get
(
'/api/lab/v1/experiment/member/sync-member'
)
}
src/modules/user/views/Index.vue
浏览文件 @
1fd37cc1
<
script
setup
lang=
"ts"
>
import
{
Plus
,
Download
,
Upload
,
Delete
}
from
'@element-plus/icons-vue'
import
AppList
from
'@/components/base/AppList.vue'
import
{
getMemberList
,
deleteMember
,
getMemberConnectionsList
}
from
'../api'
import
{
getMemberList
,
deleteMember
,
getMemberConnectionsList
,
syncMember
}
from
'../api'
import
{
ElMessage
,
ElMessageBox
,
ElLoading
}
from
'element-plus'
import
type
{
MemberProp
,
ConnectionsProp
}
from
'../types'
import
{
useUserStore
}
from
'@/stores/user'
...
...
@@ -33,7 +33,7 @@ const listOptions = computed(() => {
return
{
remote
:
{
httpRequest
:
getMemberList
,
params
:
{
name
:
''
,
id
:
''
,
mobile
:
''
,
status
:
''
,
experiment_connection_id
:
''
}
params
:
{
name
:
''
,
id
:
''
,
mobile
:
''
,
status
:
''
,
experiment_connection_id
:
''
}
,
},
filters
:
[
{
type
:
'input'
,
prop
:
'name'
,
placeholder
:
'请输入用户姓名'
},
...
...
@@ -45,8 +45,8 @@ const listOptions = computed(() => {
placeholder
:
'请选择生效状态'
,
options
:
[
{
label
:
'有效'
,
value
:
'1'
},
{
label
:
'失效'
,
value
:
'0'
}
]
{
label
:
'失效'
,
value
:
'0'
}
,
]
,
},
{
type
:
'select'
,
...
...
@@ -54,8 +54,8 @@ const listOptions = computed(() => {
placeholder
:
'请选择来源链接'
,
options
:
connectionOptions
,
labelKey
:
'type_name'
,
valueKey
:
'id'
}
valueKey
:
'id'
,
}
,
],
columns
:
[
{
type
:
'selection'
},
...
...
@@ -72,12 +72,12 @@ const listOptions = computed(() => {
return
row
.
row
.
status
===
'0'
?
`<span style="color: rgb(170, 2, 49)">
${
row
.
row
.
status_name
}
</span>`
:
`<span style="color: #00ac27">
${
row
.
row
.
status_name
}
</span>`
}
}
,
},
{
label
:
'更新人'
,
prop
:
'updated_operator_name'
},
{
label
:
'更新时间'
,
prop
:
'updated_time'
},
{
label
:
'操作'
,
slots
:
'table-x'
,
width
:
380
}
]
{
label
:
'操作'
,
slots
:
'table-x'
,
width
:
380
}
,
]
,
}
})
...
...
@@ -109,7 +109,7 @@ const handleRemove = function (row: { id: string; have_event: boolean }) {
ElMessageBox
.
confirm
(
'此操作将会删除用户及所有关联事件数据'
,
'提示'
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
type
:
'warning'
,
}).
then
(()
=>
{
deleteMembers
({
ids
:
row
.
id
})
})
...
...
@@ -123,7 +123,7 @@ const handleRemoves = function (isAll?: boolean) {
ElMessageBox
.
confirm
(
'确定要删除全部用户数据吗?'
,
'提示'
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
type
:
'warning'
,
}).
then
(()
=>
{
deleteMembers
({
type
:
'all'
})
})
...
...
@@ -131,7 +131,7 @@ const handleRemoves = function (isAll?: boolean) {
ElMessageBox
.
confirm
(
'确定要删除选中的用户数据吗?'
,
'提示'
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
type
:
'warning'
,
}).
then
(()
=>
{
deleteMembers
({
ids
})
})
...
...
@@ -143,7 +143,7 @@ const deleteMembers = function (params: any) {
loading
=
ElLoading
.
service
({
lock
:
true
,
text
:
'Loading'
,
background
:
'rgba(0, 0, 0, 0.7)'
background
:
'rgba(0, 0, 0, 0.7)'
,
})
deleteMember
(
params
).
then
(()
=>
{
loading
.
close
()
...
...
@@ -177,7 +177,7 @@ const handleAdd = function () {
const
goPage
=
function
(
row
:
MemberProp
)
{
router
.
push
({
path
:
'/user/eventDetails'
,
query
:
{
user_id
:
row
.
id
}
query
:
{
user_id
:
row
.
id
}
,
})
}
...
...
@@ -185,7 +185,7 @@ const goPage = function (row: MemberProp) {
const
handleImage
=
function
(
row
:
MemberProp
)
{
router
.
push
({
path
:
'/user/image'
,
query
:
{
user_id
:
row
.
id
}
query
:
{
user_id
:
row
.
id
}
,
})
}
...
...
@@ -205,6 +205,12 @@ const downloadMember = function (isAll?: boolean) {
}
const
generateEventVisible
=
ref
(
false
)
// 同步用户和事件数据
const
handleSync
=
async
()
=>
{
await
syncMember
()
ElMessage
({
message
:
'同步成功'
,
type
:
'success'
})
handleRefresh
()
}
</
script
>
<
template
>
...
...
@@ -213,15 +219,24 @@ const generateEventVisible = ref(false)
<template
#
header-buttons
>
<el-row
justify=
"space-between"
>
<el-space>
<el-button
v-if=
"!userStore.status.status"
type=
"primary"
:icon=
"Plus"
@
click=
"handleAdd"
v-permission=
"'v1-experiment-member-create'"
<el-button
v-if=
"!userStore.status.status"
type=
"primary"
:icon=
"Plus"
@
click=
"handleAdd"
v-permission=
"'v1-experiment-member-create'"
>
新建
</el-button
>
<el-button
v-if=
"userStore.status.status"
type=
"primary"
@
click=
"handleSync"
>
同步用户和事件数据
</el-button>
<el-dropdown
v-permission=
"'v1-experiment-member-download'"
>
<el-button
type=
"primary"
:icon=
"Download"
>
导出
</el-button>
<template
#
dropdown
>
<el-dropdown-menu>
<el-dropdown-item
@
click=
"downloadMember(true)"
>
全部用户数据
</el-dropdown-item>
<el-dropdown-item
:disabled=
"!multipleSelection.length"
@
click=
"downloadMember(false)"
>
勾选用户数据
</el-dropdown-item>
<el-dropdown-item
:disabled=
"!multipleSelection.length"
@
click=
"downloadMember(false)"
>
勾选用户数据
</el-dropdown-item
>
</el-dropdown-menu>
</
template
>
</el-dropdown>
...
...
@@ -235,7 +250,13 @@ const generateEventVisible = ref(false)
</el-dropdown-menu>
</
template
>
</el-dropdown>
<el-button
type=
"primary"
v-if=
"!userStore.status.status"
@
click=
"progressVisible = true"
v-permission=
"'v1-experiment-member-tasks'"
>
数据导入进度
</el-button>
<el-button
type=
"primary"
v-if=
"!userStore.status.status"
@
click=
"progressVisible = true"
v-permission=
"'v1-experiment-member-tasks'"
>
数据导入进度
</el-button
>
<!-- <el-button type="danger" plain :icon="Delete" :disabled="!multipleSelection.length" @click="handleRemoves()" v-permission="'v1-experiment-member-delete'">删除</el-button> -->
<!-- v-permission="'v1-experiment-member-delete'" -->
<el-dropdown>
...
...
@@ -243,7 +264,9 @@ const generateEventVisible = ref(false)
<
template
#
dropdown
>
<el-dropdown-menu>
<el-dropdown-item
@
click=
"handleRemoves(true)"
>
删除全部用户
</el-dropdown-item>
<el-dropdown-item
:disabled=
"!multipleSelection.length"
@
click=
"handleRemoves(false)"
>
删除勾选用户
</el-dropdown-item>
<el-dropdown-item
:disabled=
"!multipleSelection.length"
@
click=
"handleRemoves(false)"
>
删除勾选用户
</el-dropdown-item
>
</el-dropdown-menu>
</
template
>
</el-dropdown>
...
...
@@ -257,8 +280,12 @@ const generateEventVisible = ref(false)
<
template
#
table-x=
"{ row }"
>
<el-button
type=
"primary"
plain
@
click=
"handleImage(row)"
>
画像
</el-button>
<el-button
type=
"primary"
plain
@
click=
"handleView(row)"
>
查看
</el-button>
<el-button
type=
"primary"
plain
@
click=
"handleEdit(row)"
v-permission=
"'v1-experiment-member-update'"
>
编辑
</el-button>
<el-button
type=
"primary"
plain
@
click=
"handleRemove(row)"
v-permission=
"'v1-experiment-member-delete'"
>
删除
</el-button>
<el-button
type=
"primary"
plain
@
click=
"handleEdit(row)"
v-permission=
"'v1-experiment-member-update'"
>
编辑
</el-button
>
<el-button
type=
"primary"
plain
@
click=
"handleRemove(row)"
v-permission=
"'v1-experiment-member-delete'"
>
删除
</el-button
>
<el-button
type=
"primary"
plain
@
click=
"goPage(row)"
>
事件
</el-button>
</
template
>
</AppList>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论