// // GoodsReviewsWriteC.m // Asteria // // Created by 王猛 on 2024/1/10. // #import "GoodsReviewsWriteC.h" #import "AS_GoodsDetailsC.h" #import "HCSStarRatingView.h" #import "GoodWritUpImgV.h" #import #import "ASGoodsDetailsVM.h" #import "QDSingleImagePickerPreviewViewController.h" #define kWriteUpimgWdith (KScreenWidth-40)/3 static QMUIAlbumContentType const kAlbumContentType = QMUIAlbumContentTypeOnlyPhoto; @interface GoodsReviewsWriteC () @property (nonatomic, strong) TT_CustonTF *buyernameTF; @property (nonatomic, strong) TT_CustonTF *orderlengthTF; @property (nonatomic, strong) NSMutableArray *starValueAry; @property (nonatomic, strong) UIButton *bootomBtn; @property (nonatomic, strong) QMUITextView *writeTextV; @property (nonatomic, strong) NSMutableArray *xxx_upLoadImgAry; @property (nonatomic, assign) NSInteger xxx_tapImgIndex; @property (nonatomic, strong) NSMutableArray *xxx_imgUrlAry; @property (nonatomic, strong) NSMutableArray *xxx_selectImgAry; @property (nonatomic, strong) ASGoodsDetailsVM *VM; @end @implementation GoodsReviewsWriteC - (void)viewDidLoad { [super viewDidLoad]; self.title = self.nav_title; } - (void)ucm_bindvmmodel{ self.VM = [[ASGoodsDetailsVM alloc]initDelegate:self]; } - (void)initSubviews { [super initSubviews]; if (self.topBgV) { [self.view addSubview:self.topBgV]; } [self.view addSubview:self.buyernameTF]; [self.view addSubview:self.orderlengthTF]; IPhoneXHeigh if (self.topBgV) { self.topBgV.frame = CGRectMake(0, securitytop_Y, KScreenWidth, 60); self.buyernameTF.mj_y = CGRectGetMaxY(self.topBgV.frame)+20; } else { self.buyernameTF.mj_y = securitytop_Y+20; } self.orderlengthTF.mj_y = CGRectGetMaxY(self.buyernameTF.frame)+20; NSArray *titileAry = @[@"QUALITY",@"SHIPPING",@"SERVICE"]; self.starValueAry = [NSMutableArray arrayWithArray:@[@"5.0",@"5.0",@"5.0"]]; UIView *lastView = nil; for (int i = 0; i i){ imgV.image = self.xxx_selectImgAry[i]; imgV.isCanTap = NO; }else if (self.xxx_selectImgAry.count == i){ imgV.image = [UIImage imageNamed:@"goods_wirte_upload"]; imgV.isCanTap = YES; }else{ imgV.hidden = YES; } } } //点击添加图片 -(void)handle_TapUpImgLoad:(UITapGestureRecognizer *)tap{ GoodWritUpImgV * imgV =(GoodWritUpImgV *_Nullable )tap.view; if(imgV.isCanTap){//调用相片 self.xxx_tapImgIndex = imgV.tag; [self tool_presentAlbumViewControllerWith:imgV.tag]; } } #pragma mark - **************** 选择照片上传 **************** -(void)tool_presentAlbumViewControllerWith:(NSInteger )index{ QMUIAlbumViewController *albumViewController = [[QMUIAlbumViewController alloc] init]; albumViewController.albumViewControllerDelegate = self; albumViewController.contentType = QMUIAlbumContentTypeOnlyPhoto; UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:albumViewController]; // 获取最近发送图片时使用过的相簿,如果有则直接进入该相簿 [albumViewController pickLastAlbumGroupDirectlyIfCan]; [self presentViewController:navigationController animated:YES completion:NULL]; } #pragma mark - **************** QMUIAlbumViewControllerDelegate **************** - (QMUIImagePickerViewController *)imagePickerViewControllerForAlbumViewController:(QMUIAlbumViewController *)albumViewController { QMUIImagePickerViewController *imagePickerViewController = [[QMUIImagePickerViewController alloc] init]; imagePickerViewController.imagePickerViewControllerDelegate = self; imagePickerViewController.maximumSelectImageCount = 3; imagePickerViewController.view.tag = albumViewController.view.tag; imagePickerViewController.allowsMultipleSelection = NO; return imagePickerViewController; } #pragma mark - **************** QMUIImagePickerViewControllerDelegate **************** - (void)imagePickerViewController:(QMUIImagePickerViewController *)imagePickerViewController didFinishPickingImageWithImagesAssetArray:(NSMutableArray *)imagesAssetArray { // 储存最近选择了图片的相册,方便下次直接进入该相册 [QMUIImagePickerHelper updateLastestAlbumWithAssetsGroup:imagePickerViewController.assetsGroup ablumContentType:kAlbumContentType userIdentify:nil]; } - (QMUIImagePickerPreviewViewController *)imagePickerPreviewViewControllerForImagePickerViewController:(QMUIImagePickerViewController *)imagePickerViewController { QDSingleImagePickerPreviewViewController *imagePickerPreviewViewController = [[QDSingleImagePickerPreviewViewController alloc] init]; imagePickerPreviewViewController.delegate = self; imagePickerPreviewViewController.assetsGroup = imagePickerViewController.assetsGroup; imagePickerPreviewViewController.view.tag = imagePickerViewController.view.tag; return imagePickerPreviewViewController; } #pragma mark - - (void)imagePickerPreviewViewController:(QDSingleImagePickerPreviewViewController *)imagePickerPreviewViewController didSelectImageWithImagesAsset:(QMUIAsset *)imageAsset { // 储存最近选择了图片的相册,方便下次直接进入该相册 [QMUIImagePickerHelper updateLastestAlbumWithAssetsGroup:imagePickerPreviewViewController.assetsGroup ablumContentType:kAlbumContentType userIdentify:nil]; // 显示 loading [MBProgressHUD showHUDAddedTo:self.view animated:YES]; [imageAsset requestImageData:^(NSData *imageData, NSDictionary *info, BOOL isGif, BOOL isHEIC) { UIImage *targetImage = nil; if (isGif) { targetImage = [UIImage qmui_animatedImageWithData:imageData]; } else { targetImage = [UIImage imageWithData:imageData]; // if (isHEIC) { // // iOS 11 中新增 HEIF/HEVC 格式的资源,直接发送新格式的照片到不支持新格式的设备,照片可能会无法识别,可以先转换为通用的 JPEG 格式再进行使用。 // // 详细请浏览:https://github.com/Tencent/QMUI_iOS/issues/224 // targetImage = [UIImage imageWithData:UIImageJPEGRepresentation(targetImage, 1)]; // } } [self performSelector:@selector(tool_setAvatarWithAvatarImage:) withObject:targetImage afterDelay:1.8]; }]; } ///执行相关的网络请求 -(void)tool_setAvatarWithAvatarImage:(UIImage *)avatarImage{ [MBProgressHUD hideHUDForView:self.view animated:YES]; if(self.xxx_tapImgIndex<2){ GoodWritUpImgV *tempImgV = self.xxx_upLoadImgAry[self.xxx_tapImgIndex+1]; tempImgV.hidden = NO; } GoodWritUpImgV *upImgV = self.xxx_upLoadImgAry[self.xxx_tapImgIndex]; upImgV.image = avatarImage; upImgV.isCanTap = NO; [self.xxx_selectImgAry addObject:avatarImage]; [self reqNet_upload:avatarImage]; } #pragma mark - **************** reqNet **************** -(void)reqNet_upload:(UIImage *)img{ NSData *imageData = UIImageJPEGRepresentation(img, 0.6); NSString *dataStr = [imageData base64EncodedStringWithOptions:0]; NSMutableDictionary *params = [NSMutableDictionary dictionary]; [params setObject:dataStr forKey:@"image_video[]"]; [MBProgressHUD showHUDAddedTo:self.view animated:YES]; NSString *reqUrl = RequestAllUrl(Reivews_rewriteProductAddImg); [PPNetworkHelper uploadImagesWithURL:reqUrl parameters:@{} name:@"image_video[]" images:@[img] fileNames:nil imageScale:0.6 imageType:nil progress:^(NSProgress *progress) { } success:^(id responseObject) { [MBProgressHUD hideHUDForView:self.view animated:YES]; if(RequestSuccess){ [self.view makeToast:@"Sucess" duration:2 position:CSToastPositionCenter]; NSDictionary *dataDic = responseObject[@"data"]; [self.xxx_imgUrlAry addObject:dataDic[@"image_video"]]; }else{ [self.view makeToast:RequestMsg duration:2 position:CSToastPositionCenter]; } } failure:^(NSError *error) { [MBProgressHUD hideHUDForView:self.view animated:YES]; [self.view makeToast:ReqNetWorkFaild duration:2 position:CSToastPositionCenter]; }]; } -(void)handle_postCommentEvent:(UIButton *)btn{ if (!ASUserInfoManager.shared.isLogin) { return; } if(self.writeTextV.text.length == 0 || self.orderlengthTF.text.length == 0 || self.buyernameTF.text.length == 0){ [self.view makeToast:@"Please complete the score first" duration:2 position:CSToastPositionCenter]; return; } NSMutableString *imageStr= [[NSMutableString alloc]initWithString:@""]; for (int i=0; i _Nonnull formData) { NSDateFormatter *formatter=[[NSDateFormatter alloc]init]; formatter.dateFormat=@"yyyyMMddHHmmss"; NSString *str=[formatter stringFromDate:[NSDate date]]; NSString *fileName=[NSString stringWithFormat:@"%@.jpg",str]; [formData appendPartWithFileData:uploadImageData name:@"content_pic" fileName:fileName mimeType:ECGBJKeyJPEG]; } progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { // 转换responseObject对象 NSDictionary *dict = nil; if ([responseObject isKindOfClass:[NSDictionary class]]) { dict = (NSDictionary *)responseObject; } else { dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; } // 成功后弹框处理,回调出去 [weakSelf notDismissedWith:dict responseObject:responseObject complete:^(NSDictionary *respinseDic, id responseObject) { completeSuccess(respinseDic,responseObject); } failedComplete:^{ completeFailure(); }]; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { // 网络问题,弹框处理 [weakSelf notNetconnetNotDismissComplete:^{ completeFailure(); }]; }] */ @end