Browse Source

Merge branch 'master' of ssh://10.10.100.21/source/iOSUU into newVersion

# Conflicts:
#	shiku_im/shiku_im/文件夹1/WorkMain(工作新页面)/Controllers/UASWorkMainVC.m
time 6 years ago
parent
commit
4e1f9c3b28
88 changed files with 2395 additions and 312 deletions
  1. 1 1
      shiku_im/Podfile
  2. 11 11
      shiku_im/Podfile.lock
  3. 46 2
      shiku_im/shiku_im.xcodeproj/project.pbxproj
  4. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon0.imageset/Contents.json
  5. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon0.imageset/UU_device_icon0@1x.png
  6. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon0.imageset/UU_device_icon0@2x.png
  7. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon0.imageset/UU_device_icon0@3x.png
  8. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon1.imageset/Contents.json
  9. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon1.imageset/UU_device_icon1@1x.png
  10. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon1.imageset/UU_device_icon1@2x.png
  11. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon1.imageset/UU_device_icon1@3x.png
  12. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon10.imageset/Contents.json
  13. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon10.imageset/UU_device_icon10@1x.png
  14. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon10.imageset/UU_device_icon10@2x.png
  15. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon10.imageset/UU_device_icon10@3x.png
  16. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/Contents.json
  17. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/UU_device_icon11@1x.png
  18. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/UU_device_icon11@2x.png
  19. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/UU_device_icon11@3x.png
  20. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon2.imageset/Contents.json
  21. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon2.imageset/UU_device_icon2@1x.png
  22. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon2.imageset/UU_device_icon2@2x.png
  23. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon2.imageset/UU_device_icon2@3x.png
  24. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon3.imageset/Contents.json
  25. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon3.imageset/UU_device_icon3@1x.png
  26. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon3.imageset/UU_device_icon3@2x.png
  27. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon3.imageset/UU_device_icon3@3x.png
  28. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon4.imageset/Contents.json
  29. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon4.imageset/UU_device_icon4@1x.png
  30. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon4.imageset/UU_device_icon4@2x.png
  31. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon4.imageset/UU_device_icon4@3x.png
  32. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon5.imageset/Contents.json
  33. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon5.imageset/UU_device_icon5@1x.png
  34. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon5.imageset/UU_device_icon5@2x.png
  35. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon5.imageset/UU_device_icon5@3x.png
  36. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon6.imageset/Contents.json
  37. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon6.imageset/UU_device_icon6@1x.png
  38. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon6.imageset/UU_device_icon6@2x.png
  39. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon6.imageset/UU_device_icon6@3x.png
  40. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon7.imageset/Contents.json
  41. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon7.imageset/UU_device_icon7@1x.png
  42. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon7.imageset/UU_device_icon7@2x.png
  43. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon7.imageset/UU_device_icon7@3x.png
  44. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon8.imageset/Contents.json
  45. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon8.imageset/UU_device_icon8@1x.png
  46. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon8.imageset/UU_device_icon8@2x.png
  47. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon8.imageset/UU_device_icon8@3x.png
  48. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon9.imageset/Contents.json
  49. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon9.imageset/UU_device_icon9@1x.png
  50. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon9.imageset/UU_device_icon9@2x.png
  51. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon9.imageset/UU_device_icon9@3x.png
  52. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/uu_device_scan.imageset/Contents.json
  53. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/uu_device_scan.imageset/uu_device_scan@1x.png
  54. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/uu_device_scan.imageset/uu_device_scan@2x.png
  55. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/uu_device_scan.imageset/uu_device_scan@3x.png
  56. 27 2
      shiku_im/shiku_im/controller/CRMViewController.m
  57. 1 1
      shiku_im/shiku_im/controller/DocumentListVC.m
  58. 1 1
      shiku_im/shiku_im/controller/JONEWDYTableView.m
  59. 1 1
      shiku_im/shiku_im/controller/ZXsubButton.h
  60. 1 1
      shiku_im/shiku_im/controller/myOA/ALLURLHeader.h
  61. 5 0
      shiku_im/shiku_im/controller/myOA/JOOutWorkPlanVC.h
  62. 344 9
      shiku_im/shiku_im/controller/myOA/JOOutWorkPlanVC.m
  63. 1 1
      shiku_im/shiku_im/controller/myOA/JOWQSCDKViewController.m
  64. 138 70
      shiku_im/shiku_im/controller/myOA/OutWorkingSettingViewController.m
  65. 1 1
      shiku_im/shiku_im/controller/myOA/UASNetworkManager.m
  66. 1 1
      shiku_im/shiku_im/controller/myOA/WorkTools/UASWorkManager.h
  67. 73 22
      shiku_im/shiku_im/controller/myOA/WorkTools/UASWorkManager.m
  68. 4 5
      shiku_im/shiku_im/controller/myOA/工作汇报/LYYWorkReportEditeVC.m
  69. 4 4
      shiku_im/shiku_im/controller/审批流详情/LYYApprovalDetailVC.m
  70. 4 0
      shiku_im/shiku_im/controller/审批流详情/LYYReadingVC.m
  71. 5 0
      shiku_im/shiku_im/en.lproj/InfoPlist.strings
  72. 1 1
      shiku_im/shiku_im/shiku_im-Info.plist
  73. 6 1
      shiku_im/shiku_im/zh-Hans.lproj/InfoPlist.strings
  74. 5 0
      shiku_im/shiku_im/zh-Hant.lproj/InfoPlist.strings
  75. 44 26
      shiku_im/shiku_im/文件夹1/WorkMain(工作新页面)/Controllers/UASWorkMainVC.m
  76. 1 1
      shiku_im/shiku_im/文件夹1/多明细通用表单/Models/MoreGridModel.h
  77. 90 86
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/LYYDeviceMainVC.m
  78. 55 22
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/搜索/LYYDMDataSearchVC.m
  79. 11 11
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/设备的盘点/LYYDMCheckDetailVC.m
  80. 30 23
      shiku_im/shiku_im/文件夹1/设备管理/views/查寻cell/LYYDMDataSearchCell.m
  81. 4 4
      shiku_im/shiku_im/文件夹1/设备管理/views/查寻cell/LYYDMDataSearchColectCell.m
  82. 14 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/DeviceFormVC.h
  83. 426 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/DeviceFormVC.m
  84. 37 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Views/DeviceFormView.h
  85. 665 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Views/DeviceFormView.m
  86. 5 3
      shiku_im/shiku_im/文件夹3/人脸识别/NetManager/NetAccessModel.m
  87. 32 0
      shiku_im/shiku_im/文件夹3/人脸识别/View/FaceGroupVC.m
  88. 1 1
      shiku_im/shiku_im/文件夹3/人脸识别/View/FaceModel.h

+ 1 - 1
shiku_im/Podfile

@@ -21,7 +21,7 @@ target 'shiku_im' do
   pod 'pop'
   pod 'TZImagePickerController'
   pod 'EGOCache'
-  pod 'SDWebImage'
+  pod 'SDWebImage'=>'4.4.6'
   pod 'HMSegmentedControl'
 
 end

+ 11 - 11
shiku_im/Podfile.lock

@@ -23,12 +23,12 @@ PODS:
     - FMDB/standard (= 2.7.5)
   - FMDB/standard (2.7.5)
   - HMSegmentedControl (1.5.5)
-  - IQKeyboardManager (6.2.0)
+  - IQKeyboardManager (6.3.0)
   - Masonry (1.1.0)
-  - MJExtension (3.0.15.1)
-  - MJRefresh (3.1.15.7)
+  - MJExtension (3.0.17)
+  - MJRefresh (3.2.0)
   - pop (1.0.12)
-  - ReactiveObjC (3.1.0)
+  - ReactiveObjC (3.1.1)
   - SDWebImage (4.4.6):
     - SDWebImage/Core (= 4.4.6)
   - SDWebImage/Core (4.4.6)
@@ -49,7 +49,7 @@ DEPENDENCIES:
   - MJRefresh
   - pop
   - ReactiveObjC
-  - SDWebImage
+  - SDWebImage (= 4.4.6)
   - SVProgressHUD
   - TZImagePickerController
   - WechatOpenSDK
@@ -80,17 +80,17 @@ SPEC CHECKSUMS:
   EGOCache: 191fd213da6804d487b49b1a91772ba904f3e324
   FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
   HMSegmentedControl: f514c6dad47aa3065e0ed2e8046b73efc71221b9
-  IQKeyboardManager: 6194101620b73af5e67900b8f89707a99de0b804
+  IQKeyboardManager: 2ca9d64893247556f53523dcd8d78641f0ba7c23
   Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
-  MJExtension: 19bc33ce2eee2d319760f5622562cf581a6ff756
-  MJRefresh: 697f8ec75ebdbe9207767bb682cf0f51b0d8a41f
+  MJExtension: 74ec83124a68891619fb7ba9c5c811bbf1691076
+  MJRefresh: ed450d6eb9d3346a2cb033ab7eb6de090aeef437
   pop: d582054913807fd11fd50bfe6a539d91c7e1a55a
-  ReactiveObjC: 2a38ea15335de4119d8b17caf1db1484f61db902
+  ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
   SDWebImage: 3f3f0c02f09798048c47a5ed0a13f17b063572d8
   SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6
   TZImagePickerController: 7850b158d025065b162a1a963d445040b828abc9
   WechatOpenSDK: 9b721089507c895d05f997408c30bb6e6f5f9b60
 
-PODFILE CHECKSUM: 2e58a501fbc028fd37151a6316b97f5594e0e1d5
+PODFILE CHECKSUM: b24727c5036e6873182234452070d8185a3752ed
 
-COCOAPODS: 1.5.2
+COCOAPODS: 1.6.0

+ 46 - 2
shiku_im/shiku_im.xcodeproj/project.pbxproj

@@ -861,6 +861,8 @@
 		27E2EA991CC762F600850F6E /* uu_work_pengyouquan_pinglun.png in Resources */ = {isa = PBXBuildFile; fileRef = 27E2EA981CC762F600850F6E /* uu_work_pengyouquan_pinglun.png */; };
 		27E8FECD1CE5BFAB000A04EA /* JZLocationConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 27E8FECC1CE5BFAB000A04EA /* JZLocationConverter.m */; };
 		27EBA2AD1D5DA118005D119E /* MySubordinateVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 27EBA2AC1D5DA118005D119E /* MySubordinateVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+		27EBFBC922BA25BE0004CFEF /* DeviceFormVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 27EBFBC822BA25BE0004CFEF /* DeviceFormVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+		27EBFBCC22BB5D0E0004CFEF /* DeviceFormView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27EBFBCB22BB5D0E0004CFEF /* DeviceFormView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		27ECC13F201EF86200E4E899 /* GoodsListView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27ECC13E201EF86200E4E899 /* GoodsListView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		27ECC142201F039F00E4E899 /* GoodsListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 27ECC141201F039F00E4E899 /* GoodsListCell.m */; };
 		27ED47391CBB4D1800CAB797 /* uu_me_b2bzhanghu.png in Resources */ = {isa = PBXBuildFile; fileRef = 27ED472C1CBB4D1800CAB797 /* uu_me_b2bzhanghu.png */; };
