diff --git a/frontend/src/api/system.ts b/frontend/src/api/system.ts index aa7db56d9..f9ed3ec10 100644 --- a/frontend/src/api/system.ts +++ b/frontend/src/api/system.ts @@ -27,4 +27,6 @@ export const modelApi = { query: (id: number) => request.get(`/system/aimodel/${id}`), setDefault: (id: number) => request.put(`/system/aimodel/default/${id}`), check: (data: any) => request.fetchStream('/system/aimodel/status', data), + platform: (id: number) => request.get(`/system/platform/org/${id}`), + userSync: (data: any) => request.post(`/system/platform/user/sync`, data), } diff --git a/frontend/src/api/user.ts b/frontend/src/api/user.ts index 3a16e25c7..0cc3239e6 100644 --- a/frontend/src/api/user.ts +++ b/frontend/src/api/user.ts @@ -21,6 +21,7 @@ export const userApi = { add: (data: any) => request.post('/user', data), edit: (data: any) => request.put('/user', data), clearErrorApi: (key: string) => request.get(`/user/clearErrorRecord/${key}`), + errorRecord: (key: string) => request.get(`/user/errorRecord/${key}`), delete: (key: string) => request.delete(`/user/${key}`), deleteBatch: (data: any) => request.delete(`/user`, { data }), get: (key: string) => request.get(`/user/${key}`), diff --git a/frontend/src/assets/img/dingtalk.png b/frontend/src/assets/img/dingtalk.png new file mode 100644 index 000000000..44b6cf077 Binary files /dev/null and b/frontend/src/assets/img/dingtalk.png differ diff --git a/frontend/src/assets/img/lark.png b/frontend/src/assets/img/lark.png new file mode 100644 index 000000000..82edd33c1 Binary files /dev/null and b/frontend/src/assets/img/lark.png differ diff --git a/frontend/src/assets/img/wechat.png b/frontend/src/assets/img/wechat.png new file mode 100644 index 000000000..f41ca1c96 Binary files /dev/null and b/frontend/src/assets/img/wechat.png differ diff --git a/frontend/src/assets/svg/avatar_organize.svg b/frontend/src/assets/svg/avatar_organize.svg new file mode 100644 index 000000000..2fe6321ff --- /dev/null +++ b/frontend/src/assets/svg/avatar_organize.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 9b395f21b..3dd6aac47 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -7,6 +7,21 @@ "AI Model Configuration": "AI Model Config", "Details": "Details" }, + "sync": { + "the_existing_user": "If the user already exists, overwrite the existing user.", + "sync_users": "Sync Users", + "sync_wechat_users": "Sync WeChat Users", + "sync_dingtalk_users": "Sync DingTalk Users", + "sync_lark_users": "Sync Lark Users", + "sync_complete": "Sync Complete", + "synced_10_users": "Successfully synced {num} users", + "failed_3_users": "Successfully synced {success} users, sync failed {failed} users", + "download_failure_list": "Download Failure List", + "sync_failed": "Sync Failed", + "failed_10_users": "Sync failed {num} users", + "continue_syncing": "Continue Syncing", + "return_to_view": "Return to View" + }, "parameter": { "execution_details": "Execution Details", "overview": "Overview", diff --git a/frontend/src/i18n/ko-KR.json b/frontend/src/i18n/ko-KR.json index 115d0ff57..9e2a9c796 100644 --- a/frontend/src/i18n/ko-KR.json +++ b/frontend/src/i18n/ko-KR.json @@ -7,6 +7,21 @@ "AI Model Configuration": "모델 구성", "Details": "세부" }, + "sync": { + "the_existing_user": "해당 사용자가 이미 존재하는 경우 기존 사용자를 덮어씁니다.", + "sync_users": "사용자 동기화", + "sync_wechat_users": "위챗 사용자 동기화", + "sync_dingtalk_users": "딩톡 사용자 동기화", + "sync_lark_users": "라크 사용자 동기화", + "sync_complete": "동기화 완료", + "synced_10_users": "{num}명 동기화 성공", + "failed_3_users": "{failed}명 동기화 성공, {success}명 동기화 실패", + "download_failure_list": "실패 목록 다운로드", + "sync_failed": "동기화 실패", + "failed_10_users": "{failed}명 동기화 실패", + "continue_syncing": "동기화 계속", + "return_to_view": "화면으로 돌아가기" + }, "parameter": { "execution_details": "실행 세부 정보", "overview": "개요", diff --git a/frontend/src/i18n/zh-CN.json b/frontend/src/i18n/zh-CN.json index 7917701e6..557a8c9f0 100644 --- a/frontend/src/i18n/zh-CN.json +++ b/frontend/src/i18n/zh-CN.json @@ -7,6 +7,21 @@ "AI Model Configuration": "模型配置", "Details": "详情" }, + "sync": { + "the_existing_user": "若用户已存在,覆盖旧用户", + "sync_users": "同步用户", + "sync_wechat_users": "同步企业微信用户", + "sync_dingtalk_users": "同步钉钉用户", + "sync_lark_users": "同步飞书用户", + "sync_complete": "同步完成", + "synced_10_users": "成功同步 {num} 个用户", + "failed_3_users": "成功同步 {success} 个用户,同步失败 {failed} 个用户,", + "download_failure_list": "下载失败列表", + "sync_failed": "同步失败", + "failed_10_users": "同步失败 {num} 个用户,", + "continue_syncing": "继续同步", + "return_to_view": "返回查看" + }, "parameter": { "execution_details": "执行详情", "overview": "概览", @@ -889,4 +904,4 @@ "to_doc": "查看 API", "trigger_limit": "最多支持创建 {0} 个 API Key" } -} +} \ No newline at end of file diff --git a/frontend/src/views/chat/chat-block/ChartBlock.vue b/frontend/src/views/chat/chat-block/ChartBlock.vue index 01f154576..e4e9ae930 100644 --- a/frontend/src/views/chat/chat-block/ChartBlock.vue +++ b/frontend/src/views/chat/chat-block/ChartBlock.vue @@ -640,9 +640,6 @@ watch( padding: 16px; display: flex; flex-direction: column; - position: relative; - z-index: 10; - border: 1px solid rgba(222, 224, 227, 1); border-radius: 12px; diff --git a/frontend/src/views/system/user/SyncUserDing.vue b/frontend/src/views/system/user/SyncUserDing.vue new file mode 100644 index 000000000..75de1b2a4 --- /dev/null +++ b/frontend/src/views/system/user/SyncUserDing.vue @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + {{ node.label }} + ({{ node.id }}) + + + + + {{ $t(!!search ? 'dashboard.no_data' : 'qa.no_data') }} + + + + + + + + {{ $t('workspace.selected_2_people', { msg: checkTableList.length }) }} + + + + {{ $t('workspace.clear') }} + + + + + + + + {{ + ele.name + }} + ({{ ele.account }}) + + + + + + + + + + + {{ $t('sync.the_existing_user') }} + + + {{ $t('common.cancel') }} + {{ + $t('common.confirm2') + }} + + {{ $t('common.confirm2') }} + + + + + + + diff --git a/frontend/src/views/system/user/User.vue b/frontend/src/views/system/user/User.vue index be56d30f9..799c85a4c 100644 --- a/frontend/src/views/system/user/User.vue +++ b/frontend/src/views/system/user/User.vue @@ -23,6 +23,30 @@ {{ $t('user.filter') }} + + + + + + + + {{ t('sync.sync_users') }} + + + + + + {{ $t(ele.name) }} + + + +