Kaynağa Gözat

银行卡信息

zwp 6 ay önce
ebeveyn
işleme
0792fbf6f5

+ 4 - 1
BuguLive/Class/Sections/Store/View/MerchantBankInfoView.h

@@ -11,7 +11,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface MerchantBankInfoView : MerchantBaseEnrollContentView
+@interface MerchantBankInfoView : MerchantBaseEnrollContentView<MerchantEnrollDataFillDelegate>
 
 // 提示信息
 @property (nonatomic, strong) UIView *warningView;
@@ -45,6 +45,9 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic, strong) UILabel *backCardSubtitleLabel;
 @property (nonatomic, strong) UIImageView *backCardImageView;
 
+@property (nonatomic, copy, nullable) NSString *frontURL;
+@property (nonatomic, copy, nullable) NSString *backURL;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 126 - 5
BuguLive/Class/Sections/Store/View/MerchantBankInfoView.m

@@ -198,18 +198,130 @@
     
 }
 
+#pragma mark - Validation
+
+- (BOOL)validateForm {
+    // 验证账户名称
+    if (self.accountNameTextField.text.length == 0) {
+        [self makeToast:self.accountNameTextField.placeholder];
+        return NO;
+    }
+    
+    // 验证账户号码
+    if (self.accountNumberTextField.text.length == 0) {
+        [self makeToast:self.accountNumberTextField.placeholder];
+        return NO;
+    }
+    
+    // 验证开户行
+    if (self.bankNameTextField.text.length == 0) {
+        [self makeToast:self.bankNameTextField.placeholder];
+        return NO;
+    }
+    
+    // 验证银行卡正面照片
+    if (self.frontURL.length == 0) {
+        [self makeToast:self.frontCardSubtitleLabel.text];
+        return NO;
+    }
+    
+    // 验证银行卡反面照片
+    if (self.backURL.length == 0) {
+        [self makeToast:self.backCardSubtitleLabel.text];
+        return NO;
+    }
+    
+    return YES;
+}
+
+#pragma mark - Public Methods
+
+- (BOOL)canGoNext {
+    return [self validateForm];
+}
+
+- (void)goNext {
+    if ([self validateForm]) {
+        [super goNext];
+    }
+}
+
 #pragma mark - Actions
 
 - (void)frontCardTapped:(UITapGestureRecognizer *)gesture {
-    // TODO: 实现银行卡正面图片选择功能
-    NSLog(@"Bank card front upload tapped");
+    WeakSelf
+    [self pickImageWithCompletion:^(UIImage *image) {
+        weakSelf.frontCardImageView.image = image;
+        
+        // 上传图片到服务器
+        [weakSelf uploadImage:image completion:^(NSString *url) {
+            weakSelf.frontURL = url;
+        }];
+    }];
 }
 
 - (void)backCardTapped:(UITapGestureRecognizer *)gesture {
-    // TODO: 实现银行卡反面图片选择功能
-    NSLog(@"Bank card back upload tapped");
+    WeakSelf
+    [self pickImageWithCompletion:^(UIImage *image) {
+        weakSelf.backCardImageView.image = image;
+        
+        // 上传图片到服务器
+        [weakSelf uploadImage:image completion:^(NSString *url) {
+            weakSelf.backURL = url;
+        }];
+    }];
+}
+
+#pragma mark - MerchantEnrollParametersDataSource
+- (NSDictionary *)getMerchantEnrollParameters {
+    return @{
+        @"bank_card_number": self.accountNumberTextField.text ?: @"",
+        @"bank_card_name": self.accountNameTextField.text ?: @"",
+        @"bank_opening_account": self.bankNameTextField.text ?: @"",
+        @"bank_front_photo": self.frontURL ?: @"",
+        @"bank_back_photo": self.backURL ?: @"",
+    };
+}
+
+#pragma mark - MerchantEnrollDataFillDelegate
+- (void)fillWithData:(NSDictionary *)data {
+    if (!data) {
+        return;
+    }
+    
+    // 填充文本字段
+    self.accountNameTextField.text = data[@"bank_card_name"] ?: @"";
+    self.accountNumberTextField.text = data[@"bank_card_number"] ?: @"";
+    self.bankNameTextField.text = data[@"bank_opening_account"] ?: @"";
+    
+    // 填充图片URL
+    self.frontURL = data[@"bank_front_photo"] ?: @"";
+    self.backURL = data[@"bank_back_photo"] ?: @"";
+    
+    // 如果有图片URL,可以考虑异步加载图片
+    if (self.frontURL.length > 0) {
+        [self loadImageFromURL:self.frontURL forImageView:self.frontCardImageView];
+    }
+    
+    if (self.backURL.length > 0) {
+        [self loadImageFromURL:self.backURL forImageView:self.backCardImageView];
+    }
 }
 
+- (void)loadImageFromURL:(NSString *)urlString forImageView:(UIImageView *)imageView {
+    if (urlString.length == 0) {
+        return;
+    }
+    
+    NSURL *url = [NSURL URLWithString:urlString];
+    if (!url) {
+        return;
+    }
+    
+    [imageView setImageURL:url];
+}
+
+
 #pragma mark - Lazy Loading
 
 - (UIView *)warningView {
@@ -284,6 +396,10 @@
         UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kRealValue(16), kRealValue(48))];
         _accountNameTextField.rightView = rightView;
         _accountNameTextField.rightViewMode = UITextFieldViewModeAlways;
+        
+        // 设置键盘返回键类型
+        _accountNameTextField.returnKeyType = UIReturnKeyNext;
+        _accountNameTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
     }
     return _accountNameTextField;
 }
@@ -317,7 +433,7 @@
         _accountNumberTextField.layer.cornerRadius = kRealValue(8);
         _accountNumberTextField.layer.borderWidth = 1;
         _accountNumberTextField.layer.borderColor = [UIColor colorWithHexString:@"#E5E5E5"].CGColor;
-        _accountNumberTextField.keyboardType = UIKeyboardTypeNumberPad;
+        _accountNumberTextField.keyboardType = UIKeyboardTypeDecimalPad;
         
         // 设置内边距
         UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kRealValue(16), kRealValue(48))];
@@ -327,6 +443,7 @@
         UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kRealValue(16), kRealValue(48))];
         _accountNumberTextField.rightView = rightView;
         _accountNumberTextField.rightViewMode = UITextFieldViewModeAlways;
+        _accountNumberTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
     }
     return _accountNumberTextField;
 }
@@ -369,6 +486,10 @@
         UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kRealValue(16), kRealValue(48))];
         _bankNameTextField.rightView = rightView;
         _bankNameTextField.rightViewMode = UITextFieldViewModeAlways;
+        
+        // 设置键盘返回键类型
+        _bankNameTextField.returnKeyType = UIReturnKeyDone;
+        _bankNameTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
     }
     return _bankNameTextField;
 }