@@ -4207,6 +4209,10 @@
 		27E8FECC1CE5BFAB000A04EA /* JZLocationConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JZLocationConverter.m; sourceTree = "<group>"; };
 		27EBA2AB1D5DA118005D119E /* MySubordinateVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MySubordinateVC.h; sourceTree = "<group>"; };
 		27EBA2AC1D5DA118005D119E /* MySubordinateVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MySubordinateVC.m; sourceTree = "<group>"; };
+		27EBFBC722BA25BE0004CFEF /* DeviceFormVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeviceFormVC.h; sourceTree = "<group>"; };
+		27EBFBC822BA25BE0004CFEF /* DeviceFormVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DeviceFormVC.m; sourceTree = "<group>"; };
+		27EBFBCA22BB5D0E0004CFEF /* DeviceFormView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeviceFormView.h; sourceTree = "<group>"; };
+		27EBFBCB22BB5D0E0004CFEF /* DeviceFormView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DeviceFormView.m; sourceTree = "<group>"; };
 		27ECC13D201EF86200E4E899 /* GoodsListView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GoodsListView.h; sourceTree = "<group>"; };
 		27ECC13E201EF86200E4E899 /* GoodsListView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GoodsListView.m; sourceTree = "<group>"; };
 		27ECC140201F039F00E4E899 /* GoodsListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GoodsListCell.h; sourceTree = "<group>"; };
@@ -9936,6 +9942,41 @@
 			path = "多样式提示框";
 			sourceTree = "<group>";
 		};
+		27EBFBC322BA252A0004CFEF /* 设备管理2.0 */ = {
+			isa = PBXGroup;
+			children = (
+				27EBFBC622BA255F0004CFEF /* Models */,
+				27EBFBC522BA25580004CFEF /* Views */,
+				27EBFBC422BA254A0004CFEF /* Controllers */,
+			);
+			path = "设备管理2.0";
+			sourceTree = "<group>";
+		};
+		27EBFBC422BA254A0004CFEF /* Controllers */ = {
+			isa = PBXGroup;
+			children = (
+				27EBFBC722BA25BE0004CFEF /* DeviceFormVC.h */,
+				27EBFBC822BA25BE0004CFEF /* DeviceFormVC.m */,
+			);
+			path = Controllers;
+			sourceTree = "<group>";
+		};
+		27EBFBC522BA25580004CFEF /* Views */ = {
+			isa = PBXGroup;
+			children = (
+				27EBFBCA22BB5D0E0004CFEF /* DeviceFormView.h */,
+				27EBFBCB22BB5D0E0004CFEF /* DeviceFormView.m */,
+			);
+			path = Views;
+			sourceTree = "<group>";
+		};
+		27EBFBC622BA255F0004CFEF /* Models */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = Models;
+			sourceTree = "<group>";
+		};
 		27F5045C1FAAFBEF00704DF6 /* 服务项目选择 */ = {
 			isa = PBXGroup;
 			children = (
@@ -10327,6 +10368,7 @@
 				20C019192021727600312F12 /* InviteReg(邀请注册) */,
 				AA12F9B61FB5AA5000688D9F /* 工资条 */,
 				7DA6733D1FC41689007D2EA3 /* 设备管理 */,
+				27EBFBC322BA252A0004CFEF /* 设备管理2.0 */,
 				7D2A47B81FB155AF0060130A /* 一元捐 */,
 				B85D94751D5AD0D10006B276 /* MainViewController */,
 				B84A35151D210D6300C52DD9 /* 行政办公 */,
@@ -18651,7 +18693,7 @@
 			files = (
 			);
 			inputPaths = (
-				"${SRCROOT}/Pods/Target Support Files/Pods-shiku_im/Pods-shiku_im-resources.sh",
+				"${PODS_ROOT}/Target Support Files/Pods-shiku_im/Pods-shiku_im-resources.sh",
 				"${PODS_ROOT}/AliPay/AlipaySDK.bundle",
 				"${PODS_ROOT}/Bugtags/Bugtags.bundle",
 				"${PODS_ROOT}/IQKeyboardManager/IQKeyboardManager/Resources/IQKeyboardManager.bundle",
@@ -18670,7 +18712,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-shiku_im/Pods-shiku_im-resources.sh\"\n";
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-shiku_im/Pods-shiku_im-resources.sh\"\n";
 			showEnvVarsInLog = 0;
 		};
 /* End PBXShellScriptBuildPhase section */
@@ -18950,6 +18992,7 @@
 				4D841A4E1E811D6D00852BA1 /* JOB2BEmployeeModel.m in Sources */,
 				7D3128A81EA9AE2300CA0C35 /* LYYSelectSchduleAlerView.m in Sources */,
 				7D49DC6E1FEA8E8800D6DAE2 /* LYYDMCheckDetailVC.m in Sources */,
+				27EBFBCC22BB5D0E0004CFEF /* DeviceFormView.m in Sources */,
 				CCFD208F19592D1D00B98494 /* TPCircularBuffer.c in Sources */,
 				CCE241FC18FFB8EB00A3CB5A /* XMPPRoomMessageCoreDataStorageObject.m in Sources */,
 				B87243B11D36254D005C05B4 /* JOKQSZTableViewController.m in Sources */,
@@ -19022,6 +19065,7 @@
 				7D153EDB1FEB9294003309FC /* LYYTextFieldCell.m in Sources */,
 				2771C81E20B538880066984D /* DFPlayer.m in Sources */,
 				4DD076E71DD9547400ACF90A /* LYJournalTaskCell.m in Sources */,
+				27EBFBC922BA25BE0004CFEF /* DeviceFormVC.m in Sources */,
 				203A97461F7B3CE100B91E16 /* UASInsHeaderView.m in Sources */,
 				CCE241EC18FFB8EB00A3CB5A /* XMPPReconnect.m in Sources */,
 				B8FAEFAA1D2B97EE00094132 /* JOPunchCardViewController.m in Sources */,

+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon0.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon0@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon0@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon0@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon0.imageset/UU_device_icon0@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon0.imageset/UU_device_icon0@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon0.imageset/UU_device_icon0@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon1.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon1@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon1@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon1@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon1.imageset/UU_device_icon1@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon1.imageset/UU_device_icon1@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon1.imageset/UU_device_icon1@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon10.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon10@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon10@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon10@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon10.imageset/UU_device_icon10@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon10.imageset/UU_device_icon10@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon10.imageset/UU_device_icon10@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon11@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon11@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon11@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/UU_device_icon11@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/UU_device_icon11@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/UU_device_icon11@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon2.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon2@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon2@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon2@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon2.imageset/UU_device_icon2@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon2.imageset/UU_device_icon2@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon2.imageset/UU_device_icon2@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon3.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon3@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon3@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon3@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon3.imageset/UU_device_icon3@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon3.imageset/UU_device_icon3@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon3.imageset/UU_device_icon3@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon4.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon4@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon4@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon4@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon4.imageset/UU_device_icon4@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon4.imageset/UU_device_icon4@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon4.imageset/UU_device_icon4@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon5.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon5@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon5@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon5@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon5.imageset/UU_device_icon5@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon5.imageset/UU_device_icon5@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon5.imageset/UU_device_icon5@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon6.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon6@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon6@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon6@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon6.imageset/UU_device_icon6@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon6.imageset/UU_device_icon6@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon6.imageset/UU_device_icon6@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon7.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon7@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon7@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon7@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon7.imageset/UU_device_icon7@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon7.imageset/UU_device_icon7@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon7.imageset/UU_device_icon7@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon8.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon8@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon8@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon8@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon8.imageset/UU_device_icon8@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon8.imageset/UU_device_icon8@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon8.imageset/UU_device_icon8@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon9.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon9@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon9@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "UU_device_icon9@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon9.imageset/UU_device_icon9@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon9.imageset/UU_device_icon9@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon9.imageset/UU_device_icon9@3x.png


+ 23 - 0
shiku_im/shiku_im/Images.xcassets/设备图片/uu_device_scan.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "uu_device_scan@1x.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "uu_device_scan@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "uu_device_scan@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
shiku_im/shiku_im/Images.xcassets/设备图片/uu_device_scan.imageset/uu_device_scan@1x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/uu_device_scan.imageset/uu_device_scan@2x.png


BIN
shiku_im/shiku_im/Images.xcassets/设备图片/uu_device_scan.imageset/uu_device_scan@3x.png


+ 27 - 2
shiku_im/shiku_im/controller/CRMViewController.m

@@ -37,6 +37,9 @@
 #import "ZXVisitReportViewController.h"
 #import "UASProCityNavHeader.h"
 #import "FaceGroupVC.h"
+#import "FaceUserListVC.h"
+#import <IDLFaceSDK/IDLFaceSDK.h>
+#import "NetAccessModel.h"
 static NSString *cellID = @"cellID";
 
 @interface CRMViewController ()<UITableViewDelegate,UITableViewDataSource>
@@ -217,8 +220,30 @@ static NSString *cellID = @"cellID";
 
 -(void)dan:(UIButton *)sender
 {
-    FaceGroupVC *vc = [[FaceGroupVC alloc]init];
-    [self.navigationController pushViewController:vc animated:YES];
+//    FaceUserListVC *vc = [[FaceUserListVC alloc]init];
+//    [self.navigationController pushViewController:vc animated:YES];
+    
+    // 设置鉴权
+//    NSString* licensePath = [[NSBundle mainBundle] pathForResource:FACE_LICENSE_NAME ofType:FACE_LICENSE_SUFFIX];
+//    NSAssert([[NSFileManager defaultManager] fileExistsAtPath:licensePath], @"license文件路径不对,请仔细查看文档");
+//    [[FaceSDKManager sharedInstance] setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
+//    [[NetAccessModel sharedInstance] getAccessTokenWithAK:FACE_API_KEY SK:FACE_SECRET_KEY];
+//
+//    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+//
+//        [[NetAccessModel sharedInstance] deleteFaceUserGroupWithGroupID:FORMAT(@"%@",@"20000087") completion:^(NSError *error, id resultObject) {
+//            [MBProgressHUD hideHUD];
+//
+//            NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:resultObject options:NSJSONReadingAllowFragments error:nil];
+//            SLog(@"人脸识别数据:%@",dict);
+//
+//            //先判断接口请求是否成功
+//            NSString *success = FORMAT(@"%@",dict[@"error_msg"]);
+//            if ([success isEqualToString:@"SUCCESS"]) {
+//
+//            }
+//        }];
+//    });
 }
 
 //隐藏打卡编号

+ 1 - 1
shiku_im/shiku_im/controller/DocumentListVC.m

@@ -225,7 +225,7 @@ static NSString *cellID = @"cellID";
         
     }else if ([_caller isEqualToString:@"ProdInOut!Sale"])//泽天-出货单
     {
-        url = [NSString stringWithFormat:@"%@mobile/common/list.action?caller=%@&condition=%@&page=%@&pageSize=%@&emcode=%@&currentMaster=%@&sessionId=%@",ip,_caller,@"pi_invostatuscode='AUDITED'  and  pi_statuscode='POSTED'",page,pageSize,emcode,currentMaster,sessionId];
+        url = [NSString stringWithFormat:@"%@mobile/common/list.action?caller=%@&condition=%@&page=%@&pageSize=%@&currentMaster=%@&sessionId=%@",ip,_caller,@"pi_invostatuscode='AUDITED' and pi_transport='自提' and pi_signstatus='未签名'",page,pageSize,currentMaster,sessionId];
     }
     else{
         

+ 1 - 1
shiku_im/shiku_im/controller/JONEWDYTableView.m

@@ -518,7 +518,7 @@
     
     NSDateFormatter  *dateformatter=[[NSDateFormatter alloc] init];
     
-    [dateformatter setDateFormat:@"YYYYMMdd"];
+    [dateformatter setDateFormat:@"yyyyMMdd"];
     
     NSString *  locationString=[dateformatter stringFromDate:newdate];
     //DLog(@"刷新时间接口=%@",locationString);

+ 1 - 1
shiku_im/shiku_im/controller/ZXsubButton.h

@@ -12,5 +12,5 @@
 
 @property(nonatomic,copy)NSString * type;
 @property(nonatomic,strong)NSString * numId;
-
+@property(nonatomic,strong)NSString * backUpString;//备用字符串
 @end

+ 1 - 1
shiku_im/shiku_im/controller/myOA/ALLURLHeader.h

@@ -13,7 +13,7 @@
 /*ip地址*/
 #define g_id  [[NSUserDefaults standardUserDefaults] objectForKey:@"ipAndPort"]
 //#define g_id @"http://192.168.253.63:8080/uas_system/"
-//#define g_id @"http://10.1.80.197:8888/uas-system"
+//#define g_id @"http://10.1.80.60:8080/uas-system/"
 /*新账户中心token*/
 #define g_accountToken [[NSUserDefaults standardUserDefaults] objectForKey:@"accountToken"]
 /*sessionId*/

+ 5 - 0
shiku_im/shiku_im/controller/myOA/JOOutWorkPlanVC.h

@@ -14,4 +14,9 @@
 
 @property(copy,nonatomic)void(^scheduleBlock)(void);
 
+/**
+ 判断外勤是否开启人脸打卡
+ */
+@property(nonatomic,assign) NSString *faceGo;
+
 @end

+ 344 - 9
shiku_im/shiku_im/controller/myOA/JOOutWorkPlanVC.m

@@ -41,6 +41,12 @@
 #import "UASChooseAddDetailVc.h"
 #import "UASWorkManager.h"
 #import "UASLocaManager.h"
+
+//人脸识别
+#import "DetectionViewController.h"
+#import "NetAccessModel.h"
+#import <IDLFaceSDK/IDLFaceSDK.h>
+
 #pragma mark -- 自定义的cell
 
 
@@ -690,7 +696,6 @@
 
 @property(assign,nonatomic)BOOL isPunchHand;
 
-
 /**
  为了防止手动外勤对象提前释放后调用某个方法导致闪退
  */
@@ -698,9 +703,6 @@
 
 @end
 
-
-
-
 @implementation JOOutWorkPlanVC
 
 - (void)viewDidLoad
@@ -832,14 +834,103 @@
     
 }
 
--(void)punchCard{
-    
+#pragma mark --- 手动签到第一步
+-(void)punchCard
+{
+    if (self.faceGo.length != 0) {
+        
+        if ([self.faceGo isEqualToString:@"1"]) {
+            
+            [self FaceLoginJudgeMyself];
+            
+        }
+        else if ([self.faceGo isEqualToString:@"fail"]) {
+            
+            //以防万一:工作台页面获取外勤设置接口失败时,重新获取外勤设置
+            
+            [MBProgressHUD showMessage:@""];
+            
+            NSString *url = [NSString stringWithFormat:@"%@/mobile/getOutSetInfo.action?master=%@&sessionUser=%@&sessionId=%@",g_id,g_master,g_sessionUser,g_sessionId];
+            
+            url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+            
+            UASNetworkManager *mannage = [UASNetworkManager shareManager];
+            
+            mannage.responseSerializer = [AFJSONResponseSerializer serializer];
+            
+            [mannage request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+                [MBProgressHUD hideHUD];
+                
+                NSDictionary *rootDic = responseObject;
+                
+                if ([rootDic objectForKey:@"result"] == nil)
+                {
+                    return ;
+                }
+                if ([[rootDic objectForKey:@"result"] isKindOfClass:[NSNull class]]) {
+                    
+                    return;
+                }
+                
+                NSMutableArray * arr = [[NSMutableArray alloc]initWithArray:[NSDictionary changeType:[rootDic objectForKey:@"result"]]];
+                
+                if (arr.count == 0)
+                {
+                    return;
+                }
+                
+                for (id obj in rootDic[@"result"])
+                {
+                    
+                    if ([[obj allKeys] containsObject:@"MO_FACESIGN"]) {
+                        
+                        NSString *faceSign = [NSString stringWithFormat:@"%@",obj[@"MO_FACESIGN"]];
+                        
+                        if ([faceSign isEqualToString:@"1"]) {
+                            
+                            self.faceGo = faceSign;
+                            
+                        }
+                    }
+                    
+                }
+                
+                if ([self.faceGo isEqualToString:@"1"]) {
+                    [self FaceLoginJudgeMyself];
+                }else{
+                    [self startPunchCard:nil];
+                }
+                
+            } failure:^(NSURLSessionDataTask *task, NSError *error) {
+                
+                [MBProgressHUD hideHUD];
+                
+                //万一此接口崩溃,还是要打卡的。
+                [self startPunchCard:nil];
+                
+            }];
+            
+        }
+        
+        else{
+            [self startPunchCard:nil];
+        }
+        
+    }else{
+        //其余公司无mo_facesign直接打卡
+        [self startPunchCard:nil];
+    }
+}
+
+#pragma mark --- 外勤打卡开始
+-(void)startPunchCard:(NSData *)imageData
+{
     self.isPunchHand = YES;
     //重新创建,防止数据错乱
     self.outManager = [UASWorkManager manager];
     @weakify(self)
-    [self.outManager outWorkPunchByHandCompleted:^(BOOL success, NSString *str) {
-       @strongify(self)
+    [self.outManager outWorkPunchByHandWithImageData:imageData Completed:^(BOOL success, NSString *str) {
+        @strongify(self)
         if (success) {
             
             [self shouldRefreshData];
@@ -847,8 +938,252 @@
         }
         
     }];
+}
+
+#pragma mark --- 人脸识别开始
+-(void)FaceLoginJudgeMyself
+{
+    // 设置鉴权
+    NSString* licensePath = [[NSBundle mainBundle] pathForResource:FACE_LICENSE_NAME ofType:FACE_LICENSE_SUFFIX];
+    NSAssert([[NSFileManager defaultManager] fileExistsAtPath:licensePath], @"license文件路径不对,请仔细查看文档");
+    [[FaceSDKManager sharedInstance] setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
+    
+    [SVProgressHUD appearance].defaultStyle = SVProgressHUDStyleDark;
+    
+    [[NetAccessModel sharedInstance] getAccessTokenWithAK:FACE_API_KEY SK:FACE_SECRET_KEY];
+    
+    __weak typeof(self) weakSelf = self;
+    DetectionViewController *dvc = [[DetectionViewController alloc] init];
+    dvc.completion = ^(NSDictionary* images, UIImage* originImage){
+        if (images[@"bestImage"] != nil && [images[@"bestImage"] count] != 0) {
+            NSData* data = [[NSData alloc] initWithBase64EncodedString:[images[@"bestImage"] lastObject] options:NSDataBase64DecodingIgnoreUnknownCharacters];
+            UIImage* bestImage = [UIImage imageWithData:data];
+            DLog(@"bestImage = %@",bestImage);
+            NSString* bestImageStr = [[images[@"bestImage"] lastObject] copy];
+            [weakSelf identify:bestImageStr originImage:images[@"cropImage"]?:originImage andViewController:dvc andImageData:data];
+        }
+    };
+    
+    [self presentViewController:dvc animated:YES completion:nil];
     
 }
+
+#pragma mark --- 人脸验证流程
+- (void)identify:(NSString*)bestImageStr originImage:(UIImage *)originImage andViewController:(DetectionViewController *)dvc andImageData:(NSData *)imageData{
+    
+    // 设置鉴权
+    NSString* licensePath = [[NSBundle mainBundle] pathForResource:FACE_LICENSE_NAME ofType:FACE_LICENSE_SUFFIX];
+    NSAssert([[NSFileManager defaultManager] fileExistsAtPath:licensePath], @"license文件路径不对,请仔细查看文档");
+    [[FaceSDKManager sharedInstance] setLicenseID:FACE_LICENSE_ID andLocalLicenceFile:licensePath];
+    
+    [SVProgressHUD appearance].defaultStyle = SVProgressHUDStyleDark;
+    
+    [[NetAccessModel sharedInstance] getAccessTokenWithAK:FACE_API_KEY SK:FACE_SECRET_KEY];
+    
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+       
+        __weak typeof(self) weakSelf = self;
+        [[NetAccessModel sharedInstance] identifyUserLivenessWithFaceImageStr:bestImageStr completion:^(NSError *error, id resultObject) {
+            
+            if (resultObject) {
+                NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:resultObject options:NSJSONReadingAllowFragments error:nil];
+                SLog(@"人脸识别数据:%@",dict);
+                
+                //先判断接口请求是否成功
+                NSString *success = FORMAT(@"%@",dict[@"error_msg"]);
+                if ([success isEqualToString:@"SUCCESS"]) {
+                    //判断人脸库是否存在当前用户
+                    NSArray *userList = dict[@"result"][@"user_list"];
+                    if (userList.count == 0) {
+                        //无此用户走人脸注册流程
+                        [UASAlertView showWithTitle:nil content:@"您未录入人脸照片,点击“确定”录入系统" sureTitle:@"确定录入" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                            if (index == 2) {
+                                [weakSelf RegisterUserFactToBaiduFaceListWithFaceImageString:bestImageStr andViewController:dvc andImageData:imageData];
+                            }
+                            if (index == 1) {
+                                [dvc dismissViewControllerAnimated:YES completion:nil];
+                            }
+                        }];
+                        
+                    }else{
+                        NSDictionary *userDic = userList[0];
+                        float score = [[userDic objectForKey:@"score"] floatValue];
+                        if (score > 85) {
+                            //是本人,走打卡流程
+                            [dvc dismissViewControllerAnimated:YES completion:nil];
+                            
+                            [self startPunchCard:imageData];
+                        }else{
+                            //不是本人
+                            [UASAlertView showWithTitle:nil content:@"抱歉,没有认出你哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                                if (index == 2) {
+                                    [IDLFaceDetectionManager.sharedInstance reset];
+                                    [[IDLFaceDetectionManager sharedInstance] startInitial];
+                                    dvc.hasFinished = NO;
+                                    [dvc startCapture];
+                                }
+                                if (index == 1) {
+                                    [dvc dismissViewControllerAnimated:YES completion:nil];
+                                }
+                            }];
+                        }
+                    }
+                }
+                else if ([success isEqualToString:@"liveness check fail"]){
+                    [UASAlertView showWithTitle:nil content:@"不能拿照片骗我哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                        if (index == 2) {
+                            [IDLFaceDetectionManager.sharedInstance reset];
+                            [[IDLFaceDetectionManager sharedInstance] startInitial];
+                            dvc.hasFinished = NO;
+                            [dvc startCapture];
+                        }
+                        if (index == 1) {
+                            [dvc dismissViewControllerAnimated:YES completion:nil];
+                        }
+                    }];
+                }
+                else{
+                    if ([FORMAT(@"%@",[dict objectForKey:@"error_code"])isEqualToString:@"222207"]) {
+                        //无此用户走人脸注册流程,先到ERP看是否传过人脸
+                        [self getERPhaveFace:bestImageStr originImage:originImage andViewController:dvc andImageData:imageData];
+                    }else{
+                        [UASAlertView showWithTitle:nil content:success sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                            if (index == 2) {
+                                [IDLFaceDetectionManager.sharedInstance reset];
+                                [[IDLFaceDetectionManager sharedInstance] startInitial];
+                                dvc.hasFinished = NO;
+                                [dvc startCapture];
+                            }
+                            if (index == 1) {
+                                [dvc dismissViewControllerAnimated:YES completion:nil];
+                            }
+                        }];
+                    }
+                }
+            }
+            
+        }];
+        
+    });
+}
+
+#pragma mark --- 勉强操作:百度会抽风,所以在ERP做是否传过人脸的标识
+- (void)getERPhaveFace:(NSString*)bestImageStr originImage:(UIImage *)originImage andViewController:(DetectionViewController *)dvc andImageData:(NSData *)imageData{
+    
+    __weak typeof(self) weakSelf = self;
+    
+    NSString *url = [NSString stringWithFormat:@"%@/mobile/getUploadPictureSign.action",g_id];
+    
+    NSDictionary *param = @{
+                            @"master":g_master,
+                            @"em_imid":g_server.myself.userId,
+                            @"emcode":g_emcode
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    UASNetworkManager *mannage = [UASNetworkManager shareManager];
+    
+    mannage.responseSerializer = [AFJSONResponseSerializer serializer];
+    
+    [mannage request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        
+        NSString *faceStr = FORMAT(@"%@",responseObject[@"em_uploadsign"]);
+        
+        if ([faceStr isEqualToString:@"1"]) {
+            
+            [UASAlertView showWithTitle:nil content:@"抱歉,没有认出你哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                if (index == 2) {
+                    [IDLFaceDetectionManager.sharedInstance reset];
+                    [[IDLFaceDetectionManager sharedInstance] startInitial];
+                    dvc.hasFinished = NO;
+                    [dvc startCapture];
+                }
+                if (index == 1) {
+                    [dvc dismissViewControllerAnimated:YES completion:nil];
+                }
+            }];
+            
+        }else{
+            
+            //无此用户走人脸注册流程
+            [UASAlertView showWithTitle:nil content:@"您未录入人脸照片,点击“确定”录入系统" sureTitle:@"确定录入" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+                if (index == 2) {
+                    [weakSelf RegisterUserFactToBaiduFaceListWithFaceImageString:bestImageStr andViewController:dvc andImageData:imageData];
+                }
+                if (index == 1) {
+                    [dvc dismissViewControllerAnimated:YES completion:nil];
+                }
+            }];
+            
+        }
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        
+        [UASAlertView showWithTitle:nil content:@"抱歉,没有认出你哦" sureTitle:@"再试一次" cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+            if (index == 2) {
+                [IDLFaceDetectionManager.sharedInstance reset];
+                [[IDLFaceDetectionManager sharedInstance] startInitial];
+                dvc.hasFinished = NO;
+                [dvc startCapture];
+            }
+            if (index == 1) {
+                [dvc dismissViewControllerAnimated:YES completion:nil];
+            }
+        }];
+        
+    }];
+}
+
+#pragma mark --- 人脸注册
+-(void)RegisterUserFactToBaiduFaceListWithFaceImageString:(NSString*)bestImageStr andViewController:(DetectionViewController *)dvc andImageData:(NSData *)imageData
+{
+    //    __weak typeof(self) weakSelf = self;
+    [[NetAccessModel sharedInstance] registerFaceWithImageBaseString:bestImageStr  completion:^(NSError *error, id resultObject) {
+        NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:resultObject options:NSJSONReadingAllowFragments error:nil];
+        SLog(@"人脸识别数据:%@",dict);
+        
+        //先判断接口请求是否成功
+        NSString *success = FORMAT(@"%@",dict[@"error_msg"]);
+        if ([success isEqualToString:@"SUCCESS"]) {
+            
+            [dvc dismissViewControllerAnimated:YES completion:nil];
+            //在ERP上做标识
+            [self changeFaceStateToERP];
+            //注册成功后,走打卡流程
+            [self startPunchCard:imageData];
+        }
+    }];
+}
+
+#pragma mark --- 百度人脸注册成功后,在ERP上做个标识
+-(void)changeFaceStateToERP
+{
+    NSString *url = [NSString stringWithFormat:@"%@/mobile/updateUploadPictureSign.action",g_id];
+    
+    NSDictionary *param = @{
+                            @"master":g_master,
+                            @"em_imid":g_server.myself.userId,
+                            @"emcode":g_emcode,
+                            @"em_uploadsign":@"1"
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    UASNetworkManager *mannage = [UASNetworkManager shareManager];
+    
+    mannage.responseSerializer = [AFJSONResponseSerializer serializer];
+    
+    [mannage request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        
+        
+    }];
+}
+
+
 //2.1导航栏右按钮--设置界面
 - (void)pushToSetting
 {
@@ -1991,7 +2326,7 @@
         [_idAndCodeArr addObject:[NSString stringWithFormat:@"%@",responseObject[@"code"]]];
         
         
-        NSString *urlid = [NSString stringWithFormat:@"%@common/getId.action?seq=%@&sessionId=%@",ip,@"MOBILE_OUTPLAN_SEQ",sessionId];
+        NSString *urlid = [NSString stringWithFormat:@"%@common/getId.action?seq=%@&sessionId=%@",g_id,@"MOBILE_OUTPLAN_SEQ",sessionId];
         
         
         urlid = [urlid stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

+ 1 - 1
shiku_im/shiku_im/controller/myOA/JOWQSCDKViewController.m

@@ -1011,7 +1011,7 @@
     //接口
     NSString * urlAddress=@"mobile/oa/saveOutSign.action";
     //Caller
-    NSString * caller=@"c";
+    NSString * caller=@"Mobile_outsign";
     
     /**
      1,打卡地址

+ 138 - 70
shiku_im/shiku_im/controller/myOA/OutWorkingSettingViewController.m

@@ -18,6 +18,8 @@
 
 @property(nonatomic,strong)UITableView * tableView;
 
+@property(nonatomic,strong)NSMutableArray *dataArr;
+
 @end
 
 @implementation OutWorkingSettingViewController
@@ -25,6 +27,7 @@
     //增加一个自动打卡的按钮
     UISwitch * _switch1;
     UISwitch * _switch2;
+    UISwitch * _switch3;//是否开启人脸打卡
     
     UILabel * _remindTime;
     UILabel * _legDistance;
@@ -46,6 +49,9 @@
     //是否需要审批
     NSString *_returnNeedProcess;
     
+    //是否开启人脸打卡
+    NSString *_returnNeedFace;
+    
 }
 
 - (void)viewDidLoad {
@@ -56,6 +62,13 @@
     _returnStatus = @"";
     _returnTime = @"";
     _returnNeedProcess = @"0";
+    _returnNeedFace = @"0";
+    
+    NSArray * ERPtitleArr=@[Localized(@"UU_me_set_outsideWorkSet_autoOutsideWork"),Localized(@"UU_me_set_outsideWorkSet_effectiveDistance"),Localized(@"UU_me_set_outsideWorkSet_reserveTime"),Localized(@"UU_me_set_outsideWorkSet_needApprove")];
+    for (int i = 0; i < ERPtitleArr.count; i++) {
+        [self.dataArr addObject:ERPtitleArr[i]];
+    }
+    
     //设置UI
     [self setNavi];
 
@@ -89,10 +102,10 @@
     NSString *sessionId = [[NSUserDefaults standardUserDefaults] stringForKey:@"sessionId"];
     NSString *url;
     if (g_B2BUser) {
-        url= [NSString stringWithFormat:@"%@mobile/outplan/getOutSet?master=%@&emcode=%@&sessionId=%@&enuu=%@",ipStr,@"(null)",g_emcode,sessionId,g_B2B_enuu];
+        url= [NSString stringWithFormat:@"%@mobile/outplan/getOutSet?master=%@&emcode=%@&sessionId=%@&enuu=%@",g_id,@"(null)",g_emcode,sessionId,g_B2B_enuu];
     }else{
         
-        url = [NSString stringWithFormat:@"%@/mobile/getOutSetInfo.action?master=%@&sessionUser=%@&sessionId=%@",ipStr,g_master,g_sessionUser,sessionId];
+        url = [NSString stringWithFormat:@"%@/mobile/getOutSetInfo.action?master=%@&sessionUser=%@&sessionId=%@",g_id,g_master,g_sessionUser,sessionId];
         
     }
     DLog(@"拼接的URL是什么呢:%@",url);
@@ -128,6 +141,11 @@
                 _returnStatus = [NSString stringWithFormat:@"%@",obj[@"MO_AUTOSIGN"]];
                 _returnTime = [NSString stringWithFormat:@"%@",obj[@"MO_TIME"]];
                 _returnNeedProcess = FORMAT(@"%@",obj[@"MO_NEEDPROCESS"]);
+                
+                if ([[obj allKeys] containsObject:@"MO_FACESIGN"]) {
+                    _returnNeedFace = FORMAT(@"%@",obj[@"MO_FACESIGN"]);
+                    [self.dataArr addObject:@"人脸打卡"];
+                }
             }
         }
         DLog(@"获取的服务器的数据分别是:%@%@",_returnDistance,_returnTime);
@@ -242,7 +260,7 @@
     NSDictionary * dic;
     if (g_B2BUser) {
         dic = @{
-//                @"mo_autosign":_YNAutoSign,
+                //                @"mo_autosign":_YNAutoSign,
                 @"mo_distance":[_legDistance.text substringToIndex:_legDistance.text.length-1],
                 @"mo_time":[_preTime.text substringToIndex:_preTime.text.length-2],
                 @"enuu":g_B2B_enuu,
@@ -255,69 +273,78 @@
                 @"mo_time":[_preTime.text substringToIndex:_preTime.text.length-2],
                 @"mo_needprocess":_returnNeedProcess,
                 };
+        if (self.dataArr.count > 4) {
+            dic = @{
+                    @"mo_autosign":_YNAutoSign,
+                    @"mo_distance":[_legDistance.text substringToIndex:_legDistance.text.length-1],
+                    @"mo_time":[_preTime.text substringToIndex:_preTime.text.length-2],
+                    @"mo_needprocess":_returnNeedProcess,
+                    @"mo_facesign":_returnNeedFace,
+                    };
+        }
     }
     
-        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
-        NSString *str=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
-        NSString * url;
-        if (g_B2BUser) {
-         url = [NSString stringWithFormat:@"%@mobile/outplan/saveOutSet?caller=OUTSET&formStore=%@&emcode=%@&enuu=%@&sessionId=%@",ipStr,str,g_emcode,g_B2B_enuu,sessionId];
-        }else{
-
-        url = [NSString stringWithFormat:@"%@/mobile/addOutSet.action?caller=OUTSET&formStore=%@&master=%@&sessionUser=%@&sessionId=%@",ipStr,str,g_master,g_sessionUser,sessionId];
-        }
-        DLog(@"保存的url是:%@",url);
+    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
+    NSString *str=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
+    NSString * url;
+    if (g_B2BUser) {
+        url = [NSString stringWithFormat:@"%@mobile/outplan/saveOutSet?caller=OUTSET&formStore=%@&emcode=%@&enuu=%@&sessionId=%@",ipStr,str,g_emcode,g_B2B_enuu,sessionId];
+    }else{
         
-        url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+        url = [NSString stringWithFormat:@"%@/mobile/addOutSet.action?caller=OUTSET&formStore=%@&master=%@&sessionUser=%@&sessionId=%@",ipStr,str,g_master,g_sessionUser,sessionId];
+    }
+    DLog(@"保存的url是:%@",url);
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    UASNetworkManager *mannage = [UASNetworkManager shareManager];        //拼接sessionID
+    NSString *paramSessionId=[@"" stringByAppendingFormat:@"JSESSIONID=%@",sessionId];
+    //设置cookie
+    if (g_ERPUser) {
+        [mannage.requestSerializer setValue:paramSessionId forHTTPHeaderField:@"Cookie"];
+        [mannage.requestSerializer setValue:[NSString stringWithFormat:@"%@",g_sessionUser] forHTTPHeaderField:@"sessionUser"];
         
-        UASNetworkManager *mannage = [UASNetworkManager shareManager];        //拼接sessionID
-        NSString *paramSessionId=[@"" stringByAppendingFormat:@"JSESSIONID=%@",sessionId];
-        //设置cookie
+    }
+    mannage.responseSerializer = [AFJSONResponseSerializer serializer];
+    [mannage request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
         if (g_ERPUser) {
-            [mannage.requestSerializer setValue:paramSessionId forHTTPHeaderField:@"Cookie"];
-            [mannage.requestSerializer setValue:[NSString stringWithFormat:@"%@",g_sessionUser] forHTTPHeaderField:@"sessionUser"];
-
-        }
-        mannage.responseSerializer = [AFJSONResponseSerializer serializer];
-        [mannage request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
-            if (g_ERPUser) {
-                if (_switch1.isOn == NO) {
-                    [self.navigationController popViewControllerAnimated:YES];
-                    
-                }
-                else{
-                    [self.navigationController popViewControllerAnimated:YES];
-                }
-            }
-            else{
-                
+            if (_switch1.isOn == NO) {
                 [self.navigationController popViewControllerAnimated:YES];
-            }
-
-            [[NSNotificationCenter defaultCenter] postNotificationName:@"kaiqizidongwaiqing" object:nil];
-
-        } failure:^(NSURLSessionDataTask *task, NSError *error) {
-            DLog(@"返回的错误是什么呢:%@",error);
-            NSData *returnData = [[error userInfo] objectForKey:@"com.alamofire.serialization.response.error.data"];
-            if (returnData)
-            {
-                NSDictionary *content = [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil];//转换数据格式
-                
-                NSString *errorStr = [NSString stringWithFormat:@"%@",[content objectForKey:@"exceptionInfo"]];
-                DLog(@"错误信息是:%@",errorStr);
-                
-                [JOShowMessageFromNavi showDropViewWithMessage:errorStr ToNavi:self.navigationController withColor:nil];
-                [MBProgressHUD showError:@"设置失败"];
                 
             }
             else{
-                
-                [MBProgressHUD showError:@"网络错误"];
-                
+                [self.navigationController popViewControllerAnimated:YES];
             }
+        }
+        else{
+            
             [self.navigationController popViewControllerAnimated:YES];
-
-        }];
+        }
+        
+        [[NSNotificationCenter defaultCenter] postNotificationName:@"kaiqizidongwaiqing" object:nil];
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        DLog(@"返回的错误是什么呢:%@",error);
+        NSData *returnData = [[error userInfo] objectForKey:@"com.alamofire.serialization.response.error.data"];
+        if (returnData)
+        {
+            NSDictionary *content = [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil];//转换数据格式
+            
+            NSString *errorStr = [NSString stringWithFormat:@"%@",[content objectForKey:@"exceptionInfo"]];
+            DLog(@"错误信息是:%@",errorStr);
+            
+            [JOShowMessageFromNavi showDropViewWithMessage:errorStr ToNavi:self.navigationController withColor:nil];
+            [MBProgressHUD showError:@"设置失败"];
+            
+        }
+        else{
+            
+            [MBProgressHUD showError:@"网络错误"];
+            
+        }
+        [self.navigationController popViewControllerAnimated:YES];
+        
+    }];
 }
 
 /**判断是否管理员*/
@@ -346,13 +373,14 @@
             _btn2.userInteractionEnabled = YES;
             _btn3.userInteractionEnabled = YES;
             _switch1.enabled = YES;
-            _switch2.enabled=YES;
-            
+            _switch2.enabled = YES;
+            _switch3.enabled = YES;
         }else{
             _btn2.userInteractionEnabled = NO;
             _btn3.userInteractionEnabled = NO;
             _switch1.enabled = NO;
-            _switch2.enabled=NO;
+            _switch2.enabled = NO;
+            _switch3.enabled = NO;
         }
         
     }
