MyTDTopicCreateVC.m 65 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519
  1. //
  2. // MyTDTopicCreateVC.m
  3. // smartRhino
  4. //
  5. // Created by niuzhen on 2019/12/20.
  6. // Copyright © 2019 tederen. All rights reserved.
  7. //
  8. #import "MyTDTopicCreateVC.h"
  9. #import "LYLPhotoTailoringTool.h"
  10. #import "FWZFileGetTool.h"
  11. #import "FWZGetNoteBookTool.h"
  12. #import "RichTextEditViewController.h"
  13. #import "AddLookUpUserSecondVC.h"
  14. #import "MyTDTopicSelectExtentVC.h"
  15. #import "FecordJoinWorkFlowListController.h"
  16. #import "_NoInputAccessoryView.h"
  17. #import "SelectSaveVC.h"
  18. #import "ShowBtn.h"
  19. #import "HomeDetailController.h"
  20. #import "ChatMsgNoticeDetailVC.h"
  21. #import "NoteBookDetailVC.h"
  22. #import "MyFavoriteVC.h"
  23. #import "NoteBookVC.h"
  24. #import "TDInterLeterDetailVC.h"
  25. #import "FileOpenViewController.h"
  26. #import "EMChatFileShowVC.h"
  27. #import "MyTDTopicCreateVC.h"
  28. #import "NoticeUnreadVC.h"
  29. #import "TDGroupInfoListVC.h"
  30. #import "DownFileViewController.h"
  31. #import "CountDataVC.h"
  32. #import "WorkFlowDetailsController.h"
  33. #import "MyTDGroupViewController.h"
  34. #import "MoveViewController.h"
  35. #import "ShowKeepNoticeAlert.h"
  36. #import "YCMenuView.h"
  37. #import "MyApprovalPageDetail.h"
  38. #import "OtherNoteBookVC.h"
  39. #import "OtherFavoriteVC.h"
  40. #import <objc/runtime.h>
  41. @interface MyTDTopicCreateVC ()<WKUIDelegate,WKNavigationDelegate,UIScrollViewDelegate,WKScriptMessageHandler>
  42. @property (weak, nonatomic) IBOutlet UIView *NavBarV;
  43. @property (weak, nonatomic) IBOutlet UIButton *DoneBtn;
  44. @property (nonatomic,strong) WKWebView *webView;
  45. @property (weak, nonatomic) IBOutlet UILabel *TitleL;
  46. @property (nonatomic,assign) CGFloat keyBoardH;
  47. @property (nonatomic,assign) BOOL isShoujianren;
  48. @property (nonatomic,assign) BOOL isChaosongren;
  49. @property (nonatomic,assign) BOOL isNull;
  50. @property (nonatomic,assign) NSInteger meetingId;
  51. @property (nonatomic,strong) NSMutableArray <SelectModel *> *chaoShongArray;
  52. @property (nonatomic,strong) NSMutableArray <SelectModel *> *shouJianArray;
  53. @property (nonatomic,strong) NSMutableArray * MeetingArray;
  54. @property (strong, nonatomic) ShowBtn * titleBtn;
  55. @property (copy, nonatomic) NSDictionary * H5JsonDict;
  56. @end
  57. @implementation MyTDTopicCreateVC
  58. + (MyTDTopicCreateVC *)initMyTDTopicCreateVC{
  59. MyTDTopicCreateVC *controller = [StoryboardManager.shared.myTDTopicExtent instantiateViewControllerWithIdentifier:@"MyTDTopicCreateVC"];
  60. return controller;
  61. }
  62. - (ShowBtn *)titleBtn
  63. {
  64. if (!_titleBtn) {
  65. _titleBtn = [[ShowBtn alloc] init];
  66. }
  67. return _titleBtn;
  68. }
  69. -(NSMutableArray *)getMenuDataSource{
  70. NSMutableArray *menuDataSourceArray = [[NSMutableArray alloc] init];
  71. NSArray * titleArray = @[@"写信件",@"匿名信"];
  72. for(int i = 0;i < titleArray.count;i ++){
  73. NSString *titleStr = [titleArray objectAtIndex:i];
  74. WS(weakSelf);
  75. YCMenuAction *actionMenu = [YCMenuAction actionWithTitle:titleStr image:nil handler:^(YCMenuAction *action) {
  76. [weakSelf autoSizeBtn:action.title];
  77. if([@"写信件" isEqualToString:action.title]){
  78. weakSelf.MailType = 1;
  79. }
  80. else if ([@"匿名信" isEqualToString:action.title]){
  81. weakSelf.MailType = 2;
  82. }else{
  83. weakSelf.MailType = 1;
  84. }
  85. }];
  86. [menuDataSourceArray addObject:actionMenu];
  87. }
  88. return menuDataSourceArray;
  89. }
  90. - (void)autoSizeBtn:(NSString *)title
  91. {
  92. if (title.length > 9) {
  93. NSRange range1 = NSMakeRange(9, title.length - 9);
  94. NSString *resultStr1 = [title stringByReplacingCharactersInRange:range1 withString:@"..."];
  95. [self.titleBtn setLabelTitle:resultStr1];
  96. }else{
  97. [self.titleBtn setLabelTitle:title];
  98. }
  99. WS(weakSelf);
  100. [self.titleBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
  101. make.center.mas_equalTo(weakSelf.NavBarV);
  102. }];
  103. [self.NavBarV layoutIfNeeded];
  104. }
  105. - (void)viewDidLoad {
  106. [super viewDidLoad];
  107. [self.DoneBtn setEnabled:NO];
  108. self.fd_prefersNavigationBarHidden = YES;
  109. WS(weakSelf);
  110. [self.DoneBtn setAction:^{
  111. [weakSelf submit];
  112. }];
  113. [self.NavBarV addSubview:self.titleBtn];
  114. [self.titleBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  115. make.center.mas_equalTo(weakSelf.NavBarV);
  116. }];
  117. [self.view addSubview:self.webView];
  118. [self.webView mas_makeConstraints:^(MASConstraintMaker *make) {
  119. make.top.mas_equalTo(weakSelf.NavBarV.mas_bottom);
  120. make.left.right.mas_equalTo(weakSelf.view);
  121. if (@available(iOS 11.0, *)) {
  122. make.bottom.equalTo(weakSelf.view.mas_safeAreaLayoutGuideBottom);
  123. } else {
  124. make.bottom.equalTo(weakSelf.view.mas_bottom);
  125. }
  126. }];
  127. self.webView.UIDelegate = self;
  128. // 导航代理
  129. self.webView.navigationDelegate = self;
  130. self.webView.scrollView.delegate = self;
  131. self.automaticallyAdjustsScrollViewInsets = YES;
  132. NSURL *pathUrl = [NSURL URLWithString:HtmlHost(@"/mobile/editor")];
  133. // NSURL *pathUrl = [NSURL URLWithString:@"http://192.168.0.118:8080/admin/mobile/editor"];
  134. NSURLRequest *request = [NSURLRequest requestWithURL:pathUrl];
  135. [self.webView loadRequest:request];
  136. // [self hideWKWebviewKeyboardShortcutBar:self.webView];
  137. switch (self.type) {
  138. case CollectModel_Notice:
  139. {
  140. self.TitleL.hidden = NO;
  141. self.titleBtn.hidden = YES;
  142. self.TitleL.text = @"写通知";
  143. }
  144. break;
  145. case CollectModel_Toipc:
  146. {
  147. self.TitleL.hidden = NO;
  148. self.titleBtn.hidden = YES;
  149. self.TitleL.text = @"新建话题";
  150. }
  151. break;
  152. case CollectModel_NewTopic:
  153. {
  154. [self setDowntitleBtn];
  155. self.TitleL.hidden = YES;
  156. self.titleBtn.hidden = NO;
  157. if (self.FolderName.length > 0) {
  158. [self autoSizeBtn:self.FolderName];
  159. }else{
  160. [self getTopicDefault];
  161. }
  162. }
  163. break;
  164. case CollectModel_NoteBook:
  165. {
  166. [self selectFold];
  167. self.TitleL.hidden = YES;
  168. self.titleBtn.hidden = NO;
  169. if (self.FolderName.length > 0) {
  170. [self autoSizeBtn:self.FolderName];
  171. }else{
  172. [self getNoteDefault];
  173. }
  174. }
  175. break;
  176. case CollectModel_Group:
  177. {
  178. self.TitleL.hidden = NO;
  179. self.titleBtn.hidden = YES;
  180. self.TitleL.text = @"新建话题";
  181. }
  182. break;
  183. case CollectModel_InterMail:
  184. {
  185. if (self.replayType == MailReplayOne || self.replayType == MailReplayAll) {
  186. self.TitleL.hidden = NO;
  187. self.titleBtn.hidden = YES;
  188. self.TitleL.text = @"回复信函";
  189. }else{
  190. self.TitleL.hidden = YES;
  191. self.titleBtn.hidden = NO;
  192. [self selectMailType];
  193. if (self.MailType == 2) {
  194. [self autoSizeBtn:@"匿名信"];
  195. }else{
  196. [self autoSizeBtn:@"写信件"];
  197. self.MailType = 1;
  198. }
  199. }
  200. }
  201. break;
  202. case CollectModel_meetMian:
  203. {
  204. self.TitleL.hidden = NO;
  205. self.titleBtn.hidden = YES;
  206. self.TitleL.text = @"会议纪要";
  207. }
  208. break;
  209. default:
  210. break;
  211. }
  212. if (self.isEdit) {
  213. if (self.isFromDraft) {
  214. [self.DoneBtn setTitle:@"发送" forState:UIControlStateNormal];
  215. }else{
  216. [self.DoneBtn setTitle:@"完成" forState:UIControlStateNormal];
  217. }
  218. }else{
  219. if (self.type == CollectModel_NewTopic || self.type == CollectModel_Toipc || self.type == CollectModel_NoteBook) {
  220. [self.DoneBtn setTitle:@"完成" forState:UIControlStateNormal];
  221. }else{
  222. [self.DoneBtn setTitle:@"发送" forState:UIControlStateNormal];
  223. }
  224. }
  225. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ChangetitleBtn:) name:SELECTEXTENTSUCCESS object:nil];
  226. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(selectMeetSearch:) name:SELECTMEETFECORD object:nil];
  227. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillShow:) name:UIKeyboardWillShowNotification object:nil];
  228. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillHide:) name:UIKeyboardWillHideNotification object:nil];
  229. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recviveChaoSongRen:) name:NOTIFI_ChaoSongRen object:nil];
  230. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(selectFolder:) name:NOTIFI_SELECTCREATENOTEFOLDER object:nil];
  231. }
  232. - (void)selectMailType
  233. {
  234. WS(weakSelf);
  235. [self.titleBtn setAction:^{
  236. NSMutableArray *menuDataSourceArray = [weakSelf getMenuDataSource];
  237. YCMenuView *view = [YCMenuView menuWithActions:menuDataSourceArray width:114 relyonView:weakSelf.titleBtn];
  238. view.menuColor = RGB(255, 255, 255);
  239. view.separatorColor = RGB(234, 234, 234);
  240. view.textColor = RGB(102, 102, 102);
  241. view.textFont = [UIFont systemFontOfSize:16.0];
  242. view.menuCellHeight = 43.5;
  243. view.maxDisplayCount = 10;
  244. view.offset = -6;
  245. [view show];
  246. }];
  247. }
  248. - (void)upDateAction:(NSString *)action
  249. {
  250. [self.webView evaluateJavaScript:action completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  251. NSLog(@"data=====%@",data);
  252. NSLog(@"error=====%@",error);
  253. }];
  254. }
  255. - (void)getTopicDefault
  256. {
  257. WS(weakSelf);
  258. NSString * url = [NSString stringWithFormat:@"%@%d",Host(API_APP_Middle_Enjoy_Defaul),21];
  259. [[HttpManager sharedHttpManager] GETUrl:url parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) {
  260. dispatch_async(dispatch_get_main_queue(), ^{
  261. NSInteger MiddleId = [[responseObject objectForKey:@"MiddleId"] integerValue];
  262. if (MiddleId > 0) {
  263. weakSelf.FolderId = [[responseObject objectForKey:@"MiddleId"] integerValue];
  264. [weakSelf setSelectExtentText:[responseObject objectForKey:@"FolderName"]];
  265. }else{
  266. weakSelf.FolderId = 0;
  267. [weakSelf autoSizeBtn:@"选择发布范围"];
  268. }
  269. });
  270. } failure:^(NSError * _Nonnull error) {
  271. }];
  272. }
  273. - (void)getNoteDefault
  274. {
  275. WS(weakSelf);
  276. NSString * url = [NSString stringWithFormat:@"%@%d",Host(API_APP_Middle_Enjoy_Defaul),4];
  277. [[HttpManager sharedHttpManager] GETUrl:url parameters:@{} responseStyle:JOSN success:^(id _Nonnull responseObject) {
  278. dispatch_async(dispatch_get_main_queue(), ^{
  279. NSInteger MiddleId = [[responseObject objectForKey:@"MiddleId"] integerValue];
  280. if (MiddleId > 0) {
  281. weakSelf.FolderId = [[responseObject objectForKey:@"MiddleId"] integerValue];
  282. [weakSelf autoSizeBtn:[responseObject objectForKey:@"FolderName"]];
  283. }else{
  284. weakSelf.FolderId = 0;
  285. [weakSelf autoSizeBtn:@"根目录"];
  286. }
  287. });
  288. } failure:^(NSError * _Nonnull error) {
  289. }];
  290. }
  291. - (void)selectFold{
  292. WS(weakSelf);
  293. [self.titleBtn setAction:^{
  294. SelectSaveVC * vc = [SelectSaveVC initSelectSaveVC];
  295. vc.isFromCreateBookVc = YES;
  296. vc.TypeId = CreateNotesType;
  297. vc.ParentId = 0;
  298. vc.FolderIds = @[].mutableCopy;
  299. vc.titleStr = @"选择存入范围";
  300. [weakSelf.navigationController pushViewController:vc animated:YES];
  301. }];
  302. }
  303. - (void)selectFolder:(NSNotification *)noti
  304. {
  305. NSDictionary * dict = noti.userInfo;
  306. [self autoSizeBtn:[dict objectForKey:@"FolderName"]];
  307. self.FolderId = [[dict objectForKey:@"FolderId"] integerValue];
  308. }
  309. - (void)ChangetitleBtn:(NSNotification *)notification
  310. {
  311. NSDictionary * dict = notification.userInfo;
  312. NSString * title = [NSString stringWithFormat:@"%@",[dict objectForKey:@"Name"]];
  313. self.FolderId = [[dict objectForKey:@"Id"] integerValue];
  314. if (title.length > 0) {
  315. [self setSelectExtentText:title];
  316. }
  317. }
  318. - (void)setDowntitleBtn
  319. {
  320. WS(weakSelf);
  321. [self.titleBtn setAction:^{
  322. MyTDTopicSelectExtentVC * vc = [MyTDTopicSelectExtentVC initMyTDTopicSelectExtentVC];
  323. vc.isSubVC = NO;
  324. vc.titleStr = @"选择发布范围";
  325. [weakSelf.navigationController pushViewController:vc animated:YES];
  326. }];
  327. }
  328. - (void)setSelectExtentText:(NSString *)title
  329. {
  330. if (title.length > 5) {
  331. NSRange range1 = NSMakeRange(5, title.length - 5);
  332. NSString *resultStr1 = [title stringByReplacingCharactersInRange:range1 withString:@"..."];
  333. NSString * title = [NSString stringWithFormat:@"发布范围:%@",resultStr1];
  334. [self autoSizeBtn:title];
  335. }else{
  336. NSString * cusTitle = [NSString stringWithFormat:@"发布范围:%@",title];
  337. [self autoSizeBtn:cusTitle];
  338. }
  339. }
  340. #pragma mark - layload
  341. - (WKWebView *)webView
  342. {
  343. if (!_webView) {
  344. WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
  345. // 实例化对象
  346. WKUserContentController* userContent = [[WKUserContentController alloc] init];
  347. [userContent addScriptMessageHandler:self name:@"chosePic"];
  348. [userContent addScriptMessageHandler:self name:@"toPZ"];
  349. [userContent addScriptMessageHandler:self name:@"toBJ"];
  350. [userContent addScriptMessageHandler:self name:@"toSC"];
  351. [userContent addScriptMessageHandler:self name:@"toWJ"];
  352. [userContent addScriptMessageHandler:self name:@"keyBoard"];
  353. [userContent addScriptMessageHandler:self name:@"approverCheckUsers"];
  354. [userContent addScriptMessageHandler:self name:@"carbonCopyUsers"];
  355. [userContent addScriptMessageHandler:self name:@"changeState"];
  356. [userContent addScriptMessageHandler:self name:@"getType"];
  357. [userContent addScriptMessageHandler:self name:@"to"];
  358. [userContent addScriptMessageHandler:self name:@"getJp"];
  359. [userContent addScriptMessageHandler:self name:@"postH"];
  360. configuration.userContentController = userContent;
  361. WKPreferences *preferences = [WKPreferences new];
  362. preferences.javaScriptCanOpenWindowsAutomatically = YES;
  363. preferences.minimumFontSize = 10.0;
  364. configuration.preferences = preferences;
  365. // 初始化WKWebView
  366. _webView = [[WKWebView alloc]initWithFrame:CGRectZero configuration:configuration];
  367. _NoInputAccessoryView *noInputView = [[_NoInputAccessoryView alloc] init];
  368. [noInputView removeInputAccessoryViewFromWKWebView:_webView];
  369. // UI代理
  370. }
  371. return _webView;
  372. }
  373. -(NSMutableArray<SelectModel *> *)shouJianArray{
  374. if(!_shouJianArray){
  375. _shouJianArray = [[NSMutableArray alloc] init];
  376. }
  377. return _shouJianArray;
  378. }
  379. -(NSMutableArray<SelectModel *> *)chaoShongArray{
  380. if(!_chaoShongArray){
  381. _chaoShongArray = [[NSMutableArray alloc] init];
  382. }
  383. return _chaoShongArray;
  384. }
  385. #pragma mark - KeyBoard
  386. - (void)keyBoardWillShow:(NSNotification *)note
  387. {
  388. // 获取用户信息
  389. NSDictionary *userInfo = [NSDictionary dictionaryWithDictionary:note.userInfo];
  390. // 获取键盘高度
  391. CGRect keyBoardBounds = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
  392. if (IS_IPHONEX) {
  393. self.keyBoardH = keyBoardBounds.size.height - 34;
  394. }else{
  395. self.keyBoardH = keyBoardBounds.size.height;
  396. }
  397. WS(weakSelf);
  398. [self.webView evaluateJavaScript:@"textFocus()" completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  399. if (weakSelf.shouModel) {
  400. NSDictionary * dict = @{@"SourceId":@(weakSelf.shouModel.SourceId),@"SourceName":weakSelf.shouModel.SourceName};
  401. NSString *jsonString = [NSString stringWithFormat:@"getApproverCheckUsersList('%@')",[weakSelf arrayToJSONModel:@[dict]]];
  402. [weakSelf.webView evaluateJavaScript:jsonString completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  403. NSLog(@"%@",error);
  404. }];
  405. }
  406. NSLog(@"keyShow");
  407. }];
  408. }
  409. - (void)keyBoardWillHide:(NSNotification *)note
  410. {
  411. self.keyBoardH = 0.f;
  412. [self.webView evaluateJavaScript:@"textBlur()" completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  413. NSLog(@"keyHidden");
  414. }];
  415. }
  416. #pragma mark - WKScriptMessageHandler
  417. - (void)userContentController:(nonnull WKUserContentController *)userContentController didReceiveScriptMessage:(nonnull WKScriptMessage *)message {
  418. WS(weakSelf);
  419. NSLog(@"messageName:%@",message.name);
  420. if ([message.name isEqualToString:@"chosePic"]) {
  421. [self chatBarDidPhotoAction];
  422. }
  423. if ([message.name isEqualToString:@"toPZ"]) {
  424. [[LYLPhotoTailoringTool sharedTool] selectPhotoWithPhoroOrCamera:SelectPhotoWithTypePhoroOrCamera2 crop:YES showImgBlock:^(NSString *imageUrlStr) {
  425. } choosImgBlock:^(UIImage *image) {
  426. [weakSelf didSelectImage:@[image]];
  427. }];
  428. }
  429. if ([message.name isEqualToString:@"toBJ"]) {
  430. [[FWZGetNoteBookTool sharedTool] openNoteBookListChooseNoteBookBlock:^(NSMutableArray<MyNoteBookSubModel *> * _Nonnull noteArr) {
  431. NSLog(@"SmartBarNotes %@",noteArr);
  432. [weakSelf disSelectNoteBook:noteArr];
  433. }];
  434. }
  435. if ([message.name isEqualToString:@"toSC"]) {
  436. [[FWZGetNoteBookTool sharedTool] openCollectListChooseCollectBlock:^(NSMutableArray<MyFavoriteSubModel *> * _Nonnull collectArr) {
  437. NSLog(@"SmartBarCollection %@",collectArr);
  438. [weakSelf disSelectCollect:collectArr];
  439. }];
  440. }
  441. if ([message.name isEqualToString:@"toWJ"]) {
  442. [[FWZFileGetTool sharedTool] openFileWithCrop:YES showImgBlock:^(NSString * _Nonnull fileUrlStr) {
  443. } choosFileBlock:^(NSData * _Nonnull fileData, NSString * _Nonnull fileName) {
  444. SHOWLOADING
  445. [[HttpManager sharedHttpManager] HeaderUploadFileUrl:Host(Modify_UserImages_Post) parameters:@{} fileData:fileData fileKey:@"file" fileName:fileName mimeType:@"multipart/form-data" success:^(id _Nonnull responseObject) {
  446. REMOVESHOW
  447. NSDictionary * dict = responseObject[0];
  448. if ([dict[@"FileType"] isEqualToString:@"image"]) {
  449. NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%ld','%@','%ld','%@','%@','%@','%ld')",(long)CollectModel_Image,dict[@"FileName"],(long)[dict[@"FileId"] integerValue],@"",dict[@"MinAbsolutePath"],dict[@"AbsolutePath"],(long)[AppUserModel sharedAppUserModel].Id];
  450. [weakSelf upDateAction:jsonString];
  451. }else{
  452. NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%ld','%@','%ld','%@','%@','%@','%ld')",(long)CollectModel_file,dict[@"FileName"],(long)[dict[@"FileId"] integerValue],@"",dict[@"MinAbsolutePath"],dict[@"AbsolutePath"],(long)[AppUserModel sharedAppUserModel].Id];
  453. [weakSelf upDateAction:jsonString];
  454. }
  455. } failure:^(NSError * _Nonnull error) {
  456. REMOVESHOW
  457. }];
  458. }];
  459. }
  460. if ([message.name isEqualToString:@"keyBoard"]) {
  461. NSString *jsonString = [NSString stringWithFormat:@"getIosKeyBorad('%f')",self.keyBoardH];
  462. [self.webView evaluateJavaScript:jsonString completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  463. }];
  464. }
  465. if ([message.name isEqualToString:@"changeState"]) {
  466. NSLog(@"msgBody:%@",message.body);
  467. NSInteger status = [message.body integerValue];
  468. if (status == 1) {
  469. self.isNull = NO;
  470. [self.DoneBtn setEnabled:YES];
  471. }else{
  472. self.isNull = YES;
  473. [self.DoneBtn setEnabled:NO];
  474. }
  475. }
  476. if ([message.name isEqualToString:@"approverCheckUsers"]) {
  477. if (self.type == CollectModel_meetMian) {
  478. [self selectMeeting];
  479. }else{
  480. self.isShoujianren = YES;
  481. self.isChaosongren = NO;
  482. [self selectPeopleWithType:1];
  483. }
  484. }
  485. if ([message.name isEqualToString:@"getJp"]) {
  486. [self allowDisplayingKeyboardWithoutUserAction];
  487. }
  488. if ([message.name isEqualToString:@"carbonCopyUsers"]) {
  489. self.isShoujianren = NO;
  490. self.isChaosongren = YES;
  491. [self selectPeopleWithType:2];
  492. }
  493. if ([message.name isEqualToString:@"getType"]) {
  494. NSString *jsonString = [NSString stringWithFormat:@"getType('%d','%d','%ld','%@','%ld')",self.type,self.isEdit,(long)self.Id,USERDEFAULTSGET(@"LOGINTOKEN"),(long)self.replayType];
  495. [self.webView evaluateJavaScript:jsonString completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  496. if (weakSelf.isReturn) {
  497. FlowAttachmentsModel * model = weakSelf.sendModel;
  498. NSInteger fileType = model.SoureTypeId;
  499. if (fileType == CollectModel_file) {
  500. if (model.MinUrl.length > 0) {
  501. fileType = CollectModel_Image;
  502. NSString *jsonString = [NSString stringWithFormat:@"getAndroidImg('%@','%@','%ld')",model.Url,model.Title,(long)[self returnType:model.Url]];
  503. [weakSelf upDateAction:jsonString];
  504. }else{
  505. NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%ld','%@','%ld','%@','%@','%@','%ld')",(long)model.SoureTypeId,model.Title,(long)model.SoureId,model.Author.length > 0 ? model.Author : @"",model.MinUrl,model.Url,(long)weakSelf.sendModel.SourceUserId];
  506. [weakSelf upDateAction:jsonString];
  507. }
  508. }else if(fileType == CollectModel_Text){
  509. [weakSelf.webView paste:weakSelf.sendModel.Title];
  510. }else if(fileType == CollectModel_Image){
  511. [weakSelf didSelectImage:@[weakSelf.sendImage]];
  512. }else{
  513. NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%ld','%@','%ld','%@','%@','%@','%ld')",(long)model.SoureTypeId,model.Title,(long)model.SoureId,model.Author.length > 0 ? model.Author : @"",model.MinUrl,model.Url,(long)weakSelf.sendModel.SourceUserId];
  514. [weakSelf upDateAction:jsonString];
  515. }
  516. }
  517. }];
  518. }
  519. if ([message.name isEqualToString:@"to"]) {
  520. NSLog(@"msgBody:%@",message.body);
  521. NSDictionary * dict = (NSDictionary *)message.body;
  522. [self pushVCWithDict:dict];
  523. }
  524. if ([message.name isEqualToString:@"postH"]) {
  525. NSInteger H = [message.body integerValue];
  526. if (H < 0) {
  527. [self.webView mas_updateConstraints:^(MASConstraintMaker *make) {
  528. if (@available(iOS 11.0, *)) {
  529. make.bottom.equalTo(weakSelf.view.mas_safeAreaLayoutGuideBottom).offset(H);
  530. } else {
  531. make.bottom.equalTo(weakSelf.view.mas_bottom).offset(H);
  532. }
  533. }];
  534. }else{
  535. [self.webView mas_updateConstraints:^(MASConstraintMaker *make) {
  536. if (@available(iOS 11.0, *)) {
  537. make.bottom.equalTo(weakSelf.view.mas_safeAreaLayoutGuideBottom);
  538. } else {
  539. make.bottom.equalTo(weakSelf.view.mas_bottom);
  540. }
  541. }];
  542. }
  543. [self.view setNeedsLayout];
  544. [self.view layoutIfNeeded];
  545. }
  546. }
  547. - (void)pushVCWithDict:(NSDictionary *)dict
  548. {
  549. NSInteger Id = [dict[@"id"] integerValue];
  550. NSInteger userId = [dict[@"userId"] integerValue];
  551. NSString * title = dict[@"title"];
  552. WS(weakSelf);
  553. switch ([dict[@"type"] integerValue]) {
  554. case CollectModel_Group:
  555. {
  556. TDGroupInfoListVC * vc = [TDGroupInfoListVC initTDGroupInfoListVC];
  557. vc.GroupId = Id;
  558. vc.titleStr = title;
  559. [self.navigationController pushViewController:vc animated:YES];
  560. }break;
  561. case CollectModel_file:{
  562. DownFileViewController * vc = [[DownFileViewController alloc] init];
  563. FlowAttachmentsModel * model = [[FlowAttachmentsModel alloc] init];
  564. model.Title = title;
  565. model.SoureId = Id;
  566. model.Url = dict[@"bigurl"];
  567. model.MinUrl = dict[@"smallurl"];
  568. vc.model = model;
  569. [self.navigationController pushViewController:vc animated:YES];
  570. }break;
  571. case CollectModel_Image:{
  572. DownFileViewController * vc = [[DownFileViewController alloc] init];
  573. FlowAttachmentsModel * model = [[FlowAttachmentsModel alloc] init];
  574. model.Title = title;
  575. model.SoureId = Id;
  576. model.Url = dict[@"bigurl"];
  577. model.MinUrl = dict[@"smallurl"];
  578. vc.model = model;
  579. [self.navigationController pushViewController:vc animated:YES];
  580. }break;
  581. case CollectModel_Aritle:{
  582. SHOWLOADING
  583. [[HttpManager sharedHttpManager] GETWithUrl:[NSString stringWithFormat:@"%@%ld",Article_Detail_Get,(long)Id] parameters:@{} success:^(id _Nonnull responseObject) {
  584. REMOVESHOW;
  585. Item *itemModel = [[Item alloc]initWithDictionary:responseObject error:nil];
  586. // HomeDetailController *homeDetail = [[HomeDetailController alloc] init];
  587. // [homeDetail loadCurrentModel:itemModel];
  588. // [weakSelf.navigationController pushViewController:homeDetail animated:YES];
  589. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  590. vc.type = CollectModel_Aritle;
  591. vc.Id = itemModel.Id;
  592. [weakSelf.navigationController pushViewController:vc animated:YES];
  593. } failure:^(NSError * _Nonnull error) {
  594. SHOWERROR([ZYCTool handerResultData:error]);
  595. }];
  596. }break;
  597. case CollectModel_Notice:{
  598. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  599. vc.type = CollectModel_Notice;
  600. vc.Id = Id;
  601. [self.navigationController pushViewController:vc animated:YES];
  602. }break;
  603. case CollectModel_Toipc:{
  604. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  605. vc.type = CollectModel_Toipc;
  606. vc.Id = Id;
  607. [self.navigationController pushViewController:vc animated:YES];
  608. }break;
  609. case CollectModel_NewTopic:{
  610. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  611. vc.type = CollectModel_NewTopic;
  612. vc.Id = Id;
  613. [self.navigationController pushViewController:vc animated:YES];
  614. }break;
  615. case CollectModel_NoteBook:{
  616. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  617. vc.type = CollectModel_NoteBook;
  618. vc.Id = Id;
  619. [self.navigationController pushViewController:vc animated:YES];
  620. }break;
  621. case CollectModel_Collect:{
  622. }break;
  623. case CollectModel_CollectFile:{
  624. if (userId == [AppUserModel sharedAppUserModel].Id) {
  625. MyFavoriteVC *vc = [MyFavoriteVC initMyFavoriteVC];
  626. vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
  627. vc.ParentId = 0;
  628. vc.FolderId = Id;
  629. vc.myTitle = title;
  630. [self.navigationController pushViewController:vc animated:YES];
  631. }else{
  632. OtherFavoriteVC *vc = [OtherFavoriteVC initOtherFavoriteVC];
  633. vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
  634. vc.ParentId = 0;
  635. vc.FolderId = Id;
  636. vc.myTitle = title;
  637. vc.VisitUserId = userId;
  638. [self.navigationController pushViewController:vc animated:YES];
  639. }
  640. }break;
  641. case CollectModel_NoteFile:{
  642. if (userId == [AppUserModel sharedAppUserModel].Id) {
  643. NoteBookVC *vc = [NoteBookVC initNoteBookVC];
  644. vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
  645. vc.ParentId = 0;
  646. vc.FolderId = Id;
  647. vc.myTitle = title;
  648. vc.VisitUserId = 0;
  649. [self.navigationController pushViewController:vc animated:YES];
  650. }else{
  651. OtherNoteBookVC *vc = [OtherNoteBookVC initOtherNoteBookVC];
  652. vc.listType = Id == 0 ? MyFavoriteListLevelTypeA : MyFavoriteListLevelTypeB;
  653. vc.ParentId = 0;
  654. vc.FolderId = Id;
  655. vc.myTitle = title;
  656. vc.VisitUserId = userId;
  657. [self.navigationController pushViewController:vc animated:YES];
  658. }
  659. }break;
  660. case CollectModel_InterMail:{
  661. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  662. vc.type = CollectModel_InterMail;
  663. vc.Id = Id;
  664. [self.navigationController pushViewController:vc animated:YES];
  665. }break;
  666. case CollectModel_meetDetail:{
  667. WorkFlowDetailsController *vc = [[WorkFlowDetailsController alloc] initWithId:Id];
  668. [self.navigationController pushViewController:vc animated:YES];
  669. }break;
  670. case CollectModel_work:{
  671. MyApprovalPageDetail * vc = [[MyApprovalPageDetail alloc]init];
  672. vc.pageType = Type_ONEC;
  673. vc.indexId = Id;
  674. vc.title = title;
  675. vc.TodoId = Id;
  676. [self.navigationController pushViewController:vc animated:YES];
  677. }break;
  678. case CollectModel_meetMian:{
  679. MyTDTopicDetailVC * vc = [MyTDTopicDetailVC initMyTDTopicDetailVC];
  680. vc.type = CollectModel_meetMian;
  681. vc.Id = Id;
  682. [self.navigationController pushViewController:vc animated:YES];
  683. }break;
  684. case CollectModel_financeCount:{
  685. CountDataVC *vc = [CountDataVC initCountDataVC];
  686. vc.index = 0;
  687. vc.titleStr = @"财务统计";
  688. [self.navigationController pushViewController:vc animated:YES];
  689. }break;
  690. case CollectModel_affairsCount:{
  691. CountDataVC *vc = [CountDataVC initCountDataVC];
  692. vc.index = 1;
  693. vc.titleStr = @"人事统计";
  694. [self.navigationController pushViewController:vc animated:YES];
  695. }break;
  696. case CollectModel_publishCount:{
  697. CountDataVC *vc = [CountDataVC initCountDataVC];
  698. vc.index = 2;
  699. vc.titleStr = @"出版统计";
  700. [self.navigationController pushViewController:vc animated:YES];
  701. }break;
  702. default:
  703. break;
  704. }
  705. }
  706. #pragma mark - 选择关联会议
  707. - (void)selectMeeting
  708. {
  709. WS(weakSelf);
  710. FecordJoinWorkFlowListController *vc = [[FecordJoinWorkFlowListController alloc] init];
  711. [vc setSelectedMeetingBlock:^(NSString * _Nonnull mid, NSString * _Nonnull meetingName) {
  712. weakSelf.meetingId = [mid integerValue];
  713. NSDictionary * dict = @{@"SourceId":mid,@"SourceName":meetingName};
  714. NSString *jsonString = [NSString stringWithFormat:@"getApproverCheckUsersList('%@')",[self arrayToJSONModel:@[dict]]];
  715. [weakSelf.webView evaluateJavaScript:jsonString completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  716. NSLog(@"data:%@",data);
  717. NSLog(@"error:%@",error);
  718. }];
  719. }];
  720. vc.IsSelect = YES;
  721. [self.navigationController pushViewController:vc animated:YES];
  722. }
  723. - (void)selectMeetSearch:(NSNotification *)notification
  724. {
  725. NSDictionary * dict = notification.userInfo;
  726. self.meetingId = [[dict objectForKey:@"Id"] integerValue];
  727. NSDictionary * paraDict = @{@"SourceId":[dict objectForKey:@"Id"],@"SourceName":[dict objectForKey:@"Name"]};
  728. NSString *jsonString = [NSString stringWithFormat:@"getApproverCheckUsersList('%@')",[self arrayToJSONModel:@[paraDict]]];
  729. [self.webView evaluateJavaScript:jsonString completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  730. NSLog(@"data:%@",data);
  731. NSLog(@"error:%@",error);
  732. }];
  733. }
  734. - (void)selectPeopleWithType:(NSInteger)type {
  735. AddLookUpUserSecondVC *vc = [[AddLookUpUserSecondVC alloc] init];
  736. vc.isAllSelected = YES;
  737. Department *defaltGroupSetion = [[Department alloc]init];
  738. defaltGroupSetion.Name = @"单位通讯录";
  739. defaltGroupSetion.Id = 0;
  740. defaltGroupSetion.SourceId = 0;
  741. defaltGroupSetion.SourceType = 1;
  742. defaltGroupSetion.SourceName = @"单位通讯录";
  743. defaltGroupSetion.MiddleType = type;
  744. Department *myGroupSetion = [[Department alloc]init];
  745. myGroupSetion.Name = @"自建通讯录";
  746. myGroupSetion.Id = 0;
  747. myGroupSetion.MiddleType = type;
  748. myGroupSetion.SourceType = 3;
  749. myGroupSetion.SourceId = 0;
  750. myGroupSetion.SourceName = @"自建通讯录";
  751. vc.isAllSelected = YES;
  752. vc.departSourceDataArray = @[defaltGroupSetion,myGroupSetion].mutableCopy;
  753. vc.isDefalutPage = 1;
  754. vc.titleStr = self.type == CollectModel_meetMian ? @"发送范围" : @"选人";
  755. [self.navigationController pushViewController:vc animated:YES];
  756. }
  757. - (void)recviveChaoSongRen:(NSNotification *)notification{
  758. if (self.isShoujianren) {
  759. NSMutableArray <SelectModel *>* array = notification.userInfo[@"selectPeople"];
  760. if (array.count > 0) {
  761. NSLog(@"shouJianArray结果数据组%@",array);
  762. NSString *jsonString = [NSString stringWithFormat:@"getApproverCheckUsersList('%@')",[self arrayToJSONModel:array]];
  763. [self.webView evaluateJavaScript:jsonString completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  764. NSLog(@"data:%@",data);
  765. NSLog(@"error:%@",error);
  766. }];
  767. }
  768. }
  769. if (self.isChaosongren) {
  770. NSMutableArray <SelectModel *>* array = notification.userInfo[@"selectPeople"];
  771. if (array.count > 0) {
  772. NSLog(@"chaoShongArray结果数据组%@",array);
  773. NSString *jsonString = [NSString stringWithFormat:@"getCarbonCopyUsersList('%@')",[self arrayToJSONModel:array]];
  774. [self.webView evaluateJavaScript:jsonString completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  775. NSLog(@"data:%@",data);
  776. NSLog(@"error:%@",error);
  777. }];
  778. }
  779. }
  780. }
  781. #pragma mark - 选择图片
  782. - (void)chatBarDidPhotoAction
  783. {
  784. WS(weakSelf);
  785. [self.view endEditing:YES];
  786. TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:9 delegate:nil];
  787. [imagePickerVc setNavLeftBarButtonSettingBlock:^(UIButton *leftButton){
  788. leftButton.hidden = YES;
  789. }];
  790. imagePickerVc.showSelectBtn = NO;
  791. imagePickerVc.allowCrop = YES;
  792. imagePickerVc.cropRect = CGRectMake(0, (SCREEN_HEIGHT - SCREEN_WIDTH) * 0.5, SCREEN_WIDTH, SCREEN_WIDTH);
  793. imagePickerVc.allowTakePicture = NO;
  794. imagePickerVc.allowTakeVideo = NO;
  795. imagePickerVc.allowPickingOriginalPhoto = NO;
  796. imagePickerVc.allowPickingGif = NO;
  797. [imagePickerVc setIsStatusBarDefault:YES];
  798. [imagePickerVc setNaviTitleColor:[UIColor blackColor]];
  799. [imagePickerVc setBarItemTextColor:[UIColor blackColor]];
  800. [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
  801. PHAsset *asset = assets.firstObject;
  802. switch (asset.mediaType) {
  803. case PHAssetMediaTypeVideo: {
  804. } break;
  805. case PHAssetMediaTypeImage: {
  806. [weakSelf didSelectImage:photos];
  807. } break;
  808. case PHAssetMediaTypeAudio:
  809. break;
  810. case PHAssetMediaTypeUnknown:
  811. break;
  812. default: break;
  813. }
  814. }];
  815. [self presentViewController:imagePickerVc animated:YES completion:nil];
  816. }
  817. - (void)didSelectImage:(NSArray *)images
  818. {
  819. NSMutableArray * array = [NSMutableArray array];
  820. for (UIImage * image in images) {
  821. NSData *data = UIImageJPEGRepresentation(image, 1);
  822. [array addObject:data];
  823. }
  824. WS(weakSelf);
  825. NSString *urlString = [[NSString alloc] initWithFormat:@"%@%@",BaseUrl,Modify_UserImages_Post];
  826. [[HttpManager sharedHttpManager] HeaderUploadUrl:urlString parameters:@{} pictureArray:array pictureKey:@"file" success:^(id _Nonnull responseObject) {
  827. NSLog(@"%@",responseObject);
  828. for (NSDictionary * dict in responseObject) {
  829. NSString *jsonString = [NSString stringWithFormat:@"getAndroidImg('%@','%@','%ld')",dict[@"AbsolutePath"],dict[@"FileName"],(long)CollectModel_Image];
  830. [weakSelf upDateAction:jsonString];
  831. }
  832. } failure:^(NSError * _Nonnull error) {
  833. }];
  834. }
  835. #pragma mark - 选择笔记
  836. - (void)disSelectNoteBook:(NSMutableArray<MyNoteBookSubModel *>*_Nonnull )noteArr{
  837. for (MyNoteBookSubModel *dataModel in noteArr ) {
  838. if (dataModel.AttributeValue == 1) {
  839. NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%ld','%@','%ld','%@','%@','%@','%ld')",(long)CollectModel_NoteBook,dataModel.Title,(long)dataModel.MiddleId,dataModel.Name,@"",@"",(long)dataModel.UserId];
  840. [self upDateAction:jsonString];
  841. }else{
  842. NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%ld','%@','%ld','%@','%@','%@','%ld')",(long)CollectModel_NoteFile,dataModel.FolderName,(long)dataModel.Id,[AppUserModel sharedAppUserModel].Name,@"",@"",(long)dataModel.UserId];
  843. [self upDateAction:jsonString];
  844. }
  845. }
  846. }
  847. #pragma mark - 选择收藏
  848. - (void)disSelectCollect:(NSMutableArray<MyFavoriteSubModel *> * _Nonnull) collectArr{
  849. for (MyFavoriteSubModel *dataModel in collectArr ) {
  850. if(dataModel.AttributeValue == 1)
  851. {
  852. NSString * author = @"";
  853. switch (dataModel.CollectionType) {
  854. case CollectModel_file:
  855. {
  856. if (dataModel.Data.MinFile.length > 0) {
  857. dataModel.CollectionType = CollectModel_Image;
  858. }
  859. }
  860. break;
  861. case CollectModel_Text:///1
  862. {
  863. dataModel.CollectionType = CollectModel_Aritle;
  864. }
  865. break;
  866. case CollectModel_CollectFile:
  867. {
  868. dataModel.CollectionType = CollectModel_Aritle;
  869. author = dataModel.Data.Author.length > 0 ? [NSString stringWithFormat:@"来自-%@的收藏",dataModel.Data.Author] : @"";
  870. }
  871. break;
  872. case CollectModel_NoteFile:
  873. {
  874. dataModel.CollectionType = CollectModel_Aritle;
  875. author = dataModel.Data.Author.length > 0 ? [NSString stringWithFormat:@"来自-%@的笔记",dataModel.Data.Author] : @"";
  876. }
  877. break;
  878. default:
  879. {
  880. author = dataModel.Data.Author.length > 0 ? dataModel.Data.Author : @"";
  881. }
  882. break;
  883. }
  884. NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%ld','%@','%ld','%@','%@','%@','%ld')",(long)dataModel.CollectionType,dataModel.Title,(long)dataModel.CollectionDataId,author,dataModel.Data.MinFile,dataModel.Data.File,(long)(dataModel.SourceUserId == 0 ? dataModel.UserId : dataModel.SourceUserId)];
  885. [self upDateAction:jsonString];
  886. }else{
  887. NSString *jsonString = [NSString stringWithFormat:@"getAndroidNoteCollection('%ld','%@','%ld','%@','%@','%@','%ld')",(long)CollectModel_CollectFile,dataModel.FolderName,(long)dataModel.Id,[AppUserModel sharedAppUserModel].Name,@"",@"",(long)(dataModel.SourceUserId == 0 ? dataModel.UserId : dataModel.SourceUserId)];
  888. [self upDateAction:jsonString];
  889. }
  890. }
  891. }
  892. #pragma mark - WKScriptMessageHandler
  893. -(NSString *)convertToJson:(NSDictionary *)dict
  894. {
  895. NSError *error;
  896. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
  897. NSString *jsonString;
  898. if (!jsonData) {
  899. NSLog(@"%@",error);
  900. }else{
  901. jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
  902. }
  903. NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
  904. NSRange range = {0,jsonString.length};
  905. //去掉字符串中的空格
  906. [mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];
  907. NSRange range2 = {0,mutStr.length};
  908. //去掉字符串中的换行符
  909. [mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2];
  910. return mutStr;
  911. }
  912. #pragma mark - WKUIDelegete
  913. - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(nonnull NSString *)message initiatedByFrame:(nonnull WKFrameInfo *)frame completionHandler:(nonnull void (^)(void))completionHandler
  914. {
  915. NSLog(@"%@",message);
  916. completionHandler();
  917. }
  918. - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(nonnull NSString *)message initiatedByFrame:(nonnull WKFrameInfo *)frame completionHandler:(nonnull void (^)(BOOL))completionHandler
  919. {
  920. NSLog(@"223123");
  921. completionHandler(YES);
  922. }
  923. - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(nonnull NSString *)prompt defaultText:(nullable NSString *)defaultText initiatedByFrame:(nonnull WKFrameInfo *)frame completionHandler:(nonnull void (^)(NSString * _Nullable))completionHandler
  924. {
  925. NSLog(@"323123");
  926. completionHandler(@"111");
  927. }
  928. #pragma mark - 提交富文本
  929. - (void)submit
  930. {
  931. NSString *jsonString = [NSString stringWithFormat:@"getEditorText()"];
  932. [self.webView evaluateJavaScript:jsonString completionHandler:^(id _Nullable data, NSError * _Nullable error) {
  933. NSLog(@"submit:%@",data);
  934. NSDictionary * dict = (NSDictionary *)data;
  935. switch (self.type) {
  936. case CollectModel_Notice:
  937. {
  938. [self submitNotice:dict];
  939. }
  940. break;
  941. case CollectModel_Toipc:
  942. {
  943. if (self.isEdit) {
  944. [self changeTopic:dict];
  945. }else{
  946. [self submitTopic:dict];
  947. }
  948. }
  949. break;
  950. case CollectModel_NewTopic:
  951. {
  952. if (self.isEdit) {
  953. [self changeNoteBook:dict];
  954. }else{
  955. [self submitNoteBook:dict];
  956. }
  957. }
  958. break;
  959. case CollectModel_Group:
  960. {
  961. if (self.isEdit) {
  962. [self changeTopic:dict];
  963. }else{
  964. [self submitTopic:dict];
  965. }
  966. }
  967. break;
  968. case CollectModel_meetMian:
  969. {
  970. if (self.isEdit) {
  971. [self changeMeeting:dict];
  972. }else{
  973. [self submitMeeting:dict];
  974. }
  975. }
  976. break;
  977. case CollectModel_NoteBook:
  978. {
  979. if (self.isEdit) {
  980. [self changeNoteBook:dict];
  981. }else{
  982. [self submitNoteBook:dict];
  983. }
  984. }
  985. break;
  986. case CollectModel_InterMail:
  987. {
  988. [self submitMail:dict];
  989. }
  990. break;
  991. default:
  992. break;
  993. }
  994. }];
  995. }
  996. #pragma mark - 提交通知
  997. - (void)submitNotice:(NSDictionary *)dict
  998. {
  999. self.H5JsonDict = dict;
  1000. NSString * html = dict[@"html"];
  1001. NSArray * jsonArray = dict[@"json"];
  1002. NSMutableDictionary * paraDict = [NSMutableDictionary dictionary];
  1003. [paraDict setObject:dict[@"Title"] forKey:@"Title"];
  1004. [paraDict setObject:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"];
  1005. [paraDict setValue:self.isDraft ? @(2) : @(1) forKey:@"NoticeType"];
  1006. [paraDict setValue:@(self.FolderId) forKey:@"FolderId"];
  1007. [paraDict setObject:html forKey:@"HtmlContent"];
  1008. [paraDict setObject:dict[@"AddresseeUserMiddles"] forKey:@"AddresseeUserMiddles"];
  1009. [paraDict setObject:dict[@"CcUserMiddles"] forKey:@"CcUserMiddles"];
  1010. [paraDict setObject:[self arrayToJSONString:jsonArray] forKey:@"Content"];
  1011. NSArray * addArray = self.H5JsonDict[@"AddresseeUserMiddles"];
  1012. NSArray * ccArray = self.H5JsonDict[@"CcUserMiddles"];
  1013. if ([self.H5JsonDict[@"Title"] length] == 0 &&
  1014. [self.H5JsonDict[@"html"] length] == 0 &&
  1015. addArray.count == 0 &&
  1016. ccArray.count == 0) {
  1017. SHOWERROR(@"请填写标题或内容");
  1018. return;
  1019. }
  1020. if (self.isEdit) {
  1021. [paraDict setObject:@(self.Id) forKey:@"Id"];
  1022. [self sentChangeNotice:paraDict withNoticeType:self.isDraft ? 2 : 1];
  1023. }else{
  1024. [self sentNoticeRequeast:paraDict withNoticeType:self.isDraft ? 2 : 1];
  1025. }
  1026. }
  1027. - (void)sentChangeNotice:(NSMutableDictionary *)dic withNoticeType:(NSInteger)NoticeType{
  1028. WS(weakSelf);
  1029. [[HttpManager sharedHttpManager] POSTUrl:Host(API_NOTICE_EDIT) parameters:dic responseStyle:DATA success:^(id _Nonnull responseObject) {
  1030. REMOVESHOW
  1031. if(NoticeType == 1){
  1032. SHOWSUCCESS(@"通知已经发送");
  1033. if (weakSelf.upDateBlock) {
  1034. weakSelf.upDateBlock();
  1035. }
  1036. }else{
  1037. SHOWSUCCESS(@"通知已经存放草稿箱");
  1038. }
  1039. [weakSelf.navigationController popViewControllerAnimated:YES];
  1040. } failure:^(NSError * _Nonnull error) {
  1041. SHOWERROR([ZYCTool handerResultData:error]);
  1042. }];
  1043. }
  1044. - (void)sentNoticeRequeast:(NSMutableDictionary *)dic withNoticeType:(NSInteger)NoticeType{
  1045. WS(weakSelf);
  1046. [[HttpManager sharedHttpManager] PUTUrl:Host(API_NOTICE_ADD) parameters:dic success:^(id _Nonnull responseObject) {
  1047. REMOVESHOW
  1048. if(NoticeType == 1){
  1049. SHOWSUCCESS(@"通知已经发送");
  1050. if (weakSelf.upDateBlock) {
  1051. weakSelf.upDateBlock();
  1052. }
  1053. }else{
  1054. SHOWSUCCESS(@"通知已经存放草稿箱");
  1055. }
  1056. [weakSelf.navigationController popViewControllerAnimated:YES];
  1057. } failure:^(NSError * _Nonnull error) {
  1058. SHOWERROR([ZYCTool handerResultData:error]);
  1059. }];
  1060. }
  1061. #pragma mark - 提交话题
  1062. - (void)submitTopic:(NSDictionary *)dict
  1063. {
  1064. NSString * html = dict[@"html"];
  1065. NSArray * jsonArray = dict[@"json"];
  1066. NSMutableDictionary * paraDict = [NSMutableDictionary dictionary];
  1067. [paraDict setObject:dict[@"Title"] forKey:@"Title"];
  1068. [paraDict setObject:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"];
  1069. [paraDict setObject:@(self.Id) forKey:@"GroupId"];
  1070. [paraDict setObject:@(self.FolderId) forKey:@"FolderId"];
  1071. [paraDict setObject:html forKey:@"HtmlContent"];
  1072. [paraDict setObject:[self arrayTosumbitString:jsonArray] forKey:@"Content"];
  1073. if ([dict[@"Title"] length] == 0 && html.length == 0) {
  1074. SHOWERROR(@"请填写标题或内容");
  1075. return;
  1076. }
  1077. SHOWLOADING
  1078. WS(weakSelf);
  1079. [[HttpManager sharedHttpManager] POSTUrl:Host(APP_Topic_Add) parameters:paraDict responseStyle:DATA success:^(id _Nonnull responseObject) {
  1080. NSLog(@"%@",responseObject);
  1081. REMOVESHOW
  1082. SHOWSUCCESS(@"创建成功");
  1083. if (weakSelf.upDateBlock) {
  1084. weakSelf.upDateBlock();
  1085. }
  1086. [weakSelf back1];
  1087. } failure:^(NSError * _Nonnull error) {
  1088. REMOVESHOW
  1089. SHOWERROR([ZYCTool handerResultData:error])
  1090. }];
  1091. }
  1092. #pragma mark - 修改话题
  1093. - (void)changeTopic:(NSDictionary *)dict
  1094. {
  1095. NSString * html = dict[@"html"];
  1096. NSArray * jsonArray = dict[@"json"];
  1097. NSMutableDictionary * paraDict = [NSMutableDictionary dictionary];
  1098. [paraDict setObject:dict[@"Title"] forKey:@"Title"];
  1099. [paraDict setObject:@(self.Id) forKey:@"Id"];
  1100. [paraDict setValue:@(self.FolderId) forKey:@"FolderId"];
  1101. [paraDict setObject:html forKey:@"HtmlContent"];
  1102. [paraDict setObject:[self arrayTosumbitString:jsonArray] forKey:@"Content"];
  1103. if ([dict[@"Title"] length] == 0 && html.length == 0) {
  1104. SHOWERROR(@"请填写标题或内容");
  1105. return;
  1106. }
  1107. WS(weakSelf);
  1108. SHOWLOADING
  1109. [[HttpManager sharedHttpManager] PUTUrl:Host(API_APP_Topic_Update) parameters:paraDict responseStyle:DATA success:^(id _Nonnull responseObject) {
  1110. NSLog(@"%@",responseObject);
  1111. REMOVESHOW
  1112. SHOWSUCCESS(@"创建成功");
  1113. if (weakSelf.upDateBlock) {
  1114. weakSelf.upDateBlock();
  1115. }
  1116. [weakSelf.navigationController popViewControllerAnimated:YES];
  1117. } failure:^(NSError * _Nonnull error) {
  1118. REMOVESHOW
  1119. }];
  1120. }
  1121. #pragma mark - 提交会议纪要
  1122. - (void)submitMeeting:(NSDictionary *)dict
  1123. {
  1124. NSString * html = dict[@"html"];
  1125. NSMutableDictionary * paraDict = [NSMutableDictionary dictionary];
  1126. [paraDict setObject:dict[@"Title"] forKey:@"Title"];
  1127. [paraDict setObject:dict[@"CcUserMiddles"] forKey:@"AddresseeUserMiddles"];
  1128. if (self.meetingId > 0) {
  1129. [paraDict setObject:@(self.meetingId) forKey:@"MeetingId"];
  1130. }
  1131. [paraDict setObject:html forKey:@"Content"];
  1132. if ([dict[@"Title"] length] == 0 && html.length == 0) {
  1133. SHOWERROR(@"请填写标题或内容");
  1134. return;
  1135. }
  1136. SHOWLOADING
  1137. WS(weakSelf);
  1138. [[HttpManager sharedHttpManager] POSTUrl:Host(MeetingSummary) parameters:paraDict responseStyle:JOSN success:^(id _Nonnull responseObject) {
  1139. REMOVESHOW
  1140. SHOWSUCCESS(@"创建成功");
  1141. if (weakSelf.upDateBlock) {
  1142. weakSelf.upDateBlock();
  1143. }
  1144. [weakSelf.navigationController popViewControllerAnimated:YES];
  1145. } failure:^(NSError * _Nonnull error) {
  1146. REMOVESHOW
  1147. SHOWERROR([ZYCTool handerResultData:error]);
  1148. }];
  1149. }
  1150. - (void)changeMeeting:(NSDictionary *)dict
  1151. {
  1152. NSString * html = dict[@"html"];
  1153. NSMutableDictionary * paraDict = [NSMutableDictionary dictionary];
  1154. [paraDict setObject:dict[@"Title"] forKey:@"Title"];
  1155. [paraDict setObject:dict[@"CcUserMiddles"] forKey:@"AddresseeUserMiddles"];
  1156. if (self.meetingId > 0) {
  1157. [paraDict setObject:@(self.meetingId) forKey:@"MeetingId"];
  1158. }
  1159. if ([dict[@"Title"] length] == 0 && html.length == 0) {
  1160. SHOWERROR(@"请填写标题或内容");
  1161. return;
  1162. }
  1163. [paraDict setObject:html forKey:@"Content"];
  1164. SHOWLOADING
  1165. WS(weakSelf);
  1166. NSString * meetId = [NSString stringWithFormat:@"%ld",(long)self.Id];
  1167. [[HttpManager sharedHttpManager] PUTUrl:Host(UpdateMeeting(meetId)) parameters:paraDict success:^(id _Nonnull responseObject) {
  1168. REMOVESHOW
  1169. SHOWSUCCESS(@"修改会议纪要成功");
  1170. if (weakSelf.upDateBlock) {
  1171. weakSelf.upDateBlock();
  1172. }
  1173. [weakSelf.navigationController popViewControllerAnimated:YES];
  1174. } failure:^(NSError * _Nonnull error) {
  1175. REMOVESHOW
  1176. SHOWERROR([ZYCTool handerResultData:error]);
  1177. }];
  1178. }
  1179. #pragma mark - 提交笔记
  1180. - (void)submitNoteBook:(NSDictionary *)dict
  1181. {
  1182. WS(weakSelf);
  1183. NSString * html = dict[@"html"];
  1184. NSArray * jsonArray = dict[@"json"];
  1185. NSMutableDictionary * paraDict = [NSMutableDictionary dictionary];
  1186. [paraDict setObject:dict[@"Title"] forKey:@"Title"];
  1187. [paraDict setObject:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"];
  1188. [paraDict setObject:@(self.FolderId) forKey:@"FolderId"];
  1189. [paraDict setObject:html forKey:@"HtmlContent"];
  1190. [paraDict setObject:(self.type == CollectModel_NewTopic ? @(1) : @(0)) forKey:@"IsTopic"];
  1191. [paraDict setObject:[self arrayTosumbitString:jsonArray] forKey:@"Content"];
  1192. if ([dict[@"Title"] length] == 0 && html.length == 0) {
  1193. SHOWERROR(@"请填写标题或内容");
  1194. return;
  1195. }
  1196. if (self.type == CollectModel_NewTopic && self.FolderId == 0) {
  1197. SHOWERROR(@"请选择发布范围");
  1198. return;
  1199. }
  1200. [[HttpManager sharedHttpManager] PUTUrl:Host(API_CreateNoteBook) parameters:paraDict success:^(id _Nonnull responseObject) {
  1201. NSLog(@"%@",responseObject);
  1202. SHOWSUCCESS(@"创建成功");
  1203. if (weakSelf.upDateBlock) {
  1204. weakSelf.upDateBlock();
  1205. }
  1206. [weakSelf back1];
  1207. } failure:^(NSError * _Nonnull error) {
  1208. SHOWERROR([ZYCTool handerResultData:error]);
  1209. }];
  1210. }
  1211. - (void)changeNoteBook:(NSDictionary *)dict
  1212. {
  1213. WS(weakSelf);
  1214. NSString * html = dict[@"html"];
  1215. NSArray * jsonArray = dict[@"json"];
  1216. NSMutableDictionary * paraDict = [NSMutableDictionary dictionary];
  1217. [paraDict setObject:dict[@"Title"] forKey:@"Title"];
  1218. [paraDict setObject:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"];
  1219. [paraDict setObject:@(self.Id) forKey:@"Id"];
  1220. [paraDict setObject:@(self.FolderId) forKey:@"FolderId"];
  1221. [paraDict setObject:html forKey:@"HtmlContent"];
  1222. [paraDict setObject:[self arrayTosumbitString:jsonArray] forKey:@"Content"];
  1223. if ([dict[@"Title"] length] == 0 && html.length == 0) {
  1224. SHOWERROR(@"请填写标题或内容");
  1225. return;
  1226. }
  1227. if (self.type == CollectModel_NewTopic && self.FolderId == 0) {
  1228. SHOWERROR(@"请选择发布范围");
  1229. return;
  1230. }
  1231. [[HttpManager sharedHttpManager] PUTUrl:Host(API_NoteBook_Modify) parameters:paraDict success:^(id _Nonnull responseObject) {
  1232. NSLog(@"%@",responseObject);
  1233. if (weakSelf.upDateBlock) {
  1234. weakSelf.upDateBlock();
  1235. }
  1236. SHOWSUCCESS(@"修改成功");
  1237. [weakSelf.navigationController popViewControllerAnimated:YES];
  1238. } failure:^(NSError * _Nonnull error) {
  1239. SHOWERROR([ZYCTool handerResultData:error]);
  1240. }];
  1241. }
  1242. #pragma mark - 提交站内信
  1243. - (void)submitMail:(NSDictionary *)dict
  1244. {
  1245. self.H5JsonDict = dict;
  1246. NSString * html = dict[@"html"];
  1247. NSArray * jsonArray = dict[@"json"];
  1248. NSMutableDictionary * paraDict = [NSMutableDictionary dictionary];
  1249. [paraDict setObject:dict[@"Title"] forKey:@"Title"];
  1250. [paraDict setObject:@([AppUserModel sharedAppUserModel].Id) forKey:@"UserId"];
  1251. [paraDict setValue:@(self.FolderId) forKey:@"FolderId"];
  1252. [paraDict setObject:html forKey:@"HtmlContent"];
  1253. [paraDict setObject:dict[@"AddresseeUserMiddles"] forKey:@"AddresseeUserMiddles"];
  1254. [paraDict setObject:dict[@"CcUserMiddles"] forKey:@"CcUserMiddles"];
  1255. [paraDict setObject:[self arrayToJSONString:jsonArray] forKey:@"Content"];
  1256. [paraDict setObject:@(self.MailType) forKey:@"MissiveType"];///1 正常 2 匿名
  1257. [paraDict setObject:@(self.Id) forKey:@"ParentId"];///回复ID
  1258. [paraDict setObject:@(self.isDraft ? 2 : 1) forKey:@"MissiveAttributeType"];///1 发送 2 草稿
  1259. NSArray * addArray = self.H5JsonDict[@"AddresseeUserMiddles"];
  1260. NSArray * ccArray = self.H5JsonDict[@"CcUserMiddles"];
  1261. if ([self.H5JsonDict[@"Title"] length] == 0 &&
  1262. [self.H5JsonDict[@"html"] length] == 0 &&
  1263. addArray.count == 0 &&
  1264. ccArray.count == 0) {
  1265. SHOWERROR(@"请填写标题或内容");
  1266. return;
  1267. }
  1268. if (self.isEdit) {
  1269. if (self.replayType == MailReplayOne || self.replayType == MailReplayAll) {
  1270. }else{
  1271. [paraDict setObject:@(self.Id) forKey:@"Id"];
  1272. }
  1273. }
  1274. [self sentMailRequeast:paraDict];
  1275. }
  1276. - (void)sentMailRequeast:(NSMutableDictionary *)dic
  1277. {
  1278. WS(weakSelf);
  1279. [[HttpManager sharedHttpManager] PUTUrl:Host(API_InterLetterModify) parameters:dic success:^(id _Nonnull responseObject) {
  1280. if(weakSelf.isDraft){
  1281. SHOWSUCCESS(@"站内信已经存放草稿箱");
  1282. }else{
  1283. SHOWSUCCESS(@"站内信已经发送");
  1284. }
  1285. if (weakSelf.replayType == MailReplayOne || weakSelf.replayType == MailReplayAll) {
  1286. [weakSelf backMailList];
  1287. }else{
  1288. [weakSelf.navigationController popViewControllerAnimated:YES];
  1289. }
  1290. } failure:^(NSError * _Nonnull error) {
  1291. SHOWERROR([ZYCTool handerResultData:error]);
  1292. }];
  1293. }
  1294. - (NSString *)arrayToJSONModel:(NSArray *)array
  1295. {
  1296. NSMutableArray * mArray = [NSMutableArray array];
  1297. for (SelectModel * model in array) {
  1298. NSDictionary * dict = [model modelToJSONObject];
  1299. [mArray addObject:@{@"SourceType":dict[@"SourceType"],@"SourceId":dict[@"SourceId"],@"SourceName":dict[@"SourceName"],@"MiddleType":@(self.type)}];
  1300. }
  1301. return [self arrayToJSONString:mArray];
  1302. }
  1303. - (NSString *)arrayTosumbitString:(NSArray *)array
  1304. {
  1305. NSError *error = nil;
  1306. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:&error];
  1307. NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  1308. NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
  1309. return mutStr;
  1310. }
  1311. - (NSString *)arrayToJSONString:(NSArray *)array
  1312. {
  1313. NSError *error = nil;
  1314. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:&error];
  1315. NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  1316. NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
  1317. NSRange range = {0,jsonString.length};
  1318. //去掉字符串中的空格
  1319. [mutStr replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];
  1320. NSRange range2 = {0,mutStr.length};
  1321. //去掉字符串中的换行符
  1322. [mutStr replaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2];
  1323. return mutStr;
  1324. }
  1325. - (void)dealloc {
  1326. [self.webView stopLoading];
  1327. self.webView.UIDelegate = nil;
  1328. self.webView.navigationDelegate = nil;
  1329. self.webView.scrollView.delegate = nil;
  1330. [self.webView removeFromSuperview];
  1331. WKWebsiteDataStore *dateStore = [WKWebsiteDataStore defaultDataStore];
  1332. [dateStore fetchDataRecordsOfTypes:[WKWebsiteDataStore allWebsiteDataTypes]
  1333. completionHandler:^(NSArray * __nonnull records) {
  1334. for (WKWebsiteDataRecord *record in records)
  1335. {
  1336. [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:record.dataTypes
  1337. forDataRecords:@[record]
  1338. completionHandler:^{
  1339. NSLog(@"Cookies for %@ deleted successfully",record.displayName);
  1340. }];
  1341. }
  1342. }];
  1343. WKUserContentController *userCC = self.webView.configuration.userContentController;
  1344. [userCC removeScriptMessageHandlerForName:@"chosePic"];
  1345. [userCC removeScriptMessageHandlerForName:@"toPZ"];
  1346. [userCC removeScriptMessageHandlerForName:@"toBJ"];
  1347. [userCC removeScriptMessageHandlerForName:@"getJp"];
  1348. [userCC removeScriptMessageHandlerForName:@"toSC"];
  1349. [userCC removeScriptMessageHandlerForName:@"toWJ"];
  1350. [userCC removeScriptMessageHandlerForName:@"keyBoard"];
  1351. [userCC removeScriptMessageHandlerForName:@"getType"];
  1352. [userCC removeScriptMessageHandlerForName:@"approverCheckUsers"];
  1353. [userCC removeScriptMessageHandlerForName:@"carbonCopyUsers"];
  1354. [userCC removeScriptMessageHandlerForName:@"changeState"];
  1355. [userCC removeScriptMessageHandlerForName:@"to"];
  1356. [userCC removeScriptMessageHandlerForName:@"postH"];
  1357. [userCC removeAllUserScripts];
  1358. [[NSNotificationCenter defaultCenter] removeObserver:self];
  1359. }
  1360. //- (void)hideWKWebviewKeyboardShortcutBar:(WKWebView *)webView {
  1361. // UIView *targetView;
  1362. //
  1363. // for (UIView *view in webView.scrollView.subviews) {
  1364. // if([[view.class description] hasPrefix:@"WKContent"]) {
  1365. // targetView = view;
  1366. // }
  1367. // }
  1368. // if (!targetView) {
  1369. // return;
  1370. // }
  1371. // NSString *noInputAccessoryViewClassName = [NSString stringWithFormat:@"%@_NoInputAccessoryView", targetView.class.superclass];
  1372. // Class newClass = NSClassFromString(noInputAccessoryViewClassName);
  1373. //
  1374. // if(newClass == nil) {
  1375. // newClass = objc_allocateClassPair(targetView.class, [noInputAccessoryViewClassName cStringUsingEncoding:NSASCIIStringEncoding], 0);
  1376. // if(!newClass) {
  1377. // return;
  1378. // }
  1379. //
  1380. // Method method = class_getInstanceMethod([_NoInputAccessoryView class], @selector(inputAccessoryView));
  1381. //
  1382. // class_addMethod(newClass, @selector(inputAccessoryView), method_getImplementation(method), method_getTypeEncoding(method));
  1383. //
  1384. // objc_registerClassPair(newClass);
  1385. // }
  1386. //
  1387. // object_setClass(targetView, newClass);
  1388. //}
  1389. - (CollectModelType)returnType:(NSString *)url
  1390. {
  1391. NSString * name = [[url pathExtension] lowercaseString];
  1392. if([name hasSuffix:@"png"] || [name hasSuffix:@"jpg"] || [name hasSuffix:@"jpeg"] || [name hasSuffix:@"bmp"]){
  1393. return CollectModel_Image;
  1394. }else{
  1395. return CollectModel_file;
  1396. }
  1397. }
  1398. #pragma mark - 通知存草稿箱
  1399. - (void)backAction:(id)sender{
  1400. if (self.type == CollectModel_Notice || self.type == CollectModel_InterMail) {
  1401. if (self.isNull) {
  1402. [super backAction:sender];
  1403. }else{
  1404. [self saveToDraftBox];
  1405. }
  1406. }else{
  1407. [super backAction:sender];
  1408. }
  1409. }
  1410. - (void)saveToDraftBox
  1411. {
  1412. WS(weakSelf);
  1413. [[ShowKeepNoticeAlert initShowKeepNoticeAlertConfirm:^{
  1414. weakSelf.isDraft = YES;
  1415. [weakSelf submit];
  1416. } cancle:^(ShowKeepNoticeCloseType colseType) {
  1417. if(colseType == ShowKeepNoticeCloseType1){
  1418. [weakSelf.navigationController popViewControllerAnimated:YES];
  1419. }
  1420. }] show];
  1421. }
  1422. - (void)backMailList
  1423. {
  1424. for ( NSInteger i = (self.navigationController.viewControllers.count - 1); i > 0 ;i --) {
  1425. if ([self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"TDInterLeterHomeViewController")]) {
  1426. [self.navigationController popToViewController:self.navigationController.viewControllers[i] animated:YES];
  1427. return;
  1428. }
  1429. }
  1430. }
  1431. - (void)back1
  1432. {
  1433. if (self.isReturn) {
  1434. for ( NSInteger i = (self.navigationController.viewControllers.count - 1); i > 0 ;i --) {
  1435. if ([self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"CountDataVC")]
  1436. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"MyApprovalPageDetail")]
  1437. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"WorkFlowOrderController")]
  1438. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"WorkFlowDetailsController")]
  1439. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"TDGroupInfoListVC")]
  1440. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"OtherNoteBookVC")]
  1441. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"OtherFavoriteVC")]
  1442. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"NoteBookVC")]
  1443. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"EMChatViewController")]
  1444. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"MyFavoriteVC")]
  1445. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"HomeDetailController")]
  1446. || [self.navigationController.viewControllers[i] isKindOfClass:NSClassFromString(@"MyTDTopicDetailVC")]) {
  1447. [self.navigationController popToViewController:self.navigationController.viewControllers[i] animated:YES];
  1448. return;
  1449. }
  1450. }
  1451. }else{
  1452. [self.navigationController popViewControllerAnimated:YES];
  1453. }
  1454. }
  1455. #pragma mark - JS调起键盘
  1456. - (void)allowDisplayingKeyboardWithoutUserAction {
  1457. Class class = NSClassFromString(@"WKContentView");
  1458. NSOperatingSystemVersion iOS_11_3_0 = (NSOperatingSystemVersion){11, 3, 0};
  1459. NSOperatingSystemVersion iOS_12_2_0 = (NSOperatingSystemVersion){12, 2, 0};
  1460. NSOperatingSystemVersion iOS_13_0_0 = (NSOperatingSystemVersion){13, 0, 0};
  1461. char * methodSignature = "_startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:";
  1462. if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion: iOS_13_0_0]) {
  1463. methodSignature = "_elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:";
  1464. } else if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion: iOS_12_2_0]) {
  1465. methodSignature = "_elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:";
  1466. }
  1467. if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion: iOS_11_3_0]) {
  1468. SEL selector = sel_getUid(methodSignature);
  1469. Method method = class_getInstanceMethod(class, selector);
  1470. IMP original = method_getImplementation(method);
  1471. IMP override = imp_implementationWithBlock(^void(id me, void* arg0, BOOL arg1, BOOL arg2, BOOL arg3, id arg4) {
  1472. ((void (*)(id, SEL, void*, BOOL, BOOL, BOOL, id))original)(me, selector, arg0, TRUE, arg2, arg3, arg4);
  1473. });
  1474. method_setImplementation(method, override);
  1475. } else {
  1476. SEL selector = sel_getUid("_startAssistingNode:userIsInteracting:blurPreviousNode:userObject:");
  1477. Method method = class_getInstanceMethod(class, selector);
  1478. IMP original = method_getImplementation(method);
  1479. IMP override = imp_implementationWithBlock(^void(id me, void* arg0, BOOL arg1, BOOL arg2, id arg3) {
  1480. ((void (*)(id, SEL, void*, BOOL, BOOL, id))original)(me, selector, arg0, TRUE, arg2, arg3);
  1481. });
  1482. method_setImplementation(method, override);
  1483. }
  1484. }
  1485. @end