MerchantEnrollResultView.m 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. //
  2. // MerchantEnrollResultView.m
  3. // merchant
  4. //
  5. // Created by qitewei on 2025/8/14.
  6. // Copyright © 2025 xfg. All rights reserved.
  7. //
  8. #import "MerchantEnrollResultView.h"
  9. #import "UIView+Extention.h"
  10. @implementation MerchantEnrollResultView
  11. - (instancetype)initWithResultType:(MerchantEnrollResultType)resultType frame:(CGRect)frame
  12. {
  13. self = [super initWithFrame:frame];
  14. if (self) {
  15. self.resultType = resultType;
  16. [self setupUI];
  17. [self setupConstraints];
  18. [self configureForResultType];
  19. [self addGradientLayerWithColors:@[
  20. [UIColor colorWithHexString:@"#ECF4FF"],
  21. [UIColor colorWithHexString:@"#ffffff"],
  22. ] direction:GradientLayerDirection_V
  23. frame:frame
  24. roundingCorners:UIRectCornerAllCorners
  25. cornerRadii:16];
  26. }
  27. return self;
  28. }
  29. - (instancetype)initWithFrame:(CGRect)frame
  30. {
  31. return [self initWithResultType:MerchantEnrollResultSuccess frame:frame];
  32. }
  33. - (void)setupUI {
  34. self.backgroundColor = [UIColor clearColor];
  35. // 添加状态图标
  36. [self.contentView addSubview:self.statusIconView];
  37. // 添加主要文本
  38. [self.contentView addSubview:self.mainMessageLabel];
  39. // 添加副文本
  40. [self.contentView addSubview:self.subMessageLabel];
  41. // 添加失败原因标签(仅失败状态需要)
  42. [self.contentView addSubview:self.failureReasonLabel];
  43. }
  44. - (void)setupConstraints {
  45. // 状态图标
  46. [self.statusIconView mas_makeConstraints:^(MASConstraintMaker *make) {
  47. make.centerX.equalTo(self.contentView);
  48. make.top.equalTo(self.contentView).offset(kRealValue(80));
  49. make.size.mas_equalTo(CGSizeMake(kRealValue(80), kRealValue(80)));
  50. }];
  51. // 主要文本
  52. [self.mainMessageLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  53. make.centerX.equalTo(self.contentView);
  54. make.left.greaterThanOrEqualTo(self.contentView).offset(kRealValue(40));
  55. make.right.lessThanOrEqualTo(self.contentView).offset(-kRealValue(40));
  56. make.top.equalTo(self.statusIconView.mas_bottom).offset(kRealValue(32));
  57. }];
  58. // 副文本
  59. [self.subMessageLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  60. make.centerX.equalTo(self.contentView);
  61. make.left.greaterThanOrEqualTo(self.contentView).offset(kRealValue(40));
  62. make.right.lessThanOrEqualTo(self.contentView).offset(-kRealValue(40));
  63. make.top.equalTo(self.mainMessageLabel.mas_bottom).offset(kRealValue(16));
  64. }];
  65. // 失败原因标签
  66. [self.failureReasonLabel mas_makeConstraints:^(MASConstraintMaker *make) {
  67. make.centerX.equalTo(self.contentView);
  68. make.left.greaterThanOrEqualTo(self.contentView).offset(kRealValue(40));
  69. make.right.lessThanOrEqualTo(self.contentView).offset(-kRealValue(40));
  70. make.top.equalTo(self.subMessageLabel.mas_bottom).offset(kRealValue(24));
  71. make.bottom.equalTo(self.contentView).offset(-kRealValue(20));
  72. }];
  73. }
  74. - (void)configureForResultType {
  75. switch (self.resultType) {
  76. case MerchantEnrollResultSuccess:
  77. [self configureSuccessState];
  78. break;
  79. case MerchantEnrollResultPending:
  80. [self configurePendingState];
  81. break;
  82. case MerchantEnrollResultFailed:
  83. [self configureFailedState];
  84. break;
  85. }
  86. }
  87. - (void)configureSuccessState {
  88. // 成功状态配置
  89. self.statusIconView.image = [UIImage imageNamed:@"store_step_done"];
  90. self.mainMessageLabel.text = ASLocalizedString(@"已通过审核,完成入驻!");
  91. self.mainMessageLabel.textColor = [UIColor blackColor];
  92. self.subMessageLabel.text = ASLocalizedString(@"立即去发布产品吧~");
  93. self.subMessageLabel.textColor = [UIColor colorWithHexString:@"#1A65FF"];
  94. self.failureReasonLabel.hidden = YES;
  95. [self.nextButton setTitle:ASLocalizedString(@"去发布产品") forState:UIControlStateNormal];
  96. self.nextButton.backgroundColor = [UIColor colorWithHexString:@"#1A65FF"];
  97. }
  98. - (void)configurePendingState {
  99. // 等待审核状态配置
  100. self.statusIconView.image = [UIImage imageNamed:@"img_store_wait"];
  101. self.mainMessageLabel.text = ASLocalizedString(@"已提交成功,请耐心等待审核!");
  102. self.mainMessageLabel.textColor = [UIColor blackColor];
  103. self.subMessageLabel.text = ASLocalizedString(@"审核约1-3个工作日");
  104. self.subMessageLabel.textColor = [UIColor colorWithHexString:@"#1A65FF"];
  105. self.failureReasonLabel.hidden = YES;
  106. [self.nextButton setTitle:ASLocalizedString(@"返回") forState:UIControlStateNormal];
  107. self.nextButton.backgroundColor = [UIColor colorWithHexString:@"#999999"];
  108. }
  109. - (void)configureFailedState {
  110. // 审核失败状态配置
  111. self.statusIconView.image = [UIImage imageNamed:@"store_review_error"];
  112. self.mainMessageLabel.text = ASLocalizedString(@"审核未通过!请修改以下资料:");
  113. self.mainMessageLabel.textColor = [UIColor redColor];
  114. self.subMessageLabel.hidden = YES;
  115. self.failureReasonLabel.hidden = NO;
  116. self.failureReasonLabel.text = [NSString stringWithFormat:@"%@\n%@",
  117. ASLocalizedString(@"1、资料不一致。"),
  118. ASLocalizedString(@"2、未收到保证金。")];
  119. [self.nextButton setTitle:ASLocalizedString(@"去修改") forState:UIControlStateNormal];
  120. self.nextButton.backgroundColor = [UIColor colorWithHexString:@"#1A65FF"];
  121. }
  122. #pragma mark - Actions
  123. - (void)goNext {
  124. switch (self.resultType) {
  125. case MerchantEnrollResultSuccess:
  126. // TODO: 跳转到产品发布页面
  127. NSLog(@"Go to publish product");
  128. break;
  129. case MerchantEnrollResultPending:
  130. // TODO: 返回主页或关闭页面
  131. NSLog(@"Return to main page");
  132. break;
  133. case MerchantEnrollResultFailed:
  134. // TODO: 返回编辑资料页面
  135. NSLog(@"Go to edit information");
  136. break;
  137. }
  138. if (self.delegate && [self.delegate respondsToSelector:@selector(onMerchantEnrollResultNextButtonClick:)]) {
  139. [self.delegate onMerchantEnrollResultNextButtonClick:self.resultType];
  140. }
  141. }
  142. #pragma mark - Lazy Loading
  143. - (UIImageView *)statusIconView {
  144. if (!_statusIconView) {
  145. _statusIconView = [[UIImageView alloc] init];
  146. _statusIconView.contentMode = UIViewContentModeScaleAspectFit;
  147. }
  148. return _statusIconView;
  149. }
  150. - (UILabel *)mainMessageLabel {
  151. if (!_mainMessageLabel) {
  152. _mainMessageLabel = [[UILabel alloc] init];
  153. _mainMessageLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium];
  154. _mainMessageLabel.textColor = [UIColor blackColor];
  155. _mainMessageLabel.textAlignment = NSTextAlignmentCenter;
  156. _mainMessageLabel.numberOfLines = 0;
  157. }
  158. return _mainMessageLabel;
  159. }
  160. - (UILabel *)subMessageLabel {
  161. if (!_subMessageLabel) {
  162. _subMessageLabel = [[UILabel alloc] init];
  163. _subMessageLabel.font = [UIFont systemFontOfSize:16];
  164. _subMessageLabel.textColor = [UIColor colorWithHexString:@"#1A65FF"];
  165. _subMessageLabel.textAlignment = NSTextAlignmentCenter;
  166. _subMessageLabel.numberOfLines = 0;
  167. }
  168. return _subMessageLabel;
  169. }
  170. - (UILabel *)failureReasonLabel {
  171. if (!_failureReasonLabel) {
  172. _failureReasonLabel = [[UILabel alloc] init];
  173. _failureReasonLabel.font = [UIFont systemFontOfSize:16];
  174. _failureReasonLabel.textColor = [UIColor blackColor];
  175. _failureReasonLabel.textAlignment = NSTextAlignmentLeft;
  176. _failureReasonLabel.numberOfLines = 0;
  177. _failureReasonLabel.hidden = YES;
  178. }
  179. return _failureReasonLabel;
  180. }
  181. @end