@@ -399,6 +427,10 @@
 //    _switch2.transform = CGAffineTransformMakeScale(0.8, 0.75);
     [_switch2 addTarget:self action:@selector(swicthOn2:) forControlEvents:UIControlEventValueChanged];
 //    _switch1.enabled = NO;
+    _switch3 = [[UISwitch alloc]initWithFrame:CGRectMake(self_width-60,6.5, 30, 10)];
+    //    _switch1.transform = CGAffineTransformMakeScale(0.8, 0.75);
+    [_switch3 addTarget:self action:@selector(swicthOn3:) forControlEvents:UIControlEventValueChanged];
+    
     
     _preTime =[[UILabel alloc]initWithFrame:CGRectMake(SCREEN_WIDTH-150, 0, 120, 45)];
     _preTime.textAlignment = NSTextAlignmentRight;
@@ -501,6 +533,17 @@
     
 }
 
+-(void)swicthOn3:(id)sender
+{
+    if (_switch3.isOn == YES)
+    {
+        _returnNeedFace = @"1";
+    }
+    else{
+        _returnNeedFace = @"0";
+    }
+}
+
 //点击选择时间按钮
 - (void)getSelectTime:(UIButton *)btn
 {
@@ -540,12 +583,12 @@
     UITableViewCell * cell =[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:ID];
     cell.selectionStyle=UITableViewCellSelectionStyleNone;
     
-    NSArray * ERPtitleArr=@[Localized(@"UU_me_set_outsideWorkSet_autoOutsideWork"),Localized(@"UU_me_set_outsideWorkSet_effectiveDistance"),Localized(@"UU_me_set_outsideWorkSet_reserveTime"),Localized(@"UU_me_set_outsideWorkSet_needApprove")];
+    
     NSUserDefaults * user=[NSUserDefaults standardUserDefaults];
     NSString * yeorno=[user objectForKey:ZIDONG_WAIQING];
     if (indexPath.row==0) {
         UILabel * signLable = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 150, 45)];
-        signLable.text = ERPtitleArr[indexPath.row];
+        signLable.text = self.dataArr[indexPath.row];
         signLable.font =FONT_SIZE(14);
         [cell.contentView addSubview:signLable];
         
@@ -583,7 +626,7 @@
      else if (indexPath.row==1)
     {
         UILabel * propertyDis = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 150, 45)];
-        propertyDis.text =[NSString stringWithFormat:@"%@",ERPtitleArr[indexPath.row]];
+        propertyDis.text =[NSString stringWithFormat:@"%@",self.dataArr[indexPath.row]];
         propertyDis.font = FONT_SIZE(14);
         [cell.contentView addSubview:propertyDis];
         if (_returnDistance.length!=0) {
@@ -610,7 +653,7 @@
     else if (indexPath.row==2)
     {
         UILabel * yuliushjian = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 150, 45)];
-        yuliushjian.text = ERPtitleArr[indexPath.row];
+        yuliushjian.text = self.dataArr[indexPath.row];
         yuliushjian.font = FONT_SIZE(14);
         [cell.contentView addSubview:yuliushjian];
         if (_returnTime.length!=0) {
@@ -636,8 +679,8 @@
     }else if (indexPath.row == 3)
     {
         UILabel * signLable = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 150, 45)];
-        signLable.text = ERPtitleArr[indexPath.row];
-        signLable.font =FONT_SIZE(14);
+        signLable.text = self.dataArr[indexPath.row];
+        signLable.font = FONT_SIZE(14);
         [cell.contentView addSubview:signLable];
         
         [cell.contentView addSubview:_switch2];
@@ -651,18 +694,34 @@
 
             [_switch2 setOn:NO];
         }
+    }else if (indexPath.row == 4)
+    {
+        UILabel * faceLable = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 150, 45)];
+        faceLable.text = self.dataArr[indexPath.row];
+        faceLable.font = FONT_SIZE(14);
+        [cell.contentView addSubview:faceLable];
+        
+        [cell.contentView addSubview:_switch3];
+        
+        
+        if ([_returnNeedFace isEqualToString:@"1"]) {
+            
+            [_switch3 setOn:YES];
+        }
+        else {
+            
+            [_switch3 setOn:NO];
+        }
     }
+    
+    
     if (g_B2BUser&&indexPath.row==0) {
         
         cell.hidden = YES;
         _tableView.frame = CGRectMake(0, -45, SCREEN_WIDTH, SCREEN_HEIGHT+45);
         
     }
