|
@@ -0,0 +1,315 @@
|
|
|
+//
|
|
|
+// ASCheckoutGoodsItemCell.m
|
|
|
+// Asteria
|
|
|
+//
|
|
|
+// Created by xingyu on 2024/5/10.
|
|
|
+//
|
|
|
+
|
|
|
+#import "ASCheckoutGoodsItemCell.h"
|
|
|
+#import "QtyCountV.h"
|
|
|
+#import "AlertMyCartDeleteV.h"
|
|
|
+@interface ASCheckoutGoodsItemCell ()
|
|
|
+@property (nonatomic, strong) CartTotalsItemsM *itemM;
|
|
|
+@property (nonatomic, strong) UIView *bgV;
|
|
|
+@property (nonatomic, strong) UIStackView *stackV;
|
|
|
+
|
|
|
+@property (nonatomic, strong) UIView *topV;
|
|
|
+@property (nonatomic, strong) UIImageView *leftImg;
|
|
|
+@property (nonatomic, strong) UILabel *nameLab;
|
|
|
+@property (nonatomic, strong) UIButton *closeBtn;
|
|
|
+@property (nonatomic, strong) QMUILabel *optionsLab;
|
|
|
+@property (nonatomic, strong) QMUILabel *gitfLab;
|
|
|
+
|
|
|
+@property (nonatomic, strong) UIStackView *rowStackV;
|
|
|
+@property (nonatomic, strong) QMUILabel *priceLab;
|
|
|
+@property (nonatomic, strong) QtyCountV *countV;
|
|
|
+@property (nonatomic, strong) QMUILabel *bgDesLab;
|
|
|
+@end
|
|
|
+
|
|
|
+@implementation ASCheckoutGoodsItemCell
|
|
|
+
|
|
|
+- (void)awakeFromNib {
|
|
|
+ [super awakeFromNib];
|
|
|
+ // Initialization code
|
|
|
+}
|
|
|
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
|
|
|
+ [super setSelected:selected animated:animated];
|
|
|
+}
|
|
|
+- (void)setupSubviewS{
|
|
|
+// self.contentView.backgroundColor = [UIColor colorWithHexString:@"#F8F8F8"];
|
|
|
+
|
|
|
+ self.contentView.backgroundColor = ThemeLightColor;
|
|
|
+
|
|
|
+ [self.contentView addSubview:self.bgV];
|
|
|
+ [self.bgV mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.edges.equalTo(self.contentView).insets(UIEdgeInsetsMake(0, 10, 10, 10));
|
|
|
+ }];
|
|
|
+
|
|
|
+ [self.bgV addSubview:self.stackV];
|
|
|
+ [self.stackV mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.edges.equalTo(self.bgV).insets(UIEdgeInsetsMake(20, 10, 15, 10));
|
|
|
+ }];
|
|
|
+
|
|
|
+ [self.stackV addArrangedSubview:self.topV];
|
|
|
+ [self.stackV addArrangedSubview:self.rowStackV];
|
|
|
+ [self.stackV addArrangedSubview:self.bgDesLab];
|
|
|
+ [self.topV mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.width.mas_equalTo(KScreenWidth-40);
|
|
|
+ make.height.mas_equalTo(86+10);
|
|
|
+ }];
|
|
|
+ [self.rowStackV mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.left.right.equalTo(self.stackV);
|
|
|
+ make.height.mas_equalTo(32);
|
|
|
+ }];
|
|
|
+ [self.bgDesLab mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.height.mas_equalTo(23);
|
|
|
+ make.width.mas_greaterThanOrEqualTo(86);
|
|
|
+ }];
|
|
|
+
|
|
|
+ [self.topV addSubview:self.leftImg];
|
|
|
+ [self.topV addSubview:self.nameLab];
|
|
|
+ [self.topV addSubview:self.closeBtn];
|
|
|
+ [self.topV addSubview:self.optionsLab];
|
|
|
+ [self.topV addSubview:self.gitfLab];
|
|
|
+ [self.leftImg mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.left.top.mas_equalTo(0);
|
|
|
+ make.width.height.mas_equalTo(86);
|
|
|
+ }];
|
|
|
+ [self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.right.top.mas_equalTo(0);
|
|
|
+ make.width.height.mas_offset(40);
|
|
|
+ }];
|
|
|
+ [self.nameLab mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.top.mas_equalTo(0);
|
|
|
+ make.left.equalTo(self.leftImg.mas_right).offset(10);
|
|
|
+ make.right.equalTo(self.closeBtn.mas_left).offset(-10);
|
|
|
+ make.height.mas_equalTo(36);
|
|
|
+ }];
|
|
|
+ [self.optionsLab mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.top.equalTo(self.nameLab.mas_bottom).offset(10);;
|
|
|
+ make.left.equalTo(self.leftImg.mas_right).offset(10);
|
|
|
+ make.right.equalTo(self.closeBtn.mas_left).offset(-10);
|
|
|
+ }];
|
|
|
+ [self.gitfLab mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.left.equalTo(self.leftImg.mas_right).offset(10);
|
|
|
+ make.bottom.equalTo(self.leftImg);
|
|
|
+ make.width.mas_equalTo(86);
|
|
|
+ make.height.mas_equalTo(23);
|
|
|
+ }];
|
|
|
+
|
|
|
+ [self.rowStackV addArrangedSubview:self.priceLab];
|
|
|
+ [self.rowStackV addArrangedSubview:self.countV];
|
|
|
+ [self.priceLab mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.height.mas_equalTo(20);
|
|
|
+ }];
|
|
|
+ [self.countV mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.width.mas_equalTo(self.countV.mj_w);
|
|
|
+ make.height.mas_equalTo(self.countV.mj_h);
|
|
|
+ }];
|
|
|
+ [self subViewsTapBlock];
|
|
|
+}
|
|
|
+- (void)subViewsTapBlock{
|
|
|
+ @weakify(self)
|
|
|
+ self.countV.ViewtapClose = ^(NSInteger num, id _Nonnull data) {//0 - ; 1+
|
|
|
+ @strongify(self)
|
|
|
+ NSString *qtyStr = (NSString *)data;
|
|
|
+ CartTotalsItemsM *itemM =[[CartTotalsItemsM alloc]init];
|
|
|
+ itemM = self.itemM;
|
|
|
+ itemM.qty = qtyStr;
|
|
|
+ if(self.currencyparameterClose){
|
|
|
+ self.currencyparameterClose(1,itemM);
|
|
|
+ }
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+- (void)configData:(id)Data{
|
|
|
+ CartTotalsItemsM *itemM = (CartTotalsItemsM *)Data;
|
|
|
+ self.itemM = itemM;
|
|
|
+ NSString *imgStr = [NSString stringWithFormat:@"https:%@%@%@",HostPath,ProductImgPath,itemM.image];
|
|
|
+ [self.leftImg sd_setImageWithURL:[NSURL URLWithString:imgStr] placeholderImage:UIImageDefaultImg_SD];
|
|
|
+ self.nameLab.text = itemM.name;
|
|
|
+
|
|
|
+
|
|
|
+ NSArray *array = [Current_normalTool arrFromjsonStr:itemM.options];
|
|
|
+
|
|
|
+ NSString *optionStr = @"";
|
|
|
+ for (int i = 0; i < array.count; i++) {
|
|
|
+ NSDictionary *dic = [array objectAtIndex:i];
|
|
|
+ optionStr = [NSString stringWithFormat:@"%@%@:%@", optionStr, dic[@"label"], dic[@"value"]];
|
|
|
+
|
|
|
+ if (i < array.count - 1) {
|
|
|
+ optionStr = [NSString stringWithFormat:@"%@\n", optionStr];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ self.optionsLab.text = optionStr;
|
|
|
+
|
|
|
+
|
|
|
+ self.priceLab.attributedText = [ASCheckoutGoodsItemCell tool_changePriceAtr:itemM];
|
|
|
+
|
|
|
+ self.closeBtn.hidden = itemM.isGift;
|
|
|
+ self.optionsLab.hidden = itemM.isGift;
|
|
|
+ self.gitfLab.hidden = !itemM.isGift;
|
|
|
+ self.rowStackV.hidden = itemM.isGift;
|
|
|
+
|
|
|
+ if(itemM.isGift){
|
|
|
+ self.bgDesLab.hidden = YES;
|
|
|
+ }else{
|
|
|
+ self.bgDesLab.hidden = NO;
|
|
|
+ self.bgDesLab.text = [NSString stringWithFormat:@"SAVE %@%.2f",itemM.currency_symbol,[itemM.initial_price floatValue]-[itemM.price floatValue]];
|
|
|
+ self.countV.numLab.text = MM_str(itemM.qty);
|
|
|
+ [self.countV xxx_changeBtnIsEnable:YES num:[self.countV.numLab.text integerValue]];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark - **************** handle ****************
|
|
|
+-(void)handle_CloseEvent:(UIButton *)btn{ //进入删除弹窗
|
|
|
+ AlertMyCartDeleteV *alertV = [[AlertMyCartDeleteV alloc]initWithAlertVtitle:[[NSMutableAttributedString alloc] initWithString:@"Do You Want To Remove It?"]];
|
|
|
+ alertV.ViewtapClose = ^(NSInteger num, id _Nonnull data) {
|
|
|
+ if(num ==1){
|
|
|
+ if(self.currencyparameterClose){
|
|
|
+ self.currencyparameterClose(0,self.itemM);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+}
|
|
|
+#pragma mark - **************** tool ****************
|
|
|
++(NSMutableAttributedString *)tool_changePriceAtr:(CartTotalsItemsM *)model{
|
|
|
+ NSMutableAttributedString *priceAtr = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@%@",model.currency_symbol,model.price]];
|
|
|
+ [priceAtr addAttribute: NSForegroundColorAttributeName value:[UIColor colorWithHexString:@"#0B0B0B"] range:NSMakeRange(0, priceAtr.length)];
|
|
|
+ [priceAtr addAttribute:NSFontAttributeName value:[UIFont fontWithName:Rob_Bold size:20] range:NSMakeRange(0, priceAtr.length)];
|
|
|
+ [priceAtr appendAttributedString:[[NSAttributedString alloc]initWithString:@" "]];
|
|
|
+ NSMutableAttributedString *priceAtrSub1 = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@%@",model.currency_symbol,model.initial_price]];
|
|
|
+ [priceAtrSub1 addAttribute:NSForegroundColorAttributeName
|
|
|
+ value:[UIColor colorWithHexString:@"#8c8c8c"]
|
|
|
+ range:NSMakeRange(0, priceAtrSub1.length)];
|
|
|
+ [priceAtrSub1 addAttribute:NSFontAttributeName
|
|
|
+ value:[UIFont fontWithName:Rob_Regular size:14]
|
|
|
+ range:NSMakeRange(0, priceAtrSub1.length)];
|
|
|
+ [priceAtrSub1 addAttribute:NSStrikethroughStyleAttributeName
|
|
|
+ value:[NSNumber numberWithInteger:NSUnderlineStyleSingle]
|
|
|
+ range:NSMakeRange(0, priceAtrSub1.length)];
|
|
|
+ [priceAtr appendAttributedString:priceAtrSub1];
|
|
|
+ return priceAtr;
|
|
|
+}
|
|
|
+
|
|
|
+#pragma mark - **************** lazy ****************
|
|
|
+- (UIView *)bgV {
|
|
|
+ if (!_bgV) {
|
|
|
+ _bgV = [[UIView alloc] init];
|
|
|
+ _bgV.backgroundColor = [UIColor colorWithHexString:@"#FFFFFF"];
|
|
|
+ _bgV.layer.cornerRadius = 4;
|
|
|
+ _bgV.clipsToBounds = YES;
|
|
|
+ }
|
|
|
+ return _bgV;
|
|
|
+}
|
|
|
+- (UIStackView *)stackV { ///根据高度进行变化
|
|
|
+ if (!_stackV) {
|
|
|
+ UIStackView *stv = [[UIStackView alloc] init];
|
|
|
+ stv.axis = UILayoutConstraintAxisVertical;
|
|
|
+ stv.distribution = UIStackViewDistributionFill;
|
|
|
+ stv.alignment = UIStackViewAlignmentLeading;
|
|
|
+ stv.spacing = 5;
|
|
|
+ _stackV = stv;
|
|
|
+ }
|
|
|
+ return _stackV;
|
|
|
+}
|
|
|
+-(UIImageView *)leftImg{
|
|
|
+ if(!_leftImg){
|
|
|
+ _leftImg = [[UIImageView alloc]init];
|
|
|
+ }
|
|
|
+ return _leftImg;
|
|
|
+}
|
|
|
+-(UILabel *)nameLab{
|
|
|
+ if(!_nameLab){
|
|
|
+ _nameLab = [[UILabel alloc]init];
|
|
|
+ _nameLab.font = [UIFont fontWithName:Rob_Regular size:12];
|
|
|
+ _nameLab.textColor = [UIColor colorWithHexString:@"#000000"];
|
|
|
+ _nameLab.numberOfLines =2;
|
|
|
+ }
|
|
|
+ return _nameLab;
|
|
|
+}
|
|
|
+
|
|
|
+-(UIButton *)closeBtn{
|
|
|
+ if(!_closeBtn){
|
|
|
+ _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
|
+ [_closeBtn setImage:[UIImage imageNamed:@"base_close_black"] forState:UIControlStateNormal];
|
|
|
+ [_closeBtn addTarget:self action:@selector(handle_CloseEvent:) forControlEvents:UIControlEventTouchUpInside];
|
|
|
+ }
|
|
|
+ return _closeBtn;
|
|
|
+}
|
|
|
+-(QtyCountV *)countV{
|
|
|
+ if(!_countV){
|
|
|
+ _countV = [[QtyCountV alloc]initWithFrame:CGRectMake(0, 0, 32*2+46, 32)];
|
|
|
+ _countV.goodsmaxNum = 10;
|
|
|
+ }
|
|
|
+ return _countV;
|
|
|
+}
|
|
|
+- (QMUILabel *)optionsLab {
|
|
|
+ if (!_optionsLab) {
|
|
|
+ _optionsLab = [[QMUILabel alloc] initWithFrame:CGRectZero];
|
|
|
+ _optionsLab.textAlignment = NSTextAlignmentLeft;
|
|
|
+ _optionsLab.textColor = [UIColor colorWithHexString:@"#B2B2B2"];
|
|
|
+ _optionsLab.numberOfLines = 0;
|
|
|
+ _optionsLab.font = [UIFont fontWithName:Rob_Regular size:12];
|
|
|
+ }
|
|
|
+ return _optionsLab;
|
|
|
+}
|
|
|
+
|
|
|
+- (QMUILabel *)priceLab {
|
|
|
+ if (!_priceLab) {
|
|
|
+ _priceLab = [[QMUILabel alloc] initWithFrame:CGRectZero];
|
|
|
+ _priceLab.textAlignment = NSTextAlignmentLeft;
|
|
|
+ _priceLab.textColor = [UIColor colorWithHexString:@"#0B0B0B"];
|
|
|
+ _priceLab.font = [UIFont fontWithName:Rob_Bold size:14];
|
|
|
+ }
|
|
|
+ return _priceLab;
|
|
|
+}
|
|
|
+
|
|
|
+- (QMUILabel *)bgDesLab {
|
|
|
+ if (!_bgDesLab) {
|
|
|
+ _bgDesLab = [[QMUILabel alloc] initWithFrame:CGRectZero];
|
|
|
+ _bgDesLab.textAlignment = NSTextAlignmentCenter;
|
|
|
+ _bgDesLab.backgroundColor = ThemeLightColor;
|
|
|
+ _bgDesLab.textColor = [UIColor colorWithHexString:@"#000000"];
|
|
|
+ _bgDesLab.font = [UIFont fontWithName:Rob_Regular size:12];
|
|
|
+ _bgDesLab.contentEdgeInsets = UIEdgeInsetsMake(0, 15, 0, 15);
|
|
|
+ }
|
|
|
+ return _bgDesLab;
|
|
|
+}
|
|
|
+
|
|
|
+- (QMUILabel *)gitfLab {
|
|
|
+ if (!_gitfLab) {
|
|
|
+ _gitfLab = [[QMUILabel alloc] initWithFrame:CGRectZero];
|
|
|
+ _gitfLab.textAlignment = NSTextAlignmentCenter;
|
|
|
+ _gitfLab.textColor = [UIColor colorWithHexString:@"#000000"];
|
|
|
+ _gitfLab.font = [UIFont fontWithName:Rob_Regular size:12];
|
|
|
+ _gitfLab.text = @"Gift";
|
|
|
+ _gitfLab.backgroundColor = ThemeLightColor;
|
|
|
+ }
|
|
|
+ return _gitfLab;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+- (UIView *)topV {
|
|
|
+ if (!_topV) {
|
|
|
+ _topV = [[UIView alloc] init];
|
|
|
+ }
|
|
|
+ return _topV;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+- (UIStackView *)rowStackV {
|
|
|
+ if (!_rowStackV) {
|
|
|
+ _rowStackV = [[UIStackView alloc] init];
|
|
|
+ UIStackView *stv = [[UIStackView alloc] init];
|
|
|
+ stv.axis = UILayoutConstraintAxisHorizontal;
|
|
|
+ stv.distribution = UIStackViewDistributionFill;
|
|
|
+ stv.alignment = UIStackViewAlignmentCenter;
|
|
|
+ }
|
|
|
+ return _rowStackV;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@end
|