RDSHomeInfoVC.m 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. //
  2. // RDSHomeInfoVC.m
  3. // Temperature
  4. //
  5. // Created by RD on 2023/2/1.
  6. //
  7. #import "RDSHomeInfoVC.h"
  8. #import "RDSHomeInfoCell.h"
  9. #import "RDSAddMemberVC.h"
  10. static NSString * const RDSHomeInfoCellID = @"RDSHomeInfoCell";
  11. @interface RDSHomeInfoVC ()<UICollectionViewDelegate, UICollectionViewDataSource>
  12. @property (weak, nonatomic) IBOutlet UILabel *homeNameLab;
  13. @property (weak, nonatomic) IBOutlet UIImageView *homeNameIcon;
  14. @property (weak, nonatomic) IBOutlet UILabel *localLab;
  15. @property (weak, nonatomic) IBOutlet UILabel *gatewayLab;
  16. @property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
  17. @property (weak, nonatomic) IBOutlet UIButton *delHomeBtn;
  18. @property (nonatomic, strong) UIBarButtonItem *editBtn;
  19. @property (nonatomic, strong) UIBarButtonItem *finishBtn;
  20. @property (nonatomic, assign) BOOL isEdit;// 是否在编辑
  21. @end
  22. @implementation RDSHomeInfoVC
  23. - (void)viewDidLoad {
  24. [super viewDidLoad];
  25. // Do any additional setup after loading the view from its nib.
  26. self.title = @"家庭信息维护";
  27. [self p_navEditItem];
  28. [self p_setupCollectionView];
  29. [self p_refreshUI];
  30. }
  31. - (void)viewWillAppear:(BOOL)animated{
  32. [super viewWillAppear:animated];
  33. [self refreshHomeInfo];
  34. }
  35. - (void)p_refreshUI{
  36. _homeNameLab.text = _home.name;
  37. _localLab.text = _home.city;
  38. _gatewayLab.text = _home.gateway;
  39. [_collectionView reloadData];
  40. }
  41. - (void)refreshHomeInfo{
  42. RDS_WEAKSELF(weakSelf)
  43. [RDSHomeModel rds_getHomeDetailWithHomeId:_home.record_id finished:^(RDSHomeModel * home, NSError * error) {
  44. if(error == nil){
  45. weakSelf.home = home;
  46. [weakSelf p_refreshUI];
  47. }
  48. }];
  49. }
  50. - (void)p_navEditItem{
  51. [self.navigationItem setRightBarButtonItem:self.editBtn];
  52. }
  53. - (void)p_navFinishItem{
  54. [self.navigationItem setRightBarButtonItem:self.finishBtn];
  55. }
  56. - (UIBarButtonItem *)editBtn{
  57. if(_editBtn == nil){
  58. UIBarButtonItem *item = [RDSBarButtonItem barButtonItemWithTitle:@"编辑" color:kTextColor target:self action:@selector(p_onEitdBtn)];
  59. _editBtn = item;
  60. }
  61. return _editBtn;
  62. }
  63. - (UIBarButtonItem *)finishBtn{
  64. if(_finishBtn == nil){
  65. UIBarButtonItem *item = [RDSBarButtonItem barButtonItemWithTitle:@"完成" color:RDSGreenColor target:self action:@selector(p_onEitdFinishBtn)];
  66. _finishBtn = item;
  67. }
  68. return _finishBtn;
  69. }
  70. // 编辑
  71. - (void)p_onEitdBtn{
  72. _isEdit = YES;
  73. [self p_navFinishItem];
  74. _delHomeBtn.hidden = NO;
  75. _homeNameIcon.hidden = NO;
  76. _homeNameLab.highlighted = YES;
  77. [_collectionView reloadData];
  78. }
  79. // 完成
  80. - (void)p_onEitdFinishBtn{
  81. _isEdit = NO;
  82. [self p_navEditItem];
  83. _delHomeBtn.hidden = YES;
  84. _homeNameIcon.hidden = YES;
  85. _homeNameLab.highlighted = NO;
  86. [_collectionView reloadData];
  87. }
  88. - (IBAction)onRenameClick:(id)sender {
  89. if(!_isEdit) return;
  90. RDS_WEAKSELF(weakSelf)
  91. [self rds_alertInputTitle:@"修改家庭名称" msg:nil placeholder:_home.name doneAction:^(NSString *name) {
  92. [weakSelf p_updateHomeName:name];
  93. TheDataManager.currentUser.user_name = name;
  94. }];
  95. }
  96. - (void)p_updateHomeName:(NSString *)name{
  97. RDS_WEAKSELF(weakSelf)
  98. [RDSDemoApiHelper rds_updateHomeInfoWithHomeId:_home.record_id name:name city:nil success:^(id responseObject) {
  99. if ([responseObject[@"code"] intValue] == 0) {
  100. [weakSelf refreshHomeInfo];
  101. } else{
  102. [RDSHudShower showErrorWithStatus:responseObject[@"message"]];
  103. }
  104. } failure:^(NSError *error) {
  105. [RDSHudShower showBottomToast:@"连接服务器失败"];
  106. }];
  107. }
  108. // 删除家庭
  109. - (IBAction)delHomeClick:(id)sender {
  110. RDS_WEAKSELF(weakSelf)
  111. [TheAlertCtrl rds_alertWithTitle:@"提示" message:@"删除家庭将清空该家庭下的所有数据,确认删除?" cancel:@"取消" sure:@"删除家庭" cancelColor:nil sureColor:RDSRedColor cancelAction:nil sureAction:^{
  112. [weakSelf p_delHome];
  113. }];
  114. }
  115. - (void)p_delHome{
  116. RDS_WEAKSELF(weakSelf)
  117. [RDSDemoApiHelper rds_delHomeWithHomeId:_home.record_id success:^(id responseObject) {
  118. if ([responseObject[@"code"] intValue] == 0) {
  119. [RDSHudShower showBottomToast:@"删除成功"];
  120. [weakSelf popViewControllerAnimated:YES];
  121. } else{
  122. [RDSHudShower showBottomToast:responseObject[@"message"]];
  123. }
  124. } failure:^(NSError *error) {
  125. [RDSHudShower showBottomToast:@"连接服务器失败"];
  126. }];
  127. }
  128. #pragma mark - UICollectionView
  129. - (void)p_setupCollectionView{
  130. UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
  131. layout.itemSize = CGSizeMake(44, 44);
  132. layout.minimumLineSpacing = 20;
  133. layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
  134. layout.scrollDirection = UICollectionViewScrollDirectionVertical;
  135. self.collectionView.delegate = self;
  136. self.collectionView.dataSource = self;
  137. self.collectionView.showsVerticalScrollIndicator = NO;
  138. self.collectionView.collectionViewLayout = layout;
  139. self.collectionView.backgroundColor = [UIColor clearColor];
  140. [self.collectionView registerNib:[UINib nibWithNibName:RDSHomeInfoCellID bundle:nil] forCellWithReuseIdentifier:RDSHomeInfoCellID];
  141. [self.collectionView reloadData];
  142. }
  143. #pragma mark - UICollectionViewDelegate
  144. - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
  145. [collectionView deselectItemAtIndexPath:indexPath animated:YES];
  146. if(indexPath.row == _home.member.count){
  147. RDSAddMemberVC *vc = [[RDSAddMemberVC alloc] init];
  148. vc.homeId = self.home.record_id;
  149. [self pushViewController:vc animated:YES];
  150. }
  151. else{
  152. if(_isEdit && indexPath.row != 0){
  153. // 编辑时删除成员
  154. [self p_delMemberAlertWithUserId:_home.member[indexPath.row].user_id];
  155. }
  156. }
  157. }
  158. // 删除成员弹窗
  159. - (void)p_delMemberAlertWithUserId:(NSString *)user_id{
  160. RDS_WEAKSELF(weakSelf)
  161. [TheAlertCtrl rds_alertWithTitle:@"删除权限" message:@"确认删除此用户控制权限吗?" cancel:@"取消" sure:@"删除" cancelColor:nil sureColor:RDSRedColor cancelAction:nil sureAction:^{
  162. [weakSelf p_delMemberWithUserId:user_id];
  163. }];
  164. }
  165. // 删除成员
  166. - (void)p_delMemberWithUserId:(NSString *)user_id{
  167. RDS_WEAKSELF(weakSelf)
  168. [RDSHudShower showWithStatus:@"加载中" autoDismiss:NO];
  169. [RDSDemoApiHelper rds_delMemberWithHomeId:_home.record_id user_id:user_id success:^(id responseObject) {
  170. if ([responseObject[@"code"] intValue] == 0) {
  171. [RDSHudShower showCenterToast:@"删除成功"];
  172. [weakSelf refreshHomeInfo];
  173. } else{
  174. [RDSHudShower showErrorWithStatus:responseObject[@"message"]];
  175. }
  176. } failure:^(NSError *error) {
  177. [RDSHudShower showBottomToast:@"连接服务器失败"];
  178. }];
  179. }
  180. #pragma mark - UICollectionViewDataSource
  181. - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
  182. return _home.member.count+1;
  183. }
  184. - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
  185. RDSHomeInfoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:RDSHomeInfoCellID forIndexPath:indexPath];
  186. if(indexPath.row == _home.member.count){
  187. cell.isAddBtn = YES;
  188. }else{
  189. cell.isAddBtn = NO;
  190. cell.photo = _home.member[indexPath.row].photo;
  191. }
  192. cell.isFirstCell = indexPath.row == 0 ? YES : NO;
  193. cell.isEditing = _isEdit;
  194. return cell;
  195. }
  196. @end