-    
-    
-    
-    
-    
+   
     return cell;
 }
 
@@ -673,7 +732,7 @@
 }
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {
-    return 4;
+    return self.dataArr.count;
 }
 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
 {
@@ -693,4 +752,13 @@
     [tableView setTableFooterView:view];
 }
 
+#pragma mark --- lazy
+-(NSMutableArray *)dataArr
+{
+    if (!_dataArr) {
+        _dataArr = [NSMutableArray new];
+    }
+    return _dataArr;
+}
+
 @end

+ 1 - 1
shiku_im/shiku_im/controller/myOA/UASNetworkManager.m

@@ -32,7 +32,7 @@ static UASNetworkManager *b2bManager = nil;
     [manager.requestSerializer setValue:[NSString stringWithFormat:@"JSESSIONID=%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"sessionId"]] forHTTPHeaderField:@"Cookie"];
     
     [manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
-     manager.requestSerializer.timeoutInterval = 15.0f;
+//     manager.requestSerializer.timeoutInterval = 15.0f;
     [manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
   
     return manager;

+ 1 - 1
shiku_im/shiku_im/controller/myOA/WorkTools/UASWorkManager.h

@@ -31,7 +31,7 @@
 /**
  手动外勤
  */
--(void)outWorkPunchByHandCompleted:(void(^)(BOOL success,NSString *str))completed;;
+-(void)outWorkPunchByHandWithImageData:(NSData *)imageData Completed:(void(^)(BOOL success,NSString *str))completed;
 
 
 /**

+ 73 - 22
shiku_im/shiku_im/controller/myOA/WorkTools/UASWorkManager.m

@@ -61,6 +61,15 @@
  */
 @property(strong,nonatomic)NSMutableArray<NSString *> *mapArr;
 
+/**
+ 外勤是否启用人脸打卡
+ */
+@property(assign,nonatomic)BOOL autoFaceSign;
+
+/**
+ 如果启用了人脸打卡的照片data
+ */
+@property(strong,nonatomic)NSData *imageData;
 
 /**
  自动打卡定时器
@@ -209,7 +218,7 @@
 /**
  手动外勤
  */
--(void)outWorkPunchByHandCompleted:(void(^)(BOOL success,NSString *str))completed{
+-(void)outWorkPunchByHandWithImageData:(NSData *)imageData Completed:(void(^)(BOOL success,NSString *str))completed{
     
     [MBProgressHUD showMessage:@""];
     
@@ -219,6 +228,10 @@
     
     self.outCompleted = completed;
     
+    self.autoFaceSign = NO;
+    
+    self.imageData = imageData;
+    
     [self prepareOutPlan];
     
 }
@@ -390,10 +403,20 @@
             
             [self.outArr addObject:[NSString stringWithFormat:@"%@",obj[@"MO_TIME"]]];
             
+            if ([[obj allKeys] containsObject:@"MO_FACESIGN"]) {
+                
+                NSString *faceSign = [NSString stringWithFormat:@"%@",obj[@"MO_FACESIGN"]];
+                
+                if ([faceSign isEqualToString:@"1"]) {
+                    
+                    self.autoFaceSign = YES;
+                    
+                }
+            }
+            
         }
         
         
-        
         if ([self.outArr[0] integerValue] == 1)
         {
             
@@ -449,8 +472,8 @@
             
         }
         
-        NSString * times=[NSString getLongCurrenTime];
-        NSDictionary *dic =    [NSDictionary dictionaryWithObjectsAndKeys:
+        NSString * times = [NSString getLongCurrenTime];
+        NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:
                                 times,@"aa_date",
                                 @"iOS判定是否是自动外勤",@"aa_type",
                                 errorAtr,@"aa_remark",
@@ -1256,7 +1279,7 @@
     
 }
 
-//半天外勤计划打卡调用此接口
+#pragma mark --- 半天外勤计划打卡调用此接口
 -(void)postHalfOutCard:(OutWorkModel *)model andSwitch:(NSString *)switchs{
     
     UASNetworkManager *manager = [UASNetworkManager shareManager];
@@ -1433,7 +1456,7 @@
                         
                         [delegate showAlert:[NSString stringWithFormat:@"拜访%@签退成功",model.MPD_COMPANY]];
                         
-                        
+                        [MBProgressHUD hideHUD];
                         
                     }];
                     
@@ -1507,7 +1530,7 @@
                             
                             [delegate showAlert:[NSString stringWithFormat:@"拜访%@签到成功",model.MPD_COMPANY]];
                             
-                            
+                            [MBProgressHUD hideHUD];
                         }
                         
                         
@@ -1587,21 +1610,18 @@
                         
                         [delegate showAlert:[NSString stringWithFormat:@"拜访%@签到成功",model.MPD_COMPANY]];
                         
-                        
+                        [MBProgressHUD hideHUD];
                     }];
                     
                 }
                 
             }];
-            
-            
-            
-            
-            
+  
         }
         
-        
-        
+        if (self.autoFaceSign) { //如果开启人脸,上传附件
+            [self uploadFaceToServer:model];
+        }
         
     } failure:^(NSURLSessionDataTask *task, NSError *error) {
         
@@ -1616,13 +1636,13 @@
         AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
         
         [delegate showAlert:@"服务器配置异常"];
-        
+        [MBProgressHUD hideHUD];
     }];
     
 }
 
 
-//全天外勤计划打卡调用此接口
+#pragma mark --- 全天外勤计划打卡调用此接口
 -(void)postAllOutCard:(OutWorkModel *)model andSwitch:(NSString *)switchs{
     
     UASNetworkManager *manager = [UASNetworkManager shareManager];
@@ -1800,7 +1820,7 @@
                         AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
                         
                         [delegate showAlert:[NSString stringWithFormat:@"拜访%@签退成功",model.MPD_COMPANY]];
-                        
+                        [MBProgressHUD hideHUD];
                     }];
                     
                 }
@@ -1870,7 +1890,7 @@
                             
                             [delegate showAlert:[NSString stringWithFormat:@"拜访%@签到成功",model.MPD_COMPANY]];
                             
-                            
+                            [MBProgressHUD hideHUD];
                         }
                         
                         
@@ -1942,7 +1962,7 @@
                             
                             [delegate showAlert:[NSString stringWithFormat:@"拜访%@签到成功",model.MPD_COMPANY]];
                             
-                            
+                            [MBProgressHUD hideHUD];
                         }
                         
                         
@@ -2012,7 +2032,7 @@
                         
                         [delegate showAlert:[NSString stringWithFormat:@"拜访%@签退成功",model.MPD_COMPANY]];
                         
-                        
+                        [MBProgressHUD hideHUD];
                     }];
                     
                 }
@@ -2070,12 +2090,15 @@
                 
                 [delegate showAlert:[NSString stringWithFormat:@"拜访%@签到成功",model.MPD_COMPANY]];
             
-                
+                [MBProgressHUD hideHUD];
             }
             
             
         }
         
+        if (self.autoFaceSign) {//如果开启人脸,则上传附件
+            [self uploadFaceToServer:model];
+        }
         
         
     } failure:^(NSURLSessionDataTask *task, NSError *error) {
@@ -2096,6 +2119,34 @@
     
 }
 
+#pragma mark --- 上传附件-人脸照片
+-(void)uploadFaceToServer:(OutWorkModel *)model
+{
+    if (self.imageData) {
+//        [MBProgressHUD showMessage:@"上传人脸"];
+        
+        NSDictionary * dic = @{
+                               @"mpd_id":model.MPD_ID,
+                               @"emcode":g_emcode,
+                               @"result":@"true",
+                               @"master":g_master,
+                               };
+        
+        [[UASNetworkManager shareManager] request:FORMAT(@"%@/mobile/signUploadPicture.action",g_id) method:POST parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
+            
+            [formData appendPartWithFileData:self.imageData name:@"img" fileName:@"file.jpg" mimeType:@"image/jpeg"];
+            
+        } progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+            SLog(@"成功上传附件");
+            [MBProgressHUD hideHUD];
+        } failure:^(NSURLSessionDataTask *task, NSError *error) {
+            SLog(@"失败上传附件");
+            [MBProgressHUD hideHUD];
+        }];
+    }
+
+}
+
 /**
  创建消息表
  */

+ 4 - 5
shiku_im/shiku_im/controller/myOA/工作汇报/LYYWorkReportEditeVC.m

@@ -195,8 +195,8 @@
 -(UILabel *)dateLabel
 {
     if (!_dateLabel) {
-        _dateLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 16.5, 220, 20)];
-        _dateLabel.font = FONT_SIZE(14);
+        _dateLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 16.5, 250, 20)];
+        _dateLabel.font = FONT_SIZE(13);
         _dateLabel.textColor = Color(153, 153, 153, 1.0);
         
     }
@@ -402,9 +402,8 @@
                 str1 = [model.wd_date substringWithRange:NSMakeRange(0, 4)];
             }
             
-            
-            self.dateLabel.text = FORMAT(@"%@年 %@",str1,str);
-        
+            self.dateLabel.text = FORMAT(@"%@年 %@ 周次:%@",str1,str,model.wd_weekDays);
+
             _planlbl.text = Localized(@"UU_Thisweeksplan");
         }
             break;

+ 4 - 4
shiku_im/shiku_im/controller/审批流详情/LYYApprovalDetailVC.m

@@ -657,7 +657,7 @@
     }
 }
 
-#pragma mark -- 同意 不同意,变更处理人,吓一跳
+#pragma mark -- 同意 不同意,变更处理人,下一条
 - (void)upLoadAgainBackToView:(UIButton *)sender
 {
     sender.backgroundColor = BGKJ_COLOR;
@@ -899,7 +899,7 @@
                 _FD_model.fpd_id = [obj1 objectForKey:@"DG_FIELD"];
                 
             }
