MyTDTopicCreateVC.m 70 KB

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