Skip to content

Commit cac8723

Browse files
committed
任务添加关注
1 parent 818e495 commit cac8723

14 files changed

+158
-45
lines changed

Coding_iOS.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,7 @@
517517
4ED6181B1C3A72AE0017946C /* ShopAddressCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED6181A1C3A72AE0017946C /* ShopAddressCell.m */; };
518518
4ED6181D1C3A72CF0017946C /* ShopAddressCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4ED6181C1C3A72CF0017946C /* ShopAddressCell.xib */; };
519519
4ED6181F1C3A732F0017946C /* button_arrow_left@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4ED6181E1C3A732F0017946C /* button_arrow_left@2x.png */; };
520+
4ED618211C3BD79B0017946C /* task_activity_icon_remove_watcher@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4ED618201C3BD79B0017946C /* task_activity_icon_remove_watcher@2x.png */; };
520521
4ED6731E1A8DD38C00DF2D1A /* ReportIllegalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED6731D1A8DD38C00DF2D1A /* ReportIllegalViewController.m */; };
521522
4ED673221A8E0ECC00DF2D1A /* SVWebViewControllerActivityReport.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED673211A8E0ECC00DF2D1A /* SVWebViewControllerActivityReport.m */; };
522523
4ED673261A8E127100DF2D1A /* SVWebViewControllerActivityReport@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4ED673251A8E127100DF2D1A /* SVWebViewControllerActivityReport@2x.png */; };
@@ -1832,6 +1833,7 @@
18321833
4ED6181A1C3A72AE0017946C /* ShopAddressCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShopAddressCell.m; sourceTree = "<group>"; };
18331834
4ED6181C1C3A72CF0017946C /* ShopAddressCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ShopAddressCell.xib; sourceTree = "<group>"; };
18341835
4ED6181E1C3A732F0017946C /* button_arrow_left@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "button_arrow_left@2x.png"; sourceTree = "<group>"; };
1836+
4ED618201C3BD79B0017946C /* task_activity_icon_remove_watcher@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "task_activity_icon_remove_watcher@2x.png"; sourceTree = "<group>"; };
18351837
4ED6731C1A8DD38C00DF2D1A /* ReportIllegalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReportIllegalViewController.h; sourceTree = "<group>"; };
18361838
4ED6731D1A8DD38C00DF2D1A /* ReportIllegalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReportIllegalViewController.m; sourceTree = "<group>"; };
18371839
4ED673201A8E0ECC00DF2D1A /* SVWebViewControllerActivityReport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVWebViewControllerActivityReport.h; sourceTree = "<group>"; };
@@ -2960,6 +2962,7 @@
29602962
4E6383F31B33C18700D98648 /* task_activity_icon */ = {
29612963
isa = PBXGroup;
29622964
children = (
2965+
4ED618201C3BD79B0017946C /* task_activity_icon_remove_watcher@2x.png */,
29632966
4E3DB53A1BFDD0F40062BA52 /* task_activity_icon_add_watcher@2x.png */,
29642967
4E3DB53B1BFDD0F40062BA52 /* task_activity_icon_MergeRequestBean@2x.png */,
29652968
4E0EF6EB1BF42E4B00F2FCC8 /* task_activity_icon_update_label@2x.png */,
@@ -5414,6 +5417,7 @@
54145417
4E90F89C1AF709C100B44F03 /* code.html in Resources */,
54155418
4E6383FE1B33C18700D98648 /* task_activity_icon_update@2x.png in Resources */,
54165419
4E0849831A918A7F00BD27F6 /* coding_emoji_41@2x.png in Resources */,
5420+
4ED618211C3BD79B0017946C /* task_activity_icon_remove_watcher@2x.png in Resources */,
54175421
927AFF521BFF6DAD00AAE593 /* shop_nar_history_icon@2x.png in Resources */,
54185422
4E6383AD1B3262D300D98648 /* taskPriority3_small@2x.png in Resources */,
54195423
8E97CEA91A0C7E26006F9AD7 /* coding_emoji_18@2x.png in Resources */,

Coding_iOS/Controllers/EditTaskViewController.m

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger
289289
row = 2;
290290
}else if (section == 1){
291291
TaskHandleType handleType = self.myCopyTask.handleType;
292-
row = handleType == TaskHandleTypeEdit? 4: handleType == TaskHandleTypeAddWithProject? 3: 4;
292+
row = handleType == TaskHandleTypeEdit? 5: handleType == TaskHandleTypeAddWithProject? 4: 5;
293293
}else{
294294
row = self.myCopyTask.activityList.count;
295295
}
@@ -509,6 +509,18 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
509509
[_self.myTableView reloadData];
510510
}];
511511
[self.navigationController pushViewController:vc animated:YES];
512+
}else if (cellType == LeftImage_LRTextCellTypeTaskWatchers){
513+
if (_myCopyTask.project == nil) {
514+
[NSObject showHudTipStr:@"需要选定所属项目先~"];
515+
return;
516+
}
517+
ProjectMemberListViewController *vc = [[ProjectMemberListViewController alloc] init];
518+
[vc setFrame:self.view.bounds project:_myCopyTask.project type:ProMemTypeTaskWatchers refreshBlock:nil selectBlock:nil cellBtnBlock:^(ProjectMember *member) {
519+
ESStrongSelf;
520+
[_self watchersChanged:member];
521+
}];
522+
vc.curTask = _myCopyTask;
523+
[self.navigationController pushViewController:vc animated:YES];
512524
}
513525
}else {
514526
ProjectActivity *curActivity = [self.myCopyTask.activityList objectAtIndex:indexPath.row];
@@ -519,6 +531,8 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
519531
}
520532
}
521533