-            if ([[obj1 objectForKey:@"DG_CAPTION"] isEqualToString:@"附件"]) {
+            if ([[obj1 objectForKey:@"DG_CAPTION"] isEqualToString:@"附件"]||[FORMAT(@"%@",[obj1 objectForKey:@"DG_RENDERER"]) isEqualToString:@"detailAttach"]) {
                 
                 [_FD_model.fb_attachName addObject:FORMAT(@"%@",[obj1 objectForKey:@"DG_FIELD"]) ];
             }
@@ -2805,7 +2805,7 @@
     [LYHTTPRequest Post:SPL_Disagree_Bill page:dic Completion:^(id ObjectData, NSError *error) {
         if (error == nil) {
             DLog(@"%@",ObjectData);
-            [JOShowMessageFromNavi showDropViewWithMessage:@"审批成功,即将为你跳转吓一跳" ToNavi:self.navigationController withColor:nil];
+            [JOShowMessageFromNavi showDropViewWithMessage:@"审批成功,即将为你跳转下一条" ToNavi:self.navigationController withColor:nil];
             [self nextTeam:sender];
         }else{
             
@@ -4655,7 +4655,7 @@
                             }
                             
                             if ([str11 stringByReplacingOccurrencesOfString:@" " withString:@""].length  != 0 || [str1 stringByReplacingOccurrencesOfString:@" " withString:@""].length != 0){
-                                
+                                SLog(@"名称:%@---类型:%@",[c objectForKey:@"FD_CAPTION"],[c objectForKey:@"FD_TYPE"]);
                                 if ([[c objectForKey:@"FD_TYPE"] isEqualToString:@"MS"]&& [str11 containsString:@"table"])
                                 {
                                     UIWebView *rightLbl = [self creatRightwebViewWithHeight:j text:str11];

+ 4 - 0
shiku_im/shiku_im/controller/审批流详情/LYYReadingVC.m

@@ -46,6 +46,10 @@
     
     [self setNavi];
     self.view.backgroundColor = [UIColor whiteColor];
+    
+    if (!self.caller) {
+        self.caller = @"";
+    }
 //    // Do any additional setup after loading the view.
 //    self.webView = [[UIWebView alloc ]initWithFrame:self.view.bounds];
 //    [self.view addSubview:self.webView];

+ 5 - 0
shiku_im/shiku_im/en.lproj/InfoPlist.strings

@@ -1020,7 +1020,12 @@
 "UU_ScrapApplication" = "ScrapApplication";
 "UU_Maintenance" = "Maintenance";
 "UU_FaultSubmission" = "FaultSubmission";
+"UU_Repair" = "Repair";
 "UU_CycleInventory" = "CycleInventory";
+"UU_Requirement" = "Requirement";
+"UU_Stock" = "Stock";
+"UU_Batchtransfer" = "Batchtransfer";
+"UU_Statistics" = "Statistics";
 
 //报销单
 "UU_FY_Type" = "Type";

+ 1 - 1
shiku_im/shiku_im/shiku_im-Info.plist

@@ -33,7 +33,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>6.3.6</string>
+	<string>6.4.2</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleURLTypes</key>

+ 6 - 1
shiku_im/shiku_im/zh-Hans.lproj/InfoPlist.strings

@@ -1056,9 +1056,14 @@
 "UU_DeviceInquiry" = "设备查询";
 "UU_UsingApplication" = "使用申请";
 "UU_ScrapApplication" = "报废申请";
-"UU_Maintenance" = "护";
+"UU_Maintenance" = "养护管理";
 "UU_FaultSubmission" = "故障送检";
+"UU_Repair" = "设备维修";
 "UU_CycleInventory" = "周期盘点";
+"UU_Requirement" = "需求匹配";
+"UU_Stock" = "库存查询";
+"UU_Batchtransfer" = "批量转移";
+"UU_Statistics" = "统计分析";
 
 //报销单
 "UU_FY_Type" = "报销类型";

+ 5 - 0
shiku_im/shiku_im/zh-Hant.lproj/InfoPlist.strings

@@ -1017,7 +1017,12 @@
 "UU_ScrapApplication" = "報廢申請";
 "UU_Maintenance" = "保養維護";
 "UU_FaultSubmission" = "故障送檢";
+"UU_Repair" = "設備維修";
 "UU_CycleInventory" = "週期盤點";
+"UU_Requirement" = "需求匹配";
+"UU_Stock" = "庫存查詢";
+"UU_Batchtransfer" = "批量轉移";
+"UU_Statistics" = "統計分析";
 
 //报销单
 "UU_FY_Type" = "報帳類型";

+ 44 - 26
shiku_im/shiku_im/文件夹1/WorkMain(工作新页面)/Controllers/UASWorkMainVC.m

@@ -95,7 +95,7 @@
 
 @property (strong , nonatomic) CMPedometer *step;
 
-
+@property (nonatomic,assign) NSString *faceOpen;//外勤是否开启人脸打卡
 @end
 
 @implementation UASWorkMainVC
@@ -104,7 +104,6 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     
-    
 }
 
 - (void)didReceiveMemoryWarning {
@@ -145,6 +144,7 @@
         [UASUserInfo shareManager].masChanged = NO;
         //获取缓存数据
         [self getAllData];
+        
         //获取网络更新数据
         [self configUUApplicationFromServer];
         //预加载商城网页
@@ -685,7 +685,8 @@
         
         [[NSUserDefaults standardUserDefaults] setObject:@"click" forKey:@"OANewGuidePunch2"];
     
-        NSUserDefaults * user=[NSUserDefaults standardUserDefaults];
+        NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
+        
         NSString * str= [NSString stringWithFormat:@"%@",[user objectForKey:@"OutPlanIsOpenOrClose"]];
         
         if ([str isEqualToString:@"1"])
@@ -693,6 +694,8 @@
             
             JOOutWorkPlanVC * ovc = [[JOOutWorkPlanVC alloc]init];
             
+            ovc.faceGo = self.faceOpen;
+            
             [self.navigationController pushViewController:ovc animated:YES];
 
         }
@@ -1252,45 +1255,60 @@
     
 }
 
-//获取是否为自动外勤接口
+#pragma mark --- 获取是否为自动外勤接口
 -(void)getAutoOutWorkData{
-    
-    
-    NSString * ipStr = [[NSUserDefaults standardUserDefaults] stringForKey:@"ipAndPort"];
-    NSString *sessionId = [[NSUserDefaults standardUserDefaults] stringForKey:@"sessionId"];
-    
-    NSString *url = [NSString stringWithFormat:@"%@/mobile/getOutSetInfo.action?master=%@&sessionUser=%@&sessionId=%@",ipStr,g_master,g_sessionUser,sessionId];
+
+    NSString *url = [NSString stringWithFormat:@"%@/mobile/getOutSetInfo.action?master=%@&sessionUser=%@&sessionId=%@",g_id,g_master,g_sessionUser,g_sessionId];
     
     url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     
     UASNetworkManager *mannage = [UASNetworkManager shareManager];
-    //拼接sessionID
-    NSString *paramSessionId=[@"" stringByAppendingFormat:@"JSESSIONID=%@",sessionId];
-    //设置cookie
-    [mannage.requestSerializer setValue:paramSessionId forHTTPHeaderField:@"Cookie"];
-    [mannage.requestSerializer setValue:[NSString stringWithFormat:@"%@",g_sessionUser] forHTTPHeaderField:@"sessionUser"];
+    
     mannage.responseSerializer = [AFJSONResponseSerializer serializer];
+    
     [mannage request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
         
-        responseObject = [NSDictionary changeType:responseObject];
+        NSDictionary *rootDic = responseObject;
         
-        NSUserDefaults * user=[NSUserDefaults standardUserDefaults];
-        NSArray * a = responseObject[@"result"];
-        if ([a isEqual:@""]) {
+        if ([rootDic objectForKey:@"result"] == nil)
+        {
+            return ;
+        }
+        if ([[rootDic objectForKey:@"result"] isKindOfClass:[NSNull class]]) {
             
-        }else{
-            for (id obj in a) {
-                
-                [user setObject:[NSString stringWithFormat:@"%@",obj[@"MO_AUTOSIGN"]] forKey:@"OutPlanIsOpenOrClose"];
-                
-                [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%@",obj[@"MO_NEEDPROCESS"]] forKey:@"JOOUTisOrNoPostSPL"];
+            return;
+        }
+        
+        NSMutableArray * arr = [[NSMutableArray alloc]initWithArray:[NSDictionary changeType:[rootDic objectForKey:@"result"]]];
+        
+        if (arr.count == 0)
+        {
+            return;
+        }
+
+        NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
+        
+        for (id obj in rootDic[@"result"]) {
+            
+            [user setObject:[NSString stringWithFormat:@"%@",obj[@"MO_AUTOSIGN"]] forKey:@"OutPlanIsOpenOrClose"];
+            
+            [user setObject:[NSString stringWithFormat:@"%@",obj[@"MO_NEEDPROCESS"]] forKey:@"JOOUTisOrNoPostSPL"];
+            
+            //外勤设置是否有MO_FACESIGN来判断是否开启外勤人脸打卡
+            if ([[obj allKeys] containsObject:@"MO_FACESIGN"]) {
                 
+                NSString *faceSign = [NSString stringWithFormat:@"%@",obj[@"MO_FACESIGN"]];
+
+                self.faceOpen = faceSign;
                 
             }
         }
-        //获取系统权限
+        
         
     } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        
+        self.faceOpen = @"fail";
+        
         NSData *returnData = [[error userInfo] objectForKey:@"com.alamofire.serialization.response.error.data"];
         if (returnData)
         {

+ 1 - 1
shiku_im/shiku_im/文件夹1/多明细通用表单/Models/MoreGridModel.h

@@ -45,7 +45,7 @@
 @property (nonatomic,strong) NSString *dg_type;//类型
 @property (nonatomic,strong) NSString *dg_maxlength;//长度
 @property (nonatomic,strong) NSString *mdg_isdefault;//是否显示
-@property (nonatomic,strong) NSString *dg_renderer;
+@property (nonatomic,strong) NSString *dg_renderer;//是否附件-detailAttach
 @property (nonatomic,strong) NSString *dg_width;
 @property (nonatomic,strong) NSString *dg_field;//key值
 @property (nonatomic,strong) NSString *dg_logictype;//是否必填(是否允许为空)

+ 90 - 86
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/LYYDeviceMainVC.m

@@ -17,11 +17,15 @@
 #import <Photos/PHPhotoLibrary.h>
 #import <AVFoundation/AVFoundation.h>
 #import "LYYRMatchingVC.h"//需求匹配
+#import "DeviceFormVC.h"
+
 static NSString *cellID = @"stutus";
 @interface LYYDeviceMainVC ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
 @property (strong , nonatomic) UICollectionViewFlowLayout *layOut;
 @property (strong , nonatomic) UICollectionView *collectView;
 @property (strong , nonatomic) NSMutableArray *dataArr;
+@property (strong , nonatomic) NSArray *callerArr;
+@property (strong , nonatomic) NSArray *nameArr;
 @end
 
 @implementation LYYDeviceMainVC
@@ -29,106 +33,63 @@ static NSString *cellID = @"stutus";
 - (void)viewDidLoad
 {
     [super viewDidLoad];
-    
+    self.title = @"设备管理";
 }
     
-    
-#pragma mark ------------------      创建UI  
+#pragma mark --- 创建UI
 - (void)createUI
 {
-    
-    
     [self getData];
     [self.view addSubview:self.collectView];
-    BackView
-    self.title = @"设备管理";
-    
 }
+
 - (void)backAction
 {
     [self.navigationController popViewControllerAnimated:YES];
-    
 }
+
 - (void)getData{
-    NSArray *nameArr = @[Localized(@"UU_Scan"),Localized(@"UU_DeviceInquiry"),Localized(@"UU_UsingApplication"),Localized(@"UU_ScrapApplication"),Localized(@"UU_Maintenance"),Localized(@"UU_FaultSubmission"),Localized(@"UU_CycleInventory"),@"需求匹配"];
-    for (NSInteger i = 1; i < 9; i ++) {
+    self.nameArr = @[Localized(@"UU_Scan"),Localized(@"UU_DeviceInquiry"),Localized(@"UU_UsingApplication"),Localized(@"UU_ScrapApplication"),Localized(@"UU_Maintenance"),Localized(@"UU_FaultSubmission"),Localized(@"UU_Repair"),Localized(@"UU_CycleInventory"),Localized(@"UU_Requirement"),Localized(@"UU_Stock"),Localized(@"UU_Batchtransfer"),Localized(@"UU_Statistics")];
+    
+    for (NSInteger i = 0; i < self.nameArr.count; i ++) {
         LYYDevieceMainModel *model = [LYYDevieceMainModel new];
-        model.nameSting = nameArr[i-1];
-        model.imageString = FORMAT(@"icon_devicemanagement_nor%ld",i);
-        
+        model.nameSting = self.nameArr[i];
+        model.imageString = FORMAT(@"UU_device_icon%ld",i);
         [self.dataArr addObject:model];
     }
-    
-    
-}
--(NSMutableArray *)dataArr
-{
-    if (!_dataArr) {
-        _dataArr = [NSMutableArray array];
-    }
-    return _dataArr;
-    
-}
--(UICollectionViewFlowLayout *)layOut{
-    
-    if (!_layOut) {
-        _layOut = [[UICollectionViewFlowLayout alloc] init];
-        _layOut.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
-        _layOut.minimumLineSpacing = 0;
-        _layOut.minimumInteritemSpacing = 0;
-        
-        _layOut.scrollDirection=UICollectionViewScrollDirectionVertical;
-   
-        _layOut.itemSize = CGSizeMake(SCREEN_WIDTH/4, 100);
-    }
-    
-    return _layOut;
-}
-- (UICollectionView *)collectView
-{
-    if (!_collectView) {
-        _collectView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT) collectionViewLayout:self.layOut];
-        _collectView.dataSource = self;
-        _collectView.delegate = self;
-        _collectView.backgroundColor = BGKJ_COLOR;
-        [_collectView registerClass:[UASWorkMainCell class] forCellWithReuseIdentifier:cellID];
-    }
-    
-    return _collectView;
-    
-    
+
+    self.callerArr = @[@"DeviceChange!Use",@"DeviceChange!Scrap",@"DeviceChange!Maintain",@"DeviceChange!Inspect"];
 }
-#pragma mark ----- delegate && dataSource
+
+#pragma mark ----- CollectionView delegate && dataSource
 - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
 {
-    return 8;
-    
+    return self.nameArr.count;
 }
+
 - ( UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
+    
     UASWorkMainCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath];
+    
     LYYDevieceMainModel *model = self.dataArr[indexPath.row];
     
     cell.shouldHidden = YES;
     
     cell.model1 =model;
-   
-    
+ 
     return cell;
-    
-    
 }
+
 - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
 {
-    NSArray *arr = @[@"DeviceChange!Use",@"DeviceChange!Scrap",@"DeviceChange!Maintain",@"DeviceChange!Inspect"];
     LYYDevieceMainModel *model = self.dataArr[indexPath.row];
     switch (indexPath.row) {
-        case 0:
+        case 0://扫一扫
         {
             [self upLoadAgainBackToView];
-            
         }
             break;
-        case 1:
+        case 1://设备查询
         {
             LYYDMDataSearchVC *vc = [LYYDMDataSearchVC new];
             vc.caller = @"Device";
@@ -137,64 +98,83 @@ static NSString *cellID = @"stutus";
             
         }
             break;
-        case 2:
+        case 2://使用申请
         {
             LYYDocumentVC *a = [[LYYDocumentVC alloc]init];
             a.nameStr = model.nameSting;
-            a.caller = arr[0];
+            a.caller = self.callerArr[0];
             [self.navigationController pushViewController:a animated:YES];
         }
             break;
-        case 3:
+        case 3://报废申请
         {
             LYYDocumentVC *a = [[LYYDocumentVC alloc]init];
             a.nameStr = model.nameSting;
-            a.caller = arr[1];
+            a.caller = self.callerArr[1];
             [self.navigationController pushViewController:a animated:YES];
             
         }
             break;
-        case 4:
+        case 4://养护管理
         {
             LYYDocumentVC *a = [[LYYDocumentVC alloc]init];
             a.nameStr = model.nameSting;
-            a.caller = arr[2];
+            a.caller = self.callerArr[2];
             [self.navigationController pushViewController:a animated:YES];
         }
             break;
-        case 5:
+        case 5://故障送检
         {
             LYYDocumentVC *a = [[LYYDocumentVC alloc]init];
             a.nameStr = model.nameSting;
-            a.caller = arr[3];
+            a.caller = self.callerArr[3];
             [self.navigationController pushViewController:a animated:YES];
         }
             break;
-        case 6:
+          
+        case 6://设备维修
+        {
+            
+        }
+            break;
+        case 7://周期盘点
         {
             LYYDMCheckVC *vc = [LYYDMCheckVC new];
            
             [self.navigationController pushViewController:vc animated:YES];
         }
             break;
-        case 7:
+        case 8://需求匹配
         {
             LYYRMatchingVC *vc = [LYYRMatchingVC new];
             self.title = @"需求匹配";
             [self.navigationController pushViewController:vc animated:YES];
         }
             break;
-        
+        case 9://库存查询
+        {
             
+        }
+            break;
+        case 10://批量转移
+        {
             
+        }
+            break;
+        case 11://统计分析
+        {
+            DeviceFormVC *vc = [DeviceFormVC new];
+            
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+            break;
+
         default:
             break;
     }
-    
-    
-    
 }
-#pragma mark -----扫一扫
+
+#pragma mark --- 扫一扫
 - (void)upLoadAgainBackToView
 {
     NSString *mediaType =AVMediaTypeVideo;
@@ -221,14 +201,38 @@ static NSString *cellID = @"stutus";
     
 }
 
-/*
-#pragma mark - Navigation
+#pragma mark --- lazy
+-(NSMutableArray *)dataArr
+{
+    if (!_dataArr) {
+        _dataArr = [NSMutableArray array];
+    }
+    return _dataArr;
+    
+}
+
+-(UICollectionViewFlowLayout *)layOut{
+    if (!_layOut) {
+        _layOut = [[UICollectionViewFlowLayout alloc] init];
+        _layOut.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
+        _layOut.minimumLineSpacing = 0;
+        _layOut.minimumInteritemSpacing = 0;
+        _layOut.scrollDirection = UICollectionViewScrollDirectionVertical;
+        _layOut.itemSize = CGSizeMake(SCREEN_WIDTH/3, 100);
+    }
+    return _layOut;
+}
 
-// In a storyboard-based application, you will often want to do a little preparation before navigation
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
-    // Get the new view controller using [segue destinationViewController].
-    // Pass the selected object to the new view controller.
+- (UICollectionView *)collectView
+{
+    if (!_collectView) {
+        _collectView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT) collectionViewLayout:self.layOut];
+        _collectView.dataSource = self;
+        _collectView.delegate = self;
+        _collectView.backgroundColor = BGKJ_COLOR;
+        [_collectView registerClass:[UASWorkMainCell class] forCellWithReuseIdentifier:cellID];
+    }
+    return _collectView;
 }
-*/
 
 @end

+ 55 - 22
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/搜索/LYYDMDataSearchVC.m

@@ -19,6 +19,11 @@
 #import "LYYDeviceMainVC.h"
 #import "LYYDocumentDetailVC.h"
 #import "LYYDMScanVC.h"
+#import <AVFoundation/AVFoundation.h>
+#import <AssetsLibrary/AssetsLibrary.h>
+#import "HCScanQRViewController.h"
+#import "DeviceFormVC.h"
+
 static NSString * cellID = @"cellID";
 @interface LYYDMDataSearchVC ()<UISearchBarDelegate,IFlySpeechRecognizerDelegate,UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
 /*关于语音搜索界面*/
@@ -85,12 +90,11 @@ static NSString * cellID = @"cellID";
 {
     if (_tableView == nil) {
         _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0,0, SCREEN_WIDTH,SCREEN_HEIGHT-64) style:UITableViewStylePlain];
-        
         _tableView.delegate=self;
         _tableView.dataSource=self;
         _tableView.backgroundColor = BGKJ_COLOR;
         _tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
-        //_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
     }
     return _tableView;
     
@@ -111,13 +115,17 @@ static NSString * cellID = @"cellID";
     
     self.view.backgroundColor = BGKJ_COLOR;
     UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(0, 7,SCREEN_WIDTH-110, 30)];
-    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH-110, 30)];
+    titleView.backgroundColor = [UIColor whiteColor];
+    titleView.layer.cornerRadius = 5;
+    titleView.layer.masksToBounds = YES;
+    
+    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(15, 0, SCREEN_WIDTH-95, 30)];
     searchBar.backgroundImage = [UIImage imageNamed:@"clearImage"];
     searchBar.delegate = self;
     searchBar.returnKeyType = UIReturnKeySearch;
     searchBar.tintColor = Color(69, 92, 255, 1);
     searchBar.backgroundColor = [UIColor whiteColor];
-    searchBar.layer.cornerRadius = 4;
+    searchBar.layer.cornerRadius = 5;
     searchBar.layer.masksToBounds = YES;
     if (_mustStr.length != 0) {
       
@@ -131,14 +139,13 @@ static NSString * cellID = @"cellID";
     searchBar.layer.borderColor = [UIColor whiteColor].CGColor;
     searchBar.layer.borderWidth = 0.5;
     
-    
-    
     UITextField *txfSearchField = [searchBar valueForKey:@"_searchField"];
+    txfSearchField.font = FONT_SIZE(13);
     [txfSearchField setLeftViewMode:UITextFieldViewModeNever];
     //    [txfSearchField setRightViewMode:UITextFieldViewModeNever];
     
     self.searchBar = searchBar;
-    UIView * uv = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(searchBar.frame)-30, 0, 30, 30)];
+    UIView * uv = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(titleView.frame)-30, 0, 30, 30)];
     uv.userInteractionEnabled = YES;
     self.uv = uv;
     UITapGestureRecognizer * tapges =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickVoiceSearch)];
@@ -151,8 +158,6 @@ static NSString * cellID = @"cellID";
     [titleView addSubview:uv];
     self.navigationItem.titleView = titleView;
   
-   
-   
     
     UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeSystem];
     btn2.frame = CGRectMake(0, 5, 22, 22);
@@ -173,8 +178,42 @@ static NSString * cellID = @"cellID";
     UIBarButtonItem *bbi3 = [[UIBarButtonItem alloc]initWithCustomView:btn3];
     self.navigationItem.rightBarButtonItems = @[bbi3];
     
-    
+    //扫一扫按钮
+    UIButton *scanBtn = [UIButton buttonWithType:UIButtonTypeSystem];
+    scanBtn.frame = CGRectMake(0, 0, 30, 30);
+    [scanBtn addTarget:self action:@selector(scanAction) forControlEvents:UIControlEventTouchUpInside];
+    [titleView addSubview:scanBtn];
+    UIImageView *scanImage = [[UIImageView alloc]initWithFrame:CGRectMake(5, 5, 20, 20)];
+    scanImage.image = [UIImage imageNamed:@"uu_device_scan"];
+    [scanBtn addSubview:scanImage];
+}
+
+#pragma mark --- 扫一扫
+-(void)scanAction
+{
+    NSString *mediaType = AVMediaTypeVideo;
+    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
+    if(authStatus == ALAuthorizationStatusRestricted || authStatus == ALAuthorizationStatusDenied){
+        
+        [((AppDelegate*)[[UIApplication sharedApplication] delegate])  showAlert:@"您没有允许使用相机,请前往“设置”中设置权限"  delegate:self];
+        return;
+    }
+    HCScanQRViewController * hvc = [[HCScanQRViewController alloc]init];
+    hvc.ChechIndex = 11;
+    @weakify(self)
+    [hvc setBlock:^(NSString *QRCodeInfo) {
+        @strongify(self)
+        DLog(@"%@",QRCodeInfo);
+        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+            LYYDMScanVC *vc = [[LYYDMScanVC alloc] init];
+            vc.idstr = QRCodeInfo;
+            [self.navigationController pushViewController:vc animated:NO];
+        });
+        
+    }];
+    [self.navigationController pushViewController:hvc animated:YES];
 }
+
 #pragma mark -------点击条件搜索 clickRightBtn
 -(void)clickRightBtn
 {
@@ -412,10 +451,13 @@ static NSString * cellID = @"cellID";
         [self.navigationController pushViewController:detailVC animated:YES];
     }else{
         //点击跳转 
-        LYYDMScanVC *vc = [[LYYDMScanVC alloc] init];
-        vc.idstr = model.listDic[@"de_code"];
-        [self.navigationController pushViewController:vc animated:YES];
+//        LYYDMScanVC *vc = [[LYYDMScanVC alloc] init];
+//        vc.idstr = model.listDic[@"de_code"];
+//        [self.navigationController pushViewController:vc animated:YES];
         
+        DeviceFormVC *vc = [DeviceFormVC new];
+        vc.deviceCode = FORMAT(@"%@",model.listDic[@"de_code"]);
+        [self.navigationController pushViewController:vc animated:YES];
     }
   
     
@@ -880,14 +922,5 @@ static NSString * cellID = @"cellID";
     return size.height;
     
 }
-/*
-#pragma mark - Navigation
-
-// In a storyboard-based application, you will often want to do a little preparation before navigation
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
-    // Get the new view controller using [segue destinationViewController].
-    // Pass the selected object to the new view controller.
-}
-*/
 
 @end

+ 11 - 11
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/设备的盘点/LYYDMCheckDetailVC.m

@@ -207,7 +207,7 @@
                     model.nameSting = dicD[@"caption"];
                     NSString *str = [NSString toUpper:dicD[@"dataIndex"]];
                     DLog(@"%@",str);
-                    model.imageString = dicM[str];
+                    model.imageString = FORMAT(@"%@",dicM[str]);
                     
                     [arr addObject:model];
                     
