在员工管理中新增员工时,可选择此处维护的部门
@@ -50,7 +46,7 @@ export function DepartmentInstructions() {
-
+ •
删除限制:
删除部门前请先删除其所有子部门
diff --git a/crop-x/src/app/(app)/central-config/user/employee/components/EmployeeFormDialog.tsx b/crop-x/src/app/(app)/central-config/user/employee/components/EmployeeFormDialog.tsx
index a705eee..1b088b4 100644
--- a/crop-x/src/app/(app)/central-config/user/employee/components/EmployeeFormDialog.tsx
+++ b/crop-x/src/app/(app)/central-config/user/employee/components/EmployeeFormDialog.tsx
@@ -1,6 +1,7 @@
'use client';
-import React from 'react';
+import React, { useState, useEffect } from 'react';
+import { toast } from 'sonner';
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogFooter } from '@/components/ui/dialog';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
@@ -8,6 +9,7 @@ import { Label } from '@/components/ui/label';
import { Card } from '@/components/ui/card';
import { Checkbox } from '@/components/ui/checkbox';
import { Employee, Role, EmployeeFormData } from '../types';
+import { fetchEmployeeDetail } from './employeeApi';
interface EmployeeFormDialogProps {
open: boolean;
@@ -17,6 +19,9 @@ interface EmployeeFormDialogProps {
onFormDataChange: (data: EmployeeFormData) => void;
onSave: () => void;
roles: Role[];
+ creating?: boolean;
+ updating?: boolean;
+ onClearForm?: () => void;
}
export function EmployeeFormDialog({
@@ -26,13 +31,73 @@ export function EmployeeFormDialog({
formData,
onFormDataChange,
onSave,
- roles
+ roles,
+ creating = false,
+ updating = false,
+ onClearForm
}: EmployeeFormDialogProps) {
+ const [loadingDetail, setLoadingDetail] = useState(false);
+
+ // 当编辑员工时,根据ID获取用户详情
+ useEffect(() => {
+ if (open && editingEmployee && editingEmployee.id) {
+ loadEmployeeDetail(editingEmployee.id);
+ }
+ }, [open, editingEmployee]);
+
+ const loadEmployeeDetail = async (userId: string) => {
+ setLoadingDetail(true);
+ try {
+ const employeeDetail = await fetchEmployeeDetail(userId);
+
+ // 将API数据转换为表单数据格式
+ const formDetailData: EmployeeFormData = {
+ username: employeeDetail.username,
+ name: employeeDetail.displayName || employeeDetail.fullName || employeeDetail.username,
+ phone: employeeDetail.phone || '',
+ email: employeeDetail.email || '',
+ department: employeeDetail.departmentName || '',
+ position: '', // API返回中没有position字段
+ enterpriseId: employeeDetail.tenantId,
+ enterpriseName: employeeDetail.companyName || '',
+ status: employeeDetail.isActive ? 'active' : 'inactive',
+ roleIds: [], // 需要单独获取角色信息
+ idCard: '', // API返回中没有idCard字段
+ address: '', // API返回中没有address字段
+ auditStatus: 'approved', // 默认值
+ isSuperuser: employeeDetail.isSuperuser,
+ };
+
+ // 更新表单数据
+ onFormDataChange(formDetailData);
+ } catch (error) {
+ console.error('获取员工详情失败:', error);
+ toast.error('接口调用失败,请稍后重试');
+ } finally {
+ setLoadingDetail(false);
+ }
+ };
return (
-
@@ -58,6 +124,7 @@ export function EmployeeFormDialog({
value={formData.name || ''}
onChange={(e) => onFormDataChange({ ...formData, name: e.target.value })}
placeholder="真实姓名"
+ disabled={editingEmployee && loadingDetail}
/>
@@ -67,6 +134,7 @@ export function EmployeeFormDialog({
value={formData.phone || ''}
onChange={(e) => onFormDataChange({ ...formData, phone: e.target.value })}
placeholder="11位手机号码"
+ disabled={editingEmployee && loadingDetail}
/>
@@ -77,6 +145,7 @@ export function EmployeeFormDialog({
value={formData.email || ''}
onChange={(e) => onFormDataChange({ ...formData, email: e.target.value })}
placeholder="电子邮箱"
+ disabled={editingEmployee && loadingDetail}
/>
@@ -86,6 +155,7 @@ export function EmployeeFormDialog({
value={formData.idCard || ''}
onChange={(e) => onFormDataChange({ ...formData, idCard: e.target.value })}
placeholder="18位身份证号码"
+ disabled={editingEmployee && loadingDetail}
/>
@@ -95,6 +165,7 @@ export function EmployeeFormDialog({
value={formData.address || ''}
onChange={(e) => onFormDataChange({ ...formData, address: e.target.value })}
placeholder="详细住址"
+ disabled={editingEmployee && loadingDetail}
/>