//
|
// PBAddIssueController.m
|
// IphoneBIMe
|
//
|
// Created by zjf on 2018/8/14.
|
// Copyright © 2018年 ProBIM. All rights reserved.
|
//
|
|
#import "PBAddIssueController.h"
|
#import "PBInputTableViewCell.h"
|
#import "PBChooseTableViewCell.h"
|
#import "PBEditTextController.h"
|
#import "PBChooseView.h"
|
#import "PBPersonTableViewCell.h"
|
#import "PBEditPersonView.h"
|
#import "PBEditLableView.h"
|
#import "PBDateTableViewCell.h"
|
#import "PBEditDateView.h"
|
#import "PBIssueAddModel.h"
|
#import "PBProjectModel.h"
|
#import "PBPersonModel.h"
|
#import "PBViewPointModel.h"
|
#import "PBCommentsController.h"
|
#import "PBIssueListModel.h"
|
#import "PBIssueDetailModel.h"
|
#import "PBNetworkModel.h"
|
#import "PBDocModel.h"
|
#import "PBLoadModelDisplayController.h"
|
#import "PBPreviewDocViewController.h"
|
#import "PBIssueImageTableViewCell.h"
|
#import "PBPositionTableViewCell.h"
|
#import "PBIssueHeaderView.h"
|
#import "PBIssueModelListController.h"
|
#import "PBOpenViewPointController.h"
|
#import "PBOpenDrawController.h"
|
#import "PBTagModel.h"
|
#import "PBDocListTableViewCell.h"
|
#import "DwgViewController.h"
|
|
static NSString *const ImageCellID = @"ImageCellID";
|
static NSString *const PositionCellID = @"PositionCellID";
|
static NSString *const InputCellID = @"InputCellID";
|
static NSString *const chooseCellID = @"chooseCellID";
|
static NSString *const personCellID = @"personCellID";
|
static NSString *const dateCellID = @"dateCellID";
|
static NSString *const docCellID = @"docCellID";
|
@interface PBAddIssueController ()<UITableViewDataSource, UITableViewDelegate, LFImagePickerControllerDelegate>
|
@property (nonatomic, strong) UITableView *tableView;
|
@property (nonatomic, strong) PBChooseView *chooseView;
|
@property (nonatomic, strong) PBEditPersonView *editPersonView;
|
@property (nonatomic, strong) PBEditLableView *editLabelView;
|
@property (nonatomic, strong) PBEditDateView *editDateView;
|
@property (nonatomic, strong) NSMutableArray<PBIssueAddModel *> *dataListM;
|
@property (nonatomic, strong) NSMutableArray *selectedPhotos;
|
@property (nonatomic, strong) NSMutableArray *selectedAssets;
|
@property (nonatomic, strong) PBIssueHeaderView *issueHeaderView;
|
@property (nonatomic, strong) NSMutableArray *imageDocArr;
|
@property (nonatomic, strong) NSMutableArray *docArr;
|
@property (nonatomic, strong) NSMutableArray *associatedDocs;
|
@property (nonatomic, assign) RoleType roleType;
|
@property (nonatomic, assign) NSInteger mandatoryCount;
|
@property (nonatomic, weak) UIView *linView;
|
@property (nonatomic, strong) PBIssueDetailModel *issueDetailModel;
|
@property (nonatomic, strong) PBDrawingsInfoModel *drawingsInfoModel;
|
@property (nonatomic, assign) BOOL isIssueManage;
|
@end
|
|
@implementation PBAddIssueController
|
- (void)viewDidAppear:(BOOL)animated {
|
[super viewDidAppear:animated];
|
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.f) {
|
self.edgesForExtendedLayout = UIRectEdgeNone;
|
self.navigationController.interactivePopGestureRecognizer.enabled = NO; //让rootView禁止滑动
|
}
|
}
|
- (void)viewDidLoad {
|
[super viewDidLoad];
|
[PBNoteCenter addObserver:self selector:@selector(updatePosition:) name:PBNoteCenterIssueUpdatePositioning object:nil];
|
if (self.issueListModel.isIssueManager) {
|
self.isIssueManage = YES;
|
}else {
|
self.isIssueManage = NO;
|
}
|
[self setupUI];
|
[self loadData];
|
[self setupNav];
|
}
|
- (void)updatePosition:(NSNotification *)noti {
|
PBIssueAddModel *issueAddModel = noti.object;
|
NSIndexPath *path;
|
if ([issueAddModel.key isEqualToString:@"viewPoint"]) {
|
path = [NSIndexPath indexPathForRow:0 inSection:0];
|
}else {
|
path = [NSIndexPath indexPathForRow:1 inSection:0];
|
}
|
if (self.isAddIssue) {
|
[self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationFade];
|
}else {
|
if ([issueAddModel.key isEqualToString:@"viewPoint"]) {
|
NSDictionary *viewPointDic = @{
|
@"modelID" : issueAddModel.veiwPointModel.ModelID,
|
@"viewPointID" : issueAddModel.veiwPointModel.ID
|
};
|
[self updaIssueWithStatusId:nil andTypeId:nil andRUserIDStr:nil andLUserIDStr:nil andEndDate:nil andViewPoint:viewPointDic andDraw:nil andIndexPath:path];
|
}else {
|
NSDictionary *drawDic = @{
|
@"modelID" : issueAddModel.modelsModel.ID,
|
@"imageID" : issueAddModel.drawingposModel.FileId,
|
@"position" : [NSString stringWithFormat:@"%@_%@",issueAddModel.drawingposModel.PosX,issueAddModel.drawingposModel.PosY],
|
};
|
[self updaIssueWithStatusId:nil andTypeId:nil andRUserIDStr:nil andLUserIDStr:nil andEndDate:nil andViewPoint:nil andDraw:drawDic andIndexPath:path];
|
}
|
}
|
}
|
|
- (void)updateCompletionIndicator {
|
|
if (!self.isAddIssue) {
|
return;
|
}
|
CGFloat oneWidth = PBScreenWidth / self.mandatoryCount;
|
NSInteger completedCount = 0;
|
for (PBIssueAddModel *issueAddModel in self.dataListM) {
|
if (issueAddModel.isMandatory) {
|
if ([issueAddModel.cellType isEqualToString:@"input"]) {
|
if (issueAddModel.inputStr != nil && ![issueAddModel.inputStr isEqualToString:@""]) {
|
++completedCount;
|
}
|
}else if ([issueAddModel.cellType isEqualToString:@"choose"]) {
|
if (issueAddModel.navModel){
|
++completedCount;
|
}
|
}else if ([issueAddModel.cellType isEqualToString:@"person"]) {
|
if (issueAddModel.personArr.count != 0) {
|
++completedCount;
|
}
|
}else if ([issueAddModel.cellType isEqualToString:@"date"]) {
|
if (issueAddModel.dateStr!= nil && ![issueAddModel.dateStr isEqualToString:@""]) {
|
++completedCount;
|
}
|
}
|
}
|
}
|
CGFloat linViewW = oneWidth *completedCount;
|
[UIView animateWithDuration:0.2 animations:^{
|
self.linView.width = linViewW;
|
} completion:^(BOOL finished) {
|
if (completedCount == self.mandatoryCount) {
|
self.navigationItem.rightBarButtonItem.enabled = YES;
|
}else {
|
self.navigationItem.rightBarButtonItem.enabled = NO;
|
}
|
}];
|
}
|
|
- (void)loadData {
|
self.dataListM = [[NSMutableArray alloc] init];
|
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"issueAdd" ofType:@"plist"];
|
NSArray *arr = [NSArray arrayWithContentsOfFile:plistPath];
|
NSMutableArray *listM = [[NSMutableArray alloc] init];
|
for (NSDictionary *obj in arr) {
|
PBIssueAddModel *model = [PBIssueAddModel yy_modelWithDictionary:obj];
|
model.isAddIssue = self.isAddIssue;
|
model.isIssueManager = self.isIssueManage;
|
if (model.isMandatory) {
|
++self.mandatoryCount;
|
}
|
[listM addObject:model];
|
}
|
if (self.statusAndTypeData == nil) {
|
[self getProjectParentId];
|
}
|
if (_isAddIssue) {
|
[self setTableViewHeaderView];
|
self.dataListM = listM;
|
[self.dataListM removeLastObject];
|
}else {
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
[[PBNetworkTools sharedTools] RequestGetIssueDetailByIdWithIssueID:self.issueListModel.IssueId andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"加载失败" inView:self.view];
|
return;
|
}
|
self.dataListM = listM;
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
PBIssueDetailModel *issueDetailModel = [PBIssueDetailModel yy_modelWithDictionary:networkModel.Data];
|
// if (issueDetailModel.IssueId == nil || [issueDetailModel.IssueId isEqualToString:@""]) {
|
// [YJProgressHUD showMessage:@"此问题已删除" inView:self.view];
|
// [self dismissViewControllerAnimated:YES completion:nil];
|
// return;
|
// }
|
self.issueDetailModel = issueDetailModel;
|
self.issueListModel = [PBIssueListModel yy_modelWithDictionary:self.issueDetailModel.issueObj];
|
[self.navigationItem.rightBarButtonItem setTitle:[NSString stringWithFormat:@"评论(%zd)",self.issueDetailModel.comments.count]];
|
// [self judgeRoleWith:issueDetailModel];
|
//附件
|
[self.associatedDocs addObjectsFromArray:self.issueDetailModel.base_files];
|
[YJProgressHUD hide];
|
[self setTableViewHeaderView];
|
[self RefreshListData];
|
}else {
|
[YJProgressHUD showMessage:networkModel.Msg inView:self.view];
|
}
|
}];
|
}
|
}
|
- (void)RefreshListData {
|
for (PBIssueAddModel *issueAddModel in self.dataListM) {
|
if ([issueAddModel.cellType isEqualToString:@"input"]) {
|
issueAddModel.inputStr = self.issueListModel.Title;
|
}else if ([issueAddModel.cellType isEqualToString:@"choose"]) {
|
PBIssueNavModel *navModel = [[PBIssueNavModel alloc] init];
|
if ([issueAddModel.key isEqualToString:@"IssueStatusID"]) {
|
if ([self.issueListModel.IssueStatus isEqualToString:@""]) {
|
issueAddModel.navModel = nil;
|
}else {
|
navModel.ItemDetailId = self.issueListModel.IssueStatus;
|
navModel.ItemName = self.issueListModel.IssueStatusText;
|
issueAddModel.navModel = navModel;
|
}
|
}else {
|
if ([self.issueListModel.IssueTypeID isEqualToString:@""]) {
|
issueAddModel.navModel = nil;
|
}else {
|
navModel.ItemDetailId = self.issueListModel.IssueTypeID;
|
navModel.ItemName = self.issueListModel.IssueTypeText;
|
issueAddModel.navModel = navModel;
|
}
|
}
|
} else if ([issueAddModel.cellType isEqualToString:@"person"]) {
|
issueAddModel.personArr = [NSArray yy_modelArrayWithClass:[PBPersonModel class] json: self.issueDetailModel.joiners];
|
|
} else if ([issueAddModel.cellType isEqualToString:@"date"]) {
|
NSString *dateStr;
|
if ([self.issueListModel.EndDate isEqualToString:@""] || [self.issueListModel.EndDate isEqualToString:@"0001-01-01 00:00:00"]) {
|
dateStr = nil;
|
}else {
|
NSRange range = [self.issueListModel.EndDate rangeOfString:@"T"];
|
dateStr = [self.issueListModel.EndDate substringToIndex:range.location];
|
}
|
issueAddModel.dateStr = dateStr;
|
} else if ([issueAddModel.cellType isEqualToString:@"label"]) {
|
issueAddModel.labelArr = [NSArray yy_modelArrayWithClass:[PBTagModel class] json:self.issueDetailModel.tagList];
|
}
|
}
|
[self.tableView reloadData];
|
}
|
#pragma mark - 设置头视图
|
- (void)setTableViewHeaderView {
|
CGFloat height = 177.f;
|
if (self.isAddIssue) {
|
if (self.selectedPhotos.count == 0 && self.base64Image == nil) {
|
height = 61.f;
|
}
|
}else {
|
if (self.associatedDocs.count == 0 && [self.issueListModel.ViewpointID isEqualToString:@""]) {
|
height = 61.f;
|
}
|
}
|
self.issueHeaderView.frame = CGRectMake(0, 0, self.view.width, height);
|
if (self.isAddIssue) {
|
if (self.base64Image) {
|
NSRange range = [self.base64Image rangeOfString:@"base64,"];
|
NSString *base64 = [self.base64Image substringFromIndex:range.location + range.length];
|
UIImage *image = [NSString imageDecoding:base64];
|
self.issueHeaderView.viewPointImage = image;
|
}
|
self.issueHeaderView.imageArr = self.selectedPhotos;
|
}else {
|
self.issueHeaderView.viewPointImageUrl = self.issueListModel.ImageUrl;
|
self.issueHeaderView.imageDocArr = self.associatedDocs;
|
}
|
self.tableView.tableHeaderView = self.issueHeaderView;
|
}
|
|
|
- (PBIssueHeaderView *)issueHeaderView {
|
__weak typeof(self) weakSelf = self;
|
if (_issueHeaderView == nil) {
|
_issueHeaderView = [[PBIssueHeaderView alloc] init];
|
_issueHeaderView.projectMdoel = self.projectModel;
|
RoleType roleType = PARTICIPANT;
|
if (self.isAddIssue || self.isIssueManage) {
|
roleType = CREATOR;
|
}
|
_issueHeaderView.roleType = roleType;
|
self.issueHeaderView.ChooseImageBlock = ^{
|
if ([weakSelf.issueListModel.DeleteMark isEqualToString:@"2"]) {
|
[YJProgressHUD showMessage:@"已归档,无法修改" inView:weakSelf.view];
|
return;
|
}
|
if (self.isAddIssue || weakSelf.isIssueManage) {
|
[weakSelf takePhotoLibrary];
|
}else {
|
[YJProgressHUD showMessage:@"无修改权限" inView:weakSelf.view];
|
}
|
};
|
self.issueHeaderView.DeleteImageBlock = ^(NSInteger index) {
|
if (weakSelf.isAddIssue) {
|
[weakSelf.selectedPhotos removeObjectAtIndex:index];
|
// [weakSelf.selectedAssets removeObjectAtIndex:index];
|
[weakSelf setTableViewHeaderView];
|
}else {
|
if ([weakSelf.issueListModel.DeleteMark isEqualToString:@"2"]) {
|
[YJProgressHUD showMessage:@"已归档,无法修改" inView:weakSelf.view];
|
return;
|
}
|
[weakSelf deleteRelationImageWithIndex:index];
|
}
|
};
|
self.issueHeaderView.OpenViewPointBlock = ^{
|
if (weakSelf.isAddIssue) {
|
|
}else {
|
PBLoadModelDisplayController *modelDisplayVC = [[PBLoadModelDisplayController alloc] init];
|
modelDisplayVC.hidesBottomBarWhenPushed = YES;
|
modelDisplayVC.projectIID = weakSelf.projectModel.bimcomposerid;
|
modelDisplayVC.modelID = weakSelf.issueListModel.ModelId;
|
modelDisplayVC.viewPointID = weakSelf.issueListModel.ViewpointID;
|
[weakSelf.navigationController pushViewController:modelDisplayVC animated:YES];
|
}
|
};
|
}
|
return _issueHeaderView;
|
}
|
|
- (void)getProjectParentId {
|
// [YJProgressHUD showCustomAnimation:@"" inview:self.view];
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
[[PBNetworkTools sharedTools] getProjectParentIDWithProjectID:self.projectModel.organizeid andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"加载状态失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
NSLog(@"%@",str);
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1){
|
[self loadTypeAndStatusWith:networkModel.Data];
|
}else {
|
[YJProgressHUD showMessage:@"加载状态、类型失败" inView:self.view];
|
}
|
}];
|
}
|
- (void)loadTypeAndStatusWith:(NSString *)parentId {
|
__block NSArray *statusArr; __block NSArray *typeArr;
|
dispatch_semaphore_t sem = dispatch_semaphore_create(0);
|
NSInteger commandCount = 2;
|
__block NSInteger httpFinishCount = 0;
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
[[PBNetworkTools sharedTools] getIssueStatusWithCompanyId:parentId andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"加载状态失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if ([networkModel.Msg isEqualToString:@"OK"]) {
|
statusArr = networkModel.Data;
|
if (++httpFinishCount == commandCount) {
|
dispatch_semaphore_signal(sem);
|
}
|
}else {
|
[YJProgressHUD showMessage:@"加载状态失败" inView:self.view];
|
return;
|
}
|
}];
|
|
[[PBNetworkTools sharedTools] getIssueTypesWithCompanyId:parentId andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"加载类型失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if ([networkModel.Msg isEqualToString:@"OK"]) {
|
typeArr = networkModel.Data;
|
if (++httpFinishCount == commandCount) {
|
dispatch_semaphore_signal(sem);
|
}
|
}else {
|
[YJProgressHUD showMessage:@"加载类型失败" inView:self.view];
|
return;
|
}
|
}];
|
//如果全部请求没有返回则该线程会一直阻塞
|
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
|
NSLog(@"全部加载完成==================: %@", [NSThread currentThread]);
|
dispatch_async(dispatch_get_main_queue(), ^{
|
NSLog(@"更新视图UI update in main thread!:%@",[NSThread currentThread]);
|
[YJProgressHUD hide];
|
NSMutableArray *statusArrM = [[NSMutableArray alloc] init];
|
for (NSDictionary *dict in statusArr) {
|
PBIssueNavModel *issueNavModel = [PBIssueNavModel yy_modelWithDictionary:dict];
|
[statusArrM addObject:issueNavModel];
|
}
|
NSMutableArray *typeArrM = [[NSMutableArray alloc] init];
|
for (NSDictionary *dict in typeArr) {
|
PBIssueNavModel *issueNavModel = [PBIssueNavModel yy_modelWithDictionary:dict];
|
[typeArrM addObject:issueNavModel];
|
}
|
self.statusAndTypeData = @{@"IssueStatus":statusArrM.mutableCopy, @"IssueTypes":typeArrM.mutableCopy};
|
});
|
});
|
}
|
|
- (void)setupUI {
|
if (_isAddIssue) {
|
self.view.backgroundColor = [UIColor z_colorWithR:216 G:216 B:216];
|
}else {
|
self.view.backgroundColor = [UIColor whiteColor];
|
}
|
UIView *linView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 3)];
|
linView.backgroundColor = WarningColor;
|
[self.view addSubview:linView];
|
self.linView = linView;
|
|
self.tableView = [[UITableView alloc] init];
|
self.tableView.dataSource = self;
|
self.tableView.delegate = self;
|
self.tableView.rowHeight = UITableViewAutomaticDimension;
|
self.tableView.estimatedRowHeight = 100.f;
|
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
|
[self.tableView registerClass:[PBIssueImageTableViewCell class] forCellReuseIdentifier:ImageCellID];
|
[self.tableView registerClass:[PBPositionTableViewCell class] forCellReuseIdentifier:PositionCellID];
|
[self.tableView registerClass:[PBInputTableViewCell class] forCellReuseIdentifier:InputCellID];
|
[self.tableView registerClass:[PBChooseTableViewCell class] forCellReuseIdentifier:chooseCellID];
|
[self.tableView registerClass:[PBPersonTableViewCell class] forCellReuseIdentifier:personCellID];
|
[self.tableView registerClass:[PBDateTableViewCell class] forCellReuseIdentifier:dateCellID];
|
[self.tableView registerClass:[PBDocListTableViewCell class] forCellReuseIdentifier:docCellID];
|
[self.view addSubview:self.tableView];
|
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
|
make.top.equalTo(self.view).offset(3);
|
make.left.right.bottom.equalTo(self.view);
|
}];
|
}
|
- (void)setupNav {
|
PBBackNavItem *backNav = [PBBackNavItem backNacItem];
|
backNav.title = @"取消";
|
[backNav addTarget:self action:@selector(backItemAction) forControlEvents:UIControlEventTouchUpInside];
|
UIBarButtonItem *backNavItem = [[UIBarButtonItem alloc] initWithCustomView:backNav];
|
self.navigationItem.leftBarButtonItem = backNavItem;
|
if (self.isAddIssue) {
|
UIBarButtonItem *saveNavItem = [[UIBarButtonItem alloc] initWithTitle:@"保存" style:UIBarButtonItemStylePlain target:self action:@selector(saveIssue)];
|
saveNavItem.enabled = YES;
|
self.navigationItem.rightBarButtonItem = saveNavItem;
|
self.navigationItem.rightBarButtonItem.enabled = NO;
|
}else {
|
UIBarButtonItem *commentsItem = [[UIBarButtonItem alloc] initWithTitle:@"评论" style:UIBarButtonItemStylePlain target:self action:@selector(commentsAction)];
|
self.navigationItem.rightBarButtonItem = commentsItem;
|
}
|
}
|
- (void)backItemAction {
|
[PBNoteCenter removeObserver:self];
|
[self dismissViewControllerAnimated:YES completion:nil];
|
}
|
- (void)commentsAction {
|
PBCommentsController *commentsVC = [[PBCommentsController alloc] init];
|
commentsVC.projectModel = self.projectModel;
|
commentsVC.issueListModel = self.issueListModel;
|
commentsVC.issueDetailModel = self.issueDetailModel;
|
commentsVC.CommentsCountBlock = ^(NSInteger count) {
|
[self.navigationItem.rightBarButtonItem setTitle:[NSString stringWithFormat:@"评论(%zd)",count]];
|
};
|
[self.navigationController pushViewController:commentsVC animated:YES];
|
}
|
- (void)saveIssue {
|
if (self.selectedPhotos.count == 0) {
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
[self saveIssueDataWithFileId:@""];
|
}else {
|
[self uploadFileWithFile:self.selectedPhotos];
|
}
|
}
|
- (void)saveIssueDataWithFileId:(NSString *)fileId {
|
NSMutableDictionary *dictM = [[NSMutableDictionary alloc] init];
|
for (PBIssueAddModel *issueAddModel in self.dataListM) {
|
if ([issueAddModel.cellType isEqualToString:@"input"]) {
|
[dictM setObject:issueAddModel.inputStr == nil ? @"" : issueAddModel.inputStr forKey:issueAddModel.key];
|
}else if ([issueAddModel.cellType isEqualToString:@"choose"]) {
|
if ([issueAddModel.key isEqualToString:@"IssueTypeId"]) {
|
[dictM setObject:issueAddModel.navModel.ItemDetailId forKey:issueAddModel.key];
|
}
|
}else if ([issueAddModel.cellType isEqualToString:@"person"]) {
|
NSMutableString *strM = [[NSMutableString alloc] init];
|
for (PBPersonModel *personModel in issueAddModel.personArr) {
|
[strM appendString:[NSString stringWithFormat:@"%@,",personModel.UserId]];
|
}
|
[dictM setObject:strM.copy == nil ? @"" : strM.copy forKey:issueAddModel.key];
|
}else if ([issueAddModel.cellType isEqualToString:@"date"]) {
|
[dictM setObject:issueAddModel.dateStr== nil ? @"" : issueAddModel.dateStr forKey:issueAddModel.key];
|
}
|
}
|
[dictM setObject:self.projectModel.organizeid forKey:@"OrganizeId"];
|
[dictM setObject:fileId forKey:@"ImageIds"];
|
if (self.viewPointStr) {
|
[dictM setObject:self.modelID forKey:@"ModelID"];
|
[dictM setObject:self.base64Image forKey:@"ImageUrl"];
|
[dictM setObject:self.viewPointStr forKey:@"ViewPointID"];
|
}else {
|
[dictM setObject:@"" forKey:@"ModelID"];
|
[dictM setObject:@"" forKey:@"ImageUrl"];
|
[dictM setObject:@"" forKey:@"ViewPointID"];
|
}
|
[[PBNetworkTools sharedTools] RequestSaveIssueWithData:dictM andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
[YJProgressHUD showMessage:@"保存数据失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
[YJProgressHUD showSuccess:@"保存成功" inview:self.view];
|
if (self.SaveSuccessBlock) {
|
self.SaveSuccessBlock();
|
}
|
[self dismissViewControllerAnimated:YES completion:nil];
|
}else {
|
[YJProgressHUD showMessage:@"保存数据失败" inView:self.view];
|
}
|
}];
|
}
|
|
- (void)uploadFileWithFile:(NSArray *)files {
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
NSString *issueID = self.issueListModel.IssueId;
|
if (self.isAddIssue) {
|
issueID = @"";
|
}
|
[[PBNetworkTools sharedTools] UploadImagesWithFiles:files andIssueID:issueID andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
[YJProgressHUD showMessage:@"上传文件失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
NSLog(@"%@",str);
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
if (self.isAddIssue) {
|
NSMutableString *strM = [[NSMutableString alloc] init];
|
NSString *fileID = @"";
|
for (NSDictionary *obj in networkModel.Data) {
|
[strM appendFormat:@"%@,",[obj valueForKey:@"bf_guid"]];
|
}
|
if([strM length] > 0){
|
fileID = [strM substringToIndex:([strM length]-1)];
|
}
|
[self saveIssueDataWithFileId:fileID];
|
}else {
|
[YJProgressHUD hide];
|
[self.associatedDocs addObjectsFromArray:networkModel.Data];
|
[self setTableViewHeaderView];
|
}
|
}else {
|
[YJProgressHUD showMessage:@"上传文件失败" inView:self.view];
|
}
|
}];
|
}
|
|
- (void)positionMoreFunctionsWithIssueAddModel:(PBIssueAddModel *)issueAddModel {
|
NSString *title = @"图纸定位";
|
NSString *action1Title = @"重新选择图纸定位";
|
NSString *action2Title = @"清空图纸定位";
|
if ([issueAddModel.key isEqualToString:@"viewPoint"]) {
|
title = @"视点定位";
|
action1Title = @"重新选择视点定位";
|
action2Title = @"清空视点定位";
|
}
|
UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:title message:@"" preferredStyle:UIAlertControllerStyleActionSheet];
|
|
UIAlertAction *action1 = [UIAlertAction actionWithTitle:action1Title style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
|
PBIssueModelListController *modelListVC = [[PBIssueModelListController alloc] init];
|
modelListVC.powerArr = appDelegate.powerArr;
|
modelListVC.projectModel = self.projectModel;
|
modelListVC.issueAddModel = issueAddModel;
|
[self.navigationController pushViewController:modelListVC animated:YES];
|
}];
|
UIAlertAction *action2 = [UIAlertAction actionWithTitle:action2Title style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
NSIndexPath *path;
|
if ([issueAddModel.key isEqualToString:@"viewPoint"]) {
|
path = [NSIndexPath indexPathForRow:0 inSection:0];
|
issueAddModel.modelsModel = nil;
|
issueAddModel.veiwPointModel = nil;
|
}else {
|
path = [NSIndexPath indexPathForRow:1 inSection:0];
|
issueAddModel.modelsModel = nil;
|
issueAddModel.drawingsInfoModel = nil;
|
issueAddModel.drawingposModel = nil;
|
}
|
if (self.isAddIssue) {
|
[self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationFade];
|
}else {
|
if ([issueAddModel.key isEqualToString:@"viewPoint"]) {
|
NSDictionary *viewPointDic = @{
|
@"modelID" : @"",
|
@"viewPointID" : @""
|
};
|
[self updaIssueWithStatusId:nil andTypeId:nil andRUserIDStr:nil andLUserIDStr:nil andEndDate:nil andViewPoint:viewPointDic andDraw:nil andIndexPath:path];
|
}else {
|
NSDictionary *drawDic = @{
|
@"modelID" : @"",
|
@"imageID" : @"",
|
@"position" : @"",
|
};
|
[self updaIssueWithStatusId:nil andTypeId:nil andRUserIDStr:nil andLUserIDStr:nil andEndDate:nil andViewPoint:nil andDraw:drawDic andIndexPath:path];
|
}
|
}
|
}];
|
UIAlertAction *action3 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
|
[actionSheet addAction:action1];
|
[actionSheet addAction:action2];
|
[actionSheet addAction:action3];
|
[self presentViewController:actionSheet animated:YES completion:nil];
|
}
|
#pragma mark - Table view data source
|
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
return self.dataListM.count - 1 + self.issueDetailModel.relationFiles.count;
|
}
|
|
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
__weak typeof(self) weakSelf = self;
|
if (indexPath.row == 0) {
|
PBIssueAddModel *issueAddModel = self.dataListM[indexPath.row];
|
PBInputTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:InputCellID forIndexPath:indexPath];
|
cell.issueAddModel = issueAddModel;
|
cell.EditTextBlock = ^(NSString *text) {
|
PBEditTextController *editTextVC = [[PBEditTextController alloc] init];
|
editTextVC.text = text;
|
editTextVC.titleText = issueAddModel.title;
|
editTextVC.prompt = issueAddModel.prompt;
|
editTextVC.CompleteEditTextBlock = ^(NSString *text) {
|
issueAddModel.inputStr = text;
|
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
[self updateCompletionIndicator];
|
};
|
[self.navigationController pushViewController:editTextVC animated:YES];
|
};
|
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
return cell;
|
}else if (indexPath.row == 1) {
|
PBIssueAddModel *leftIssueAddModel = self.dataListM[indexPath.row];
|
PBIssueAddModel *rightIssueAddModel = self.dataListM[indexPath.row + 1];
|
PBChooseTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:chooseCellID forIndexPath:indexPath];
|
cell.leftIssueAddModel = leftIssueAddModel;
|
cell.rightIssueAddModel = rightIssueAddModel;
|
cell.ChooseBlock = ^(NSInteger index) {
|
[PBKeyWindow addSubview:self.chooseView];
|
if (self.isAddIssue) {
|
PBIssueNavModel *navModel = [[PBIssueNavModel alloc] init];
|
navModel.ItemName = @"打开";
|
leftIssueAddModel.navModel = navModel;
|
self.chooseView.leftIssueAddModel = leftIssueAddModel;
|
}else {
|
self.chooseView.leftIssueAddModel = leftIssueAddModel;
|
}
|
self.chooseView.rightIssueAddModel = rightIssueAddModel;
|
self.chooseView.statusAndTypeData = self.statusAndTypeData;
|
self.chooseView.index = index;
|
self.chooseView.ChooseCompleteBlock = ^(BOOL isSelectStatus, BOOL isSelectType) {
|
if (isSelectStatus == NO & isSelectType == NO) {
|
return;
|
}
|
[weakSelf updateCompletionIndicator];
|
if (weakSelf.isAddIssue) {
|
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
}else {
|
if (isSelectStatus) {
|
NSString *statusId = leftIssueAddModel.navModel.ItemDetailId;
|
[weakSelf ModifyIssueStatusWithstateID:statusId andIndexPath:indexPath];
|
}else {
|
NSString *typeID = rightIssueAddModel.navModel.ItemDetailId;
|
[weakSelf ModifyIssueTypeWithTypeID:typeID andIndexPath:indexPath];
|
}
|
}
|
};
|
[self.chooseView show];
|
};
|
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
return cell;
|
}else if (indexPath.row == 2) {
|
PBIssueAddModel *issueAddModel = self.dataListM[indexPath.row + 1];
|
PBPersonTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:personCellID forIndexPath:indexPath];
|
cell.issueAddModel = issueAddModel;
|
cell.EditPersonBlock = ^{
|
[PBKeyWindow addSubview:self.editPersonView];
|
self.editPersonView.projectModel = self.projectModel;
|
self.editPersonView.issueListModel = self.issueListModel;
|
self.editPersonView.issueAddModel = issueAddModel;
|
self.editPersonView.EditCompleteBlock = ^{
|
[weakSelf updateCompletionIndicator];
|
if (weakSelf.isAddIssue) {
|
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
}else {
|
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
// NSString *ruserId = nil; NSString *luserId = nil;
|
// NSMutableString *strM = [[NSMutableString alloc] init];
|
// for (PBPersonModel *personModel in issueAddModel.personArr) {
|
// [strM appendFormat:@"%@,",personModel.UserId];
|
// }
|
// if (indexPath.row == 5) {
|
// ruserId = strM.copy;
|
// }else {
|
// luserId = strM.copy;
|
// }
|
// [weakSelf updaIssueWithStatusId:nil andTypeId:nil andRUserIDStr:ruserId andLUserIDStr:luserId andEndDate:nil andViewPoint:nil andDraw:nil andIndexPath:indexPath];
|
}
|
};
|
[self.editPersonView show];
|
};
|
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
return cell;
|
}else if (indexPath.row == 3) {
|
PBIssueAddModel *issueAddModel = self.dataListM[indexPath.row + 1];
|
PBDateTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:dateCellID forIndexPath:indexPath];
|
cell.issueAddModel = issueAddModel;
|
cell.EditDateBlock = ^{
|
[PBKeyWindow addSubview:self.editDateView];
|
self.editDateView.IssueAddModel = issueAddModel;
|
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
|
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
|
if (weakSelf.isAddIssue) {
|
self.editDateView.stareDate = [dateFormatter stringFromDate:[NSDate date]];
|
}else {
|
NSRange range = [self.issueListModel.CreateDate rangeOfString:@"T"];
|
self.editDateView.stareDate = [self.issueListModel.CreateDate substringToIndex:range.location];
|
}
|
self.editDateView.EditCompleteBlock = ^{
|
[weakSelf updateCompletionIndicator];
|
if (weakSelf.isAddIssue){
|
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
}else {
|
[weakSelf ModifyEndDateWithstateDate:issueAddModel.dateStr andIndexPath:indexPath];
|
}
|
};
|
[self.editDateView show];
|
};
|
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
return cell;
|
}else if (indexPath.row == 4) {
|
PBIssueAddModel *issueAddModel = self.dataListM[indexPath.row + 1];
|
PBPersonTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:personCellID forIndexPath:indexPath];
|
cell.isLabel = YES;
|
cell.issueAddModel = issueAddModel;
|
cell.EditPersonBlock = ^{
|
[PBKeyWindow addSubview:self.editLabelView];
|
self.editLabelView.projectModel = self.projectModel;
|
self.editLabelView.issueAddModel = issueAddModel;
|
self.editLabelView.EditCompleteBlock = ^{
|
if (weakSelf.isAddIssue) {
|
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
}else {
|
NSMutableString *strM = [[NSMutableString alloc] init];
|
for (PBTagModel *tagModel in issueAddModel.labelArr) {
|
[strM appendFormat:@"%@,",tagModel.it_guid];
|
}
|
if([strM length] > 0){
|
NSString *tagStr = [strM substringToIndex:([strM length]-1)];
|
[weakSelf OverrideIssueTagWithTagIds:tagStr andIndexPath:indexPath];
|
}else {
|
[weakSelf OverrideIssueTagWithTagIds:@"" andIndexPath:indexPath];
|
}
|
}
|
};
|
[self.editLabelView show];
|
};
|
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
return cell;
|
}else {
|
NSInteger index = indexPath.row - (self.dataListM.count - 1);
|
PBDocModel *docModel = [PBDocModel yy_modelWithDictionary:self.issueDetailModel.relationFiles[index]];
|
PBDocListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:docCellID forIndexPath:indexPath];
|
cell.docModel = docModel;
|
return cell;
|
}
|
}
|
//- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
// if (indexPath.row >= (self.dataListM.count - 1)) {
|
// return 64.f;
|
// }
|
// return 100;
|
//}
|
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
if (indexPath.row >= (self.dataListM.count - 1)) {
|
NSInteger index = indexPath.row - (self.dataListM.count - 1);
|
PBDocModel *docModel = [PBDocModel yy_modelWithDictionary:self.issueDetailModel.relationFiles[index]];
|
if ([[docModel.FileExtensions lowercaseString] isEqualToString:@".dwg"]){
|
[self downDwgFileWith:docModel];
|
}else if ([[docModel.FileExtensions lowercaseString] isEqualToString:@".mp4"] || [[docModel.FileExtensions lowercaseString] isEqualToString:@".mp3"]){
|
[self downFileWith:docModel];
|
// }else if ([[docModel.FileExtensions lowercaseString] isEqualToString:@".pdf"]){
|
// [self downPDFFileWith:docModel];
|
}else {
|
NSString *downUrl = [NSString stringWithFormat:@"%@/api/Doc/GetHideFile?ProjectID=%@&FileId=%@&FileType=Issue",BimUrl,self.projectModel.bimcomposerid,docModel.FileId];
|
NSString *downUrlUtF8 = [downUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@":/?=&"].invertedSet];
|
NSString *firstUrl = [NSString stringWithFormat:@"%@/api/DocViewer/Viewer/Show?downloadUrl=%@&tempNameAfterDownload=%@", BaseUrl,downUrlUtF8 ,docModel.FileName];
|
NSString *docUrl = [NSString stringWithFormat:@"%@/Content/PDFJS/web/Viewer.html?file=%@", BaseUrl, [firstUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@".:/?=&%"].invertedSet]];
|
|
|
|
|
PBPreviewDocViewController *previewDocVC = [[PBPreviewDocViewController alloc] init];
|
previewDocVC.projectModel = self.projectModel;
|
previewDocVC.name = docModel.FileName;
|
previewDocVC.docUrl = docUrl;
|
previewDocVC.modalPresentationStyle = UIModalPresentationFullScreen;
|
[self presentViewController:previewDocVC animated:NO completion:nil];
|
}
|
}
|
}
|
- (void)downFileWith:(PBDocModel *)docModel {
|
NSString *folderPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
|
NSFileManager * manager = [NSFileManager defaultManager];
|
if (![manager fileExistsAtPath :folderPath]){
|
[self downLoadFileWith:docModel];
|
return;
|
}
|
NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator];
|
NSString * fileName;
|
NSString * fileAbsolutePath = nil;
|
while ((fileName = [childFilesEnumerator nextObject]) != nil ){
|
if ([fileName isEqualToString:[NSString stringWithFormat:@"%@%@",docModel.FileId, docModel.FileExtensions]]) {
|
fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];
|
}
|
}
|
if (fileAbsolutePath == nil) {
|
[self downLoadFileWith:docModel];
|
}else {
|
PBPreviewDocViewController *previewDocVC = [[PBPreviewDocViewController alloc] init];
|
previewDocVC.path = fileAbsolutePath;
|
previewDocVC.name = docModel.FileName;
|
previewDocVC.modalPresentationStyle = UIModalPresentationFullScreen;
|
[self presentViewController:previewDocVC animated:NO completion:nil];
|
}
|
}
|
- (void)downLoadFileWith:(PBDocModel *)docModel {
|
[YJProgressHUD showProgress:@"正在下载文件" inView:self.view];
|
[[PBNetworkTools sharedTools] RequestDownLoadDwgFileWithProjectID:self.projectModel.bimcomposerid andFileID:docModel.FileId andExtension:docModel.FileExtensions andCallBack:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
|
if (error) {
|
[YJProgressHUD showMessage:@"下载失败" inView:nil];
|
NSLog(@"%@",error);
|
return;
|
}
|
NSLog(@"filePath:%@",filePath);
|
NSString *str = [filePath absoluteString];
|
str = [str stringByReplacingOccurrencesOfString:@"file://" withString:@""];
|
[YJProgressHUD hide];
|
PBPreviewDocViewController *previewDocVC = [[PBPreviewDocViewController alloc] init];
|
previewDocVC.path = str;
|
previewDocVC.name = docModel.FileName;
|
previewDocVC.modalPresentationStyle = UIModalPresentationFullScreen;
|
[self presentViewController:previewDocVC animated:NO completion:nil];
|
}];
|
}
|
//- (void)downPDFFileWith:(PBDocModel *)docModel {
|
// NSString *folderPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
|
// NSFileManager * manager = [NSFileManager defaultManager];
|
// if (![manager fileExistsAtPath :folderPath]){
|
// [self downLoadPDfFileWith:docModel.FileId andName:docModel.FileName];
|
// return;
|
// }
|
// NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator];
|
// NSString * fileName;
|
// NSString * fileAbsolutePath = nil;
|
// while ((fileName = [childFilesEnumerator nextObject]) != nil ){
|
// if ([fileName isEqualToString:[NSString stringWithFormat:@"%@.pdf",docModel.FileId]]) {
|
// fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];
|
// }
|
// }
|
// if (fileAbsolutePath == nil) {
|
// [self downLoadPDfFileWith:docModel.FileId andName:docModel.FileName];
|
// }else {
|
// PBPreviewDocViewController *previewDocVC = [[PBPreviewDocViewController alloc] init];
|
// previewDocVC.path = fileAbsolutePath;
|
// previewDocVC.name = docModel.FileName;
|
// previewDocVC.modalPresentationStyle = UIModalPresentationFullScreen;
|
// [self presentViewController:previewDocVC animated:NO completion:nil];
|
// }
|
//}
|
//- (void)downLoadPDfFileWith:(NSString *)fileID andName:(NSString *)name {
|
// [YJProgressHUD showProgress:@"正在下载文件" inView:self.view];
|
// [[PBNetworkTools sharedTools] RequestDownLoadDwgFileWithProjectID:self.projectModel.bimcomposerid andFileID:fileID andExtension:@".pdf" andCallBack:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
|
// if (error) {
|
// [YJProgressHUD showMessage:@"下载失败" inView:nil];
|
// NSLog(@"%@",error);
|
// return;
|
// }
|
// NSLog(@"filePath:%@",filePath);
|
// NSString *str = [filePath absoluteString];
|
// str = [str stringByReplacingOccurrencesOfString:@"file://" withString:@""];
|
// [YJProgressHUD hide];
|
// PBPreviewDocViewController *previewDocVC = [[PBPreviewDocViewController alloc] init];
|
// previewDocVC.path = str;
|
// previewDocVC.name = name;
|
// previewDocVC.modalPresentationStyle = UIModalPresentationFullScreen;
|
// [self presentViewController:previewDocVC animated:NO completion:nil];
|
// }];
|
//}
|
- (void)downDwgFileWith:(PBDocModel *)docModel {
|
NSString *folderPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
|
NSFileManager * manager = [NSFileManager defaultManager];
|
if (![manager fileExistsAtPath :folderPath]){
|
[self downLoadDwgFileWith:docModel.FileId];
|
return;
|
}
|
NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator];
|
NSString * fileName;
|
NSString * fileAbsolutePath = nil;
|
while ((fileName = [childFilesEnumerator nextObject]) != nil ){
|
if ([fileName isEqualToString:[NSString stringWithFormat:@"%@.dwg",docModel.FileId]]) {
|
fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];
|
}
|
}
|
if (fileAbsolutePath == nil) {
|
[self downLoadDwgFileWith:docModel.FileId];
|
}else {
|
// DwgViewController *destViewController = [DwgViewController new];
|
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"DwgViewController" bundle:nil];
|
DwgViewController *destViewController = [storyboard instantiateInitialViewController];
|
destViewController.cadFileName = fileAbsolutePath;
|
destViewController.modalPresentationStyle = UIModalPresentationFullScreen;
|
[self presentViewController:destViewController animated:YES completion:nil];
|
|
}
|
}
|
- (void)downLoadDwgFileWith:(NSString *)fileID {
|
[YJProgressHUD showProgress:@"正在下载DWG文件" inView:self.view];
|
[[PBNetworkTools sharedTools] RequestDownLoadIssueDwgFileWithProjectID:self.projectModel.bimcomposerid andFileID:fileID andExtension:@".dwg" andCallBack:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
|
if (error) {
|
[YJProgressHUD showMessage:@"下载失败" inView:nil];
|
NSLog(@"%@",error);
|
return;
|
}
|
NSLog(@"filePath:%@",filePath);
|
NSString *str = [filePath absoluteString];
|
str = [str stringByReplacingOccurrencesOfString:@"file://" withString:@""];
|
[YJProgressHUD hide];
|
DwgViewController *destViewController = [DwgViewController new];
|
destViewController.cadFileName = str;
|
destViewController.modalPresentationStyle = UIModalPresentationFullScreen;
|
[self presentViewController:destViewController animated:YES completion:nil];
|
}];
|
}
|
- (void)ModifyIssueTypeWithTypeID:(NSString *)typeID andIndexPath:(NSIndexPath *)indexPath {
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
[[PBNetworkTools sharedTools] ModifyIssueTypeWithIssueID:self.issueListModel.IssueId andID:typeID andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"修改失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
[YJProgressHUD hide];
|
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
}else {
|
[YJProgressHUD showMessage:@"修改失败" inView:self.view];
|
}
|
}];
|
}
|
- (void)ModifyIssueStatusWithstateID:(NSString *)stateID andIndexPath:(NSIndexPath *)indexPath {
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
[[PBNetworkTools sharedTools] ModifyIssueStatusWithIssueID:self.issueListModel.IssueId andID:stateID andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"修改失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
[YJProgressHUD hide];
|
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
}else {
|
[YJProgressHUD showMessage:@"修改失败" inView:self.view];
|
}
|
}];
|
}
|
- (void)ModifyEndDateWithstateDate:(NSString *)date andIndexPath:(NSIndexPath *)indexPath {
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
[[PBNetworkTools sharedTools] ModifyIssueEndDateWithIssueID:self.issueListModel.IssueId andEndData:date andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"修改失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
[YJProgressHUD hide];
|
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
}else {
|
[YJProgressHUD showMessage:@"修改失败" inView:self.view];
|
}
|
}];
|
}
|
- (void)OverrideIssueTagWithTagIds:(NSString *)tagIds andIndexPath:(NSIndexPath *)indexPath {
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
[[PBNetworkTools sharedTools] OverrideIssueTagWithIssueID:self.issueListModel.IssueId andRit_tagIds:tagIds andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"修改标签失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
[YJProgressHUD hide];
|
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
}else {
|
[YJProgressHUD showMessage:@"修改标签失败" inView:self.view];
|
}
|
}];
|
}
|
|
|
- (void)updaIssueWithStatusId:(NSString *)statusId andTypeId:(NSString *)typeId andRUserIDStr:(NSString *)ruserIDs andLUserIDStr:(NSString *)luserIDs andEndDate:(NSString *)endDate andViewPoint:(NSDictionary *)viewPointDic andDraw:(NSDictionary *)drawDic andIndexPath:(NSIndexPath *)indexPath {
|
if ([self.issueListModel.DeleteMark isEqualToString:@"2"]) {
|
[YJProgressHUD showMessage:@"已归档,无法修改" inView:self.view];
|
return;
|
}
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
[[PBNetworkTools sharedTools] RequestUpdateIssueWithIssueID:self.issueListModel.IssueId andIssueStatusID:statusId andIssueTypeID:typeId andRUserIDStr:ruserIDs andLUserIDStr:luserIDs andEndDate:endDate andViewPoint:viewPointDic andDraw:drawDic andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
NSLog(@"%@",error);
|
[YJProgressHUD showMessage:@"修改失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
if ([str isEqualToString:@"success"]) {
|
[YJProgressHUD hide];
|
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];
|
|
}else {
|
[YJProgressHUD showMessage:@"修改失败" inView:self.view];
|
}
|
}];
|
}
|
|
- (void)takePhotoLibrary {
|
PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
|
if (status == PHAuthorizationStatusNotDetermined) {//未作出回应
|
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
|
if(status == PHAuthorizationStatusAuthorized) {
|
dispatch_async(dispatch_get_main_queue(), ^{//用户点击ok
|
[self pushLFImagePickerController];
|
});
|
} else {
|
dispatch_async(dispatch_get_main_queue(), ^{//点击不允许访问
|
NSLog(@"点击不允许访问");
|
});
|
}
|
}];
|
}else if (status == PHAuthorizationStatusRestricted) {//没有被授权访问 可能家长控制
|
|
}else if (status == PHAuthorizationStatusDenied) {//已明确否认相册权限
|
UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"无法访问相册" message:@"请在iPhone的""设置-隐私-相册""中允许访问相册" preferredStyle:UIAlertControllerStyleAlert];
|
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
|
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"设置" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
if (@available(iOS 10.0, *)) {
|
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
|
} else {
|
NSLog(@"选择取消");
|
}
|
}];
|
[alertController addAction:cancelAction];
|
[alertController addAction:okAction];
|
[self presentViewController:alertController animated:YES completion:nil];
|
}else if (status == PHAuthorizationStatusAuthorized){//有权限访问
|
[self pushLFImagePickerController];
|
}
|
}
|
|
- (void)pushLFImagePickerController {
|
NSInteger maxImageCount = 9;
|
if (!self.isAddIssue) {
|
maxImageCount = 9 - self.associatedDocs.count;
|
}else {
|
maxImageCount = 9 - self.selectedPhotos.count;
|
}
|
LFImagePickerController *imagePicker = [[LFImagePickerController alloc] initWithMaxImagesCount:maxImageCount delegate:self];
|
imagePicker.allowTakePicture = YES;//内部显示相机
|
imagePicker.isSelectOriginalPhoto = YES;//是否选择原图
|
imagePicker.allowPickingType = LFPickingMediaTypePhoto;//用户是否可以选择视频
|
imagePicker.allowPickingOriginalPhoto = NO;//原图按钮将隐藏,用户将不能发送原图
|
imagePicker.maxPhotoBytes = 1024 * 1024 * 100;//最大图片所选字节大小
|
if (self.isAddIssue) {
|
// imagePicker.selectedAssets = self.selectedAssets;
|
}
|
if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0f) {
|
imagePicker.syncAlbum = YES; /** 实时同步相册 */
|
}
|
[self presentViewController:imagePicker animated:YES completion:nil];
|
}
|
|
- (void)lf_imagePickerController:(LFImagePickerController *)picker didFinishPickingResult:(NSArray <LFResultObject /* <LFResultImage/LFResultVideo> */*> *)results {
|
NSMutableArray *imageArrM = [[NSMutableArray alloc] init];
|
// NSMutableArray *assetsArrM = [[NSMutableArray alloc] init];
|
for (NSInteger i = 0; i < results.count; i++) {
|
LFResultObject *result = results[i];
|
if ([result isKindOfClass:[LFResultImage class]]){
|
LFResultImage *resultImage = (LFResultImage *)result;
|
NSData *imageData = UIImageJPEGRepresentation(resultImage.originalImage, 0.5);
|
UIImage *originalImage = [UIImage imageWithData:imageData];
|
[imageArrM addObject:originalImage];
|
// [assetsArrM addObject:result.asset];
|
}
|
}
|
if (_isAddIssue) {
|
// self.selectedAssets = assetsArrM;
|
[self.selectedPhotos addObjectsFromArray:imageArrM.copy];
|
[self setTableViewHeaderView];
|
}else {
|
[self uploadFileWithFile:imageArrM.copy];
|
}
|
}
|
|
- (void)deleteRelationImageWithIndex:(NSInteger)index {
|
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"确定删除?" message:@"" preferredStyle:UIAlertControllerStyleAlert];
|
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
|
UIAlertAction *determineAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
NSDictionary *dict = self.associatedDocs[index];
|
[[PBNetworkTools sharedTools] RemoveIssueDocRelWithIssueID:self.issueListModel.IssueId andFileId:[dict valueForKey:@"bf_guid"] andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
[YJProgressHUD showMessage:@"删除失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
[YJProgressHUD hide];
|
[self.associatedDocs removeObjectAtIndex:index];
|
[self setTableViewHeaderView];
|
}else {
|
[YJProgressHUD showMessage:@"删除失败" inView:self.view];
|
}
|
}];
|
}];
|
[alertVC addAction:cancelAction];
|
[alertVC addAction:determineAction];
|
[self presentViewController:alertVC animated:YES completion:nil];
|
}
|
|
|
- (void)setIsAddIssue:(BOOL)isAddIssue {
|
_isAddIssue = isAddIssue;
|
if (_isAddIssue) {
|
self.title = @"新建问题";
|
}else {
|
self.title = @"详情";
|
}
|
}
|
|
- (void)setIssueListModel:(PBIssueListModel *)issueListModel {
|
_issueListModel = issueListModel;
|
}
|
- (NSMutableArray *)imageDocArr {
|
if (_imageDocArr == nil) {
|
_imageDocArr = [[NSMutableArray alloc] init];
|
}
|
return _imageDocArr;
|
}
|
|
- (PBChooseView *)chooseView {
|
if (_chooseView == nil) {
|
_chooseView = [[PBChooseView alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
_chooseView.visualViewHeight = 468.f;
|
_chooseView.isAdd = self.isAddIssue;
|
}
|
return _chooseView;
|
}
|
- (PBEditPersonView *)editPersonView {
|
if (_editPersonView == nil) {
|
_editPersonView = [[PBEditPersonView alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
CGFloat bottomH = 0.f;
|
if (IS_IPHONE_X) {
|
bottomH = 34.f;
|
}
|
_editPersonView.visualViewHeight = 468.f + bottomH;
|
}
|
return _editPersonView;
|
}
|
- (PBEditLableView *)editLabelView {
|
if (_editLabelView == nil) {
|
_editLabelView = [[PBEditLableView alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
CGFloat bottomH = 0.f;
|
if (IS_IPHONE_X) {
|
bottomH = 34.f;
|
}
|
_editLabelView.visualViewHeight = 465.f + bottomH;;
|
}
|
return _editLabelView;
|
}
|
- (PBEditDateView *)editDateView {
|
if (_editDateView == nil) {
|
_editDateView = [[PBEditDateView alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
_editDateView.visualViewHeight = 468.f;
|
}
|
return _editDateView;
|
}
|
- (NSMutableArray *)selectedPhotos {
|
if (_selectedPhotos == nil) {
|
_selectedPhotos = [[NSMutableArray alloc] init];
|
}
|
return _selectedPhotos;
|
}
|
- (NSMutableArray *)selectedAssets {
|
if (_selectedAssets == nil) {
|
_selectedAssets = [[NSMutableArray alloc] init];
|
}
|
return _selectedAssets;
|
}
|
- (NSMutableArray *)associatedDocs {
|
if (_associatedDocs == nil) {
|
_associatedDocs = [[NSMutableArray alloc] init];
|
}
|
return _associatedDocs;
|
}
|
- (void)setStatusAndTypeData:(NSDictionary *)statusAndTypeData {
|
_statusAndTypeData = statusAndTypeData;
|
}
|
|
- (void)setProjectModel:(PBProjectModel *)projectModel {
|
_projectModel = projectModel;
|
}
|
|
- (void)setViewPointStr:(NSString *)viewPointStr {
|
_viewPointStr = viewPointStr;
|
}
|
- (void)setBase64Image:(NSString *)base64Image {
|
_base64Image = base64Image;
|
}
|
|
- (void)setModelID:(NSString *)modelID {
|
_modelID = modelID;
|
}
|
- (void)dealloc {
|
[PBNoteCenter removeObserver:self];
|
}
|
|
|
|
/*
|
// Override to support conditional editing of the table view.
|
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
|
// Return NO if you do not want the specified item to be editable.
|
return YES;
|
}
|
*/
|
|
/*
|
// Override to support editing the table view.
|
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
|
if (editingStyle == UITableViewCellEditingStyleDelete) {
|
// Delete the row from the data source
|
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
|
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
|
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
|
}
|
}
|
*/
|
|
/*
|
// Override to support rearranging the table view.
|
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
|
}
|
*/
|
|
/*
|
// Override to support conditional rearranging of the table view.
|
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
|
// Return NO if you do not want the item to be re-orderable.
|
return YES;
|
}
|
*/
|
|
/*
|
#pragma mark - Navigation
|
|
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
// Get the new view controller using [segue destinationViewController].
|
// Pass the selected object to the new view controller.
|
}
|
*/
|
|
@end
|