@@ -269,16 +269,16 @@
                     model.nameSting = aaerr[i];
                     switch (i) {
                         case 0:
-                            model.imageString =dic[@"DE_CODE"];
+                            model.imageString = FORMAT(@"%@",dic[@"DE_CODE"]);
                             break;
                         case 1:
-                            model.imageString =dic[@"DE_NAME"];
+                            model.imageString = FORMAT(@"%@",dic[@"DE_NAME"]);
                             break;
                         case 2:
-                            model.imageString =dic[@"DE_SPEC"];
+                            model.imageString = FORMAT(@"%@",dic[@"DE_SPEC"]);
                             break;
                         case 3:
-                            model.imageString =dic[@"DB_UNACTIONQTY"];
+                            model.imageString = FORMAT(@"%@",dic[@"DB_UNACTIONQTY"]);
                             break;
                             
                         default:
@@ -317,22 +317,22 @@
                 model.nameSting = arr[i];
                 switch (i) {
                     case 0:
-                         model.imageString = dic[@"DB_CODE"];
+                        model.imageString = FORMAT(@"%@",dic[@"DB_CODE"]);
                         break;
                     case 1:
-                        model.imageString = dic[@"DB_CENTERCODE"];
+                        model.imageString = FORMAT(@"%@",dic[@"DB_CENTERCODE"]);
                         break;
                     case 2:
-                        model.imageString = dic[@"DB_CENTERNAME"];
+                        model.imageString = FORMAT(@"%@",dic[@"DB_CENTERNAME"]);
                         break;
                     case 3:
-                        model.imageString = dic[@"DB_WORKSHOP"];
+                        model.imageString = FORMAT(@"%@",dic[@"DB_WORKSHOP"]);
                         break;
                     case 4:
-                        model.imageString = dic[@"DB_LINECODE"];
+                        model.imageString = FORMAT(@"%@",dic[@"DB_LINECODE"]);
                         break;
                     case 5:
-                        model.imageString = dic[@"DB_DEVKIND"];
+                        model.imageString = FORMAT(@"%@",dic[@"DB_DEVKIND"]);
                         break;
                     case 6:
                         model.imageString = FORMAT(@"%@", dic[@"DB_UNACTIONQTY"]);

+ 30 - 23
shiku_im/shiku_im/文件夹1/设备管理/views/查寻cell/LYYDMDataSearchCell.m

@@ -57,8 +57,8 @@ static NSString *cellID  = @"stasss";
     if ([super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
         
         //cell点击没效果
-        self.selectionStyle=UITableViewCellSelectionStyleNone;
-        self.backgroundColor=BGKJ_COLOR;
+        self.selectionStyle = UITableViewCellSelectionStyleNone;
+        self.backgroundColor = BGB_COLOR;
         // 裁剪看不到的
         if ([reuseIdentifier isEqualToString:@"status18811"]) {
             [self setView11];
@@ -76,37 +76,44 @@ static NSString *cellID  = @"stasss";
 - (void)setView11{
     _aaaa = 0;
     [self.contentView addSubview:self.collectView];
+    self.collectView.backgroundColor = BGKJ_COLOR;
+    self.collectView.layer.masksToBounds = YES;
+    self.collectView.layer.cornerRadius = 5;
     [self.collectView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.top.bottom.equalTo(self.contentView);
-        make.right.equalTo(self.contentView).offset(-10);
-        
+        make.right.equalTo(self.contentView).offset(-5);
+        make.left.equalTo(self.contentView).offset(5);
+        make.top.equalTo(self.contentView).offset(5);
+        make.bottom.equalTo(self.contentView).offset(-5);
     }];
     
 }
 - (void)setView{
     _aaaa = 0;
     [self.contentView addSubview:self.collectView];
+    self.collectView.backgroundColor = BGKJ_COLOR;
+    self.collectView.layer.masksToBounds = YES;
+    self.collectView.layer.cornerRadius = 5;
     [self.collectView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.top.bottom.equalTo(self.contentView);
-        make.right.equalTo(self.contentView).offset(-20);
-        
+        make.right.equalTo(self.contentView).offset(-5);
+        make.left.equalTo(self.contentView).offset(5);
+        make.top.equalTo(self.contentView).offset(5);
+        make.bottom.equalTo(self.contentView).offset(-5);
     }];
     
-    _selectBtn = [UIButton buttonWithType:UIButtonTypeCustom];
-    _selectBtn.backgroundColor = [UIColor clearColor];
-    _imageV.image =[UIImage imageNamed:@"ic_menu_retract(2)"];
-    _imageV = [[UIImageView alloc] initWithFrame:CGRectMake(10, 15, 15, 10)];
-    
-    // @""
-    [_selectBtn addSubview:_imageV];
-    [_selectBtn addTarget:self action:@selector(selectAction:) forControlEvents:UIControlEventTouchUpInside];
-    [self.contentView addSubview:self.selectBtn];
-    [self.selectBtn mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.bottom.equalTo(self.contentView);
-        make.height.width.mas_equalTo(30);
-        make.right.equalTo(self.contentView);
-        
-    }];
+//    _selectBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+//    _selectBtn.backgroundColor = [UIColor clearColor];
+//    _imageV.image =[UIImage imageNamed:@"ic_menu_retract(2)"];
+//    _imageV = [[UIImageView alloc] initWithFrame:CGRectMake(10, 15, 15, 10)];
+//
+//    [_selectBtn addSubview:_imageV];
+//    [_selectBtn addTarget:self action:@selector(selectAction:) forControlEvents:UIControlEventTouchUpInside];
+//    [self.contentView addSubview:self.selectBtn];
+//    [self.selectBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.bottom.equalTo(self.contentView);
+//        make.height.width.mas_equalTo(30);
+//        make.right.equalTo(self.contentView);
+//        
+//    }];
     UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(doubleTapAction:)];
     doubleTap.numberOfTapsRequired = 2;
     [self addGestureRecognizer:doubleTap];

+ 4 - 4
shiku_im/shiku_im/文件夹1/设备管理/views/查寻cell/LYYDMDataSearchColectCell.m

@@ -30,16 +30,14 @@
 - (void)setView{
     [self.contentView addSubview:self.leftlabel];
     [self.leftlabel mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.left.bottom.top.equalTo(self.contentView);
+        make.bottom.top.equalTo(self.contentView);
         make.width.mas_equalTo(50);
-        
+        make.left.equalTo(self.contentView).offset(5);
     }];
     [self.contentView addSubview:self.rightlabel];
     [self.rightlabel mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.equalTo(self.leftlabel.mas_right);
         make.top.bottom.right.equalTo(self.contentView);
-        
-        
     }];
     
     
@@ -50,6 +48,8 @@
     self.leftlabel.text = model.nameSting;
     if ([model.nameSting isEqualToString:@"设备编号"]) {
         self.rightlabel.textColor = Color(6, 143, 235, 1.0);
+    }else{
+        self.rightlabel.textColor = HexColor(@"#333333");
     }
     self.rightlabel.text = model.imageString;
     

+ 14 - 0
shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/DeviceFormVC.h

@@ -0,0 +1,14 @@
+//
+//  DeviceFormVC.h
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/6/19.
+//
+
+#import "UASBaseVC.h"
+
+@interface DeviceFormVC : UASBaseVC
+
+@property (nonatomic,strong) NSString *deviceCode;
+
+@end

+ 426 - 0
shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/DeviceFormVC.m

@@ -0,0 +1,426 @@
+//
+//  DeviceFormVC.m
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/6/19.
+//
+
+#import "DeviceFormVC.h"
+#import "MoreGridModel.h"
+#import "DeviceFormView.h"
+#import "LYYFuJianModel.h"
+#import "LYYReadingVC.h"
+#import "LYYBigImageVC.h"
+
+@interface DeviceFormVC ()
+@property (nonatomic,strong) NSMutableArray *gridData;//从表数据
+@end
+
+@implementation DeviceFormVC
+{
+    BOOL multidetailgrid;//判断是否有多明细表
+    NSMutableArray *_listArr; //获取配置表的数据(主表)
+    
+}
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.title = @"设备信息";
+    
+    _listArr = [NSMutableArray new];
+    _gridData = [NSMutableArray new];
+    multidetailgrid = NO;
+    
+    /*获取配置数据*/
+    [self getFormDataFromSever];
+}
+
+#pragma mark --- 获取配置数据
+-(void)getFormDataFromSever
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    NSString *url = [NSString stringWithFormat:@"http://10.1.80.28:8080/ERP/mobile/device/getDeviceInfo.action"];
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    NSDictionary *param = @{
+                            @"decode":@"a001",
+//                            @"sessionId":g_sessionId,
+                            };
+    
+    UASNetworkManager *manager = [UASNetworkManager shareManager];
+    manager.responseSerializer = [AFJSONResponseSerializer serializer];
+    [manager request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        [MBProgressHUD hideHUDForView:self.view];
+        SLog(@"设备管理多明细通用表单:%@",responseObject);
+        
+        NSMutableArray *formAllDataArr = [NSMutableArray new];
+        NSMutableArray *gridAllDataArr = [NSMutableArray new];
+
+        for (id obj in responseObject[@"data"][@"formdetail"]) {
+
+            [formAllDataArr addObject:obj];
+        }
+        
+        formAllDataArr = [NSDictionary changeType:formAllDataArr];
+
+        multidetailgrid = [responseObject[@"data"][@"multidetailgrid"] boolValue];
+        if (multidetailgrid) {
+            for (id obj in responseObject[@"data"][@"othergridetail"]) {
+                [gridAllDataArr addObject:obj];
+            }
+        }else{
+            NSMutableArray *arr = [NSMutableArray new];
+            for (id obj in responseObject[@"data"][@"gridetail"]) {
+                [arr addObject:obj];
+            }
+            if (arr.count != 0) {
+                NSDictionary *dic = @{
+                                      @"dgtitle":@"从属明细表",
+                                      @"dgcaller":@"",
+                                      @"detailgrid":arr,
+                                      };
+                [gridAllDataArr addObject:dic];
+            }
+        }
+
+        gridAllDataArr = [NSDictionary changeType:gridAllDataArr];
+
+        if (formAllDataArr.count != 0) {
+            [self handlerDataFromDowload:formAllDataArr andGridData:gridAllDataArr];
+        }
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        ErrorInfomation;
+        [MBProgressHUD hideHUDForView:self.view];
+        SLog(@"%@",error);
+    }];
+}
+
+#pragma mark --- 配置表单数据处理
+- (void)handlerDataFromDowload:(NSMutableArray *)dataArr andGridData:(NSMutableArray *)gridDataArr
+{
+    /*先排序,后分组【坑货需求】*/
+    NSArray *aArr ;
+    NSArray *bArr ;
+    aArr = [dataArr mutableCopy];
+    // 排序key, 某个对象的属性名称,是否升序, YES-升序, NO-降序
+    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"fd_detno" ascending:YES];
+    // 排序结果
+    bArr = [aArr sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
+    /************************************************************/
+    
+    /*分组*/
+    NSMutableArray *array = [[NSMutableArray alloc]init];
+    for (int i = 0; i < bArr.count; i++) {
+        [array addObject:bArr[i][@"fd_group"]];
+    }
+    NSMutableArray *reloadArr = [[NSMutableArray alloc]init];
+    reloadArr = [bArr mutableCopy];
+    
+    NSMutableArray *dateMutablearray = [[NSMutableArray alloc]init];
+    NSMutableArray *dateMutablearray1 = [[NSMutableArray alloc]init];
+    for (int i = 0; i < array.count; i ++) {
+        
+        NSString *string = array[i];
+        
+        //根据某个字段分组
+        NSMutableArray *tempArray = [[NSMutableArray alloc]init];
+        
+        [tempArray addObject:string];
+        
+        //切换总体的数据
+        NSMutableArray *tempArray1 = [[NSMutableArray alloc]init];
+        
+        [tempArray1 addObject:reloadArr[i]];
+        
+        for (int j = i+1; j < array.count; j ++) {
+            
+            NSString *jstring = array[j];
+            
+            if([string isEqualToString:jstring]){
+                
+                [tempArray addObject:jstring];
+                
+                [array removeObjectAtIndex:j];
+                
+                [tempArray1 addObject:reloadArr[j]];
+                
+                [reloadArr removeObjectAtIndex:j];
+                
+                j -= 1;
+            }
+        }
+        [dateMutablearray addObject:tempArray];
+        [dateMutablearray1 addObject:tempArray1];
+    }
+    
+    /*构造模型*/
+    for (int i = 0; i < dateMutablearray1.count; i++)
+    {
+        NSMutableArray *sub = [NSMutableArray new];
+        sub = dateMutablearray1[i];
+        
+        NSMutableArray *showArr = [NSMutableArray new];
+        NSMutableArray *hideArr = [NSMutableArray new];
+        NSString *fdTitle = @"";
+        for (id obj in sub) {
+            NSString *isShow = FORMAT(@"%@",[obj objectForKey:@"mfd_isdefault"]);
+            NSString *typeStr = FORMAT(@"%@",[obj objectForKey:@"fd_type"]);
+            if ([isShow isEqualToString:@"-1"] && ![typeStr isEqualToString:@"H"]) {
+                [showArr addObject:obj];
+            }else{
+                [hideArr addObject:obj];
+            }
+            fdTitle = [obj objectForKey:@"fd_group"];
+        }
+        NSDictionary *baseDic = @{
+                                  @"fdtitle":fdTitle != nil ? fdTitle:@"",
+                                  @"showItems":showArr,
+                                  @"hideItems":hideArr,
+                                  };
+        FormModel *model = [FormModel mj_objectWithKeyValues:baseDic];
+        
+        for (id obj in model.showItems) {
+            DetailFormModel *detailFormModel = obj;
+            CGFloat height = [self getSizeWithText:FORMAT(@"%@*",detailFormModel.fd_caption)].height;
+            NSString *heightStr = FORMAT(@"%f",height+10);
+            if (height < 40) {
+                detailFormModel.cellHeight = @"40";
+            }else{
+                detailFormModel.cellHeight = heightStr;
+            }
+        }
+        
+        [_listArr addObject:model];
+    }
+    
+    /*明细表的数据处理*/
+    if (gridDataArr.count != 0) {
+        [self handleGridDataWith:gridDataArr];
+    }
+}
+
+#pragma mark --- 明细表的数据处理
+-(void)handleGridDataWith:(NSMutableArray *)gridDataArr
+{
+    for (id allObj in gridDataArr) {
+        NSArray *bArr = [allObj objectForKey:@"detailgrid"];
+        
+        /*分组*/
+        NSMutableArray *array = [[NSMutableArray alloc]init];
+        for (int i = 0; i < bArr.count; i++) {
+            [array addObject:FORMAT(@"%@",bArr[i][@"dg_group"])];
+        }
+        NSMutableArray *reloadArr = [[NSMutableArray alloc]init];
+        reloadArr = [bArr mutableCopy];
+        
+        NSMutableArray *dateMutablearray = [[NSMutableArray alloc]init];
+        NSMutableArray *dateMutablearray1 = [[NSMutableArray alloc]init];
+        for (int i = 0; i < array.count; i ++) {
+            
+            NSString *string = array[i];
+            
+            //根据某个字段分组
+            NSMutableArray *tempArray = [[NSMutableArray alloc]init];
+            
+            [tempArray addObject:string];
+            
+            //切换总体的数据
+            NSMutableArray *tempArray1 = [[NSMutableArray alloc]init];
+            
+            [tempArray1 addObject:reloadArr[i]];
+            
+            for (int j = i+1; j < array.count; j ++) {
+                
+                NSString *jstring = array[j];
+                
+                if([string isEqualToString:jstring]){
+                    
+                    [tempArray addObject:jstring];
+                    
+                    [array removeObjectAtIndex:j];
+                    
+                    [tempArray1 addObject:reloadArr[j]];
+                    
+                    [reloadArr removeObjectAtIndex:j];
+                    
+                    j -= 1;
+                }
+            }
+            [dateMutablearray addObject:tempArray];
+            [dateMutablearray1 addObject:tempArray1];
+        }
+        
+        /*构造模型*/
+        NSMutableArray <MoreGridModel *> *baseArr = [NSMutableArray new];
+        for (int i = 0; i < dateMutablearray1.count; i++)
+        {
+            NSMutableArray *sub = [NSMutableArray new];
+            sub = dateMutablearray1[i];
+            
+            NSMutableArray *showArr = [NSMutableArray new];
+            NSMutableArray *hideArr = [NSMutableArray new];
+            for (id obj in sub) {
+                NSString *isShow = FORMAT(@"%@",[obj objectForKey:@"mdg_isdefault"]);
+                NSString *typeStr = FORMAT(@"%@",[obj objectForKey:@"dg_type"]);
+                if ([isShow isEqualToString:@"-1"] && ![typeStr isEqualToString:@"H"]) {
+                    [showArr addObject:obj];
+                }else{
+                    [hideArr addObject:obj];
+                }
+            }
+            NSDictionary *baseDic = @{
+                                      @"dgtitle":allObj[@"dgtitle"],
+                                      @"dgcaller":allObj[@"dgcaller"],
+                                      @"showItems":showArr,
+                                      @"hideItems":hideArr,
+                                      };
+            MoreGridModel *model = [MoreGridModel mj_objectWithKeyValues:baseDic];
+            [baseArr addObject:model];
+            
+        }
+        [self.gridData addObject:baseArr];
+    }
+    
+    /**
+     把主表插在第一个TableView
+     */
+    [self.gridData insertObject:_listArr atIndex:0];
+    
+    [self creatFormUIWithData:self.gridData];
+}
+
+#pragma mark --- 配置表单页面
+-(void)creatFormUIWithData:(NSMutableArray *)arr
+{
+    DeviceFormView *view = [[DeviceFormView alloc]initWithFrame:CGRectMake(0, 0, self_width, self_height)];
+    view.statuType = Editing;
+    view.gridData = arr;
+    [self.view addSubview:view];
+    
+    @weakify(self)
+    view.msgBlock = ^(NSString *msgStr) {
+        @strongify(self)
+        [JOShowMessageFromNavi showDropViewWithMessage:msgStr ToNavi:self.navigationController withColor:nil];
+    };
+    
+    __weak typeof(self)  weakSelf = self;
+    view.block = ^(int whichTextView,UITableView *tableView) {
+        __strong typeof(DeviceFormVC)  *strongSelf = weakSelf;
+        int a = whichTextView  / 1000;
+        int b = whichTextView  % 1000;
+        
+        id obj = tableView.dataArray[a];
+        NSString *typeStr,*fieldStr,*titleStr,*renderer,*value;
+        if ([obj isKindOfClass:[MoreGridModel class]]) {
+            MoreGridModel *model = tableView.dataArray[a];
+            DetailgridModel *detailModel = model.showItems[b];
+            typeStr = [NSString stringWithFormat:@"%@",detailModel.dg_type];
+            fieldStr = [NSString stringWithFormat:@"%@",detailModel.dg_field];
+            titleStr = [NSString stringWithFormat:@"%@",detailModel.dg_caption];
+            renderer = [NSString stringWithFormat:@"%@",detailModel.dg_renderer];
+            value = [NSString stringWithFormat:@"%@",detailModel.dg_value];
+        }else{
+            FormModel *model = tableView.dataArray[a];
+            DetailFormModel *detailModel = model.showItems[b];
+            typeStr = [NSString stringWithFormat:@"%@",detailModel.fd_type];
+            fieldStr = [NSString stringWithFormat:@"%@",detailModel.fd_field];
+            titleStr = [NSString stringWithFormat:@"%@",detailModel.fd_caption];
+            value = [NSString stringWithFormat:@"%@",detailModel.fd_value];
+        }
+        
+        if ([renderer isEqualToString:@"detailAttach"] || [typeStr isEqualToString:@"FF"]) {//附件
+            NSArray *arr = [value componentsSeparatedByString:@";"];
+            if (arr.count == 2) {
+                [self getAttachWithID:arr[1]];
+            }else{
+                [JOShowMessageFromNavi showDropViewWithMessage:@"附件打开失败" ToNavi:self.navigationController withColor:nil];
+            }
+        }
+    };
+}
+
+#pragma mark --- 获取附件
+-(void)getAttachWithID:(NSString *)idStr
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    
+    NSString *mustString = FORMAT(@"master=%@&sessionUser=%@&emcode=%@&sessionId=%@",g_master,g_sessionUser,g_emcode,g_sessionId);
+    
+    [LYHTTPRequest Get:BXD_GET_IMAGE page:0 condition:idStr Completion:^(id ObjectData, NSError *error) {
+        if (error == nil) {
+            [MBProgressHUD hideHUDForView:self.view];
+            
+            NSArray *arr = ObjectData[@"files"];
+            
+            NSMutableArray *attachArr = [NSMutableArray new];
+            
+            for (NSDictionary *dic in arr) {
+                
+                NSString *ip=[[NSUserDefaults standardUserDefaults] objectForKey:@"ipAndPort"];
+                
+                NSString *urlStr = FORMAT(@"%@common/download.action?path=%@&%@",ip,dic[@"fp_path"],mustString);
+                
+                urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+                
+                NSURL *url = [NSURL URLWithString:urlStr];
+                
+                NSData *data = [NSData dataWithContentsOfURL:url];
+                UIImage *image = [[UIImage alloc] initWithData:data];
+
+                LYYFuJianModel *model =[[LYYFuJianModel alloc] init];
+                model.nameStr = dic[@"fp_name"];
+                model.image1 = image;
+                model.pathStr = dic[@"fp_path"];
+                [attachArr addObject:model];
+            }
+            
+            if (attachArr.count != 0) {
+                [self openAttachWithArr:attachArr];
+            }else{
+                [JOShowMessageFromNavi showDropViewWithMessage:@"获取附件地址失败" ToNavi:self.navigationController withColor:nil];
+            }
+            
+        }else{
+            [MBProgressHUD hideHUDForView:self.view];
+            
+            [JOShowMessageFromNavi showDropViewWithMessage:@"获取附件地址失败" ToNavi:self.navigationController withColor:nil];
+        }
+    }];
+}
+
+#pragma mark --- 打开附件
+-(void)openAttachWithArr:(NSMutableArray *)attachArr
+{
+    LYYFuJianModel *model = attachArr[0];
+    
+    LYYBigImageVC *vc = [[LYYBigImageVC alloc] init];
+    vc.image11 = model.image1;
+    vc.title = @"附件";
+    
+    LYYReadingVC *vc1 = [[LYYReadingVC alloc] init];
+    vc1.title = @"附件";
+    vc1.urlStr = model.pathStr;
+    
+    NSArray *arr = [model.pathStr componentsSeparatedByString:@"."];
+    NSString *str = [arr lastObject];
+    if ([str isEqualToString:@"png"] || [str isEqualToString:@"jpg"] ||[str isEqualToString:@"jpeg"]) {
+        
+        [self.navigationController pushViewController:vc animated:YES];
+        
+    }else
+        [self.navigationController pushViewController:vc1 animated:YES];
+}
+
+#pragma mark --- 自动获取文本高度
+- (CGSize)getSizeWithText:(NSString *)text
+{
+    /**
+     参数1:Size 文本显示的最大区域
+     参数2:options 用什么来的换行模式来计算
+     参数3:attributes 文字的大小
+     参数4:context 上下文
+     */
+    
+    return [FORMAT(@"%@",text) boundingRectWithSize:CGSizeMake(90, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : FONT_SIZE(14)} context:NULL].size;
+}
+
+@end

