소스 검색

fix(disability): 修复更新残疾人信息时bankName验证失败问题

问题描述:
- 更新残疾人信息时,前端发送的bankCards中bankName为undefined
- 后端Schema验证失败: "expected object, received undefined"

修复内容:
1. 后端Schema修改:
   - CreateAggregatedDisabledPersonSchema移除bankName和file字段
   - 只要求前端发送bankNameId,后端通过关联查询获取完整信息

2. 前端UI修改:
   - 移除创建和更新时手动构造的bankName对象
   - 只发送必要的bankNameId字段

3. 后端Service修改:
   - 移除对bankName和file字段的解构处理
   - 在更新查询的relations中添加'bankCards.bankName'关联
   - 确保返回数据包含完整的bankName对象

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
yourname 2 주 전
부모
커밋
128d90365d

+ 2 - 2
allin-packages/disability-module/src/schemas/disabled-person.schema.ts

@@ -555,10 +555,10 @@ export const CreateAggregatedDisabledPersonSchema = z.object({
   personInfo: CreateDisabledPersonSchema.openapi({
     description: '残疾人基本信息'
   }),
-  bankCards: z.array(DisabledBankCardSchema.omit({ id: true, personId: true })).optional().openapi({
+  bankCards: z.array(DisabledBankCardSchema.omit({ id: true, personId: true, bankName: true, file: true })).optional().openapi({
     description: '银行卡信息列表'
   }),
-  photos: z.array(DisabledPhotoSchema.omit({ id: true, personId: true, uploadTime: true })).optional().openapi({
+  photos: z.array(DisabledPhotoSchema.omit({ id: true, personId: true, uploadTime: true, file: true })).optional().openapi({
     description: '照片信息列表'
   }),
   remarks: z.array(DisabledRemarkSchema.omit({ id: true, personId: true, remarkTime: true })).optional().openapi({

+ 5 - 9
allin-packages/disability-module/src/services/aggregated.service.ts

@@ -111,8 +111,7 @@ export class AggregatedService {
     let savedBankCards: DisabledBankCard[] = [];
     if (processedBankCards.length > 0) {
       const cardsToSave = processedBankCards.map(card => {
-        const { file, bankName, ...cardData } = card;
-        return this.bankCardRepository.create({ ...cardData, personId });
+        return this.bankCardRepository.create({ ...card, personId });
       });
       savedBankCards = await this.bankCardRepository.save(cardsToSave);
     }
@@ -121,8 +120,7 @@ export class AggregatedService {
     let savedPhotos: DisabledPhoto[] = [];
     if (photos.length > 0) {
       const photosToSave = photos.map(photo => {
-        const { file, ...photoData } = photo;
-        return this.photoRepository.create({ ...photoData, personId, uploadTime: new Date() });
+        return this.photoRepository.create({ ...photo, personId, uploadTime: new Date() });
       });
       savedPhotos = await this.photoRepository.save(photosToSave);
     }
@@ -230,8 +228,7 @@ export class AggregatedService {
     if (bankCards.length > 0) {
       await this.bankCardRepository.delete({ personId });
       const cardsToSave = bankCards.map(card => {
-        const { file, bankName, ...cardData } = card;
-        return this.bankCardRepository.create({ ...cardData, personId });
+        return this.bankCardRepository.create({ ...card, personId });
       });
       await this.bankCardRepository.save(cardsToSave);
     }
@@ -240,8 +237,7 @@ export class AggregatedService {
     if (photos.length > 0) {
       await this.photoRepository.delete({ personId });
       const photosToSave = photos.map(photo => {
-        const { file, ...photoData } = photo;
-        return this.photoRepository.create({ ...photoData, personId, uploadTime: new Date() });
+        return this.photoRepository.create({ ...photo, personId, uploadTime: new Date() });
       });
       await this.photoRepository.save(photosToSave);
     }
@@ -267,7 +263,7 @@ export class AggregatedService {
     // 获取更新后的完整数据
     const updatedPerson = await this.personRepository.findOne({
       where: { id: personId },
-      relations: ['bankCards', 'bankCards.file', 'bankCards.file.uploadUser', 'photos', 'photos.file', 'photos.file.uploadUser', 'remarks', 'visits']
+      relations: ['bankCards', 'bankCards.bankName', 'bankCards.file', 'bankCards.file.uploadUser', 'photos', 'photos.file', 'photos.file.uploadUser', 'remarks', 'visits']
     });
 
     if (!updatedPerson) {

+ 0 - 2
allin-packages/disability-person-management-ui/src/components/DisabilityPersonManagement.tsx

@@ -167,7 +167,6 @@ const DisabilityPersonManagement: React.FC = () => {
           .map(card => ({
             subBankName: card.subBankName,
             bankNameId: card.bankNameId!,
-            bankName: { id: card.bankNameId!, name: card.bankName || '', code: '', remark: null, createdAt: new Date(), updatedAt: new Date(), createdBy: null, updatedBy: null, status: 1 },
             cardNumber: card.cardNumber,
             cardholderName: card.cardholderName,
             cardType: card.cardType || null,
@@ -266,7 +265,6 @@ const DisabilityPersonManagement: React.FC = () => {
           .map(card => ({
             subBankName: card.subBankName,
             bankNameId: card.bankNameId!,
-            bankName: { id: card.bankNameId!, name: card.bankName || '', code: '', remark: null, createdAt: new Date(), updatedAt: new Date(), createdBy: null, updatedBy: null, status: 1 },
             cardNumber: card.cardNumber,
             cardholderName: card.cardholderName,
             cardType: card.cardType || null,