提交 1fd37cc1 authored 作者: 王鹏飞's avatar 王鹏飞

feat: 新增同步用户和事件数据按钮

上级 18991ed7
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')
}
<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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论