+ 37 - 0
shiku_im/shiku_im/文件夹1/设备管理2.0/Views/DeviceFormView.h

@@ -0,0 +1,37 @@
+//
+//  DeviceFormView.h
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/6/20.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface UITableView(data)
+
+@property (strong,nonatomic) NSMutableArray *dataArray;//每个tableview的配置源
+
+@end
+
+@interface DeviceFormView : UIView
+typedef NS_ENUM(NSInteger,StatuType) {
+    Entering = 999, //在录入
+    Editing, //已提交或已审核
+};
+
+@property (nonatomic,strong) NSMutableArray *gridData;//多明细的数据
+
+@property (nonatomic,strong) NSMutableArray *tableViewArr;//装载所有UITableView
+
+@property (nonatomic,assign) StatuType statuType;
+
+/**
+ whichTextView:哪一个textView
+ tableView:哪一个tableView
+ */
+@property (nonatomic,copy)void(^block)(int whichTextView,UITableView *tableView);//明细点击跳转参数回传
+
+@property (nonatomic,copy)void(^msgBlock)(NSString *msgStr);//回调消息
+
+@end
+

+ 665 - 0
shiku_im/shiku_im/文件夹1/设备管理2.0/Views/DeviceFormView.m

@@ -0,0 +1,665 @@
+//
+//  DeviceFormView.m
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/6/20.
+//
+
+#import "DeviceFormView.h"
+#import <objc/runtime.h>
+#import "DocumentCell.h"
+#import "MoreGridModel.h"
+
+@implementation UITableView(data)
+
+-(void)setDataArray:(NSMutableArray *)dataArray{
+    objc_setAssociatedObject(self, @"UITableViewDataArray", dataArray, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+    [self reloadData];
+}
+
+-(NSMutableArray *)dataArray{
+    return objc_getAssociatedObject(self, @"UITableViewDataArray");
+}
+
+@end
+
+@interface DeviceFormView()<UIScrollViewDelegate,UITableViewDelegate,UITableViewDataSource,HypTextViewDelegate>
+@property(strong,nonatomic)UIScrollView *scorlView;
+@property(strong,nonatomic)HMSegmentedControl *segment;
+@end
+
+@implementation DeviceFormView
+- (instancetype)initWithFrame:(CGRect)frame
+{
+    self = [super initWithFrame:frame];
+    if (self) {
+        
+        [self createUI];
+        
+    }
+    return self;
+}
+
+-(void)createUI{
+    
+    self.backgroundColor = BGB_COLOR;
+    
+}
+
+#pragma mark --- UITableViewDelegate / DataSource
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+    return  tableView.dataArray.count;
+}
+
+// 每组多少行
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+    MoreGridModel *model = tableView.dataArray[section];
+    return [model.showItems count];
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    
+    NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%ld%ld", (long)[indexPath section], (long)[indexPath row]];//以indexPath来唯一确定cell
+    DocumentCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; //出列可重用的cell
+    if (cell == nil) {
+        cell = [[DocumentCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
+    }
+    
+    //...其他代码
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    
+    cell.MyTextView.tag = indexPath.row + indexPath.section*1000;
+    
+    cell.MyTextView.objTag = tableView.tag;
+    
+    cell.MyTextView.delegate = self;
+    
+    cell.MyTextView.block = ^(NSString *textViewHeight, NSString *row) {
+        [tableView beginUpdates];
+        int a = [row integerValue] / 1000;
+        int b = [row integerValue] % 1000;
+        
+        id obj = tableView.dataArray[a];
+        if ([obj isKindOfClass:[MoreGridModel class]]) {
+            MoreGridModel *model1 = tableView.dataArray[a];
+            DetailgridModel *detailModel1 = model1.showItems[b];
+            
+            if ([textViewHeight isEqualToString:@"32"]) {
+                detailModel1.cellHeight = @"40";
+            }else
+                detailModel1.cellHeight = textViewHeight;
+        }else{
+            FormModel *model1 = tableView.dataArray[a];
+            DetailFormModel *detailModel1 = model1.showItems[b];
+            
+            if ([textViewHeight isEqualToString:@"32"]) {
+                detailModel1.cellHeight = @"40";
+            }else
+                detailModel1.cellHeight = textViewHeight;
+        }
+        
+        [tableView endUpdates];
+    };
+    
+    id obj = tableView.dataArray[indexPath.section];
+    
+    NSString *titleName = @"";//名字
+    NSString *str = @"";//类型
+    NSString *field = @"";//key值
+    NSString *length = @"";//长度
+    NSString *allowblank = @"";//是否必填(是否允许为空)
+    NSString *readonly = @"";//是否只读
+    NSString *renderer = @"";//判断是否为附件
+    if ([obj isKindOfClass:[MoreGridModel class]]) {
+        MoreGridModel *model = tableView.dataArray[indexPath.section];
+        DetailgridModel *detailModel = model.showItems[indexPath.row];
+        cell.MyTextView.text = detailModel.dg_value;
+        
+        CGRect frame = cell.titleName.frame;
+        frame.size.height = [detailModel.cellHeight floatValue];
+        cell.titleName.frame = frame;
+        
+        titleName = [NSString stringWithFormat:@"%@",detailModel.dg_caption];
+        str = [NSString stringWithFormat:@"%@",detailModel.dg_type];
+        field = [NSString stringWithFormat:@"%@",detailModel.dg_field];
+        length = [NSString stringWithFormat:@"%@",detailModel.dg_maxlength];
+        allowblank = [NSString stringWithFormat:@"%@",detailModel.dg_logictype];
+        readonly = [NSString stringWithFormat:@"%@",detailModel.dg_editable];
+        renderer = [NSString stringWithFormat:@"%@",detailModel.dg_renderer];
+    }else{
+        FormModel *model = tableView.dataArray[indexPath.section];
+        DetailFormModel *detailModel = model.showItems[indexPath.row];
+        cell.MyTextView.text = detailModel.fd_value;
+        
+        CGRect frame = cell.titleName.frame;
+        frame.size.height = [detailModel.cellHeight floatValue];
+        cell.titleName.frame = frame;
+        
+        titleName = [NSString stringWithFormat:@"%@",detailModel.fd_caption];
+        str = [NSString stringWithFormat:@"%@",detailModel.fd_type];
+        field = [NSString stringWithFormat:@"%@",detailModel.fd_field];
+        length = [NSString stringWithFormat:@"%@",detailModel.fd_maxlength];
+        allowblank = [NSString stringWithFormat:@"%@",detailModel.fd_logictype];
+        readonly = [NSString stringWithFormat:@"%@",detailModel.fd_readonly];
+    }
+    
+    /*富文本,为了必填项的红色“*”*/
+    NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:FORMAT(@"%@*",titleName)];
+    [AttributedStr addAttribute:NSForegroundColorAttributeName
+                          value:[UIColor redColor]
+                          range:NSMakeRange(titleName.length, 1)];
+    
+    if ([allowblank isEqualToString:@"F"]) {/*必填项*/
+        if ([str isEqualToString:@"C"] ||[str isEqualToString:@"SF"] ||[str isEqualToString:@"MF"] ||[str isEqualToString:@"D"] ||[str isEqualToString:@"DF"]) {
+            cell.MyTextView.placeholder = @"请选择";
+        }else{
+            cell.MyTextView.placeholder = @"请输入";
+        }
+        cell.titleName.attributedText = AttributedStr;
+    }
+    else if ([allowblank isEqualToString:@"necessaryField"]) {/*必填项*/
+        if ([str isEqualToString:@"C"] ||[str isEqualToString:@"SF"] ||[str isEqualToString:@"MF"] ||[str isEqualToString:@"D"] ||[str isEqualToString:@"DF"]) {
+            cell.MyTextView.placeholder = @"请选择";
+        }else{
+            cell.MyTextView.placeholder = @"请输入";
+        }
+        cell.titleName.attributedText = AttributedStr;
+    }
+    else if ([allowblank isEqualToString:@"T"]) {
+        if ([str isEqualToString:@"C"] ||[str isEqualToString:@"SF"] ||[str isEqualToString:@"MF"] ||[str isEqualToString:@"D"] ||[str isEqualToString:@"DF"]) {
+            cell.MyTextView.placeholder = @"请选择";
+        }else{
+            cell.MyTextView.placeholder = @"请输入";
+        }
+        cell.titleName.text = titleName;
+    }
+    else{
+        if ([str isEqualToString:@"C"] ||[str isEqualToString:@"SF"] ||[str isEqualToString:@"MF"] ||[str isEqualToString:@"D"] ||[str isEqualToString:@"DF"]) {
+            cell.MyTextView.placeholder = @"请选择";
+        }else{
+            cell.MyTextView.placeholder = @"请输入";
+        }
+        cell.titleName.text = titleName;
+    }
+    
+    //T只读,F非只读,默认非只读
+    if ([readonly isEqualToString:@"T"]) {
+        
+        cell.MyTextView.userInteractionEnabled = NO;
+        
+    }else{
+        
+        cell.MyTextView.userInteractionEnabled = YES;
+        
+    }
+    
+    if (_statuType == Editing) {
+        cell.MyTextView.userInteractionEnabled = NO;
+        cell.MyTextView.placeholder = @"";
+    }
+    
+    //附件判断-可点击查看附件
+    if ([renderer isEqualToString:@"detailAttach"] || [str isEqualToString:@"FF"]) {
+        cell.MyTextView.userInteractionEnabled = YES;
+    }
+    
+    SLog(@"多明细的类型:%@ -- 名字:%@ -- 第几个:%ld -- key:%@ -- 是否只读:%@ -- 长度:%@ -- 是否必填:%@",str,titleName,(long)cell.MyTextView.tag,field,readonly,length,allowblank);
+    
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    id obj = tableView.dataArray[indexPath.section];
+    if ([obj isKindOfClass:[MoreGridModel class]]) {
+        MoreGridModel *model = tableView.dataArray[indexPath.section];
+        DetailgridModel *detailModel = model.showItems[indexPath.row];
+        return [detailModel.cellHeight floatValue];
+    }else{
+        FormModel *model = tableView.dataArray[indexPath.section];
+        DetailFormModel *detailModel = model.showItems[indexPath.row];
+        return [detailModel.cellHeight floatValue];
+    }
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+{
+    if (_statuType == Editing) {
+        return 10;
+    }else
+        return 40;
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
+{
+    return CGFLOAT_MIN;
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+    UIView *headerView = [[UIView alloc] init];
+    headerView.userInteractionEnabled = YES;
+    headerView.backgroundColor = [UIColor clearColor];
+    
+    UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 4, SCREEN_WIDTH, 40)];
+    lbl.text = [NSString stringWithFormat:@" 明细%ld",(long)section+1];
+    lbl.backgroundColor = Color(250, 249, 249, 1);
+    lbl.textColor = HexColor(@"#1084D1");
+    lbl.font = FONT_SIZE(13);
+//    [headerView addSubview:lbl];
+    
+    if (_statuType != Editing) {
+        if (section != 0) {
+            UIButton *deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+            deleteBtn.frame = CGRectMake(SCREEN_WIDTH-60, 4, 60, 40);
+            deleteBtn.tag = section;
+            [deleteBtn addTarget:self action:@selector(deleteMoreCongBiao:) forControlEvents:UIControlEventTouchUpInside];
+            objc_setAssociatedObject(deleteBtn, "firstObject", tableView, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+            objc_setAssociatedObject(deleteBtn, "secondObject", @(section), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+            [headerView addSubview:deleteBtn];
+            
+            UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 60, 40)];
+            lbl.text = @"删除";
+            lbl.backgroundColor = Color(250, 249, 249, 1);
+            lbl.textColor = Color(47, 149, 221, 1);
+            lbl.textAlignment = NSTextAlignmentRight;
+            lbl.font = FONT_SIZE(13);
+            [deleteBtn addSubview:lbl];
+        }
+    }
+    
+    return headerView;
+    
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
+{
+    return nil;
+}
+
+#pragma mark --- HypTextView代理
+- (void)HypTextView:(HypTextView *)HypTextView textDidChanged:(NSString *)text
+{
+    UITableView *tableView = [self viewWithTag:HypTextView.objTag];
+    DLog(@"%ld",(long)HypTextView.tag);
+    int a = HypTextView.tag  / 1000;
+    int b = HypTextView.tag  % 1000;
+    
+    id obj = tableView.dataArray[a];
+    
+    NSString *maxlength = @"";
+    if ([obj isKindOfClass:[MoreGridModel class]]) {
+        MoreGridModel *model = tableView.dataArray[a];
+        DetailgridModel *detailModel = model.showItems[b];
+        maxlength = [NSString stringWithFormat:@"%@",detailModel.dg_maxlength];
+    }else{
+        FormModel *model = tableView.dataArray[a];
+        DetailFormModel *detailModel = model.showItems[b];
+        maxlength = [NSString stringWithFormat:@"%@",detailModel.fd_maxlength];
+    }
+    
+    
+    if ([maxlength isEqualToString:@"0"] || maxlength.length == 0) {
+        maxlength = @"300";
+    }
+    
+    int length = [maxlength intValue];
+    
+    if (HypTextView.text.length > length)
+    {
+        HypTextView.text = [HypTextView.text substringToIndex:length];
+        [self endEditing:YES];
+        if (self.msgBlock) {
+            self.msgBlock([NSString stringWithFormat:@"不能超过%d个字",length]);
+        }
+    }
+}
+
+-(BOOL)textViewShouldBeginEditing:(HypTextView *)textView
+{
+    UITableView *tableView = [self viewWithTag:textView.objTag];
+    int a = textView.tag  / 1000;
+    int b = textView.tag  % 1000;
+    
+    id obj = tableView.dataArray[a];
+    NSString *typeStr = @"", *renderer = @"";
+    if ([obj isKindOfClass:[MoreGridModel class]]) {
+        MoreGridModel *model = tableView.dataArray[a];
+        DetailgridModel *detailModel = model.showItems[b];
+        typeStr = [NSString stringWithFormat:@"%@",detailModel.dg_type];
+        renderer = [NSString stringWithFormat:@"%@",detailModel.dg_renderer];
+    }else{
+        FormModel *model = tableView.dataArray[a];
+        DetailFormModel *detailModel = model.showItems[b];
+        typeStr = [NSString stringWithFormat:@"%@",detailModel.fd_type];
+    }
+    
+    if ([typeStr isEqualToString:@"C"] || [typeStr isEqualToString:@"SF"] || [typeStr isEqualToString:@"DF"] || [typeStr isEqualToString:@"MF"] || [typeStr isEqualToString:@"D"] || [typeStr isEqualToString:@"DT"] || [typeStr isEqualToString:@"FF"] || [renderer isEqualToString:@"detailAttach"]) {
+        if (self.block) {
+            self.block(textView.tag, tableView);
+        }
+        return NO;
+    }
+    else
+        return YES;
+}
+
+- (BOOL)textView:(HypTextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
+    
+    UITableView *tableView = [self viewWithTag:textView.objTag];
+    
+    if ([text isEqualToString:@"\n"]){ //判断输入的字是否是回车,即按下return
+        //在这里做你响应return键的代码
+        [self endEditing:YES];
+        return NO; //这里返回NO,就代表return键值失效,即页面上按下return,不会出现换行,如果为yes,则输入页面会换行
+    }
+    
+    NSMutableString *allText = [NSMutableString stringWithString:[NSString stringWithFormat:@"%@",textView.text]];
+    [allText insertString:[NSString stringWithFormat:@"%@",text] atIndex:range.location];
+    
+    int a = textView.tag  / 1000;
+    int b = textView.tag  % 1000;
+    
+    id obj = tableView.dataArray[a];
+    NSString *typeStr = @"";
+    if ([obj isKindOfClass:[MoreGridModel class]]) {
+        MoreGridModel *model = tableView.dataArray[a];
+        DetailgridModel *detailModel = model.showItems[b];
+        typeStr = detailModel.dg_type;
+    }else{
+        FormModel *model = tableView.dataArray[a];
+        DetailFormModel *detailModel = model.showItems[b];
+        typeStr = [NSString stringWithFormat:@"%@",detailModel.fd_type];
+    }
+    
+    if ([typeStr isEqualToString:@"N"]) {
+        BOOL a = [self validateNumber:allText];
+        if (![self validateNumber:allText]) {
+            if (self.msgBlock) {
+                self.msgBlock(@"只能填写数字");
+            }
+        }
+        return a;
+    }
+    
+    return YES;
+}
+
+-(void)textViewDidEndEditing:(HypTextView *)textView
+{
+    UITableView *tableView = [self viewWithTag:textView.objTag];
+    
+    int a = textView.tag  / 1000;
+    int b = textView.tag  % 1000;
+    
+    id obj = tableView.dataArray[a];
+    if ([obj isKindOfClass:[MoreGridModel class]]) {
+        MoreGridModel *model = tableView.dataArray[a];
+        DetailgridModel *detailModel = model.showItems[b];
+        detailModel.dg_value = textView.text;
+    }else{
+        FormModel *model = tableView.dataArray[a];
+        DetailFormModel *detailModel = model.showItems[b];
+        detailModel.fd_value = textView.text;
+    }
+}
+
+- (void)HypTextView:(HypTextView *)HypTextView textDidEnd:(NSString *)text
+{
+    UITableView *tableView = [self viewWithTag:HypTextView.objTag];
+    
+    int a = HypTextView.tag  / 1000;
+    int b = HypTextView.tag  % 1000;
+    
+    id obj = tableView.dataArray[a];
+    if ([obj isKindOfClass:[MoreGridModel class]]) {
+        MoreGridModel *model = tableView.dataArray[a];
+        DetailgridModel *detailModel = model.showItems[b];
+        detailModel.dg_value = text;
+    }else{
+        FormModel *model = tableView.dataArray[a];
+        DetailFormModel *detailModel = model.showItems[b];
+        detailModel.fd_value = text;
+    }
+}
+
+//只能输入数字和小数点 -- 税率
+- (BOOL)validateNumber:(NSString*)number {
+    BOOL res = YES;
+    NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789."];
+    
+    if (number.length != 0) {
+        NSString * string = [number substringWithRange:NSMakeRange(0, 1)];
+        if ([string isEqualToString:@"."]) {
+            return NO;
+        }
+        
+        int j = 0; int z = 0;
+        while (j < number.length) {
+            NSString * string = [number substringWithRange:NSMakeRange(j, 1)];
+            if ([string isEqualToString:@"."]) {
+                z++;
+            }
+            j++;
+        }
+        if (z>1) {
+            return NO;
+        }
+        
+        int i = 0;
+        while (i < number.length) {
+            NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
+            NSRange range = [string rangeOfCharacterFromSet:tmpSet];
+            if (range.length == 0) {
+                res = NO;
+                break;
+            }
+            i++;
+        }
+    }
+    
+    return res;
+}
+//判断是否为整形;
+- (BOOL)isPureInt:(NSString *)string {
+    NSScanner *scan = [NSScanner scannerWithString:string];
+    int val;
+    return [scan scanInt:&val] && [scan isAtEnd];
+}
+//判断是否为浮点形
+- (BOOL)isPureFloat:(NSString *)string {
+    NSScanner *scan = [NSScanner scannerWithString:string];
+    float val;
+    return [scan scanFloat:&val] && [scan isAtEnd];
+}
+
+#pragma mark --- 添加明细
+-(void)addMoreCongBiao:(UIButton *)sender
+{
+    UITableView *tableView = objc_getAssociatedObject(sender, "firstObject");
+    
+    MoreGridModel *model = [MoreGridModel copyWithModel:_gridData[sender.tag][0]];
+    [tableView.dataArray addObject:model];
+    [tableView reloadData];
+}
+
+#pragma mark --- 删除明细
+-(void)deleteMoreCongBiao:(UIButton *)sender
+{
+    UITableView *tableView = objc_getAssociatedObject(sender, "firstObject");
+    int section = [objc_getAssociatedObject(sender, "secondObject") intValue];
+    
+    [tableView.dataArray removeObjectAtIndex:section];
+    
+    [tableView reloadData];
+}
+
+#pragma mark --- 多从表的数据
+-(void)setGridData:(NSMutableArray *)gridData
+{
+    _gridData = gridData;
+    
+    [self setUpSegmentAndScrollView];
+    
+    [self setUpNoConfirmTableViewWithEntering];
+}
+
+#pragma mark --- 建立不确定几个的tableView
+-(void)setUpNoConfirmTableViewWithEntering
+{
+    for (int i = 0; i < _gridData.count; i ++) {
+        UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(self.width*i, 0, self.width, self.scorlView.height) style:UITableViewStyleGrouped];
+        tableView.delegate = self;
+        tableView.dataSource = self;
+        tableView.showsVerticalScrollIndicator = NO;
+        tableView.backgroundColor = BGB_COLOR;
+        tableView.tag = i + 88888;
+        
+        tableView.dataArray = [NSMutableArray new];
+        NSMutableArray *daiArr = [NSMutableArray new];
+        NSMutableArray *dArr = _gridData[i];
+        for (int j = 0; j < dArr.count; j++) {
+            id obj = dArr[j];
+            if ([obj isKindOfClass:[MoreGridModel class]]) {
+                MoreGridModel *model = dArr[j];
+                for (id obj in model.showItems) {
+                    DetailgridModel *showObj = obj;
+                    CGFloat height = [self getSizeWithText:FORMAT(@"%@*",showObj.dg_caption)].height;
+                    NSString *heightStr = FORMAT(@"%f",height+10);
+                    if (height < 40) {
+                        showObj.cellHeight = @"40";
+                    }else{
+                        showObj.cellHeight = heightStr;
+                    }
+                    showObj.dg_value = showObj.dg_value != nil ? showObj.dg_value:@"";
+                }
+                [daiArr addObject:model];
+            }else{
+                FormModel *model = dArr[j];
+                [daiArr addObject:model];
+            }   
+        }
+        
+        tableView.dataArray = daiArr;
+        
+        if (_statuType != Editing) {
+            UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.width, 40)];
+            footerView.userInteractionEnabled = YES;
+            footerView.backgroundColor = [UIColor clearColor];
+            
+            UIButton *addBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+            addBtn.frame = CGRectMake(0, 0, SCREEN_WIDTH, 40);
+            [addBtn setTitleColor:HexColor(@"#1084D1") forState:UIControlStateNormal];
+            [addBtn setBackgroundColor:Color(250, 249, 249, 1) forState:UIControlStateNormal];
+            [addBtn setTitle:@"+ 添加" forState:UIControlStateNormal];
+            addBtn.titleLabel.font = FONT_SIZE(13);
+            [addBtn addTarget:self action:@selector(addMoreCongBiao:) forControlEvents:UIControlEventTouchUpInside];
+            objc_setAssociatedObject(addBtn, "firstObject", tableView, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+            addBtn.tag = i;
+            [footerView addSubview:addBtn];
+            tableView.tableFooterView = footerView;
+        }
+        
+        [self.scorlView addSubview:tableView];
+        [self.tableViewArr addObject:tableView];
+    }
+}
+
+-(NSMutableArray *)tableViewArr
+{
+    if (!_tableViewArr) {
+        _tableViewArr = [NSMutableArray new];
+    }
+    return _tableViewArr;
+}
+
+#pragma mark --- 设置segment
+-(void)setUpSegmentAndScrollView
+{
+    NSMutableArray *arr = [NSMutableArray new];
+    for (int i = 0; i < _gridData.count; i++) {
+        id obj = [_gridData[i] count] == 0 ? nil : _gridData[i][0];
+        if ([obj isKindOfClass:[MoreGridModel class]]) {
+            MoreGridModel *model = [_gridData[i] count] == 0 ? nil : _gridData[i][0];
+            [arr addObject:FORMAT(@"%@",model.dgtitle)];
+        }else{
+            [arr addObject:@"基本信息"];
+        }
+    }
+    _segment = [[HMSegmentedControl alloc]initWithSectionTitles:[arr mutableCopy]];
+    
+    _segment.titleTextAttributes = @{NSForegroundColorAttributeName :HexColor(@"#666666"),NSFontAttributeName : FONT_SIZE(12)};
+    _segment.selectedTitleTextAttributes = @{NSForegroundColorAttributeName :HexColor(@"#33A2EE"),NSFontAttributeName : FONT_SIZE(12)};
+    _segment.selectionIndicatorColor = HexColor(@"#33A2EE");
+    _segment.frame = CGRectMake(0, 0, self.width, 35);;
+    _segment.selectionIndicatorHeight = 1.0;
+    _segment.selectionIndicatorLocation = HMSegmentedControlSelectionIndicatorLocationDown;
+    _segment.selectionIndicatorBoxColor = HexColor(@"#33A2EE");
+    _segment.selectionIndicatorBoxOpacity = 1.0;
+    
+    _segment.selectionStyle = HMSegmentedControlSelectionStyleFullWidthStripe;
+    @weakify(self)
+    _segment.indexChangeBlock = ^(NSInteger index) {
+        @strongify(self)
+        
+        [self.scorlView setContentOffset:CGPointMake(index*self.width, 0) animated:YES];
+        
+    };
+    
+    [self addSubview:self.segment];
+    
+    self.scorlView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(self.segment.frame), self.width, self.height-35)];
+    
+    self.scorlView.pagingEnabled = YES;
+    
+    self.scorlView.contentSize = CGSizeMake(self.width*_gridData.count, self.height-35);
+    
+    [self addSubview:self.scorlView];
+    
+    self.scorlView.backgroundColor = BGKJ_COLOR;
+    
+    self.scorlView.showsVerticalScrollIndicator = NO;
+    
+    self.scorlView.showsHorizontalScrollIndicator = NO;
+    
+    self.scorlView.bounces = NO;
+    
+    self.scorlView.delegate = self;
+}
+
+
+-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
+    
+    if (![scrollView isKindOfClass:UITableView.class]) {
+        
+        CGFloat contentX = scrollView.contentOffset.x;
+        
+        NSInteger index = contentX/scrollView.width;
+        
+        self.segment.selectedSegmentIndex = index;
+        
+    }
+}
+
+-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
+    
+    
+}
+
+#pragma mark --- 自动获取文本高度
+- (CGSize)getSizeWithText:(NSString *)text
+{
+    /**
+     参数1:Size 文本显示的最大区域
+     参数2:options 用什么来的换行模式来计算
+     参数3:attributes 文字的大小
+     参数4:context 上下文
+     */
+    
+    return [FORMAT(@"%@",text) boundingRectWithSize:CGSizeMake(90, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : FONT_SIZE(14)} context:NULL].size;
+}
+
+@end