534+
#pragma mark -
535+
522536
- (void)goToDescriptionVC{
523537
if (!_myCopyTask.task_description) {
524538
_myCopyTask.task_description = [Task_Description defaultDescription];
@@ -608,6 +622,11 @@ - (void)doCommentToComment:(TaskComment *)toComment sender:(id)sender{
608622
[_myMsgInputView notAndBecomeFirstResponder];
609623
}
610624

625+
- (void)watchersChanged:(ProjectMember *)member{
626+
_myTask.watchers = _myCopyTask.watchers.mutableCopy;
627+
[_myTableView reloadData];
628+
}
629+
611630
#pragma mark ScrollView Delegate
612631
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
613632
if (scrollView == _myTableView) {

Coding_iOS/Controllers/ProjectMemberListViewController.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@
1313
typedef NS_ENUM(NSInteger, ProMemType) {
1414
ProMemTypeProject = 0,
1515
ProMemTypeTaskOwner,
16-
ProMemTypeAT
16+
ProMemTypeAT,
17+
ProMemTypeTaskWatchers
1718
};
1819
typedef void(^ProjectMemberBlock)(ProjectMember *member);
1920
typedef void(^ProjectMemberListBlock)(NSArray *memberArray);
2021
typedef void(^ProjectMemberCellBtnBlock)(ProjectMember *member);
2122

2223
@interface ProjectMemberListViewController : BaseViewController<UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate,UISearchDisplayDelegate>
2324
@property (strong, nonatomic) NSMutableArray *myMemberArray;
24-
25+
@property (strong, nonatomic) Task *curTask;
2526
- (void)setFrame:(CGRect)frame project:(Project *)project type:(ProMemType)type refreshBlock:(ProjectMemberListBlock)refreshBlock selectBlock:(ProjectMemberBlock)selectBlock cellBtnBlock:(ProjectMemberCellBtnBlock)cellBtnBlock;
2627
- (void)willHiden;
2728
- (void)refreshMembersData;

Coding_iOS/Controllers/ProjectMemberListViewController.m

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -202,28 +202,48 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N
202202
__weak typeof(self) weakSelf = self;
203203
cell.curMember = curMember;
204204
cell.type = _type;
205-
cell.leftBtnClickedBlock = ^(id sender){
205+
if (_type == ProMemTypeTaskWatchers) {
206+
cell.isAdded = [self.curTask hasWatcher:curMember.user];
207+
}
208+
cell.leftBtnClickedBlock = ^(UIButton *sender){
206209
if (tableView.isEditing) {
207210
return;
208211
}
209-
if (curMember.user_id.intValue == [Login curLoginUser].id.intValue) {
210-
// 自己,退出项目
211-
UIActionSheet *actionSheet = [UIActionSheet bk_actionSheetCustomWithTitle:@"确定退出项目?" buttonTitles:nil destructiveTitle:@"确认退出" cancelTitle:@"取消" andDidDismissBlock:^(UIActionSheet *sheet, NSInteger index) {
212-
if (index == 0) {
213-
[weakSelf quitSelf_ProjectMember:curMember];
212+
if (weakSelf.type == ProMemTypeProject) {
213+
if (curMember.user_id.intValue == [Login curLoginUser].id.intValue) {
214+
// 自己,退出项目
215+
UIActionSheet *actionSheet = [UIActionSheet bk_actionSheetCustomWithTitle:@"确定退出项目?" buttonTitles:nil destructiveTitle:@"确认退出" cancelTitle:@"取消" andDidDismissBlock:^(UIActionSheet *sheet, NSInteger index) {
216+
if (index == 0) {
217+
[weakSelf quitSelf_ProjectMember:curMember];
218+
}
219+
}];
220+
[actionSheet showInView:weakSelf.view];
221+
}else{
222+
// 别人,发起私信
223+
if (weakSelf.cellBtnBlock) {
224+
weakSelf.cellBtnBlock(curMember);
214225
}
215-
}];
216-
[actionSheet showInView:self.view];
217-
}else{
218-
// 别人,发起私信
219-
if (_type == ProMemTypeProject) {
220-
if (self.cellBtnBlock) {
221-
self.cellBtnBlock(curMember);
226+
}
227+
}else if (weakSelf.type == ProMemTypeTaskWatchers){
228+
if (weakSelf.curTask.handleType == TaskHandleTypeEdit) {
229+
[sender startQueryAnimate];
230+
[[Coding_NetAPIManager sharedManager] request_ChangeWatcher:curMember.user ofTask:weakSelf.curTask andBlock:^(id data, NSError *error) {
231+
if (cell.curMember == curMember) {
232+
[sender stopQueryAnimate];
233+
if (data) {
234+
BOOL isAdded = [weakSelf.curTask hasWatcher:curMember.user];
235+
[sender setImage:[UIImage imageNamed:isAdded? @"btn_project_added": @"btn_project_add"] forState:UIControlStateNormal];
236+
}
237+
}
238+
}];
239+
}else{
240+
User *hasWatcher = [weakSelf.curTask hasWatcher:curMember.user];
241+
if (hasWatcher) {
242+
[weakSelf.curTask.watchers removeObject:hasWatcher];
243+
}else{
244+
[weakSelf.curTask.watchers addObject:curMember.user];
222245
}
223-
}else if (_type == ProMemTypeTaskOwner){
224-
ConversationViewController *vc = [[ConversationViewController alloc] init];
225-
vc.myPriMsgs = [PrivateMessages priMsgsWithUser:curMember.user];
226-
[self.navigationController pushViewController:vc animated:YES];
246+
[sender setImage:[UIImage imageNamed:!hasWatcher? @"btn_project_added": @"btn_project_add"] forState:UIControlStateNormal];
227247
}
228248
}
229249
};
Loading

Coding_iOS/Models/Task.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ typedef NS_ENUM(NSInteger, TaskHandleType) {
3030
@property (readwrite, nonatomic, strong) Project *project;
3131
@property (readwrite, nonatomic, strong) NSNumber *id, *status, *owner_id, *priority, *comments, *has_description, *number,*resource_id;
3232
@property (readwrite, nonatomic, strong) NSDictionary *propertyArrayMap;
33-
@property (readwrite, nonatomic, strong) NSMutableArray *activityList, *labels;
33+
@property (readwrite, nonatomic, strong) NSMutableArray *activityList, *labels, *watchers;
3434
@property (nonatomic, assign) TaskHandleType handleType;
3535
@property (nonatomic, assign) BOOL isRequesting, isRequestingDetail, isRequestingCommentList, needRefreshDetail;
3636
@property (readwrite, nonatomic, strong) NSString *nextCommentStr;
@@ -40,6 +40,7 @@ typedef NS_ENUM(NSInteger, TaskHandleType) {
4040
+ (Task *)taskWithBackend_project_path:(NSString *)backend_project_path andId:(NSString *)taskId;
4141
+ (Task *)taskWithTask:(Task *)task;
4242
- (BOOL)isSameToTask:(Task *)task;
43+
- (User *)hasWatcher:(User *)watcher;
4344

4445
//任务状态
4546
- (NSString *)toEditTaskStatusPath;
@@ -64,6 +65,8 @@ typedef NS_ENUM(NSInteger, TaskHandleType) {
6465
- (NSString *)toTaskDetailPath;
6566
//任务描述
6667
- (NSString *)toDescriptionPath;
68+
//任务关注者列表
69+
- (NSString *)toWatchersPath;
6770
//评论任务
6871
- (NSString *)toDoCommentPath;
6972
- (NSDictionary *)toDoCommentParams;

Coding_iOS/Models/Task.m

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ - (instancetype)init
1616
if (self) {
1717
_propertyArrayMap = [NSDictionary dictionaryWithObjectsAndKeys:
1818
@"ProjectTag", @"labels", nil];
19+
_watchers = @[].mutableCopy;
1920

2021
_handleType = TaskHandleTypeEdit;
2122
_isRequesting = _isRequestingDetail = _isRequestingCommentList = NO;
@@ -89,6 +90,16 @@ - (BOOL)isSameToTask:(Task *)task{
8990
&& [ProjectTag tags:self.labels isEqualTo:task.labels]
9091
);
9192
}
93+
94+
- (User *)hasWatcher:(User *)watcher{
95+
for (User *user in self.watchers) {
96+
if ([user.id isEqual:watcher.id]) {
97+
return user;
98+
}
99+
}
100+
return nil;
101+
}
102+
92103
- (void)copyDataFrom:(Task *)task{
93104
self.id = task.id;
94105
self.backend_project_path = task.backend_project_path;
@@ -114,6 +125,7 @@ - (void)copyDataFrom:(Task *)task{
114125
self.has_description = task.has_description;
115126
self.task_description = task.task_description;
116127
self.labels = [task.labels mutableCopy];
128+
self.watchers = [task.watchers mutableCopy];
117129
}
118130

119131
//任务状态
@@ -180,11 +192,10 @@ - (NSDictionary *)toAddTaskParams{
180192
params[@"description"] = [self.task_description.markdown aliasedString];
181193
}
182194
if (self.labels.count > 0) {
183-
NSMutableArray *labels = [NSMutableArray new];
184-
for (ProjectTag *curL in self.labels) {
185-
[labels addObject:curL.id.stringValue];
186-
}
187-
params[@"labels"] = labels;
195+
params[@"labels"] = [self.labels valueForKey:@"id"];
196+
}
197+
if (self.watchers.count > 0) {
198+
params[@"watchers"] = [self.watchers valueForKey:@"id"];
188199
}
189200
return params;
190201
}
@@ -217,6 +228,11 @@ - (NSString *)toDescriptionPath{
217228
return [NSString stringWithFormat:@"api/task/%@/description", self.id.stringValue];
218229
}
219230

231+
//任务关注者列表
232+
- (NSString *)toWatchersPath{
233+
return [NSString stringWithFormat:@"api%@/task/%@/watchers", self.backend_project_path, self.id.stringValue];
234+
}
235+
220236
- (NSString *)backend_project_path{
221237
if (!_backend_project_path || _backend_project_path.length <= 0) {
222238
if (self.project && self.project.backend_project_path && self.project.backend_project_path.length > 0) {

Coding_iOS/Util/Manager/Coding_NetAPIManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ typedef NS_ENUM(NSInteger, PurposeType) {
143143
- (void)request_ActivityListOfTask:(Task *)task andBlock:(void (^)(id data, NSError *error))block;
144144
- (void)request_DoCommentToTask:(Task *)task andBlock:(void (^)(id data, NSError *error))block;
145145
- (void)request_DeleteComment:(TaskComment *)comment ofTask:(Task *)task andBlock:(void (^)(id data, NSError *error))block;
146+
- (void)request_ChangeWatcher:(User *)watcher ofTask:(Task *)task andBlock:(void (^)(id data, NSError *error))block;
146147

147148
#pragma mark - User
148149
- (void)request_AddUser:(User *)user ToProject:(Project *)project andBlock:(void (^)(id data, NSError *error))block;

Coding_iOS/Util/Manager/Coding_NetAPIManager.m

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,28 +1232,38 @@ - (void)request_ChangeTaskStatus:(Task *)task andBlock:(void (^)(id data, NSErro
12321232
}
12331233

12341234
- (void)request_TaskDetail:(Task *)task andBlock:(void (^)(id data, NSError *error))block{
1235-
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:[task toTaskDetailPath] withParams:nil withMethodType:Get andBlock:^(id data, NSError *error) {
1235+
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:[task toTaskDetailPath] withParams:nil withMethodType:Get andBlock:^(id data, NSError *error) {//请求任务基本内容
12361236
if (data) {
12371237
id resultData = [data valueForKeyPath:@"data"];
12381238
Task *resultA = [NSObject objectOfClass:@"Task" fromJSON:resultData];
1239-
if (resultA.has_description.boolValue) {
1240-
[MobClick event:kUmeng_Event_Request_Get label:@"任务_详情_有描述"];
1241-
1242-
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:[resultA toDescriptionPath] withParams:nil withMethodType:Get andBlock:^(id dataD, NSError *errorD) {
1243-
if (dataD) {
1244-
dataD = [dataD valueForKey:@"data"];
1245-
Task_Description *taskD = [NSObject objectOfClass:@"Task_Description" fromJSON:dataD];
1246-
resultA.task_description = taskD;
1247-
block(resultA, nil);
1239+
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:[resultA toWatchersPath] withParams:@{@"pageSize": @1000} withMethodType:Get andBlock:^(id dataW, NSError *errorW) {//请求任务关注者
1240+
if (dataW) {
1241+
dataW = dataW[@"data"][@"list"];
1242+
NSArray *watchers = [NSObject arrayFromJSON:dataW ofObjects:@"User"];
1243+
resultA.watchers = watchers.mutableCopy;
1244+
1245+
if (resultA.has_description.boolValue) {
1246+
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:[resultA toDescriptionPath] withParams:nil withMethodType:Get andBlock:^(id dataD, NSError *errorD) {//请求任务描述
1247+
if (dataD) {
1248+
[MobClick event:kUmeng_Event_Request_Get label:@"任务_详情_有描述"];
1249+
1250+
dataD = [dataD valueForKey:@"data"];
1251+
Task_Description *taskD = [NSObject objectOfClass:@"Task_Description" fromJSON:dataD];
1252+
resultA.task_description = taskD;
1253+
block(resultA, nil);
1254+
}else{
1255+
block(nil, errorD);
1256+
}
1257+
}];
12481258
}else{
1249-
block(nil, errorD);
1259+
[MobClick event:kUmeng_Event_Request_Get label:@"任务_详情_无描述"];
1260+
1261+
block(resultA, nil);
12501262
}
1251-
}];
1252-
}else{
1253-
[MobClick event:kUmeng_Event_Request_Get label:@"任务_详情_无描述"];
1254-
1255-
block(resultA, nil);
1256-
}
1263+
}else{
1264+
block(nil, errorW);
1265+
}
1266+
}];
12571267
}else{
12581268
block(nil, error);
12591269
}
@@ -1297,6 +1307,27 @@ - (void)request_DeleteComment:(TaskComment *)comment ofTask:(Task *)task andBloc
12971307
}];
12981308
}
12991309

1310+
- (void)request_ChangeWatcher:(User *)watcher ofTask:(Task *)task andBlock:(void (^)(id data, NSError *error))block{
1311+
NSString *path = [NSString stringWithFormat:@"api/task/%@/user/%@/watch", task.id.stringValue, watcher.global_key];
1312+
User *hasWatcher = [task hasWatcher:watcher];
1313+
NetworkMethod method = hasWatcher? Delete: Post;
1314+
1315+
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:path withParams:nil withMethodType:method andBlock:^(id data, NSError *error) {
1316+
if (data) {
1317+
[MobClick event:kUmeng_Event_Request_ActionOfServer label:method == Post? @"任务_添加关注者": @"任务_删除关注者"];
1318+
1319+
if (!hasWatcher && watcher) {
1320+
[task.watchers addObject:watcher];
1321+
}else if (hasWatcher){
1322+
[task.watchers removeObject:hasWatcher];
1323+
}
1324+
block(data, nil);
1325+
}else{
1326+
block(nil, error);
1327+
}
1328+
}];
1329+
}
1330+
13001331
#pragma mark User
13011332
- (void)request_AddUser:(User *)user ToProject:(Project *)project andBlock:(void (^)(id data, NSError *error))block{
13021333
// 一次添加多个成员(逗号分隔):users=102,4

Coding_iOS/Views/Cell/LeftImage_LRTextCell.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ typedef NS_ENUM(NSInteger, LeftImage_LRTextCellType) {
1414
LeftImage_LRTextCellTypeTaskOwner,
1515
LeftImage_LRTextCellTypeTaskPriority,
1616
LeftImage_LRTextCellTypeTaskDeadline,
17-
LeftImage_LRTextCellTypeTaskStatus
17+
LeftImage_LRTextCellTypeTaskWatchers,
18+
LeftImage_LRTextCellTypeTaskStatus,
1819
};
1920

2021
@interface LeftImage_LRTextCell : UITableViewCell

Coding_iOS/Views/Cell/LeftImage_LRTextCell.m

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,14 @@ - (void)layoutSubviews{
107107
}
108108
}
109109
break;
110+
case LeftImage_LRTextCellTypeTaskWatchers:
111+
{
112+
[_iconView doNotCircleFrame];
113+
[_iconView setImage:[UIImage imageNamed:@"taskProgress"]];
114+
_leftLabel.text = @"关注者";
115+
_rightLabel.text = task.watchers.count > 0? [NSString stringWithFormat:@"%lu 人关注", (unsigned long)task.watchers.count]: @"未添加";
116+
}
117+
break;
110118
case LeftImage_LRTextCellTypeTaskStatus:
111119
{
112120
[_iconView doNotCircleFrame];

0 commit comments

Comments
 (0)