Sfoglia il codice sorgente

🔧 chore: 更新广告类型管理UI包相关文件

- 更新AdvertisementTypeManagement组件
- 更新AdvertisementTypeSelector组件
- 更新广告类型类型定义
- 更新依赖锁定文件

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 mese fa
parent
commit
1b11435e46

+ 13 - 15
packages/advertisement-type-management-ui/src/components/AdvertisementTypeManagement.tsx

@@ -1,5 +1,5 @@
 import { useState } from 'react'
-import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
+import { useQuery, useMutation } from '@tanstack/react-query'
 import { Plus, Search, Edit, Trash2 } from 'lucide-react'
 import { format } from 'date-fns'
 import { useForm } from 'react-hook-form'
@@ -26,8 +26,6 @@ const createFormSchema = CreateAdvertisementTypeDto
 const updateFormSchema = UpdateAdvertisementTypeDto
 
 export const AdvertisementTypeManagement = () => {
-  const queryClient = useQueryClient()
-
   // 状态管理
   const [searchParams, setSearchParams] = useState<AdvertisementTypeQueryParams>({ page: 1, limit: 10, search: '' })
   const [isModalOpen, setIsModalOpen] = useState(false)
@@ -37,7 +35,7 @@ export const AdvertisementTypeManagement = () => {
   const [typeToDelete, setTypeToDelete] = useState<number | null>(null)
 
   // 表单实例
-  const createForm = useForm<AdvertisementTypeFormData>({
+  const createForm = useForm({
     resolver: zodResolver(createFormSchema),
     defaultValues: {
       name: '',
@@ -47,7 +45,7 @@ export const AdvertisementTypeManagement = () => {
     }
   })
 
-  const updateForm = useForm<AdvertisementTypeFormData>({
+  const updateForm = useForm({
     resolver: zodResolver(updateFormSchema),
     defaultValues: {
       name: '',
@@ -61,7 +59,7 @@ export const AdvertisementTypeManagement = () => {
   const { data, isLoading, refetch } = useQuery({
     queryKey: ['advertisement-types', searchParams],
     queryFn: async () => {
-      const res = await advertisementTypeClient.$get({
+      const res = await advertisementTypeClient.index.$get({
         query: {
           page: searchParams.page,
           pageSize: searchParams.limit,
@@ -76,7 +74,7 @@ export const AdvertisementTypeManagement = () => {
   // 创建mutation
   const createMutation = useMutation({
     mutationFn: async (data: AdvertisementTypeFormData) => {
-      const res = await advertisementTypeClient.$post({ json: data })
+      const res = await advertisementTypeClient.index.$post({ json: data })
       if (res.status !== 201) throw new Error('创建失败')
       return await res.json()
     },
@@ -95,7 +93,7 @@ export const AdvertisementTypeManagement = () => {
   const updateMutation = useMutation({
     mutationFn: async ({ id, data }: { id: number; data: AdvertisementTypeFormData }) => {
       const res = await advertisementTypeClient[':id']['$put']({
-        param: { id: id.toString() },
+        param: { id: id },
         json: data
       })
       if (res.status !== 200) throw new Error('更新失败')
@@ -116,7 +114,7 @@ export const AdvertisementTypeManagement = () => {
   const deleteMutation = useMutation({
     mutationFn: async (id: number) => {
       const res = await advertisementTypeClient[':id']['$delete']({
-        param: { id: id.toString() }
+        param: { id: id }
       })
       if (res.status !== 204) throw new Error('删除失败')
       return await res.json()
@@ -172,7 +170,7 @@ export const AdvertisementTypeManagement = () => {
     }
   }
 
-  const handleCreateSubmit = async (data: AdvertisementTypeFormData) => {
+  const handleCreateSubmit = async (data: any) => {
     try {
       createMutation.mutate(data)
     } catch (error) {
@@ -180,7 +178,7 @@ export const AdvertisementTypeManagement = () => {
     }
   }
 
-  const handleUpdateSubmit = async (data: AdvertisementTypeFormData) => {
+  const handleUpdateSubmit = async (data: any) => {
     if (!editingType) return
 
     try {
@@ -333,8 +331,8 @@ export const AdvertisementTypeManagement = () => {
                 <Button
                   variant="outline"
                   size="sm"
-                  onClick={() => setSearchParams(prev => ({ ...prev, page: prev.page - 1 }))}
-                  disabled={searchParams.page <= 1}
+                  onClick={() => setSearchParams(prev => ({ ...prev, page: (prev.page || 1) - 1 }))}
+                  disabled={(searchParams.page || 1) <= 1}
                   data-testid="prev-page-button"
                 >
                   上一页
@@ -345,8 +343,8 @@ export const AdvertisementTypeManagement = () => {
                 <Button
                   variant="outline"
                   size="sm"
-                  onClick={() => setSearchParams(prev => ({ ...prev, page: prev.page + 1 }))}
-                  disabled={searchParams.page >= Math.ceil(data.pagination.total / searchParams.limit)}
+                  onClick={() => setSearchParams(prev => ({ ...prev, page: (prev.page || 1) + 1 }))}
+                  disabled={(searchParams.page || 1) >= Math.ceil(data.pagination.total / (searchParams.limit || 10))}
                   data-testid="next-page-button"
                 >
                   下一页

+ 6 - 4
packages/advertisement-type-management-ui/src/components/AdvertisementTypeSelector.tsx

@@ -8,9 +8,6 @@ import {
   SelectValue,
 } from '@d8d/shared-ui-components/components/ui/select';
 import { advertisementTypeClient } from '../api/advertisementTypeClient';
-import type { InferResponseType } from 'hono/client';
-
-type AdvertisementTypeResponse = InferResponseType<typeof advertisementTypeClient.index.$get, 200>['data'][0];
 
 interface AdvertisementTypeSelectorProps {
   value?: number;
@@ -36,7 +33,12 @@ export const AdvertisementTypeSelector: React.FC<AdvertisementTypeSelectorProps>
   } = useQuery({
     queryKey: ['advertisement-types'],
     queryFn: async () => {
-      const res = await advertisementTypeClient.index.$get();
+      const res = await advertisementTypeClient.index.$get({
+        query: {
+          page: 1,
+          pageSize: 100
+        }
+      });
       if (res.status !== 200) throw new Error('获取广告类型失败');
       return await res.json();
     },

+ 3 - 3
packages/advertisement-type-management-ui/src/types/advertisementType.ts

@@ -8,8 +8,8 @@ export interface AdvertisementType {
   code: string;
   remark: string | null;
   status: number;
-  createdAt: Date;
-  updatedAt: Date;
+  createdAt: string;
+  updatedAt: string;
   createdBy: number | null;
   updatedBy: number | null;
 }
@@ -45,7 +45,7 @@ export enum AdvertisementTypeStatus {
 export interface AdvertisementTypeFormData {
   name: string;
   code: string;
-  remark?: string;
+  remark?: string | null;
   status: number;
 }