+ 5 - 3
shiku_im/shiku_im/文件夹3/人脸识别/NetManager/NetAccessModel.m

@@ -62,11 +62,13 @@
 
 #pragma mark --- 人脸搜索
 - (void)identifyUserLivenessWithFaceImageStr:(NSString *)imageStr  completion:(FinishBlockWithObject)completionBlock {
-    NSDictionary* parm = @{@"image_type":@"BASE64",
-                           @"image":imageStr,
+    NSDictionary* parm = @{
                            @"group_id_list":g_B2B_enuu,
-                           @"liveness_control":@"HIGH",
                            @"user_id":g_server.myself.userId,
+                           @"image_type":@"BASE64",
+                           @"image":imageStr,
+                           @"liveness_control":@"NORMAL",
+                           @"quality_control":@"NORMAL",
                            };
     [[NetManager sharedInstance] postDataWithPath:[NSString stringWithFormat:@"%@?access_token=%@",IDENTIFY_URL,self.accessToken] parameters:parm completion:^(NSError *error, id resultObject) {
         completionBlock(error,resultObject);

+ 32 - 0
shiku_im/shiku_im/文件夹3/人脸识别/View/FaceGroupVC.m

@@ -144,6 +144,7 @@ static NSString *cellID = @"cellID";
                         Fmodel.userCompanyUU = g_B2B_enuu;
                         Fmodel.userName = model.emname;
                         Fmodel.userPhone = model.emphone;
+                        Fmodel.userEmcode = model.emcode;
                         [self.detailArr addObject:Fmodel];
                     }
                     
@@ -182,6 +183,7 @@ static NSString *cellID = @"cellID";
                         Fmodel.userCompanyUU = g_B2B_enuu;
                         Fmodel.userName = model.EM_NAME;
                         Fmodel.userPhone = model.EM_MOBILE;
+                        Fmodel.userEmcode = model.EM_CODE;
                         [self.detailArr addObject:Fmodel];
                     }
                 }
@@ -317,6 +319,7 @@ static NSString *cellID = @"cellID";
                         FaceModel *model = self.detailArr[i];
                         if ([model.userID isEqualToString:btn.numId]) {
                             [self.detailArr removeObjectAtIndex:i];
+                            [self changeFaceStateToERP:model.userID and:model.userEmcode];
                             self.listData = self.detailArr;
                             [self.tableView reloadData];
                         }
@@ -325,8 +328,36 @@ static NSString *cellID = @"cellID";
             }];
         }
     }];
+}
+
+#pragma mark --- 百度人脸注册成功后,在ERP上做个标识
+-(void)changeFaceStateToERP:(NSString *)userIMID and:(NSString *)userEMCODE
+{
+    [MBProgressHUD showMessage:@"删除人脸数据" toView:self.view];
+    
+    NSString *url = [NSString stringWithFormat:@"%@/mobile/updateUploadPictureSign.action",g_id];
+    
+    NSDictionary *param = @{
+                            @"master":g_master,
+                            @"em_imid":userIMID,
+                            @"emcode":userEMCODE,
+                            @"em_uploadsign":@"0"
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     
+    UASNetworkManager *mannage = [UASNetworkManager shareManager];
     
+    mannage.responseSerializer = [AFJSONResponseSerializer serializer];
+    
+    [mannage request:url method:POST parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        
+        [MBProgressHUD hideHUDForView:self.view];
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        
+        [MBProgressHUD hideHUDForView:self.view];
+    }];
 }
 
 #pragma mark --- TableView Delegat / DataSource
@@ -347,6 +378,7 @@ static NSString *cellID = @"cellID";
     cell.nameStr.text = model.userName;
     cell.phoneStr.text = model.userPhone;
     cell.deleteBtn.numId = model.userID;
+    cell.deleteBtn.backUpString = model.userEmcode;
     
     [cell.deleteBtn addTarget:self action:@selector(deleteUserWithGroupIDAndUserIDWithButton:) forControlEvents:UIControlEventTouchUpInside];
     

+ 1 - 1
shiku_im/shiku_im/文件夹3/人脸识别/View/FaceModel.h

@@ -15,5 +15,5 @@
 @property (nonatomic,strong) NSString *userCompanyMaster;//用户公司账套
 @property (nonatomic,strong) NSString *userName;//用户名字
 @property (nonatomic,strong) NSString *userPhone;//用户电话
-
+@property (nonatomic,strong) NSString *userEmcode;//用户emcode
 @end