diff --git a/src/components/pages/EquipmentPage.tsx b/src/components/pages/EquipmentPage.tsx index 8550135..fd303d4 100644 --- a/src/components/pages/EquipmentPage.tsx +++ b/src/components/pages/EquipmentPage.tsx @@ -445,10 +445,16 @@ export default function EquipmentPage() { } const filteredEquipment = equipmentList.filter((item) => { + // 安全地处理可能为 null 或 undefined 的字段 + const equipmentName = item.equipmentName || "" + const merchantName = item.merchantName || "" + const mallName = item.mallName || "" + const searchLower = searchTerm.toLowerCase() + const matchesSearch = - item.equipmentName.toLowerCase().includes(searchTerm.toLowerCase()) || - item.merchantName.toLowerCase().includes(searchTerm.toLowerCase()) || - item.mallName.toLowerCase().includes(searchTerm.toLowerCase()) + equipmentName.toLowerCase().includes(searchLower) || + merchantName.toLowerCase().includes(searchLower) || + mallName.toLowerCase().includes(searchLower) // 修正状态筛选逻辑 let matchesStatus = true diff --git a/src/components/pages/ValueAddedServicesPage.tsx b/src/components/pages/ValueAddedServicesPage.tsx index 7e30767..000092e 100644 --- a/src/components/pages/ValueAddedServicesPage.tsx +++ b/src/components/pages/ValueAddedServicesPage.tsx @@ -24,27 +24,26 @@ import type { User } from "@/lib/types/user" export default function ValueAddedServicesPage() { const [services, setServices] = useState([]) - const [adminUsers, setAdminUsers] = useState([]) - const [commonUsers, setCommonUsers] = useState([]) + const [users, setUsers] = useState([]) const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false) const [isEditDialogOpen, setIsEditDialogOpen] = useState(false) + const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false) + const [serviceToDelete, setServiceToDelete] = useState(null) const [selectedService, setSelectedService] = useState(null) const [loading, setLoading] = useState(false) const [pageNum, setPageNum] = useState(1) - const [pageSize, setPageSize] = useState(10) + const [pageSize] = useState(10) const [total, setTotal] = useState(0) const [formData, setFormData] = useState({ serviceTitle: "", description: "", status: "1", - assignedAdmin: "", - assignedCommon: "", + assignedUsers: "", }) useEffect(() => { loadServices() - loadUsers() }, [pageNum, pageSize]) const loadServices = async () => { @@ -64,17 +63,10 @@ export default function ValueAddedServicesPage() { const loadUsers = async () => { try { - const [adminResponse, commonResponse] = await Promise.all([ - getUserByRoleKey() - // getUserByRoleKey("common"), - ]) - - if (adminResponse.code === 200 && adminResponse.data) { - setAdminUsers(adminResponse.data) - } - - if (commonResponse.code === 200 && commonResponse.data) { - setCommonUsers(commonResponse.data) + // 传空字符串获取所有用户,或者根据实际需求传入特定的 roleKey + const response = await getUserByRoleKey("") + if (response.code === 200 && response.data) { + setUsers(response.data) } } catch (error) { console.error("加载用户列表失败:", error) @@ -84,10 +76,17 @@ export default function ValueAddedServicesPage() { const handleCreateService = async () => { setLoading(true) try { - const response = await createService(formData) + // 将 assignedUsers 同时赋值给 assignedAdmin 和 assignedCommon 以保持 API 兼容性 + const response = await createService({ + serviceTitle: formData.serviceTitle, + description: formData.description, + status: formData.status, + assignedAdmin: formData.assignedUsers, + assignedCommon: formData.assignedUsers, + }) if (response.code === 200) { - setIsCreateDialogOpen(false) - resetForm() + setIsCreateDialogOpen(false) + resetForm() loadServices() } else { alert(response.msg || "创建失败") @@ -105,13 +104,18 @@ export default function ValueAddedServicesPage() { setLoading(true) try { + // 将 assignedUsers 同时赋值给 assignedAdmin 和 assignedCommon 以保持 API 兼容性 const response = await updateService({ id: selectedService.id, - ...formData, + serviceTitle: formData.serviceTitle, + description: formData.description, + status: formData.status, + assignedAdmin: formData.assignedUsers, + assignedCommon: formData.assignedUsers, }) if (response.code === 200) { - setIsEditDialogOpen(false) - resetForm() + setIsEditDialogOpen(false) + resetForm() loadServices() } else { alert(response.msg || "更新失败") @@ -124,13 +128,20 @@ export default function ValueAddedServicesPage() { } } - const handleDeleteService = async (id: string) => { - if (!confirm("确定要删除该服务吗?")) return + const handleDeleteService = (service: ValueAddedService) => { + setServiceToDelete(service) + setIsDeleteDialogOpen(true) + } + + const handleConfirmDelete = async () => { + if (!serviceToDelete) return setLoading(true) try { - const response = await deleteService(id) + const response = await deleteService(serviceToDelete.id) if (response.code === 200) { + setIsDeleteDialogOpen(false) + setServiceToDelete(null) loadServices() } else { alert(response.msg || "删除失败") @@ -147,13 +158,18 @@ export default function ValueAddedServicesPage() { setLoading(true) try { const newStatus = service.status === "1" ? "0" : "1" + // 合并 assignedAdmin 和 assignedCommon 为 assignedUsers,然后同时赋值给两个字段以保持 API 兼容性 + const assignedUsers = [ + ...(service.assignedAdmin || "").split(",").filter(Boolean), + ...(service.assignedCommon || "").split(",").filter(Boolean), + ].join(",") const response = await updateService({ id: service.id, serviceTitle: service.serviceTitle, description: service.description, status: newStatus, - assignedAdmin: service.assignedAdmin || "", - assignedCommon: service.assignedCommon || "", + assignedAdmin: assignedUsers, + assignedCommon: assignedUsers, }) if (response.code === 200) { loadServices() @@ -173,26 +189,31 @@ export default function ValueAddedServicesPage() { serviceTitle: "", description: "", status: "1", - assignedAdmin: "", - assignedCommon: "", + assignedUsers: "", }) setSelectedService(null) } - const openEditDialog = (service: ValueAddedService) => { + const openEditDialog = async (service: ValueAddedService) => { setSelectedService(service) + // 合并 assignedAdmin 和 assignedCommon 为 assignedUsers + const assignedUsers = [ + ...(service.assignedAdmin || "").split(",").filter(Boolean), + ...(service.assignedCommon || "").split(",").filter(Boolean), + ].join(",") setFormData({ serviceTitle: service.serviceTitle, description: service.description, status: service.status, - assignedAdmin: service.assignedAdmin || "", - assignedCommon: service.assignedCommon || "", + assignedUsers: assignedUsers, }) + // 打开编辑对话框时加载用户列表 + await loadUsers() setIsEditDialogOpen(true) } - const getUserName = (userId: string, userList: User[]) => { - const user = userList.find((u) => u.userId === userId) + const getUserName = (userId: string) => { + const user = users.find((u) => u.userId === userId) return user ? (user.nickName || user.userName) : "未知用户" } @@ -201,6 +222,11 @@ export default function ValueAddedServicesPage() { return ids.split(",").filter(Boolean) } + const handleOpenCreateDialog = async () => { + await loadUsers() + setIsCreateDialogOpen(true) + } + const totalPages = Math.ceil(total / pageSize) const handlePrevPage = () => { @@ -216,133 +242,99 @@ export default function ValueAddedServicesPage() { } return ( -
+
{/* Page Header */} -
+
-

增值服务管理

-

管理总公司提供的增值服务,分配给经销商

+

增值服务管理

+

管理增值服务,分配给用户

- - - - 新增增值服务 - 创建新的增值服务并分配给经销商 + + + 新增增值服务 + 创建新的增值服务并分配给用户 -
-
- +
+
+ setFormData({ ...formData, serviceTitle: e.target.value })} placeholder="请输入服务标题" + className="text-sm sm:text-base" />
-
- +
+