diff --git a/frontend/src/views/admin/system-settings.vue b/frontend/src/views/admin/system-settings.vue index 6f7f595..04d7976 100644 --- a/frontend/src/views/admin/system-settings.vue +++ b/frontend/src/views/admin/system-settings.vue @@ -140,6 +140,14 @@ 测试连接 + + 立即同步 + @@ -164,6 +172,7 @@ const dingtalkFormRef = ref() const syncLoading = ref(false) const syncSaving = ref(false) const syncTesting = ref(false) +const syncing = ref(false) const syncFormRef = ref() // 钉钉配置表单 @@ -327,6 +336,31 @@ const testSyncConnection = async () => { } } +/** + * 立即执行员工同步 + */ +const triggerSync = async () => { + syncing.value = true + try { + const response = await request.post('/api/v1/employee-sync/sync') + if (response.success) { + const data = response.data + ElMessage.success( + `同步完成!共处理 ${data.total_employees || 0} 名员工,` + + `创建 ${data.users_created || 0} 个账号,` + + `跳过 ${data.users_skipped || 0} 个` + ) + } else { + ElMessage.error(response.message || '同步失败') + } + } catch (error: any) { + console.error('员工同步失败:', error) + ElMessage.error(error?.response?.data?.detail || '员工同步失败') + } finally { + syncing.value = false + } +} + // 页面加载时获取配置 onMounted(() => { loadDingtalkConfig()