Browse Source

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

# Conflicts:
#	shiku_im/shiku_im/RN/Controllers/YRReactVC.m
time 6 years ago
parent
commit
7ade165390
68 changed files with 6908 additions and 2256 deletions
  1. 0 0
      shiku_im/app.json
  2. 214 201
      shiku_im/shiku_im.xcodeproj/project.pbxproj
  3. 1 0
      shiku_im/shiku_im/AppDelegate.mm
  4. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_delete.imageset/Contents.json
  5. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_delete.imageset/UU_device_delete@1x.png
  6. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_delete.imageset/UU_device_delete@2x.png
  7. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_delete.imageset/UU_device_delete@3x.png
  8. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/UU_device_icon11@1x.png
  9. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/UU_device_icon11@2x.png
  10. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_icon11.imageset/UU_device_icon11@3x.png
  11. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_list.imageset/Contents.json
  12. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_list.imageset/UU_device_list@1x.png
  13. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_list.imageset/UU_device_list@2x.png
  14. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_list.imageset/UU_device_list@3x.png
  15. 23 0
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_operate.imageset/Contents.json
  16. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_operate.imageset/UU_device_operate@1x.png
  17. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_operate.imageset/UU_device_operate@2x.png
  18. BIN
      shiku_im/shiku_im/Images.xcassets/设备图片/UU_device_operate.imageset/UU_device_operate@3x.png
  19. 9 0
      shiku_im/shiku_im/RN/Controllers/YRReactVC.m
  20. BIN
      shiku_im/shiku_im/RN/Others/bundle/assets/logo.png
  21. 21 0
      shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/native-echarts/src/components/Echarts/tpl.html
  22. BIN
      shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/react-navigation-stack/lib/module/views/assets/back-icon-mask.png
  23. BIN
      shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/react-navigation-stack/lib/module/views/assets/back-icon.png
  24. BIN
      shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/react-navigation-stack/lib/module/views/assets/back-icon@2x.png
  25. BIN
      shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/react-navigation-stack/lib/module/views/assets/back-icon@3x.png
  26. 551 148
      shiku_im/shiku_im/RN/Others/bundle/main.jsbundle
  27. 6 0
      shiku_im/shiku_im/controller/myOA/ALLURLHeader.h
  28. 2 0
      shiku_im/shiku_im/controller/myOA/LYHTTPRequest.h
  29. 4 1
      shiku_im/shiku_im/controller/myOA/LYHTTPRequest.m
  30. 7 3
      shiku_im/shiku_im/controller/实时看板/LYYSeePlanVC.m
  31. 55 14
      shiku_im/shiku_im/controller/审批流详情/LYYDBfindSelctedVC.m
  32. 1 1
      shiku_im/shiku_im/zh-Hans.lproj/InfoPlist.strings
  33. 1 1
      shiku_im/shiku_im/zh-Hant.lproj/InfoPlist.strings
  34. 1 1
      shiku_im/shiku_im/文件夹1/WorkMain(工作新页面)/Controllers/UASWorkMainVC.m
  35. 1 1
      shiku_im/shiku_im/文件夹1/多明细通用表单/Models/MoreGridModel.h
  36. 5 1
      shiku_im/shiku_im/文件夹1/多明细通用表单/Models/MoreGridModel.m
  37. 3 0
      shiku_im/shiku_im/文件夹1/多明细通用表单/Views/MoreGridFooterView.h
  38. 48 0
      shiku_im/shiku_im/文件夹1/多明细通用表单/Views/MoreGridFooterView.m
  39. 33 21
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/LYYDeviceMainVC.m
  40. 10 18
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/四大表单/LYYDocumentDetailVC.m
  41. 13 0
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/四大表单/LYYDocumentVC.h
  42. 667 661
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/四大表单/LYYDocumentVC.m
  43. 104 897
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/四大表单/LYYUpdateDocumentVC.m
  44. 106 60
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/搜索/LYYDMDataSearchVC.m
  45. 1 1
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/搜索/New Group/LYYDMDataSearchVC1.m
  46. 0 1
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/设备的盘点/LYYDMCheckDetailVC.m
  47. 2 0
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/设备的盘点/LYYDMCheckVC.h
  48. 157 96
      shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/设备的盘点/LYYDMCheckVC.m
  49. 2 2
      shiku_im/shiku_im/文件夹1/设备管理/views/LYYDMSearchDataVC.h
  50. 93 56
      shiku_im/shiku_im/文件夹1/设备管理/views/LYYDMSearchDataVC.m
  51. 1 1
      shiku_im/shiku_im/文件夹1/设备管理/views/查寻cell/LYYDMDataSearchColectCell.m
  52. 35 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/DeviceEnterFormVC.h
  53. 1177 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/DeviceEnterFormVC.m
  54. 18 1
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/DeviceFormVC.h
  55. 340 13
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/DeviceFormVC.m
  56. 16 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/StockListVC.h
  57. 160 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/StockListVC.m
  58. 13 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/StockSearchVC.h
  59. 353 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/StockSearchVC.m
  60. 28 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/TransDetailVC.h
  61. 730 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/TransDetailVC.m
  62. 18 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/TransFormVC.h
  63. 877 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Controllers/TransFormVC.m
  64. 51 56
      shiku_im/shiku_im/文件夹1/设备管理2.0/Views/DeviceFormView.m
  65. 38 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Views/DeviceSpecialView.h
  66. 786 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Views/DeviceSpecialView.m
  67. 17 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Views/TransCell.h
  68. 63 0
      shiku_im/shiku_im/文件夹1/设备管理2.0/Views/TransCell.m

+ 0 - 0
shiku_im/shiku_im/RN/Others/bundle/assets/app.json → shiku_im/app.json


+ 214 - 201
shiku_im/shiku_im.xcodeproj/project.pbxproj

@@ -287,6 +287,9 @@
 		20F10F902068D71900E0CFA6 /* UASInvDetailModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F10F8F2068D71900E0CFA6 /* UASInvDetailModel.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		20F10F932068D94A00E0CFA6 /* UASInviDetailCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F10F922068D94A00E0CFA6 /* UASInviDetailCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		20FC1D931F7916BE00CDA50A /* UASServicesDeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 20FC1D921F7916BE00CDA50A /* UASServicesDeVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+		270820D522D313270000D54C /* TransFormVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 270820D422D313270000D54C /* TransFormVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+		270820D822D319410000D54C /* TransCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 270820D722D319410000D54C /* TransCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+		270820DB22D3325C0000D54C /* TransDetailVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 270820DA22D3325C0000D54C /* TransDetailVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		270A9F291F05D6FA0034BDF6 /* HYPAddressBookManger.m in Sources */ = {isa = PBXBuildFile; fileRef = 270A9F281F05D6FA0034BDF6 /* HYPAddressBookManger.m */; };
 		270A9F2C1F05D7EA0034BDF6 /* ContactsVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 270A9F2B1F05D7EA0034BDF6 /* ContactsVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		270A9F2F1F06036D0034BDF6 /* ContactsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 270A9F2E1F06036D0034BDF6 /* ContactsModel.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
@@ -347,6 +350,8 @@
 		2722D1C01CB7AD9B0039D916 /* uu_work_wodeguanzhu.png in Resources */ = {isa = PBXBuildFile; fileRef = 2722D1BB1CB7AD9B0039D916 /* uu_work_wodeguanzhu.png */; };
 		2722D1C11CB7AD9B0039D916 /* uu_work_youruanshangwu.png in Resources */ = {isa = PBXBuildFile; fileRef = 2722D1BC1CB7AD9B0039D916 /* uu_work_youruanshangwu.png */; };
 		2722D1CB1CB7B2D70039D916 /* uu_tab_background.png in Resources */ = {isa = PBXBuildFile; fileRef = 2722D1C21CB7B2D70039D916 /* uu_tab_background.png */; };
+		2722DE9B22C1F3ED0059C3B4 /* DeviceEnterFormVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 2722DE9A22C1F3ED0059C3B4 /* DeviceEnterFormVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+		2722DE9E22C20D350059C3B4 /* DeviceSpecialView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2722DE9D22C20D350059C3B4 /* DeviceSpecialView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		272330A11CF57C9900210E1F /* uu_work_pengyouquan_fabu.png in Resources */ = {isa = PBXBuildFile; fileRef = 272330A01CF57C9900210E1F /* uu_work_pengyouquan_fabu.png */; };
 		272492BA1CBC91F2005F3435 /* uu_background_huibai.png in Resources */ = {isa = PBXBuildFile; fileRef = 272492B91CBC91F2005F3435 /* uu_background_huibai.png */; };
 		2724A0031CDC23CB00538C73 /* shiku_im-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 2724A0021CDC23CB00538C73 /* shiku_im-Info.plist */; };
@@ -747,6 +752,12 @@
 		2797D83B1D9E46E300B23E11 /* ZXsubButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2797D8341D9E46E300B23E11 /* ZXsubButton.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		2797D83E1D9E46FB00B23E11 /* JXActionSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = 2797D83D1D9E46FB00B23E11 /* JXActionSheet.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		279A97171D90E8DB00D0D6D0 /* ShareSelectVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 279A97161D90E8DB00D0D6D0 /* ShareSelectVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+		279E85C3230BDEA500A23BF1 /* main.jsbundle in Resources */ = {isa = PBXBuildFile; fileRef = 279E85B2230BDEA500A23BF1 /* main.jsbundle */; };
+		279E85C4230BDEA500A23BF1 /* back-icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 279E85BA230BDEA500A23BF1 /* back-icon@3x.png */; };
+		279E85C5230BDEA500A23BF1 /* back-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 279E85BB230BDEA500A23BF1 /* back-icon@2x.png */; };
+		279E85C6230BDEA500A23BF1 /* back-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 279E85BC230BDEA500A23BF1 /* back-icon.png */; };
+		279E85C7230BDEA500A23BF1 /* back-icon-mask.png in Resources */ = {isa = PBXBuildFile; fileRef = 279E85BD230BDEA500A23BF1 /* back-icon-mask.png */; };
+		279E85C8230BDEA500A23BF1 /* tpl.html in Resources */ = {isa = PBXBuildFile; fileRef = 279E85C2230BDEA500A23BF1 /* tpl.html */; };
 		27A2053A209955E8002EE6B5 /* NewWoVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A20539209955E8002EE6B5 /* NewWoVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		27A2053D20995609002EE6B5 /* WoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A2053C20995609002EE6B5 /* WoCell.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		27A4A1521F7DE732006B75AA /* UU_serveBook_btnyuyue.png in Resources */ = {isa = PBXBuildFile; fileRef = 27A4A1511F7DE70E006B75AA /* UU_serveBook_btnyuyue.png */; };
@@ -767,6 +778,7 @@
 		27A921CF1EF91C1500DA5E1D /* HypPaomaView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27A921CE1EF91C1500DA5E1D /* HypPaomaView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		27A921D11EF91EFC00DA5E1D /* UU_appointment_send.png in Resources */ = {isa = PBXBuildFile; fileRef = 27A921D01EF91EFB00DA5E1D /* UU_appointment_send.png */; };
 		27AEAD901E80D46000F2CE94 /* B2BReplyTaskVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 27AEAD8F1E80D46000F2CE94 /* B2BReplyTaskVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+		27B14B852303B88F00F8F6A8 /* app.json in Resources */ = {isa = PBXBuildFile; fileRef = 27B14B792303B88F00F8F6A8 /* app.json */; };
 		27B17F6121532CFB00C2345E /* NicheDetailFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27B17F6021532CFB00C2345E /* NicheDetailFooterView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		27B17F6621536C9B00C2345E /* CPAnnulusView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27B17F6421536C9A00C2345E /* CPAnnulusView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		27B17F6721536C9B00C2345E /* CPArcModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 27B17F6521536C9B00C2345E /* CPArcModel.m */; };
@@ -783,6 +795,8 @@
 		27CB42EB1D6ECD07006983B2 /* crm_main_niche.png in Resources */ = {isa = PBXBuildFile; fileRef = 27CB42E71D6ECD07006983B2 /* crm_main_niche.png */; };
 		27CE2D8A1E31AA6A001ABE53 /* crm_danju_qiehuan2.png in Resources */ = {isa = PBXBuildFile; fileRef = 27CE2D891E31AA6A001ABE53 /* crm_danju_qiehuan2.png */; };
 		27CE2D8C1E31AD5D001ABE53 /* btn_qunren_nor.png in Resources */ = {isa = PBXBuildFile; fileRef = 27CE2D8B1E31AD5D001ABE53 /* btn_qunren_nor.png */; };
+		27D3D8F922CC8E4B00796460 /* StockSearchVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 27D3D8F822CC8E4B00796460 /* StockSearchVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
+		27D3D8FC22CD86E500796460 /* StockListVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 27D3D8FB22CD86E500796460 /* StockListVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		27D51BAA2214FCD000590027 /* libSocialQQ.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D51BA92214FCD000590027 /* libSocialQQ.a */; };
 		27D51BAC2214FCE300590027 /* libSocialSina.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D51BAB2214FCE300590027 /* libSocialSina.a */; };
 		27D51BAE2214FCED00590027 /* libWeiboSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D51BAD2214FCEC00590027 /* libWeiboSDK.a */; };
@@ -1482,12 +1496,6 @@
 		99E43E212152294100779FA5 /* UASClientForgetVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 99E43E202152294100779FA5 /* UASClientForgetVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		99E43E242152295A00779FA5 /* UASClientCarefulVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 99E43E232152295A00779FA5 /* UASClientCarefulVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		99E43E272152443200779FA5 /* UASClientTotalVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 99E43E262152443200779FA5 /* UASClientTotalVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
-		99E5957C2307E1130026D51A /* main.jsbundle in Resources */ = {isa = PBXBuildFile; fileRef = 99E5956B2307E1120026D51A /* main.jsbundle */; };
-		99E5957D2307E1130026D51A /* back-icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 99E595732307E1120026D51A /* back-icon@3x.png */; };
-		99E5957E2307E1130026D51A /* back-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 99E595742307E1120026D51A /* back-icon@2x.png */; };
-		99E5957F2307E1130026D51A /* back-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 99E595752307E1120026D51A /* back-icon.png */; };
-		99E595802307E1130026D51A /* back-icon-mask.png in Resources */ = {isa = PBXBuildFile; fileRef = 99E595762307E1120026D51A /* back-icon-mask.png */; };
-		99E595812307E1130026D51A /* tpl.html in Resources */ = {isa = PBXBuildFile; fileRef = 99E5957B2307E1120026D51A /* tpl.html */; };
 		99E760F2212E8C3200A7A271 /* UASAddToScheVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 99E760F1212E8C3200A7A271 /* UASAddToScheVC.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		99E760F8212E9E7800A7A271 /* FBShimmeringLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 99E760F3212E9E7600A7A271 /* FBShimmeringLayer.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
 		99E760F9212E9E7800A7A271 /* FBShimmeringView.m in Sources */ = {isa = PBXBuildFile; fileRef = 99E760F7212E9E7800A7A271 /* FBShimmeringView.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
@@ -3316,6 +3324,12 @@
 		20F10F922068D94A00E0CFA6 /* UASInviDetailCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UASInviDetailCell.m; sourceTree = "<group>"; };
 		20FC1D911F7916BE00CDA50A /* UASServicesDeVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UASServicesDeVC.h; sourceTree = "<group>"; };
 		20FC1D921F7916BE00CDA50A /* UASServicesDeVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UASServicesDeVC.m; sourceTree = "<group>"; };
+		270820D322D313270000D54C /* TransFormVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TransFormVC.h; sourceTree = "<group>"; };
+		270820D422D313270000D54C /* TransFormVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TransFormVC.m; sourceTree = "<group>"; };
+		270820D622D319410000D54C /* TransCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TransCell.h; sourceTree = "<group>"; };
+		270820D722D319410000D54C /* TransCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TransCell.m; sourceTree = "<group>"; };
+		270820D922D3325C0000D54C /* TransDetailVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TransDetailVC.h; sourceTree = "<group>"; };
+		270820DA22D3325C0000D54C /* TransDetailVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TransDetailVC.m; sourceTree = "<group>"; };
 		270A9F271F05D6FA0034BDF6 /* HYPAddressBookManger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HYPAddressBookManger.h; sourceTree = "<group>"; };
 		270A9F281F05D6FA0034BDF6 /* HYPAddressBookManger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HYPAddressBookManger.m; sourceTree = "<group>"; };
 		270A9F2A1F05D7EA0034BDF6 /* ContactsVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsVC.h; sourceTree = "<group>"; };
@@ -3404,6 +3418,10 @@
 		2722D1BB1CB7AD9B0039D916 /* uu_work_wodeguanzhu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uu_work_wodeguanzhu.png; sourceTree = "<group>"; };
 		2722D1BC1CB7AD9B0039D916 /* uu_work_youruanshangwu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uu_work_youruanshangwu.png; sourceTree = "<group>"; };
 		2722D1C21CB7B2D70039D916 /* uu_tab_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uu_tab_background.png; sourceTree = "<group>"; };
+		2722DE9922C1F3ED0059C3B4 /* DeviceEnterFormVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeviceEnterFormVC.h; sourceTree = "<group>"; };
+		2722DE9A22C1F3ED0059C3B4 /* DeviceEnterFormVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DeviceEnterFormVC.m; sourceTree = "<group>"; };
+		2722DE9C22C20D350059C3B4 /* DeviceSpecialView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeviceSpecialView.h; sourceTree = "<group>"; };
+		2722DE9D22C20D350059C3B4 /* DeviceSpecialView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DeviceSpecialView.m; sourceTree = "<group>"; };
 		272330A01CF57C9900210E1F /* uu_work_pengyouquan_fabu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uu_work_pengyouquan_fabu.png; sourceTree = "<group>"; };
 		272492B91CBC91F2005F3435 /* uu_background_huibai.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uu_background_huibai.png; sourceTree = "<group>"; };
 		2724A0021CDC23CB00538C73 /* shiku_im-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "shiku_im-Info.plist"; path = "../shiku_im-Info.plist"; sourceTree = "<group>"; };
@@ -4062,6 +4080,12 @@
 		2797D83D1D9E46FB00B23E11 /* JXActionSheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JXActionSheet.m; sourceTree = "<group>"; };
 		279A97151D90E8DB00D0D6D0 /* ShareSelectVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShareSelectVC.h; sourceTree = "<group>"; };
 		279A97161D90E8DB00D0D6D0 /* ShareSelectVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShareSelectVC.m; sourceTree = "<group>"; };
+		279E85B2230BDEA500A23BF1 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
+		279E85BA230BDEA500A23BF1 /* back-icon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon@3x.png"; sourceTree = "<group>"; };
+		279E85BB230BDEA500A23BF1 /* back-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon@2x.png"; sourceTree = "<group>"; };
+		279E85BC230BDEA500A23BF1 /* back-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon.png"; sourceTree = "<group>"; };
+		279E85BD230BDEA500A23BF1 /* back-icon-mask.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon-mask.png"; sourceTree = "<group>"; };
+		279E85C2230BDEA500A23BF1 /* tpl.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = tpl.html; sourceTree = "<group>"; };
 		27A20538209955E8002EE6B5 /* NewWoVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewWoVC.h; sourceTree = "<group>"; };
 		27A20539209955E8002EE6B5 /* NewWoVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewWoVC.m; sourceTree = "<group>"; };
 		27A2053B20995609002EE6B5 /* WoCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WoCell.h; sourceTree = "<group>"; };
@@ -4094,6 +4118,11 @@
 		27A921D01EF91EFB00DA5E1D /* UU_appointment_send.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = UU_appointment_send.png; sourceTree = "<group>"; };
 		27AEAD8E1E80D46000F2CE94 /* B2BReplyTaskVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = B2BReplyTaskVC.h; sourceTree = "<group>"; };
 		27AEAD8F1E80D46000F2CE94 /* B2BReplyTaskVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = B2BReplyTaskVC.m; sourceTree = "<group>"; };
+		27B14B792303B88F00F8F6A8 /* app.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = app.json; sourceTree = "<group>"; };
+		27B14B802303B88F00F8F6A8 /* back-icon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon@3x.png"; sourceTree = "<group>"; };
+		27B14B812303B88F00F8F6A8 /* back-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon@2x.png"; sourceTree = "<group>"; };
+		27B14B822303B88F00F8F6A8 /* back-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon.png"; sourceTree = "<group>"; };
+		27B14B832303B88F00F8F6A8 /* back-icon-mask.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon-mask.png"; sourceTree = "<group>"; };
 		27B17F5F21532CFB00C2345E /* NicheDetailFooterView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NicheDetailFooterView.h; sourceTree = "<group>"; };
 		27B17F6021532CFB00C2345E /* NicheDetailFooterView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NicheDetailFooterView.m; sourceTree = "<group>"; };
 		27B17F6221536C9900C2345E /* CPArcModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPArcModel.h; sourceTree = "<group>"; };
@@ -4116,6 +4145,10 @@
 		27CB42E71D6ECD07006983B2 /* crm_main_niche.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = crm_main_niche.png; sourceTree = "<group>"; };
 		27CE2D891E31AA6A001ABE53 /* crm_danju_qiehuan2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = crm_danju_qiehuan2.png; sourceTree = "<group>"; };
 		27CE2D8B1E31AD5D001ABE53 /* btn_qunren_nor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = btn_qunren_nor.png; sourceTree = "<group>"; };
+		27D3D8F722CC8E4B00796460 /* StockSearchVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StockSearchVC.h; sourceTree = "<group>"; };
+		27D3D8F822CC8E4B00796460 /* StockSearchVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StockSearchVC.m; sourceTree = "<group>"; };
+		27D3D8FA22CD86E500796460 /* StockListVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StockListVC.h; sourceTree = "<group>"; };
+		27D3D8FB22CD86E500796460 /* StockListVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StockListVC.m; sourceTree = "<group>"; };
 		27D51BA92214FCD000590027 /* libSocialQQ.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libSocialQQ.a; sourceTree = "<group>"; };
 		27D51BAB2214FCE300590027 /* libSocialSina.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libSocialSina.a; sourceTree = "<group>"; };
 		27D51BAD2214FCEC00590027 /* libWeiboSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libWeiboSDK.a; sourceTree = "<group>"; };
@@ -4728,7 +4761,7 @@
 		7D2DA53E1DF55FAF00C2C4A8 /* icon_zan_nor222.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon_zan_nor222.png; sourceTree = "<group>"; };
 		7D2DA53F1DF55FAF00C2C4A8 /* icon_zan_nor333.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon_zan_nor333.png; sourceTree = "<group>"; };
 		7D2EFB871E4C43A400962098 /* icon_dakalandian_nor3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon_dakalandian_nor3.png; sourceTree = "<group>"; };
-		7D2F45471DE8570300462CBD /* $RL2N4PN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = $RL2N4PN.png; sourceTree = "<group>"; };
+		7D2F45471DE8570300462CBD /* $RL2N4PN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "$RL2N4PN.png"; sourceTree = "<group>"; };
 		7D2FBD6A1E683D5500A08F1F /* JLHONGDIANDetailVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JLHONGDIANDetailVC.h; path = myOA/JLHONGDIANDetailVC.h; sourceTree = "<group>"; };
 		7D2FBD6B1E683D5500A08F1F /* JLHONGDIANDetailVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = JLHONGDIANDetailVC.m; path = myOA/JLHONGDIANDetailVC.m; sourceTree = "<group>"; };
 		7D2FBD6E1E6841A000A08F1F /* NumButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NumButton.h; path = myOA/NumButton.h; sourceTree = "<group>"; };
@@ -5180,12 +5213,6 @@
 		99E43E232152295A00779FA5 /* UASClientCarefulVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UASClientCarefulVC.m; sourceTree = "<group>"; };
 		99E43E252152443200779FA5 /* UASClientTotalVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UASClientTotalVC.h; sourceTree = "<group>"; };
 		99E43E262152443200779FA5 /* UASClientTotalVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UASClientTotalVC.m; sourceTree = "<group>"; };
-		99E5956B2307E1120026D51A /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
-		99E595732307E1120026D51A /* back-icon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon@3x.png"; sourceTree = "<group>"; };
-		99E595742307E1120026D51A /* back-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon@2x.png"; sourceTree = "<group>"; };
-		99E595752307E1120026D51A /* back-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon.png"; sourceTree = "<group>"; };
-		99E595762307E1120026D51A /* back-icon-mask.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "back-icon-mask.png"; sourceTree = "<group>"; };
-		99E5957B2307E1120026D51A /* tpl.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = tpl.html; sourceTree = "<group>"; };
 		99E760F0212E8C3200A7A271 /* UASAddToScheVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UASAddToScheVC.h; sourceTree = "<group>"; };
 		99E760F1212E8C3200A7A271 /* UASAddToScheVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UASAddToScheVC.m; sourceTree = "<group>"; };
 		99E760F3212E9E7600A7A271 /* FBShimmeringLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBShimmeringLayer.m; sourceTree = "<group>"; };
@@ -9805,6 +9832,107 @@
 			path = Utils;
 			sourceTree = "<group>";
 		};
+		279E85B1230BDEA500A23BF1 /* bundle */ = {
+			isa = PBXGroup;
+			children = (
+				279E85B2230BDEA500A23BF1 /* main.jsbundle */,
+				279E85B3230BDEA500A23BF1 /* assets */,
+			);
+			path = bundle;
+			sourceTree = "<group>";
+		};
+		279E85B3230BDEA500A23BF1 /* assets */ = {
+			isa = PBXGroup;
+			children = (
+				279E85B4230BDEA500A23BF1 /* node_modules */,
+			);
+			path = assets;
+			sourceTree = "<group>";
+		};
+		279E85B4230BDEA500A23BF1 /* node_modules */ = {
+			isa = PBXGroup;
+			children = (
+				279E85B5230BDEA500A23BF1 /* react-navigation-stack */,
+				279E85BE230BDEA500A23BF1 /* native-echarts */,
+			);
+			path = node_modules;
+			sourceTree = "<group>";
+		};
+		279E85B5230BDEA500A23BF1 /* react-navigation-stack */ = {
+			isa = PBXGroup;
+			children = (
+				279E85B6230BDEA500A23BF1 /* lib */,
+			);
+			path = "react-navigation-stack";
+			sourceTree = "<group>";
+		};
+		279E85B6230BDEA500A23BF1 /* lib */ = {
+			isa = PBXGroup;
+			children = (
+				279E85B7230BDEA500A23BF1 /* module */,
+			);
+			path = lib;
+			sourceTree = "<group>";
+		};
+		279E85B7230BDEA500A23BF1 /* module */ = {
+			isa = PBXGroup;
+			children = (
+				279E85B8230BDEA500A23BF1 /* views */,
+			);
+			path = module;
+			sourceTree = "<group>";
+		};
+		279E85B8230BDEA500A23BF1 /* views */ = {
+			isa = PBXGroup;
+			children = (
+				279E85B9230BDEA500A23BF1 /* assets */,
+			);
+			path = views;
+			sourceTree = "<group>";
+		};
+		279E85B9230BDEA500A23BF1 /* assets */ = {
+			isa = PBXGroup;
+			children = (
+				279E85BA230BDEA500A23BF1 /* back-icon@3x.png */,
+				279E85BB230BDEA500A23BF1 /* back-icon@2x.png */,
+				279E85BC230BDEA500A23BF1 /* back-icon.png */,
+				279E85BD230BDEA500A23BF1 /* back-icon-mask.png */,
+			);
+			path = assets;
+			sourceTree = "<group>";
+		};
+		279E85BE230BDEA500A23BF1 /* native-echarts */ = {
+			isa = PBXGroup;
+			children = (
+				279E85BF230BDEA500A23BF1 /* src */,
+			);
+			path = "native-echarts";
+			sourceTree = "<group>";
+		};
+		279E85BF230BDEA500A23BF1 /* src */ = {
+			isa = PBXGroup;
+			children = (
+				279E85C0230BDEA500A23BF1 /* components */,
+			);
+			path = src;
+			sourceTree = "<group>";
+		};
+		279E85C0230BDEA500A23BF1 /* components */ = {
+			isa = PBXGroup;
+			children = (
+				279E85C1230BDEA500A23BF1 /* Echarts */,
+			);
+			path = components;
+			sourceTree = "<group>";
+		};
+		279E85C1230BDEA500A23BF1 /* Echarts */ = {
+			isa = PBXGroup;
+			children = (
+				279E85C2230BDEA500A23BF1 /* tpl.html */,
+			);
+			path = Echarts;
+			sourceTree = "<group>";
+		};
 		27A921BD1EF8B83800DA5E1D /* 预约小秘书 */ = {
 			isa = PBXGroup;
 			children = (
@@ -9993,6 +10121,16 @@
 			children = (
 				27EBFBC722BA25BE0004CFEF /* DeviceFormVC.h */,
 				27EBFBC822BA25BE0004CFEF /* DeviceFormVC.m */,
+				2722DE9922C1F3ED0059C3B4 /* DeviceEnterFormVC.h */,
+				2722DE9A22C1F3ED0059C3B4 /* DeviceEnterFormVC.m */,
+				27D3D8F722CC8E4B00796460 /* StockSearchVC.h */,
+				27D3D8F822CC8E4B00796460 /* StockSearchVC.m */,
+				27D3D8FA22CD86E500796460 /* StockListVC.h */,
+				27D3D8FB22CD86E500796460 /* StockListVC.m */,
+				270820D322D313270000D54C /* TransFormVC.h */,
+				270820D422D313270000D54C /* TransFormVC.m */,
+				270820D922D3325C0000D54C /* TransDetailVC.h */,
+				270820DA22D3325C0000D54C /* TransDetailVC.m */,
 			);
 			path = Controllers;
 			sourceTree = "<group>";
@@ -10002,6 +10140,10 @@
 			children = (
 				27EBFBCA22BB5D0E0004CFEF /* DeviceFormView.h */,
 				27EBFBCB22BB5D0E0004CFEF /* DeviceFormView.m */,
+				2722DE9C22C20D350059C3B4 /* DeviceSpecialView.h */,
+				2722DE9D22C20D350059C3B4 /* DeviceSpecialView.m */,
+				270820D622D319410000D54C /* TransCell.h */,
+				270820D722D319410000D54C /* TransCell.m */,
 			);
 			path = Views;
 			sourceTree = "<group>";
@@ -12140,7 +12282,7 @@
 		99B02ADD22EED6650014A144 /* Others */ = {
 			isa = PBXGroup;
 			children = (
-				99E5956A2307E1120026D51A /* bundle */,
+				279E85B1230BDEA500A23BF1 /* bundle */,
 			);
 			path = Others;
 			sourceTree = "<group>";
@@ -12330,108 +12472,6 @@
 			path = TIPopGesture;
 			sourceTree = "<group>";
 		};
-		99E5956A2307E1120026D51A /* bundle */ = {
-			isa = PBXGroup;
-			children = (
-				99E5956B2307E1120026D51A /* main.jsbundle */,
-				99E5956C2307E1120026D51A /* assets */,
-			);
-			name = bundle;
-			path = UU_RN/bundle;
-			sourceTree = SOURCE_ROOT;
-		};
-		99E5956C2307E1120026D51A /* assets */ = {
-			isa = PBXGroup;
-			children = (
-				99E5956D2307E1120026D51A /* node_modules */,
-			);
-			path = assets;
-			sourceTree = "<group>";
-		};
-		99E5956D2307E1120026D51A /* node_modules */ = {
-			isa = PBXGroup;
-			children = (
-				99E5956E2307E1120026D51A /* react-navigation-stack */,
-				99E595772307E1120026D51A /* native-echarts */,
-			);
-			path = node_modules;
-			sourceTree = "<group>";
-		};
-		99E5956E2307E1120026D51A /* react-navigation-stack */ = {
-			isa = PBXGroup;
-			children = (
-				99E5956F2307E1120026D51A /* lib */,
-			);
-			path = "react-navigation-stack";
-			sourceTree = "<group>";
-		};
-		99E5956F2307E1120026D51A /* lib */ = {
-			isa = PBXGroup;
-			children = (
-				99E595702307E1120026D51A /* module */,
-			);
-			path = lib;
-			sourceTree = "<group>";
-		};
-		99E595702307E1120026D51A /* module */ = {
-			isa = PBXGroup;
-			children = (
-				99E595712307E1120026D51A /* views */,
-			);
-			path = module;
-			sourceTree = "<group>";
-		};
-		99E595712307E1120026D51A /* views */ = {
-			isa = PBXGroup;
-			children = (
-				99E595722307E1120026D51A /* assets */,
-			);
-			path = views;
-			sourceTree = "<group>";
-		};
-		99E595722307E1120026D51A /* assets */ = {
-			isa = PBXGroup;
-			children = (
-				99E595732307E1120026D51A /* back-icon@3x.png */,
-				99E595742307E1120026D51A /* back-icon@2x.png */,
-				99E595752307E1120026D51A /* back-icon.png */,
-				99E595762307E1120026D51A /* back-icon-mask.png */,
-			);
-			path = assets;
-			sourceTree = "<group>";
-		};
-		99E595772307E1120026D51A /* native-echarts */ = {
-			isa = PBXGroup;
-			children = (
-				99E595782307E1120026D51A /* src */,
-			);
-			path = "native-echarts";
-			sourceTree = "<group>";
-		};
-		99E595782307E1120026D51A /* src */ = {
-			isa = PBXGroup;
-			children = (
-				99E595792307E1120026D51A /* components */,
-			);
-			path = src;
-			sourceTree = "<group>";
-		};
-		99E595792307E1120026D51A /* components */ = {
-			isa = PBXGroup;
-			children = (
-				99E5957A2307E1120026D51A /* Echarts */,
-			);
-			path = components;
-			sourceTree = "<group>";
-		};
-		99E5957A2307E1120026D51A /* Echarts */ = {
-			isa = PBXGroup;
-			children = (
-				99E5957B2307E1120026D51A /* tpl.html */,
-			);
-			path = Echarts;
-			sourceTree = "<group>";
-		};
 		99F0A0F921266BC000B38B47 /* 日程管理 */ = {
 			isa = PBXGroup;
 			children = (
@@ -12963,6 +13003,11 @@
 				A7D56AF81C7BE72800DAACEE /* libz.1.2.5.tbd */,
 				AA5BD5731FB1598500037B78 /* libcrypto.a */,
 				AA5BD5721FB1598400037B78 /* libssl.a */,
+				27B14B802303B88F00F8F6A8 /* back-icon@3x.png */,
+				27B14B832303B88F00F8F6A8 /* back-icon-mask.png */,
+				27B14B812303B88F00F8F6A8 /* back-icon@2x.png */,
+				27B14B792303B88F00F8F6A8 /* app.json */,
+				27B14B822303B88F00F8F6A8 /* back-icon.png */,
 			);
 			name = "Recovered References";
 			sourceTree = "<group>";
@@ -17391,6 +17436,7 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				27B14B852303B88F00F8F6A8 /* app.json in Resources */,
 				7D185DFC1FAAEE1C007F38BB /* icon_Merchant_tatistics_nor1.png in Resources */,
 				7D185DFD1FAAEE1C007F38BB /* icon_Merchant_tatistics_nor2.png in Resources */,
 				7D185DFE1FAAEE1C007F38BB /* icon_Merchant_tatistics_nor3.png in Resources */,
@@ -17744,6 +17790,7 @@
 				27D760B61C5CBEEF00FAD457 /* im_amr1.png in Resources */,
 				CC3016DA1951BABF0059BADA /* f030.png in Resources */,
 				AA3A91181DFC01D70055DBE2 /* oa_waiqing_update.png in Resources */,
+				279E85C3230BDEA500A23BF1 /* main.jsbundle in Resources */,
 				CC3A142C195851280054127B /* v_record1@2x.png in Resources */,
 				27259FB01D2A3F0F00E30D1F /* uu_crm_state_left.png in Resources */,
 				CC6E183319794BC7006ADA8A /* tab_interview_default.png in Resources */,
@@ -17762,7 +17809,6 @@
 				CC30175C1951BABF0059BADA /* f095.png in Resources */,
 				2732E7EC1D1A248900B2789F /* uu_crm_round.png in Resources */,
 				CC6E182319794BC7006ADA8A /* RegistrationHighlight@2x.png in Resources */,
-				99E5957C2307E1130026D51A /* main.jsbundle in Resources */,
 				CC6E186F19794BC7006ADA8A /* pub_record_button@2x.png in Resources */,
 				CCE2415018FFB8EB00A3CB5A /* recorder_trash_can2.png in Resources */,
 				20EA4C4220AD34960055577D /* loadingAd46.png in Resources */,
@@ -18148,6 +18194,7 @@
 				2731896C1CB348A4003A06B7 /* uu_background.png in Resources */,
 				CC3016C21951BABF0059BADA /* f018.png in Resources */,
 				B80A7E4D1D3C7172002B4534 /* list_8.png in Resources */,
+				279E85C6230BDEA500A23BF1 /* back-icon.png in Resources */,
 				27D63BCF1C5A20C10034EDDC /* im_jpeg.png in Resources */,
 				CC6E182C19794BC7006ADA8A /* sharemore_voiceinput@2x.png in Resources */,
 				CC6E17CC19794BC7006ADA8A /* menu_list_bg@2x.png in Resources */,
@@ -18174,10 +18221,10 @@
 				20AF4B9220ABBA2700C341CB /* loading29.png in Resources */,
 				B85677AF1CD8AFBD0082F244 /* f_static_038.png in Resources */,
 				B8ED16F11CDAEE8900BD9371 /* Newguanzhu.png in Resources */,
+				279E85C5230BDEA500A23BF1 /* back-icon@2x.png in Resources */,
 				4DEA59381D800AF70059C355 /* oa_huiyi_huntiao.png in Resources */,
 				7D2ADFAF1DFEA6400025BC16 /* icon_disagree_nor3.png in Resources */,
 				A75FA3611C72ABC5004B2D32 /* quest.png in Resources */,
-				99E5957E2307E1130026D51A /* back-icon@2x.png in Resources */,
 				CCC7B03B197FA18900A828A8 /* new_tips.png in Resources */,
 				CCE242ED18FFB8EB00A3CB5A /* README.txt in Resources */,
 				CC6E17A019794BC7006ADA8A /* title_set@2x.png in Resources */,
@@ -18255,7 +18302,6 @@
 				CC6E17C119794BC7006ADA8A /* avatar_icon_boy@2x.png in Resources */,
 				7D2DA5431DF55FAF00C2C4A8 /* icon_comment_nor111.png in Resources */,
 				20A828AC1F5D50CE0081F3D0 /* ic_menu_retract(1).png in Resources */,
-				99E5957D2307E1130026D51A /* back-icon@3x.png in Resources */,
 				CC6E17B019794BC7006ADA8A /* im_input_expression_press@2x.png in Resources */,
 				20AF4BA320ABBA2700C341CB /* loading8.png in Resources */,
 				20AF4B9A20ABBA2700C341CB /* loading60.png in Resources */,
@@ -18332,6 +18378,7 @@
 				7D2ADFAD1DFE8B660025BC16 /* icon_zan_nor3332.png in Resources */,
 				B8C27BBE1CBB52C1000C69BE /* uu_txl_myf.png in Resources */,
 				AA4BF8531DBDFCD5000872DD /* grayRet.png in Resources */,
+				279E85C4230BDEA500A23BF1 /* back-icon@3x.png in Resources */,
 				CC3016FE1951BABF0059BADA /* f048.png in Resources */,
 				CC6E17A319794BC7006ADA8A /* button_green_press.png in Resources */,
 				7D3294B51DE5ABC300586869 /* icon_share_nor13.png in Resources */,
@@ -18470,7 +18517,6 @@
 				27D63BD31C5A2D8E0034EDDC /* im_gif.png in Resources */,
 				20AF4BA120ABBA2700C341CB /* loading59.png in Resources */,
 				B8DB0BD11CBF367700A19BAC /* uu_note_gonggao.png in Resources */,
-				99E5957F2307E1130026D51A /* back-icon.png in Resources */,
 				273316A41D2C9CEF00BD978C /* down_dark1.png in Resources */,
 				7D5DE9832148E5F5005822C8 /* photograph@3x.png in Resources */,
 				CC6E184419794BC7006ADA8A /* tabbar_mainframeHL@2x.png in Resources */,
@@ -18510,7 +18556,6 @@
 				27CB42E81D6ECD07006983B2 /* crm_main_client.png in Resources */,
 				7D26699A1E5FC5DD00F16C15 /* btn_shensu_nor1.png in Resources */,
 				CC8A0ADB1A0E0D870051396C /* more_flag@2x.png in Resources */,
-				99E595812307E1130026D51A /* tpl.html in Resources */,
 				CC3016991951BABF0059BADA /* AlbumTriangleB@2x.png in Resources */,
 				CC3016D31951BABF0059BADA /* f026@2x.png in Resources */,
 				27DB549D20DB827F00BAB4C7 /* com.baidu.idl.face.model.bundle in Resources */,
@@ -18641,6 +18686,7 @@
 				B87A43221D685A7C0025EF5D /* oa_waiqing_shijian.png in Resources */,
 				CC3A1423195851280054127B /* 7_pause@2x.png in Resources */,
 				B860BDA61D3DC5C40006B82B /* wq_wo.png in Resources */,
+				279E85C7230BDEA500A23BF1 /* back-icon-mask.png in Resources */,
 				CC22EB041A6E6F8800FAB7AF /* 微笑.png in Resources */,
 				27F6084C1C7ED99200948A9D /* icon_deperment_name.png in Resources */,
 				7D0B61CB1F6FA73E00F35B53 /* icon_uuhelper_nor3.png in Resources */,
@@ -18672,6 +18718,7 @@
 				272492BA1CBC91F2005F3435 /* uu_background_huibai.png in Resources */,
 				CC30175F1951BABF0059BADA /* f096@2x.png in Resources */,
 				CC3AC3D819834415000BB7E8 /* im_photo_button_press.png in Resources */,
+				279E85C8230BDEA500A23BF1 /* tpl.html in Resources */,
 				20EA4C2220AD34960055577D /* loadingAd12.png in Resources */,
 				CC3017401951BABF0059BADA /* f081.png in Resources */,
 				CC6E17DF19794BC7006ADA8A /* 0_left_n@2x.png in Resources */,
@@ -18869,7 +18916,6 @@
 				B856779B1CD8AFBD0082F244 /* f_static_018.png in Resources */,
 				2744A4B41F5FC965004704A9 /* UU_book_sharebookList.png in Resources */,
 				27DB549B20DB827F00BAB4C7 /* com.baidu.idl.face.faceSDK.bundle in Resources */,
-				99E595802307E1130026D51A /* back-icon-mask.png in Resources */,
 				27701F921CC4F6C2007AFDD7 /* uu_work_kucunchaxun.png in Resources */,
 				20AF4B9120ABBA2700C341CB /* loading28.png in Resources */,
 				20AF4B7420ABBA2700C341CB /* loading52.png in Resources */,
@@ -19076,6 +19122,7 @@
 				7DF4447920107203009600A2 /* LYYOrderItemsModel.m in Sources */,
 				AA17630E1F8CCE180051D6AF /* EmployeeDayOffVC.m in Sources */,
 				AA5FA66A1FBEB153001B1849 /* WLDecimalKeyboard.m in Sources */,
+				270820D522D313270000D54C /* TransFormVC.m in Sources */,
 				20DEC6E91F500702002AB966 /* UIImageView+userId.m in Sources */,
 				4D40C4DB1DB609C700565C17 /* STSearchBar.m in Sources */,
 				99BECF7D2153B67E00BA85CF /* UASClientAddCell.m in Sources */,
@@ -19144,8 +19191,10 @@
 				2748164A1D3CB7EC00F0186F /* SearchResultTableVC.m in Sources */,
 				204B21C920634B5D00FDBFD5 /* UASInviteRegModel.m in Sources */,
 				20D2E7CB1F4BD45F00DE0314 /* UASListModel.m in Sources */,
+				27D3D8F922CC8E4B00796460 /* StockSearchVC.m in Sources */,
 				AA5411D01F481C600060C013 /* MYPresentedController.m in Sources */,
 				CC3016901951BABF0059BADA /* JastorRuntimeHelper.m in Sources */,
+				2722DE9E22C20D350059C3B4 /* DeviceSpecialView.m in Sources */,
 				4D2EAB511E091D5F00B7D80E /* WYWebController.m in Sources */,
 				CCE241EB18FFB8EB00A3CB5A /* XMPPProcessOne.m in Sources */,
 				2010A95020D26DF1000DB402 /* NSString+secri.m in Sources */,
@@ -19310,6 +19359,7 @@
 				AA7007321FDE5814006CD7A6 /* InputMobileNumberVC.m in Sources */,
 				7D3067291E2F183D005F8596 /* JLTimeAttendanceSettingVC.m in Sources */,
 				2771C81C20B538880066984D /* DFPlayerFileManager.m in Sources */,
+				27D3D8FC22CD86E500796460 /* StockListVC.m in Sources */,
 				CCE2417218FFB8EB00A3CB5A /* NSNumber+XMPP.m in Sources */,
 				2734A1221D3F691700304D9D /* ShangjiModel.m in Sources */,
 				276A07FE212A917B00481FAE /* ScheduleManageVC.m in Sources */,
@@ -19570,6 +19620,7 @@
 				A75FA36E1C72ADCB004B2D32 /* EmployeeModel.m in Sources */,
 				CCE242F518FFB8EB00A3CB5A /* GCDMulticastDelegate.m in Sources */,
 				99BECF7A2153931400BA85CF /* UASClientUpVC.m in Sources */,
+				270820D822D319410000D54C /* TransCell.m in Sources */,
 				CCE2415618FFB8EB00A3CB5A /* UIView+Animation.m in Sources */,
 				2729283E1DB4AA5700103B28 /* DocumentVC.m in Sources */,
 				27DB548320DB7EEC00BAB4C7 /* DetectionViewController.m in Sources */,
@@ -20143,6 +20194,7 @@
 				272BFE341D1BD38900189BC7 /* WorkmatesVC.m in Sources */,
 				27297E9B2019D6780096E078 /* DishModel.m in Sources */,
 				AA1E049E1F96D8860041A45C /* ServiceSiteListVC.m in Sources */,
+				2722DE9B22C1F3ED0059C3B4 /* DeviceEnterFormVC.m in Sources */,
 				A75FA3361C72AB5E004B2D32 /* PersonCell.m in Sources */,
 				7D42F242202413EA006966D8 /* LYYSelectBtnView.m in Sources */,
 				27DB548520DB7EEC00BAB4C7 /* FaceBaseViewController.m in Sources */,
@@ -20186,6 +20238,7 @@
 				B84C48421D38DB5B0044BFFE /* LBCalendarAppearance.m in Sources */,
 				99EFABF22148E15500729D9A /* UASClientListVC.m in Sources */,
 				CC18E8031A53AE040046FAC0 /* Reachability.m in Sources */,
+				270820DB22D3325C0000D54C /* TransDetailVC.m in Sources */,
 				20BEEDD61FC681FD006384DA /* UASTitleLoopCell.m in Sources */,
 				CCE242DA18FFB8EB00A3CB5A /* SBJsonStreamParser.m in Sources */,
 				AA598D291FCFC69200E9EAB6 /* NSJSONSerialization+ZXJSON.m in Sources */,
@@ -20331,10 +20384,10 @@
 				CODE_SIGN_STYLE = Automatic;
 				COPY_PHASE_STRIP = NO;
 				DOUBANGO_HOME = "$(SRCROOT)/shiku_im/meeting/ios-ngn-stack/stacks";
-				DOUBANGO_LIBS = $DOUBANGO_HOME/thirdparties/iphone/lib/i386;
-				"DOUBANGO_LIBS[arch=armv6]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv6;
-				"DOUBANGO_LIBS[arch=armv7]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv7;
-				"DOUBANGO_LIBS[sdk=iphonesimulator*][arch=*]" = $DOUBANGO_HOME/thirdparties/iphone/lib/i386;
+				DOUBANGO_LIBS = "$DOUBANGO_HOME/thirdparties/iphone/lib/i386";
+				"DOUBANGO_LIBS[arch=armv6]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv6";
+				"DOUBANGO_LIBS[arch=armv7]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv7";
+				"DOUBANGO_LIBS[sdk=iphonesimulator*][arch=*]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/i386";
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_OPTIMIZATION_LEVEL = 0;
@@ -20377,10 +20430,10 @@
 				CODE_SIGN_STYLE = Automatic;
 				COPY_PHASE_STRIP = YES;
 				DOUBANGO_HOME = "$(SRCROOT)/shiku_im/meeting/ios-ngn-stack/stacks";
-				DOUBANGO_LIBS = $DOUBANGO_HOME/thirdparties/iphone/lib/i386;
-				"DOUBANGO_LIBS[arch=armv6]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv6;
-				"DOUBANGO_LIBS[arch=armv7]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv7;
-				"DOUBANGO_LIBS[sdk=iphonesimulator*][arch=*]" = $DOUBANGO_HOME/thirdparties/iphone/lib/i386;
+				DOUBANGO_LIBS = "$DOUBANGO_HOME/thirdparties/iphone/lib/i386";
+				"DOUBANGO_LIBS[arch=armv6]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv6";
+				"DOUBANGO_LIBS[arch=armv7]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv7";
+				"DOUBANGO_LIBS[sdk=iphonesimulator*][arch=*]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/i386";
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNINITIALIZED_AUTOS = YES;
@@ -20417,10 +20470,10 @@
 				CODE_SIGN_STYLE = Manual;
 				DEVELOPMENT_TEAM = D49MF83EK7;
 				DOUBANGO_LIBS = "";
-				"DOUBANGO_LIBS[arch=arm64]" = $DOUBANGO_HOME/thirdparties/iphone/lib/arm64;
-				"DOUBANGO_LIBS[arch=armv6]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv6;
-				"DOUBANGO_LIBS[arch=armv7]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv7;
-				"DOUBANGO_LIBS[arch=armv7s]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv7s;
+				"DOUBANGO_LIBS[arch=arm64]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/arm64";
+				"DOUBANGO_LIBS[arch=armv6]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv6";
+				"DOUBANGO_LIBS[arch=armv7]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv7";
+				"DOUBANGO_LIBS[arch=armv7s]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv7s";
 				"DOUBANGO_LIBS[sdk=iphonesimulator*][arch=*]" = "";
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -20444,18 +20497,18 @@
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = "shiku_im/shiku_im-Prefix.pch";
 				HEADER_SEARCH_PATHS = (
-					$DOUBANGO_HOME/bindings/_common,
-					$DOUBANGO_HOME/tinySDP/include,
-					$DOUBANGO_HOME/tinyHTTP/include,
-					$DOUBANGO_HOME/tinySMS/include,
-					$DOUBANGO/HOME/tinyMSRP/include,
+					"$DOUBANGO_HOME/bindings/_common",
+					"$DOUBANGO_HOME/tinySDP/include",
+					"$DOUBANGO_HOME/tinyHTTP/include",
+					"$DOUBANGO_HOME/tinySMS/include",
+					"$DOUBANGO/HOME/tinyMSRP/include",
 					"$(PROJECT_DIR)/shiku_im/RSA/include",
 					/usr/include/libxml2,
-					$DOUBANGO_HOME/tinyDAV/include,
-					$DOUBANGO_HOME/tinySAK/src,
-					$DOUBANGO_HOME/tinyNET/src,
-					$DOUBANGO_HOME/tinyMEDIA/include,
-					$DOUBANGO_HOME/tinySIP/include,
+					"$DOUBANGO_HOME/tinyDAV/include",
+					"$DOUBANGO_HOME/tinySAK/src",
+					"$DOUBANGO_HOME/tinyNET/src",
+					"$DOUBANGO_HOME/tinyMEDIA/include",
+					"$DOUBANGO_HOME/tinySIP/include",
 					"\"${PODS_ROOT}/Headers/Public/AFNetworking\"",
 					"$(inherited)",
 				);
@@ -20486,48 +20539,8 @@
 					"$(PROJECT_DIR)/shiku_im/文件夹1/pay",
 					"$(PROJECT_DIR)/shiku_im/文件夹1/pay(支付宝)",
 				);
-				"LIBRARY_SEARCH_PATHS[arch=*]" = (
-					"$(PROJECT_DIR)/shiku_im/LibBPush",
-					"$(PROJECT_DIR)/shiku_im/amr_wav/VoiceConvert/lib",
-					"$(PROJECT_DIR)/shiku_im/audioRecorder",
-					"$(PROJECT_DIR)/shiku_im/RSA/include",
-					"$(PROJECT_DIR)/shiku_im/Vendor/libidn",
-					"$(PROJECT_DIR)/shiku_im/RSA",
-					"$(PROJECT_DIR)/shiku_im/admob5.05",
-					"$(PROJECT_DIR)/shiku_im",
-					"$(PROJECT_DIR)",
-					"$(PROJECT_DIR)/shiku_im/controller/MapChoseLocation",
-					"$(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/QQ",
-					"$(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/Sina",
-					"$(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/Wechat",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/MJRefresh\"",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/AFNetworking\"",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD\"",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/ReactiveObjC\"",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/Masonry\"",
-					"$(inherited)",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/IQKeyboardManager\"",
-				);
-				"LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*]" = (
-					"$(inherited)",
-					$DOUBANGO_LIBS,
-					"$(SRCROOT)/shiku_im/Vendor/libidn",
-					"$(PROJECT_DIR)/shiku_im/RSA",
-					"$(PROJECT_DIR)/shiku_im/youMeng",
-					"$(PROJECT_DIR)/shiku_im/audioRecorder",
-					"$(SRCROOT)/shiku_im/amr_wav/VoiceConvert/lib",
-					"$(PROJECT_DIR)/shiku_im/admob5.05",
-					"$(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/QQ",
-					"$(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/Sina",
-					"$(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/Wechat",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/MJRefresh\"",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/AFNetworking\"",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD\"",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/ReactiveObjC\"",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/Masonry\"",
-					"$(inherited)",
-					"\"$PODS_CONFIGURATION_BUILD_DIR/IQKeyboardManager\"",
-				);
+				"LIBRARY_SEARCH_PATHS[arch=*]" = "$(PROJECT_DIR)/shiku_im/LibBPush $(PROJECT_DIR)/shiku_im/amr_wav/VoiceConvert/lib $(PROJECT_DIR)/shiku_im/audioRecorder $(PROJECT_DIR)/shiku_im/RSA/include $(PROJECT_DIR)/shiku_im/Vendor/libidn $(PROJECT_DIR)/shiku_im/RSA $(PROJECT_DIR)/shiku_im/admob5.05 $(PROJECT_DIR)/shiku_im $(PROJECT_DIR) $(PROJECT_DIR)/shiku_im/controller/MapChoseLocation $(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/QQ $(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/Sina $(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/Wechat \"$PODS_CONFIGURATION_BUILD_DIR/MJRefresh\" \"$PODS_CONFIGURATION_BUILD_DIR/AFNetworking\" \"$PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD\" \"$PODS_CONFIGURATION_BUILD_DIR/ReactiveObjC\" \"$PODS_CONFIGURATION_BUILD_DIR/Masonry\" $(inherited) \"$PODS_CONFIGURATION_BUILD_DIR/IQKeyboardManager\"";
+				"LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*]" = "$(inherited) $DOUBANGO_LIBS $(SRCROOT)/shiku_im/Vendor/libidn $(PROJECT_DIR)/shiku_im/RSA $(PROJECT_DIR)/shiku_im/youMeng $(PROJECT_DIR)/shiku_im/audioRecorder $(SRCROOT)/shiku_im/amr_wav/VoiceConvert/lib $(PROJECT_DIR)/shiku_im/admob5.05 $(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/QQ $(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/Sina $(PROJECT_DIR)/shiku_im/person/UMSocial/SocialLibraries/Wechat \"$PODS_CONFIGURATION_BUILD_DIR/MJRefresh\" \"$PODS_CONFIGURATION_BUILD_DIR/AFNetworking\" \"$PODS_CONFIGURATION_BUILD_DIR/SVProgressHUD\" \"$PODS_CONFIGURATION_BUILD_DIR/ReactiveObjC\" \"$PODS_CONFIGURATION_BUILD_DIR/Masonry\" $(inherited) \"$PODS_CONFIGURATION_BUILD_DIR/IQKeyboardManager\"";
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_LDFLAGS = (
 					"-framework",
@@ -20576,10 +20589,10 @@
 				CODE_SIGN_STYLE = Manual;
 				DEVELOPMENT_TEAM = D49MF83EK7;
 				DOUBANGO_LIBS = "";
-				"DOUBANGO_LIBS[arch=arm64]" = $DOUBANGO_HOME/thirdparties/iphone/lib/arm64;
-				"DOUBANGO_LIBS[arch=armv6]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv6;
-				"DOUBANGO_LIBS[arch=armv7]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv7;
-				"DOUBANGO_LIBS[arch=armv7s]" = $DOUBANGO_HOME/thirdparties/iphone/lib/armv7s;
+				"DOUBANGO_LIBS[arch=arm64]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/arm64";
+				"DOUBANGO_LIBS[arch=armv6]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv6";
+				"DOUBANGO_LIBS[arch=armv7]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv7";
+				"DOUBANGO_LIBS[arch=armv7s]" = "$DOUBANGO_HOME/thirdparties/iphone/lib/armv7s";
 				"DOUBANGO_LIBS[sdk=iphonesimulator*][arch=*]" = "";
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
@@ -20605,16 +20618,16 @@
 				HEADER_SEARCH_PATHS = (
 					"$(PROJECT_DIR)/shiku_im/RSA/include",
 					/usr/include/libxml2,
-					$DOUBANGO_HOME/tinyDAV/include,
-					$DOUBANGO_HOME/tinySAK/src,
-					$DOUBANGO_HOME/tinyNET/src,
-					$DOUBANGO_HOME/tinyMEDIA/include,
-					$DOUBANGO/HOME/tinyMSRP/include,
-					$DOUBANGO_HOME/tinySIP/include,
-					$DOUBANGO_HOME/tinyHTTP/include,
-					$DOUBANGO_HOME/tinySMS/include,
-					$DOUBANGO_HOME/tinySDP/include,
-					$DOUBANGO_HOME/bindings/_common,
+					"$DOUBANGO_HOME/tinyDAV/include",
+					"$DOUBANGO_HOME/tinySAK/src",
+					"$DOUBANGO_HOME/tinyNET/src",
+					"$DOUBANGO_HOME/tinyMEDIA/include",
+					"$DOUBANGO/HOME/tinyMSRP/include",
+					"$DOUBANGO_HOME/tinySIP/include",
+					"$DOUBANGO_HOME/tinyHTTP/include",
+					"$DOUBANGO_HOME/tinySMS/include",
+					"$DOUBANGO_HOME/tinySDP/include",
+					"$DOUBANGO_HOME/bindings/_common",
 					"\"${PODS_ROOT}/Headers/Public/AFNetworking\"",
 					"$(inherited)",
 				);
@@ -20622,7 +20635,7 @@
 				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
 				LIBRARY_SEARCH_PATHS = (
 					"$(inherited)",
-					$DOUBANGO_LIBS,
+					"$DOUBANGO_LIBS",
 					"$(SRCROOT)/shiku_im/Vendor/libidn",
 					"$(PROJECT_DIR)/shiku_im/RSA",
 					"$(PROJECT_DIR)/shiku_im/youMeng",

+ 1 - 0
shiku_im/shiku_im/AppDelegate.mm

@@ -370,6 +370,7 @@
     self.adView = [[UASAdView startLoad] autorelease];
     @weakify(self)
     self.adView.loadCompleted = ^{
+
         @strongify(self)
         
         NSString *lastVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"theLastVersion"];

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

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

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


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


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


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_list.imageset/Contents.json

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

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


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


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


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

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

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


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


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


+ 9 - 0
shiku_im/shiku_im/RN/Controllers/YRReactVC.m

@@ -49,8 +49,15 @@ static NSMutableDictionary * rootDic = nil;
     //
     self.moduleName = self.moduleName?:@"RNApp";
     
+<<<<<<< HEAD
      NSString * strUrl = @"http://10.1.80.96:8081/index.bundle?platform=ios";
      jsCodeLocation = [NSURL URLWithString:strUrl] ;
+=======
+
+    NSString * strUrl = @"http://10.1.80.97:8081/index.bundle?platform=ios";
+
+    jsCodeLocation = [NSURL URLWithString:strUrl] ;
+>>>>>>> 71a175f9b6556c785f5f13cfb9d4f3accf33b716
     
     if (!rootDic) {
         
@@ -100,9 +107,11 @@ static NSMutableDictionary * rootDic = nil;
     //返回跳入界面
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(bridgeHasBeenCreated:) name:@"YRReactNativeBridgeInited" object:nil];
     
+
 }
 
 -(void)bridgeHasBeenCreated:(NSNotification *)notifacation{
+
     
     YRRnBridge *bridge = (YRRnBridge *)notifacation.object;
     

BIN
shiku_im/shiku_im/RN/Others/bundle/assets/logo.png


File diff suppressed because it is too large
+ 21 - 0
shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/native-echarts/src/components/Echarts/tpl.html


BIN
shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/react-navigation-stack/lib/module/views/assets/back-icon-mask.png


BIN
shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/react-navigation-stack/lib/module/views/assets/back-icon.png


BIN
shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/react-navigation-stack/lib/module/views/assets/back-icon@2x.png


BIN
shiku_im/shiku_im/RN/Others/bundle/assets/node_modules/react-navigation-stack/lib/module/views/assets/back-icon@3x.png


File diff suppressed because it is too large
+ 551 - 148
shiku_im/shiku_im/RN/Others/bundle/main.jsbundle


+ 6 - 0
shiku_im/shiku_im/controller/myOA/ALLURLHeader.h

@@ -11,8 +11,14 @@
 
 
 /*ip地址*/
+<<<<<<< HEAD
+#define g_id  [[NSUserDefaults standardUserDefaults] objectForKey:@"ipAndPort"]
+//#define g_id @"http://117.25.180.218:8090/zz_test/"
+//#define g_id @"http://10.1.80.180:8080/uas/"
+=======
 #define g_id  [UASUserInfo shareManager].urlIp
 
+>>>>>>> 7b36e507e52248c27163decd95f59cd59cf25cea
 /*新账户中心token*/
 #define g_accountToken [[NSUserDefaults standardUserDefaults] objectForKey:@"accountToken"]
 /*sessionId*/

+ 2 - 0
shiku_im/shiku_im/controller/myOA/LYHTTPRequest.h

@@ -122,6 +122,8 @@ typedef NS_ENUM(NSInteger,RequestType)
     UU_Sports_getPeoplePrice,//获取点赞人数
     /*实时看板 获取实时看板数据*/
     UU_SeePlan_GetDatail,
+    /*设备管理 - 统计分析*/
+    UU_Device_TongjiFenxi,
     /*********************商家统计********/
     UU_Bussnessall_GetDetail,
     

+ 4 - 1
shiku_im/shiku_im/controller/myOA/LYHTTPRequest.m

@@ -222,6 +222,9 @@
         case  UU_SeePlan_GetDatail:
             url =FORMAT(@"%@%@?%@",g_id,URL_GETSEEPLAN_DETAIL,mustString1);
             break;
+        case  UU_Device_TongjiFenxi:
+            url =FORMAT(@"%@%@?%@",g_id,@"mobile/device/getDeviceSubs.action",mustString1);
+            break;
         case UU_Bussnessall_GetDetail:
             url = FORMAT(@"%@%@?companyid=%@&userid=%@&pageIndex=0&startdate=&enddate=&typelist=%@&token=%@",g_config.apiUrl,URL_BUSSNESSALL_GETDETAIL,g_B2B_enuu,g_server.myself.userId,string,g_token);
             break;
@@ -244,7 +247,7 @@
             url = FORMAT(@"%@/mobile/common/list.action?page=%d&pageSize=25&%@",g_id,page,string);
             break;
         case UU_DM_GET_CheckDetail:
-            url = FORMAT(@"%@/mobile/common/list.action?%@&caller=DeviceBatch!Stock&page=%d&pageSize=25&condition= db_class ='周期盘点' and db_statuscode='COMMITED'%@",g_id,mustString,page,string);
+            url = FORMAT(@"%@/mobile/common/list.action?%@&page=%d&pageSize=25&%@",g_id,mustString,page,string);
             break;
         case UU_DM_GET_Check_many_detail:
             url = FORMAT(@"%@/mobile/device/getCheckQty.action?id=%@&caller=DeviceBatch!Stock",g_id,string);

+ 7 - 3
shiku_im/shiku_im/controller/实时看板/LYYSeePlanVC.m

@@ -27,7 +27,7 @@ static NSString * nilcellID11 = @"nilcellID11";
     [self loadData];
     _DataArr = [NSMutableArray array];
     self.view.backgroundColor = BGKJ_COLOR;
-    self.title = @"实时看板";
+    
 }
 - (void)backAction
 {
@@ -35,10 +35,14 @@ static NSString * nilcellID11 = @"nilcellID11";
     
 }
 - (void)loadData{
-    
+    NSInteger abc;
+    if ([self.title isEqualToString:@"实时看板"]) {
+        abc = UU_SeePlan_GetDatail;
+    }else
+        abc = UU_Device_TongjiFenxi;
     
     [MBProgressHUD showMessage:@"加载数据中..."];
-    [LYHTTPRequest Get:UU_SeePlan_GetDatail page:0 condition:@"" Completion:^(id ObjectData, NSError *error) {
+    [LYHTTPRequest Get:abc page:0 condition:@"" Completion:^(id ObjectData, NSError *error) {
         [MBProgressHUD hideHUD];
         if (error == nil) {
             NSArray *subsArr = ObjectData[@"subs"];

+ 55 - 14
shiku_im/shiku_im/controller/审批流详情/LYYDBfindSelctedVC.m

@@ -169,8 +169,7 @@
     if ([_type isEqualToString:@"grid"]) {
         
         NSArray *arr = [_caller componentsSeparatedByString:@"|"];
-        
-//        urlStr =FORMAT(@"mobile/common/dbfind.action?which=%@&ob=&pageSize=2000&condition=upper(%@)like'%%%@%%'&field=%@&caller=%@&page=%ld&_config=&gridCaller=%@&gridField=%@"                                                                                                                                                                                                                                                                                                                                                                         ,_type,arr[1],str,_filed,arr[0],(long)_numSize,_mainCaller,_filed);
+
         NSString *str1 = @"";
         NSString *str2 = @"";
         if (arr.count > 1) {
@@ -223,9 +222,7 @@
                 condition = [NSString stringWithFormat:@"upper(%@) like upper('%%%@%%')",str2,str];
             }
         }
-            
         
-
         param = @{
                   @"master": _specialMaster != nil ? _specialMaster:g_master,
                   @"sessionUser": g_sessionUser!=nil ? g_sessionUser:@"",
@@ -244,12 +241,49 @@
                   };
         
         urlStr = [NSString stringWithFormat:@"%@/mobile/common/dbfind.action",g_id];
-        
-
 
-    }else{
+    }
+    else if ([_type isEqualToString:@"SpecialGrid"]) {
+        NSString *condition;
+        if (self.DbFindArr.count > 0) {
+            NSMutableArray *dataArr = [NSMutableArray array];
+            for (NSUInteger i = 0; i <self.DbFindArr.count; i ++) {
+                NSDictionary *dic = self.DbFindArr[i];
+                
+                NSString *fiSTR = FORMAT(@"%@",dic[@"ds_dbfindfield"]);
+                
+                [dataArr addObject:[NSString stringWithFormat:@"upper(%@) like upper('%%%@%%')",fiSTR,str]];
+                
+            }
+            condition = [dataArr componentsJoinedByString:@" or "];
+            
+        }else{
+            
+            condition = @"1=1";
+            
+        }
         
-//        urlStr =FORMAT(@"common/dbfind.action?which=%@&ob=&pageSize=20&condition=upper(%@)like'%%%@%%'&field=%@&caller=%@&page=%ld&_config=",_type,_filed,str,_filed,_caller,(long)_numSize);
+        param = @{
+                  @"master": _specialMaster != nil ? _specialMaster:g_master,
+                  @"sessionUser": g_sessionUser!=nil ? g_sessionUser:@"",
+                  @"emcode": g_emcode != nil?g_emcode:@"",
+                  @"sessionId":g_sessionId!=nil?g_sessionId:@"",
+                  @"which":@"grid",
+                  @"ob":@"",
+                  @"pageSize":@"2000",
+                  @"condition":condition,
+                  @"field":_filed!=nil?_filed:@"",
+                  @"caller":_caller,
+                  @"page":@(_numSize) != nil ? @(_numSize):@(1),
+                  @"_config":@"",
+                  @"gridCaller":_mainCaller != nil ? _mainCaller : @"",
+                  @"gridField":_filed != nil ? _filed:@"",
+                  };
+        
+        urlStr = [NSString stringWithFormat:@"%@/mobile/common/dbfind.action",g_id];
+        
+    }
+    else{
         urlStr = [NSString stringWithFormat:@"%@/common/dbfind.action",g_id];
         NSString *seachstr;
          NSString * condition;
@@ -275,7 +309,12 @@
         if ([_caller isEqualToString:@"Contact"]) {
             
             condition = [NSString stringWithFormat:@"(%@) and cu_sellercode='%@'",seachstr,g_emcode];
-        }else{
+        }
+        else if (([_caller isEqualToString:@"DeviceChange!Inspect"] || [_caller isEqualToString:@"DeviceChange!Scrap"] || [_caller isEqualToString:@"DeviceChange!Maintain"] || [_caller isEqualToString:@"DeviceChange!Use"]) && [_filed isEqualToString:@"dc_devcode"]) {
+            
+            condition = [NSString stringWithFormat:@"(%@) and de_cop ='%@'",seachstr,FORMAT(@"%@",[self.specialConditon objectForKey:@"dc_cop"])];
+        }
+        else{
             
             if ([g_master isEqualToString:@"N_AJC"] || [g_master isEqualToString:@"N_SHYZ"]) {
                 if ([_filed isEqualToString:@"mp_bccode"]) {
@@ -306,7 +345,11 @@
                     condition = @"1=1";
                 }
             }else{
-                condition = @"1=1";
+                if (([_caller isEqualToString:@"DeviceChange!Inspect"] || [_caller isEqualToString:@"DeviceChange!Scrap"] || [_caller isEqualToString:@"DeviceChange!Maintain"] || [_caller isEqualToString:@"DeviceChange!Use"]) && [_filed isEqualToString:@"dc_devcode"]) {
+                    
+                    condition = [NSString stringWithFormat:@"de_cop ='%@'",FORMAT(@"%@",[self.specialConditon objectForKey:@"dc_cop"])];
+                }else
+                    condition = @"1=1";
             }
         }
         
@@ -324,8 +367,6 @@
                   @"page":@(_numSize) != nil ? @(_numSize):@(1),
                   @"_config":@"",
                   };
-        
-        
     }
     
     
@@ -356,7 +397,7 @@
             [self.detailArr removeAllObjects];
             [self.DbFindArr removeAllObjects];
             
-            if ([_type  isEqualToString:@"grid"]) {
+            if ([_type isEqualToString:@"grid"] || [_type isEqualToString:@"SpecialGrid"]) {
                 NSArray  * DbFindArr = ObjectData[@"gridDbfinds"];
                 for (NSUInteger i = 0; i <DbFindArr.count; i ++) {
                     NSDictionary *dic = DbFindArr[i];
@@ -385,7 +426,7 @@
         for (NSInteger i = 0; i <arr.count; i ++) {
             NSDictionary *dic =arr[i];
             NSMutableArray *detArr = [NSMutableArray array];
-            if ([_type isEqualToString:@"grid"]) {
+            if ([_type isEqualToString:@"grid"] || [_type isEqualToString:@"SpecialGrid"]) {
                 
                 for (NSInteger j = 0; j <  self.DbFindArr.count; j ++) {
                     NSDictionary *dic11 = self.DbFindArr[j];

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

@@ -1062,7 +1062,7 @@
 "UU_Repair" = "设备维修";
 "UU_CycleInventory" = "周期盘点";
 "UU_Requirement" = "需求匹配";
-"UU_Stock" = "库存查询";
+"UU_Stock" = "设备状态查询";
 "UU_Batchtransfer" = "批量转移";
 "UU_Statistics" = "统计分析";
 

+ 1 - 1
shiku_im/shiku_im/zh-Hant.lproj/InfoPlist.strings

@@ -1021,7 +1021,7 @@
 "UU_Repair" = "設備維修";
 "UU_CycleInventory" = "週期盤點";
 "UU_Requirement" = "需求匹配";
-"UU_Stock" = "庫存查詢";
+"UU_Stock" = "設備狀態查詢";
 "UU_Batchtransfer" = "批量轉移";
 "UU_Statistics" = "統計分析";
 

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

@@ -826,7 +826,7 @@
     }else if([Localized(model.title) isEqualToString:Localized(@"UU_Realtime_Board")] || [model.modelId isEqual:@100020]){//实时看板
         
         LYYSeePlanVC *seePlan = [LYYSeePlanVC new];
-        
+        seePlan.title = @"实时看板";
         [self.navigationController pushViewController:seePlan animated:YES];
         
     }else if([Localized(model.title) isEqualToString:Localized(@"UU_Subscription_management")] || [model.modelId isEqual:@10021]){//订阅号管理

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

@@ -9,7 +9,7 @@
 
 @interface DetailFormModel : NSObject
 @property (nonatomic,strong) NSArray *COMBOSTORE;
-@property (nonatomic,strong) NSString *fd_allowblank;
+@property (nonatomic,strong) NSString *fd_allowblank;//是否必填
 @property (nonatomic,strong) NSString *fd_appwidth;
 @property (nonatomic,strong) NSString *fd_caption;
 @property (nonatomic,strong) NSString *fd_dbfind;

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

@@ -63,7 +63,11 @@
     NSMutableArray *copyHideItems = [NSMutableArray new];
     for (DetailgridModel *obj in model.hideItems) {
         DetailgridModel *dModel = [DetailgridModel mj_objectWithKeyValues:obj.mj_keyValues];
-        dModel.dg_value = @"";
+        if ([dModel.dg_renderer containsString:@"defaultValue"]) {
+            dModel.dg_value = dModel.dg_value;
+        }else{
+            dModel.dg_value = @"";
+        }
         dModel.cellHeight = @"40";
         [copyHideItems addObject:dModel];
     }

+ 3 - 0
shiku_im/shiku_im/文件夹1/多明细通用表单/Views/MoreGridFooterView.h

@@ -32,4 +32,7 @@ typedef NS_ENUM(NSInteger,StatuType) {
 @property (nonatomic,copy)void(^msgBlock)(NSString *msgStr);//回调消息
 
 @property (nonatomic,assign) StatuType statuType;
+
+@property (nonatomic,copy)void(^conditionBlock)(NSDictionary *dic);//批量领用特殊回调字段
+
 @end

+ 48 - 0
shiku_im/shiku_im/文件夹1/多明细通用表单/Views/MoreGridFooterView.m

@@ -175,6 +175,13 @@
     if (_statuType == Editing) {
         cell.MyTextView.userInteractionEnabled = NO;
         cell.MyTextView.placeholder = @"";
+        
+        //特殊处理:设备批量转移 待扫描和已扫描能够点击
+        if ([field isEqualToString:@"num"] || [field isEqualToString:@"remain"]) {
+            cell.MyTextView.userInteractionEnabled = YES;
+            cell.MyTextView.textColor = [UIColor blueColor];
+            cell.MyTextView.backgroundColor = HexColor(@"#E4F0F9");
+        }
     }
 
     SLog(@"多明细的类型:%@ -- 名字:%@ -- 第几个:%ld -- key:%@ -- 是否只读:%@ -- 长度:%@ -- 是否必填:%@",str,titleName,(long)cell.MyTextView.tag,field,readonly,length,allowblank);
@@ -305,6 +312,47 @@
             self.block(textView.tag, tableView);
         }
         return NO;
+    }else if ([typeStr isEqualToString:@"N"]) {
+        if ([detailModel.dg_field isEqualToString:@"num"] || [detailModel.dg_field isEqualToString:@"remain"]) {
+            NSString *drid = @"",*drname = @"",*drspec = @"";;
+            for (int i = 0; i < model.showItems.count; i++) {
+                DetailgridModel *amodel = model.showItems[i];
+                if ([amodel.dg_field isEqualToString:@"dr_id"]) {
+                    drid = amodel.dg_value ? amodel.dg_value:@"";
+                }
+                if ([amodel.dg_field isEqualToString:@"dr_dename"]) {
+                    drname = amodel.dg_value ? amodel.dg_value:@"";
+                }
+                if ([amodel.dg_field isEqualToString:@"dr_despec"]) {
+                    drspec = amodel.dg_value ? amodel.dg_value:@"";
+                }
+            }
+            for (int i = 0; i < model.hideItems.count; i++) {
+                DetailgridModel *amodel = model.hideItems[i];
+                if ([amodel.dg_field isEqualToString:@"dr_id"]) {
+                    drid = amodel.dg_value ? amodel.dg_value:@"";
+                }
+                if ([amodel.dg_field isEqualToString:@"dr_dename"]) {
+                    drname = amodel.dg_value ? amodel.dg_value:@"";
+                }
+                if ([amodel.dg_field isEqualToString:@"dr_despec"]) {
+                    drspec = amodel.dg_value ? amodel.dg_value:@"";
+                }
+            }
+            NSDictionary *dic = @{@"dg_field":detailModel.dg_field,
+                                  @"dr_id":drid,
+                                  @"dr_dename":drname,
+                                  @"dr_despec":drspec,
+                                  @"caller":FORMAT(@"%@",detailModel.dg_renderer),
+                                  @"dg_title":FORMAT(@"%@",detailModel.dg_caption),
+                                  };
+            if (self.conditionBlock) {
+                self.conditionBlock(dic);
+            }
+            
+            return NO;
+        }else
+            return YES;
     }
     else
         return YES;

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

@@ -18,6 +18,9 @@
 #import <AVFoundation/AVFoundation.h>
 #import "LYYRMatchingVC.h"//需求匹配
 #import "DeviceFormVC.h"
+#import "DeviceEnterFormVC.h"
+#import "StockSearchVC.h"
+#import "LYYSeePlanVC.h"
 
 static NSString *cellID = @"stutus";
 @interface LYYDeviceMainVC ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
@@ -49,13 +52,13 @@ static NSString *cellID = @"stutus";
 }
 
 - (void)getData{
-//    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")];
-    self.nameArr = @[Localized(@"UU_Scan"),Localized(@"UU_DeviceInquiry"),Localized(@"UU_UsingApplication"),Localized(@"UU_ScrapApplication"),Localized(@"UU_Maintenance"),Localized(@"UU_FaultSubmission"),Localized(@"UU_CycleInventory"),Localized(@"UU_Requirement")];
+    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")];
+//    self.nameArr = @[Localized(@"UU_Scan"),Localized(@"UU_DeviceInquiry"),Localized(@"UU_UsingApplication"),Localized(@"UU_ScrapApplication"),Localized(@"UU_Maintenance"),Localized(@"UU_FaultSubmission"),Localized(@"UU_CycleInventory"),Localized(@"UU_Requirement")];
     
     for (NSInteger i = 0; i < self.nameArr.count; i ++) {
         LYYDevieceMainModel *model = [LYYDevieceMainModel new];
         model.nameSting = self.nameArr[i];
-        model.imageString = FORMAT(@"icon_devicemanagement_nor%ld",i+1);
+        model.imageString = FORMAT(@"UU_device_icon%ld",i);
         [self.dataArr addObject:model];
     }
 
@@ -118,10 +121,10 @@ static NSString *cellID = @"stutus";
             break;
         case 4://养护管理
         {
-            LYYDocumentVC *a = [[LYYDocumentVC alloc]init];
-            a.nameStr = model.nameSting;
-            a.caller = self.callerArr[2];
-            [self.navigationController pushViewController:a animated:YES];
+            DeviceEnterFormVC *vc = [DeviceEnterFormVC new];
+            vc.caller = @"DeviceChange!Maintain";
+            vc.title = model.nameSting;
+            [self.navigationController pushViewController:vc animated:YES];
         }
             break;
         case 5://故障送检
@@ -135,38 +138,46 @@ static NSString *cellID = @"stutus";
           
         case 6://设备维修
         {
-            LYYDMCheckVC *vc = [LYYDMCheckVC new];
-            
-            [self.navigationController pushViewController:vc animated:YES];
+            LYYDMDataSearchVC *dListVC = [[LYYDMDataSearchVC alloc]init];
+            dListVC.title = @"设备维修";
+            dListVC.caller = @"DeviceChange!Repair";
+            dListVC.mustStr = @"";
+            [self.navigationController pushViewController:dListVC animated:YES];
+
         }
             break;
         case 7://周期盘点
         {
-            LYYRMatchingVC *vc = [LYYRMatchingVC new];
-            self.title = @"需求匹配";
+            LYYDMCheckVC *vc = [LYYDMCheckVC new];
+            vc.caller = @"DeviceBatch!Stock";
             [self.navigationController pushViewController:vc animated:YES];
         }
             break;
         case 8://需求匹配
         {
-            
+            LYYRMatchingVC *vc = [LYYRMatchingVC new];
+            self.title = @"需求匹配";
+            [self.navigationController pushViewController:vc animated:YES];
         }
             break;
         case 9://库存查询
         {
-            
+            StockSearchVC *vc = [StockSearchVC new];
+            [self.navigationController pushViewController:vc animated:YES];
         }
             break;
         case 10://批量转移
         {
-            
+            LYYDMCheckVC *vc = [LYYDMCheckVC new];
+            vc.caller = @"DeviceBatch!Use";
+            [self.navigationController pushViewController:vc animated:YES];
         }
             break;
         case 11://统计分析
         {
-            DeviceFormVC *vc = [DeviceFormVC new];
-            
-            [self.navigationController pushViewController:vc animated:YES];
+            LYYSeePlanVC *seePlan = [LYYSeePlanVC new];
+            seePlan.title = @"统计分析";
+            [self.navigationController pushViewController:seePlan animated:YES];
         }
             break;
 
@@ -192,9 +203,10 @@ static NSString *cellID = @"stutus";
        @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];
+            DeviceFormVC *vc = [DeviceFormVC new];
+            vc.deviceCode = FORMAT(@"%@",QRCodeInfo);
+            vc.title = @"设备信息";
+            [self.navigationController pushViewController:vc animated:YES];
         });
         
     }];

+ 10 - 18
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/四大表单/LYYDocumentDetailVC.m

@@ -410,23 +410,18 @@
 {
     [_formdata removeAllObjects];
     [_formconfigs removeAllObjects];
-    
-    NSString *ip = [UASUserInfo shareManager].urlIp;
-//    NSString *ip = @"http://192.168.253.203:8090/ERP/";
-    NSString *sessionId = [[NSUserDefaults standardUserDefaults] stringForKey:@"sessionId"];
-    
-    NSString *url = [NSString stringWithFormat:@"%@mobile/common/getformandgriddata.action?caller=%@&id=%@&sessionId=%@",ip,_caller,_dan_id,sessionId];
+
+
+    NSString *url = [NSString stringWithFormat:@"%@mobile/common/getformandgriddata.action?caller=%@&id=%@&sessionId=%@",g_id,_caller,_dan_id,g_sessionId];
+
     //21655,Ask4Leave
     UASNetworkManager *manager = [UASNetworkManager shareManager];
     manager.requestSerializer = [AFHTTPRequestSerializer serializer];
     manager.responseSerializer = [AFJSONResponseSerializer serializer];
-    NSString *paramSessionId=[@"" stringByAppendingFormat:@"JSESSIONID=%@",sessionId];
-    //设置cookie
-    [manager.requestSerializer setValue:paramSessionId forHTTPHeaderField:@"Cookie"];
-    [manager.requestSerializer setValue:[NSString stringWithFormat:@"%@",g_sessionUser] forHTTPHeaderField:@"sessionUser"];
+
     if (self.serverId.length > 0 && self.serverId != nil) {
         
-        url = [NSString stringWithFormat:@"%@api/serve/config.action?serve_id=%@&id=%@&sessionId=%@",ccIp,self.serverId,_dan_id,sessionId];
+        url = [NSString stringWithFormat:@"%@api/serve/config.action?serve_id=%@&id=%@&sessionId=%@",ccIp,self.serverId,_dan_id,g_sessionId];
         NSString *session = [[NSUserDefaults standardUserDefaults] stringForKey:b2bSession];
         NSString *sessionId=[@"" stringByAppendingFormat:@"%@",session];
         //设置cookie
@@ -436,11 +431,8 @@
     }
     
     url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-    
-    
-    
+
     //拼接sessionID
-    
     [manager request:url method:POST parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
         NSString *fb_attachName;
         SLog(@"adfssadvfad:%@",responseObject);
@@ -1411,7 +1403,7 @@
                               _height += size1.height+5;
                           }else
                           {
-                             _height += size.height+5;
+                              _height += size.height+5;
                           }
                           
                           }
@@ -1449,7 +1441,7 @@
                           [self getShenPiLiuDataFromServer];
                           }
                           
-                         
-
+                          
+                          
                           @end
                           

+ 13 - 0
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/四大表单/LYYDocumentVC.h

@@ -18,4 +18,17 @@
 @property (nonatomic,strong) NSString *listid;
 @property (nonatomic,strong) LYYDMScanMModel *DMScaMModel;
 
+/**
+ 特殊赋值:设备信息带过来的值
+ 设备编号:dc_devcode
+ 设备名称:dc_devname
+ 当前部门编号:dc_oldcentercode
+ 当前部门名称:dc_oldcentername
+ 当前车间:dc_workshop
+ 当前线别:dc_oldlinecode
+ 人员编号:dc_emcode
+ 姓名:dc_emname
+ */
+@property (nonatomic,strong) NSArray *specialArr;
+
 @end

File diff suppressed because it is too large
+ 667 - 661
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/四大表单/LYYDocumentVC.m


File diff suppressed because it is too large
+ 104 - 897
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/四大表单/LYYUpdateDocumentVC.m


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

@@ -23,6 +23,7 @@
 #import <AssetsLibrary/AssetsLibrary.h>
 #import "HCScanQRViewController.h"
 #import "DeviceFormVC.h"
+#import "DeviceEnterFormVC.h"
 
 static NSString * cellID = @"cellID";
 @interface LYYDMDataSearchVC ()<UISearchBarDelegate,IFlySpeechRecognizerDelegate,UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
@@ -37,7 +38,7 @@ static NSString * cellID = @"cellID";
 @property (strong , nonatomic) NSMutableArray *dataArr;
 @property (strong , nonatomic) NSMutableArray *columns;
 
-
+@property (nonatomic, strong) NSDictionary *searchDic;
 @property (copy , nonatomic) NSString *idStro;
 @property (copy , nonatomic) NSString *status;
 
@@ -57,8 +58,9 @@ static NSString * cellID = @"cellID";
 }
 -(void)createUI
 {
-    if (_mustStr.length != 0) {
-        _searchString =@"upper(dc_code) like upper('%%') or upper(dc_devcode) like upper('%%')";
+
+    if ([self.caller isEqualToString:@"DeviceChange!Use"] ||[self.caller isEqualToString:@"DeviceChange!Scrap"]||[self.caller isEqualToString:@"DeviceChange!Maintain"]||[self.caller isEqualToString:@"DeviceChange!Inspect"]) {
+        _searchString = @"upper(dc_code) like upper('%%') or upper(dc_devcode) like upper('%%')";
         
     }else
         _searchString = @"1=1";
@@ -119,7 +121,7 @@ static NSString * cellID = @"cellID";
     titleView.layer.cornerRadius = 5;
     titleView.layer.masksToBounds = YES;
     
-    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(15, 0, SCREEN_WIDTH-95, 30)];
+    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(20, 0, SCREEN_WIDTH-95, 30)];
     searchBar.backgroundImage = [UIImage imageNamed:@"clearImage"];
     searchBar.delegate = self;
     searchBar.returnKeyType = UIReturnKeySearch;
@@ -127,11 +129,10 @@ static NSString * cellID = @"cellID";
     searchBar.backgroundColor = [UIColor whiteColor];
     searchBar.layer.cornerRadius = 5;
     searchBar.layer.masksToBounds = YES;
-    if (_mustStr.length != 0) {
-      
+    if (![self.caller isEqualToString:@"Device"]) {
         searchBar.placeholder = @"申请单号/设备编号";
     }else{
-        searchBar.placeholder = @"设备类型/设备种类/设备规格/所属部门/所属线别使用人员/设备管理员/状态";
+        searchBar.placeholder = @"设备编号/设备名称/设备规格/设备类别";
     }
     //    searchBar.showsCancelButton = YES;
     [titleView addSubview:searchBar];
@@ -169,7 +170,7 @@ static NSString * cellID = @"cellID";
     self.navigationItem.leftBarButtonItems = @[bbi2];
     
     UIButton *btn3 = [UIButton buttonWithType:UIButtonTypeSystem];
-    btn3.frame = CGRectMake(0, 5, 30, 19);
+    btn3.frame = CGRectMake(0, 5, 40, 19);
     UIImageView *image1 = [[UIImageView alloc]initWithFrame:CGRectMake(10, iOS11?5:0, 20, 19)];
     image1.image = [UIImage imageNamed:@"ic_advanced_filter"];
     [btn3 addSubview:image1];
@@ -199,15 +200,22 @@ static NSString * cellID = @"cellID";
         return;
     }
     HCScanQRViewController * hvc = [[HCScanQRViewController alloc]init];
-    hvc.ChechIndex = 11;
+    hvc.ChechIndex = 112;
     @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];
+            
+            NSString *searchText = FORMAT(@"%@",QRCodeInfo);
+            if (![self.caller isEqualToString:@"Device"])  {
+                _searchString = FORMAT(@"upper(dc_code) like upper('%%%@%%') or upper(dc_devcode) like upper('%%%@%%') ",searchText,searchText);
+            }else{
+                _searchString = FORMAT(@"upper(de_code) like upper('%%%@%%') or upper(de_name) like upper('%%%@%%') or upper(de_spec) like upper('%%%@%%') or upper(de_kind) like upper('%%%@%%') or upper(de_type) like upper('%%%@%%') or upper(de_currentlinecode) like upper('%%%@%%') or upper(de_currentcentername) like upper('%%%@%%') or upper(de_currentuser) like upper('%%%@%%') or upper(de_manageman) like upper('%%%@%%') or upper(de_runstatus) like upper('%%%@%%')",searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText);
+            }
+            self.searchBar.text = searchText;
+            
+            [self loadData11];
         });
         
     }];
@@ -217,24 +225,49 @@ static NSString * cellID = @"cellID";
 #pragma mark -------点击条件搜索 clickRightBtn
 -(void)clickRightBtn
 {
+    //获取状态栏的rect
+    CGRect statusRect = [[UIApplication sharedApplication] statusBarFrame];
+    //获取导航栏的rect
+    CGRect navRect = self.navigationController.navigationBar.frame;
+    //那么导航栏+状态栏的高度
+    CGFloat height = statusRect.size.height+navRect.size.height;
+    
     LYYDMSearchDataVC * lvc;
-    if (_mustStr.length != 0) {
-        lvc = [[LYYDMSearchDataVC alloc]initWithShowFrame:CGRectMake(0, [[NSString deviceString] isEqualToString:@"iPhone X"] ? 24:0, SCREEN_WIDTH, 146) ShowStyle:MYPresentedViewShowStyleFromTopSpreadStyle callback:^(id callback) {
-            
-            
+    if (![self.caller isEqualToString:@"Device"]) {
+        lvc = [[LYYDMSearchDataVC alloc]initWithShowFrame:CGRectMake(0, height, SCREEN_WIDTH, 200) ShowStyle:MYPresentedViewShowStyleFromTopSpreadStyle callback:^(id callback) {
         }];
         lvc.masheight = 146;
-    }else{
-        lvc = [[LYYDMSearchDataVC alloc]initWithShowFrame:CGRectMake(0, [[NSString deviceString] isEqualToString:@"iPhone X"] ? 24:0, SCREEN_WIDTH, 375+40) ShowStyle:MYPresentedViewShowStyleFromTopSpreadStyle callback:^(id callback) {
-       
+        if (!self.searchDic) {
+            self.searchDic = @{
+                               @"dc_code":@"",
+                               @"dc_devcode":@"",
+                               };
+        }
         
+    }else{
+        lvc = [[LYYDMSearchDataVC alloc]initWithShowFrame:CGRectMake(0, height , SCREEN_WIDTH, 9*40+120) ShowStyle:MYPresentedViewShowStyleFromTopSpreadStyle callback:^(id callback) {
         }];
-        lvc.masheight   = 375+40;
+        lvc.masheight = 9*40+120;
+        if (!self.searchDic) {
+            self.searchDic = @{
+                               @"de_code":@"",
+                               @"de_name":@"",
+                               @"de_spec":@"",
+                               @"de_kind":@"",
+                               @"de_type":@"",
+                               @"de_currentlinecode":@"",
+                               @"de_currentcentername":@"",
+                               @"de_currentuser":@"",
+                               @"de_manageman":@"",
+                               @"de_runstatus":@"",
+                               };
+        }
     }
-    lvc.clearBack = YES;
+    lvc.showDic = [self.searchDic mutableCopy];
+    lvc.clearBack = NO;
     
-    [lvc setBlock:^(NSString *str) {
-       
+    [lvc setBlock:^(NSString *str,NSDictionary *dic) {
+        self.searchDic = dic;
         _searchString = str;
         [self loadData11];
     }];
@@ -252,12 +285,11 @@ static NSString * cellID = @"cellID";
 {
      [MBProgressHUD showMessage:@"加载数据"];
     NSString *str = nil;
-    if (_mustStr.length != 0) {
+    if ([self.caller isEqualToString:@"DeviceChange!Use"] ||[self.caller isEqualToString:@"DeviceChange!Scrap"]||[self.caller isEqualToString:@"DeviceChange!Maintain"]||[self.caller isEqualToString:@"DeviceChange!Inspect"]) {
         if (_searchString.length == 0) {
             _searchString = @"1=1";
         }
-      
-            str  =  FORMAT(@"caller=%@&condition= (%@) and (dc_class = upper('%@'))",_caller,_searchString,_mustStr);
+        str = FORMAT(@"caller=%@&condition= (%@) and (dc_class = upper('%@'))",_caller,_searchString,_mustStr);
     }else{
         if (_searchString.length == 0) {
             _searchString = @"1=1";
@@ -428,40 +460,61 @@ static NSString * cellID = @"cellID";
 {
     LYYDMDataSeachModel *model = self.dataArr[indexPath.row];
  
-    return [model.ssssss isEqualToString:@"1"] ? model.furtHeight : model.unfurtHeight;
+    return [model.ssssss isEqualToString:@"1"] ? model.furtHeight + 10: model.unfurtHeight;
     
 }
 
 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
-      LYYDMDataSeachModel *model = self.dataArr[indexPath.row];
-    if (_mustStr.length != 0) {
-      
-        LYYDocumentDetailVC *detailVC = [[LYYDocumentDetailVC alloc]init];
-        detailVC.caller = _caller;
-        detailVC.dan_id = model.listDic[_idStro];
-        detailVC.pushOrPop = @"pop";
-        detailVC.danjuStatus = model.listDic[_status];
-        [detailVC setBlock:^{
-           
-            [self.dataArr removeObject:model];
-            [self.tableView reloadData];
+    LYYDMDataSeachModel *model = self.dataArr[indexPath.row];
+    
+    if (![self.caller isEqualToString:@"Device"]) {
+        
+        NSString *idStr = FORMAT(@"%@",model.listDic[_idStro]);
+        NSString *status = FORMAT(@"%@",model.listDic[_status]);
+        
+        if ([self.caller isEqualToString:@"DeviceChange!Use"] || [self.caller isEqualToString:@"DeviceChange!Scrap"] || [self.caller isEqualToString:@"DeviceChange!Inspect"]) {
             
-        }];
-        [self.navigationController pushViewController:detailVC animated:YES];
+            LYYDocumentDetailVC *detailVC = [[LYYDocumentDetailVC alloc]init];
+            detailVC.caller = _caller;
+            detailVC.dan_id = model.listDic[_idStro];
+            detailVC.pushOrPop = @"pop";
+            detailVC.danjuStatus = model.listDic[_status];
+            [detailVC setBlock:^{
+                
+                [self.dataArr removeObject:model];
+                [self.tableView reloadData];
+                
+            }];
+            [self.navigationController pushViewController:detailVC animated:YES];
+        }
+        else{
+            if ([status isEqualToString:@"在录入"]) {
+                DeviceEnterFormVC *vc = [DeviceEnterFormVC new];
+                vc.caller = self.caller;
+                vc.title = self.title;
+                vc.idStr = idStr;
+                [self.navigationController pushViewController:vc animated:YES];
+            }else{
+                DeviceFormVC *vc = [DeviceFormVC new];
+                vc.idStr = idStr;
+                vc.caller = self.caller;
+                vc.title = self.title;
+                vc.status = status;
+                [self.navigationController pushViewController:vc animated:YES];
+            }
+        }
+
     }else{
-        //点击跳转 
-        LYYDMScanVC *vc = [[LYYDMScanVC alloc] init];
-        vc.idstr = model.listDic[@"de_code"];
+        DeviceFormVC *vc = [DeviceFormVC new];
+        vc.deviceCode = FORMAT(@"%@",model.listDic[@"de_code"]);
+        vc.title = @"设备信息";
         [self.navigationController pushViewController:vc animated:YES];
         
 //        DeviceFormVC *vc = [DeviceFormVC new];
 //        vc.deviceCode = FORMAT(@"%@",model.listDic[@"de_code"]);
 //        [self.navigationController pushViewController:vc animated:YES];
     }
-  
-    
-    
 }
 
 
@@ -506,27 +559,20 @@ static NSString * cellID = @"cellID";
         self.uv.hidden = YES;
     }
     [_iFlySpeechRecognizer cancel];
-    if (_mustStr.length != 0)  {
+    if (![self.caller isEqualToString:@"Device"])  {
       _searchString = FORMAT(@"upper(dc_code) like upper('%%%@%%') or upper(dc_devcode) like upper('%%%@%%') ",searchText,searchText);
     }else{
     
-    _searchString = FORMAT(@"upper(de_kind) like upper('%%%@%%') or upper(de_type) like upper('%%%@%%') or upper(de_spec) like upper('%%%@%%') or upper(de_currentcentercode) like upper('%%%@%%') or upper(de_currentlinecode) like upper('%%%@%%') or upper(de_currentuser) like upper('%%%@%%') or upper(de_currentuser) like upper('%%%@%%') or upper(de_code) like upper('%%%@%%') or upper(de_name) like upper('%%%@%%')",searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText);
+    _searchString = FORMAT(@"upper(de_code) like upper('%%%@%%') or upper(de_name) like upper('%%%@%%') or upper(de_spec) like upper('%%%@%%') or upper(de_kind) like upper('%%%@%%') or upper(de_type) like upper('%%%@%%') or upper(de_currentlinecode) like upper('%%%@%%') or upper(de_currentcentername) like upper('%%%@%%') or upper(de_currentuser) like upper('%%%@%%') or upper(de_manageman) like upper('%%%@%%') or upper(de_runstatus) like upper('%%%@%%')",searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText);
     }
     [self loadData11];
-    
-    
-    
 }
+
 - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
     
     [self.searchBar resignFirstResponder];
-    
-   // [JOShowMessageFromNavi showDropViewWithMessage:@"请前往系统配置模糊搜索字段,或尝试高级查询方式" ToNavi:self.navigationController withColor:nil];
-    
-    
-    
-    
 }
+
 //下拉刷新相关函数
 - (void)setupHeader
 {
@@ -599,10 +645,10 @@ static NSString * cellID = @"cellID";
 }
 -(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{
     NSString *searchText = searchBar.text;
-    if (_mustStr.length != 0) {
+    if (![self.caller isEqualToString:@"Device"]) {
         _searchString = FORMAT(@"upper(dc_code) like upper('%%%@%%') or upper(dc_devcode) like upper('%%%@%%')",searchText,searchText);
     }else{
-        _searchString = FORMAT(@"upper(de_kind) like upper('%%%@%%') or upper(de_type) like upper('%%%@%%') or upper(de_spec) like upper('%%%@%%') or  upper(de_currentcentercode) like upper('%%%@%%') or upper(de_currentlinecode) like upper('%%%@%%') or upper(de_currentuser) like upper('%%%@%%') or upper(de_currentuser) like upper('%%%@%%') or upper(de_code) like upper('%%%@%%') or upper(de_name) like upper('%%%@%%')",searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText);
+        _searchString = FORMAT(@"upper(de_code) like upper('%%%@%%') or upper(de_name) like upper('%%%@%%') or upper(de_spec) like upper('%%%@%%') or upper(de_kind) like upper('%%%@%%') or upper(de_type) like upper('%%%@%%') or upper(de_currentlinecode) like upper('%%%@%%') or upper(de_currentcentername) like upper('%%%@%%') or upper(de_currentuser) like upper('%%%@%%') or upper(de_manageman) like upper('%%%@%%') or upper(de_runstatus) like upper('%%%@%%')",searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText,searchText);
     }
     if (searchText.length ==0  ) {
         _searchString = @"1=1";

+ 1 - 1
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/搜索/New Group/LYYDMDataSearchVC1.m

@@ -206,7 +206,7 @@ static NSString * cellID = @"cellID";
     }
     lvc.clearBack = YES;
     
-    [lvc setBlock:^(NSString *str) {
+    [lvc setBlock:^(NSString *str,NSDictionary *dic) {
         
         _searchString = str;
         [self loadData11];

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

@@ -565,7 +565,6 @@
         
         LYYDMScanCell *cell = [LYYDMScanCell cellWithTableView:tableView];
         cell.model = self.detaiArr[indexPath.section][indexPath.row];
-        
         return cell;
         
     }

+ 2 - 0
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/设备的盘点/LYYDMCheckVC.h

@@ -9,4 +9,6 @@
 
 @interface LYYDMCheckVC : UASBaseVC
 
+@property(nonatomic,strong)NSString *caller;
+
 @end

+ 157 - 96
shiku_im/shiku_im/文件夹1/设备管理/viewcontellers/设备的盘点/LYYDMCheckVC.m

@@ -13,6 +13,12 @@
 #import "LYYDMCheckDetailVC.h"
 #import "LYYDMCheckADDVC.h" //添加盘点
 #import "UITableView+WFEmpty.h"
+#import "TransFormVC.h"
+#import "TransDetailVC.h"
+#import <AVFoundation/AVFoundation.h>
+#import <AssetsLibrary/AssetsLibrary.h>
+#import "HCScanQRViewController.h"
+
 @interface LYYDMCheckVC ()<UISearchBarDelegate,IFlySpeechRecognizerDelegate,UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
 /*关于语音搜索界面*/
 @property(nonatomic,strong) IFlySpeechRecognizer * iFlySpeechRecognizer;//带视图的语音识别器
@@ -37,12 +43,18 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     
-    
+    _page  = 1;
+    [self loadData11];
     
 }
+
 -(void)createUI
 {
-    _searchString = @"";
+    if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+        _searchString = @"1=1";
+    }else{
+        _searchString = @"";
+    }
    
     [self.view addSubview:self.tableView];
    
@@ -52,9 +64,10 @@
     [self setupFooter];
     [self setupHeader];
 }
+
 - (void)viewWillAppear:(BOOL)animated{
-    _page  = 1;
-    [self loadData11];
+//    _page  = 1;
+//    [self loadData11];
     
 }
 
@@ -96,7 +109,11 @@
     
     self.view.backgroundColor = Color(235, 233, 233, 1);
     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(20, 0, SCREEN_WIDTH-95, 30)];
     searchBar.backgroundImage = [UIImage imageNamed:@"clearImage"];
     searchBar.delegate = self;
     searchBar.returnKeyType = UIReturnKeySearch;
@@ -104,21 +121,24 @@
     searchBar.backgroundColor = [UIColor whiteColor];
     searchBar.layer.cornerRadius = 4;
     searchBar.layer.masksToBounds = YES;
-    searchBar.placeholder = @"盘点单号/所属部门编号/所属部门名称/所属线别/设备类型/未盘点数/已盘点数";
+    if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+        searchBar.placeholder = @"申请单号/类型/录入人";
+    }else{
+        searchBar.placeholder = @"盘点单号/所属部门编号/所属部门名称/所属线别/设备类型/未盘点数/已盘点数";
+    }
     //    searchBar.showsCancelButton = YES;
     [titleView addSubview:searchBar];
     
     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)];
@@ -130,10 +150,7 @@
     [uv addGestureRecognizer:tapges];
     [titleView addSubview:uv];
     self.navigationItem.titleView = titleView;
-    
-    
-    
-    
+
     UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeSystem];
     btn2.frame = CGRectMake(0, 5, 22, 22);
     UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(0, iOS11?5:0, 22, 22)];
@@ -153,14 +170,60 @@
     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 = 112;
+    @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(), ^{
+            
+            NSString *searchText = FORMAT(@"%@",QRCodeInfo);
+            if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+                _searchString = FORMAT(@"upper(db_code) like upper('%%%@%%') or upper(db_kind) like upper('%%%@%%') or upper(db_inman) like upper('%%%@%%')",searchText,searchText,searchText);
+            }else{
+                _searchString = FORMAT(@" and (db_code like '%%%@%%' or db_inman like '%%%@%%' or db_devtype like '%%%@%%' or db_centercode like '%%%@%%')" ,searchText,searchText,searchText,searchText);
+            }
+            self.searchBar.text = searchText;
+            
+            _page = 1;
+            [self loadData11];
+        });
+        
+    }];
+    [self.navigationController pushViewController:hvc animated:YES];
 }
 
 - (void)clickRightBtn{
-    
-    LYYDMCheckADDVC *vc = [LYYDMCheckADDVC new];
-    [self.navigationController pushViewController:vc animated:YES];
-    
+    if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+        TransFormVC *vc = [TransFormVC new];
+        vc.caller = @"DeviceBatch!UseNew";
+        [self.navigationController pushViewController:vc animated:YES];
+        
+    }else{
+        LYYDMCheckADDVC *vc = [LYYDMCheckADDVC new];
+        [self.navigationController pushViewController:vc animated:YES];
+    }
 }
 
 
@@ -168,11 +231,18 @@
 - (void)loadData11
 {
     [MBProgressHUD showMessage:@"加载中"];
-    [LYHTTPRequest Get:UU_DM_GET_CheckDetail page:_page condition:_searchString Completion:^(id ObjectData, NSError *error) {
+    NSString *conditionStr = @"";
+    if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+        conditionStr = FORMAT(@"caller=%@&condition=%@",self.caller,_searchString);
+    }else{
+        conditionStr = FORMAT(@"caller=%@&condition= db_class ='周期盘点' and db_statuscode='COMMITED'%@",self.caller,_searchString);
+    }
+    
+    [LYHTTPRequest Get:UU_DM_GET_CheckDetail page:_page condition:conditionStr Completion:^(id ObjectData, NSError *error) {
         if (error == nil) {
             [MBProgressHUD hideHUD];
             _idStro = ObjectData[@"keyField"];
-            if (_page == 1) {
+            if (_page == 1 || ![_searchString isEqualToString:@"1=1"]) {
                 [self.dataArr  removeAllObjects];
             }
             NSMutableArray *columns = [NSMutableArray array];
@@ -181,7 +251,7 @@
             for (NSInteger i = 0 ; i < arr.count ; i ++) {
                 NSDictionary *dic = [NSDictionary changeType:arr[i]];
                 LYYDMScanModel *model = [LYYDMScanModel mj_objectWithKeyValues:dic];
-                if (model.width != 0) {
+                if (![FORMAT(@"%@",model.width) isEqualToString:@"0"]) {
                     [columns addObject:model];
                 }
                 
@@ -216,29 +286,8 @@
         }
         
     }];
-    
-//    for (NSInteger i = 0; i < 10 ; i ++ ) {
-//
-//        LYYDMDataSeachModel *model  = [LYYDMDataSeachModel new];
-//        model.ssssss = @"1";
-//        NSMutableArray *dArr = [NSMutableArray array];
-//        for (NSInteger j = 0; j < 6; j ++) {
-//            LYYDevieceMainModel *model11 = [LYYDevieceMainModel new];
-//            model11.nameSting = @"单据表海";
-//            model11.imageString = @"dadsadsadsadsadsadsadsa";
-//            model11.width = 90+j*6;
-//
-//            [dArr  addObject:model11];
-//        }
-//        model.dataArr = dArr;
-//        [self.dataArr  addObject:model];
-//    }
-//
-//    [self calculteCellHeightWithData:self.dataArr];
-    
-    
-    
 }
+
 #pragma mark--- 语音按钮
 -(void)clickVoiceSearch{
     [_searchBar resignFirstResponder];
@@ -288,21 +337,34 @@
 {
     LYYDMDataSeachModel *model = self.dataArr[indexPath.row];
     
-    return [model.ssssss isEqualToString:@"1"] ? model.furtHeight: model.unfurtHeight;
+    return [model.ssssss isEqualToString:@"1"] ? model.furtHeight + 10: model.unfurtHeight;
     
 }
 
 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
-    LYYDMCheckDetailVC *vc = [LYYDMCheckDetailVC new];
     LYYDMDataSeachModel *model = self.dataArr[indexPath.row];
-    
-    vc.IdStra =  model.listDic[_idStro];
-    vc.pushOrPop = @"push";
-       
-    
-    [self.navigationController pushViewController:vc animated:YES];
-    
+    if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+        TransDetailVC *vc = [TransDetailVC new];
+        vc.idStr = model.listDic[_idStro];
+        NSString *db_kind = FORMAT(@"%@",model.listDic[@"db_kind"]);
+        if ([db_kind isEqualToString:@"领用"]) {
+            vc.caller = @"DeviceMobile!Receive";
+        }else if ([db_kind isEqualToString:@"转移"]) {
+            vc.caller = @"DeviceMobile!Transfer";
+        }else if ([db_kind isEqualToString:@"退仓"]) {
+            vc.caller = @"DeviceMobile!Return";
+        }
+        vc.status = FORMAT(@"%@",model.listDic[@"db_status"]);
+        [self.navigationController pushViewController:vc animated:YES];
+        
+    }else{
+        LYYDMCheckDetailVC *vc = [LYYDMCheckDetailVC new];
+        vc.IdStra =  model.listDic[_idStro];
+        vc.pushOrPop = @"push";
+        [self.navigationController pushViewController:vc animated:YES];
+    }
+
 }
 
 #pragma mark - Table view data source
@@ -312,9 +374,14 @@
     DLog(@"searchBar上面的文字是:%@",searchText);
     
     if (searchText.length ==0  ) {
-        _searchString = @"";
+        if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+            _searchString = @"1=1";
+        }else{
+            _searchString = @"";
+        }
         self.uv.hidden = NO;
-         [self loadData11];
+        _page = 1;
+        [self loadData11];
     }
    
 }
@@ -341,34 +408,48 @@
     _searchBar.text = searchText;
     
     if (searchText.length ==0  ) {
-        _searchString = @"";
+        if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+            _searchString = @"1=1";
+        }else{
+            _searchString = @"";
+        }
         self.uv.hidden = NO;
     }else{
         self.uv.hidden = YES;
     }
     [_iFlySpeechRecognizer cancel];
-    _searchString = FORMAT(@"and(db_code like '%%%@%%' or db_inman like ‘'%%%@%%' or db_devtype like '%%%@%%' or db_centercode like '%%%@%%')" ,searchText,searchText,searchText,searchText);
-    [self loadData11];
-    
-    
     
+    if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+        _searchString = FORMAT(@"upper(db_code) like upper('%%%@%%') or upper(db_kind) like upper('%%%@%%') or upper(db_inman) like upper('%%%@%%')",searchText,searchText,searchText);
+    }else{
+        _searchString = FORMAT(@"and(db_code like '%%%@%%' or db_inman like ‘'%%%@%%' or db_devtype like '%%%@%%' or db_centercode like '%%%@%%')" ,searchText,searchText,searchText,searchText);
+    }
+    _page = 1;
+    [self loadData11];
 }
+
 - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
     
     NSString *searchText = searchBar.text;
     [self.searchBar resignFirstResponder];
-    _searchString = FORMAT(@" and (db_code like '%%%@%%' or db_inman like '%%%@%%' or db_devtype like '%%%@%%' or db_centercode like '%%%@%%')" ,searchText,searchText,searchText,searchText);
+    if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+        _searchString = FORMAT(@"upper(db_code) like upper('%%%@%%') or upper(db_kind) like upper('%%%@%%') or upper(db_inman) like upper('%%%@%%')",searchText,searchText,searchText);
+    }else{
+        _searchString = FORMAT(@" and (db_code like '%%%@%%' or db_inman like '%%%@%%' or db_devtype like '%%%@%%' or db_centercode like '%%%@%%')" ,searchText,searchText,searchText,searchText);
+    }
     if (searchText.length ==0  ) {
-        _searchString = @"";
+        if ([self.caller isEqualToString:@"DeviceBatch!Use"]) {
+            _searchString = @"1=1";
+        }else{
+            _searchString = @"";
+        }
+        
         self.uv.hidden = NO;
     }
+    _page = 1;
     [self loadData11];
-   // [JOShowMessageFromNavi showDropViewWithMessage:@"请前往系统配置模糊搜索字段,或尝试高级查询方式" ToNavi:self.navigationController withColor:nil];
-    
-    
-    
-    
 }
+
 //下拉刷新相关函数
 - (void)setupHeader
 {
@@ -379,10 +460,7 @@
             [_tableView.mj_header endRefreshing];
         });
     }];
-    
-    
-    
-    
+
     // 进入页面自动加载一次数据
     //[refreshHeader beginRefreshing];
 }
@@ -390,7 +468,6 @@
 //上啦刷新
 - (void)setupFooter
 {
-    
     _tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
         
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
@@ -400,9 +477,7 @@
             [_tableView.mj_footer endRefreshing];
             
         });
-        
-        
-        
+
     }];
     
 }
@@ -427,31 +502,21 @@
     
 }
 
-
-
-
-
-
-
 #pragma mark -- 搜索
 -(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
-    
-    
-    
+  
 }
+
 -(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar{
-   
-    
+ 
     [self.searchBar resignFirstResponder];
-    
-
-    
+   
 }
 
-
 -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
     [self.searchBar resignFirstResponder];
 }
+
 -(void)viewWillDisappear:(BOOL)animated{
     [super viewWillDisappear:animated];
     
@@ -504,13 +569,10 @@
     }
 }
 
-
 -(void)clickView{
-    
-    
+ 
     [_iFlySpeechRecognizer cancel];
     
-    
 }
 
 
@@ -519,6 +581,7 @@
     
     [_iFlySpeechRecognizer cancel];
 }
+
 #pragma mark 下面是语音识别的回调函数
 - (void) onError:(IFlySpeechError *) error
 {
@@ -553,8 +616,6 @@
     }
 }
 
-
-
 -(void)calculteCellHeightWithData:(NSMutableArray<LYYDMDataSeachModel *> *)arr{
     
     for (int i = 0; i<arr.count; i++) {

+ 2 - 2
shiku_im/shiku_im/文件夹1/设备管理/views/LYYDMSearchDataVC.h

@@ -8,8 +8,8 @@
 #import "MYPresentedController.h"
 
 @interface LYYDMSearchDataVC : MYPresentedController
-@property (copy , nonatomic) void (^block)(NSString *str);
+@property (copy , nonatomic) void (^block)(NSString *str,NSDictionary *searchDic);
 @property (assign , nonatomic) NSInteger masheight;
-
+@property (nonatomic , strong) NSMutableDictionary *showDic;//保存搜索数据字典
 
 @end

+ 93 - 56
shiku_im/shiku_im/文件夹1/设备管理/views/LYYDMSearchDataVC.m

@@ -46,42 +46,44 @@ static NSString *cellID = @"stutasa";
     if (_masheight == 146) {
         NSArray *arr = @[@"申请单号",@"设备编号"];
         NSArray *arr11 = @[@"请输入申请单号",@"请输入设备编号"];
-        
+        NSArray *valueS = @[self.showDic[@"dc_code"],self.showDic[@"dc_devcode"]];
         
         _height = 15;
         for (NSInteger i = 0 ; i < 2; i ++) {
-            [self.PopView addSubview:  [self CreateTextfiledWithtag:20000+i placeText:arr11[i] withHeight:20]];
+            [self.PopView addSubview:[self CreateTextfiledWithtag:20000+i placeText:arr11[i] withHeight:20 text:valueS[i]]];
             [self.PopView addSubview:[self creatRightLabelWithHeight:20 text:arr[i]]];
             _height += 40;
         }
     }else{
-    NSArray *arr = @[@"设备类型",@"设备种类",@"设备规格",@"所属部门",@"所属线别",@"使用人员",@"设备管理员",@"状态"];
-    NSArray *arr11 = @[@"请输入设备类型",@"请输入设备种类",@"请输入设备规格",@"请输入所属部门",@"请输入所属线别",@"请输入使用人员",@"请输入设备管理员",@"请输入状态"];
-    
-    
-    _height = 15;
-    for (NSInteger i = 0 ; i < 7; i ++) {
-        [self.PopView addSubview:  [self CreateTextfiledWithtag:20000+i placeText:arr11[i] withHeight:20]];
-        [self.PopView addSubview:   [self creatRightLabelWithHeight:20 text:arr[i]]];
-        _height += 40;
-    }
-    [self.PopView addSubview:   [self creatRightLabelWithHeight:20 text:arr[7]]];
-    [self.PopView addSubview:self.collectView];
+        NSArray *arr = @[@"设备编号",@"设备名称",@"设备规格",@"设备种类",@"设备类型",@"所属线别",@"所属部门",@"使用人员",@"设备管理员",@"状态"];
+        NSArray *arr11 = @[@"请输入设备编号",@"请输入设备名称",@"请输入设备规格",@"请输入设备种类",@"请输入设备类型",@"请输入所属线别",@"请输入所属部门",@"请输入使用人员",@"请输入设备管理员",@"请输入状态"];
+        NSArray *valueS = @[self.showDic[@"de_code"],self.showDic[@"de_name"],self.showDic[@"de_spec"],self.showDic[@"de_kind"],self.showDic[@"de_type"],self.showDic[@"de_currentlinecode"],self.showDic[@"de_currentcentername"],self.showDic[@"de_currentuser"],self.showDic[@"de_manageman"]];
+        _height = 16;
+        for (NSInteger i = 0 ; i < arr.count-1; i ++) {
+            [self.PopView addSubview:[self CreateTextfiledWithtag:20000+i placeText:arr11[i] withHeight:20 text:valueS[i]]];
+            [self.PopView addSubview:[self creatRightLabelWithHeight:20 text:arr[i]]];
+            _height += 40;
+        }
+        [self.PopView addSubview:[self creatRightLabelWithHeight:20 text:[arr lastObject]]];
+        [self.PopView addSubview:self.collectView];
     }
 }
+
 - (void)getData{
     NSArray *Arr = @[@"闲置中",@"正常使用",@"故障中",@"已报废",@"已盘亏"];
-    NSArray *arr2 = @[@"UNUSED",@"USING",@"BREAKIND",@"SCRAPPED",@"LOSSED"];
+    NSArray *arr2 = @[@"UNUSED",@"USING",@"BREAKING",@"SCRAPPED",@"LOSSED"];
     [self.statusarr removeAllObjects];
     for (NSInteger i = 0; i < Arr.count; i ++) {
         LYYDevieceMainModel *model = [LYYDevieceMainModel new];
         model.nameSting = Arr[i];
         model.imageString = arr2[i];
-        model.yesorNo = NO;
+        if ([self.showDic[@"de_runstatus"] isEqualToString:model.imageString]) {
+            model.yesorNo = YES;
+        }else{
+            model.yesorNo = NO;
+        }
         [self.statusarr addObject:model];
     }
-   
-    
 }
 -(NSMutableArray *)statusarr
 {
@@ -202,21 +204,24 @@ static NSString *cellID = @"stutasa";
             break;
         case 10001:
         {
-           [self.PopView removeAllSubviews];
+            [self.PopView removeAllSubviews];
             
+            for (NSString *obj in self.showDic.allKeys) {
+                [self.showDic setValue:@"" forKey:obj];
+            }
             
             [self createMaicView];
             if (_masheight != 146) {
                 [self getData];
                 [self.collectView reloadData];
             }
-           
+            
         }
             break;
         case 10002:
         {
             [self.PopView removeFromSuperview];
-           
+            
             NSString *str = @"";
             NSMutableArray *arr = [NSMutableArray array];
             if (_masheight == 146) {
@@ -228,60 +233,85 @@ static NSString *cellID = @"stutasa";
                 if (textField1.text.length != 0) {
                     [arr addObject:FORMAT(@"upper(dc_devcode) like upper('%%%@%%')",textField1.text)];
                 }
-                
-                self.block([arr componentsJoinedByString:@" and "]);
+                NSDictionary *dic = @{
+                                      @"dc_code":FORMAT(@"%@",textField.text),
+                                      @"dc_devcode":FORMAT(@"%@",textField1.text),
+                                      };
+                self.block([arr componentsJoinedByString:@" and "],dic);
             }else{
-            for (NSInteger i = 0; i < self.statusarr.count; i ++) {
-                LYYDevieceMainModel  *model  = self.statusarr[i];
-                if (model.yesorNo  == YES) {
-                str =     [str stringByAppendingString:FORMAT(@" de_runstatus = '%@' or",model.imageString)];
+                NSString *status = @"";
+                for (NSInteger i = 0; i < self.statusarr.count; i ++) {
+                    LYYDevieceMainModel  *model  = self.statusarr[i];
+                    if (model.yesorNo  == YES) {
+                        str = [str stringByAppendingString:FORMAT(@" de_runstatus = '%@' or",model.imageString)];
+                        status = model.imageString;
+                    }
+                    
                 }
-                
-            }
                 if (str.length < 4) {
                     str = @"";
                 }else{
-                  str =   [str stringByReplacingCharactersInRange:NSMakeRange(str.length-2, 2) withString:@""];
+                    str =   [str stringByReplacingCharactersInRange:NSMakeRange(str.length-2, 2) withString:@""];
                     
                 }
-            UITextField *textField = (UITextField *)[self.PopView viewWithTag:20000];
-            UITextField *textField1 = (UITextField *)[self.PopView viewWithTag:20001];
-            UITextField *textField2 = (UITextField *)[self.PopView viewWithTag:20002];
-            UITextField *textField3 = (UITextField *)[self.PopView viewWithTag:20003];
-            UITextField *textField4 = (UITextField *)[self.PopView viewWithTag:20004];
-            UITextField *textField5 = (UITextField *)[self.PopView viewWithTag:20005];
-            UITextField *textField6 = (UITextField *)[self.PopView viewWithTag:20006];
+                UITextField *textField = (UITextField *)[self.PopView viewWithTag:20000];
+                UITextField *textField1 = (UITextField *)[self.PopView viewWithTag:20001];
+                UITextField *textField2 = (UITextField *)[self.PopView viewWithTag:20002];
+                UITextField *textField3 = (UITextField *)[self.PopView viewWithTag:20003];
+                UITextField *textField4 = (UITextField *)[self.PopView viewWithTag:20004];
+                UITextField *textField5 = (UITextField *)[self.PopView viewWithTag:20005];
+                UITextField *textField6 = (UITextField *)[self.PopView viewWithTag:20006];
+                UITextField *textField7 = (UITextField *)[self.PopView viewWithTag:20007];
+                UITextField *textField8 = (UITextField *)[self.PopView viewWithTag:20008];
                 
                 if (textField.text.length != 0) {
-                    [arr addObject:FORMAT(@"upper(de_kind) like upper('%%%@%%')",textField.text)];
+                    [arr addObject:FORMAT(@"upper(de_code) like upper('%%%@%%')",textField.text)];
                 }
                 if (textField1.text.length != 0) {
-                    [arr addObject:FORMAT(@"upper(de_type) like upper('%%%@%%')",textField1.text)];
+                    [arr addObject:FORMAT(@"upper(de_name) like upper('%%%@%%')",textField1.text)];
                 }
                 if (textField2.text.length != 0) {
                     [arr addObject:FORMAT(@"upper(de_spec) like upper('%%%@%%')",textField2.text)];
                 }
                 if (textField3.text.length != 0) {
-                    [arr addObject:FORMAT(@"upper(de_currentcentercode) like upper('%%%@%%')",textField3.text)];
+                    [arr addObject:FORMAT(@"upper(de_kind) like upper('%%%@%%')",textField3.text)];
                 }
                 if (textField4.text.length != 0) {
-                    [arr addObject:FORMAT(@"upper(de_currentlinecode) like upper('%%%@%%')",textField4.text)];
+                    [arr addObject:FORMAT(@"upper(de_type) like upper('%%%@%%')",textField4.text)];
                 }
                 if (textField5.text.length != 0) {
-                    [arr addObject:FORMAT(@"upper(de_currentuser) like upper('%%%@%%')",textField5.text)];
+                    [arr addObject:FORMAT(@"upper(de_currentlinecode) like upper('%%%@%%')",textField5.text)];
                 }
                 if (textField6.text.length != 0) {
-                    [arr addObject:FORMAT(@"upper(de_currentuser) like upper('%%%@%%')",textField6.text)];
+                    [arr addObject:FORMAT(@"upper(de_currentcentername) like upper('%%%@%%')",textField6.text)];
                 }
-         
+                if (textField7.text.length != 0) {
+                    [arr addObject:FORMAT(@"upper(de_currentuser) like upper('%%%@%%')",textField7.text)];
+                }
+                if (textField8.text.length != 0) {
+                    [arr addObject:FORMAT(@"upper(de_manageman) like upper('%%%@%%')",textField8.text)];
+                }
+                
                 if (str.length != 0) {
                     [arr addObject: FORMAT(@" (%@)",str)];
                     
                 }else{
                     
                 }
-
-            self.block([arr componentsJoinedByString:@" and "]);
+                
+                NSDictionary *dic = @{
+                                      @"de_code":FORMAT(@"%@",textField.text),
+                                      @"de_name":FORMAT(@"%@",textField1.text),
+                                      @"de_spec":FORMAT(@"%@",textField2.text),
+                                      @"de_kind":FORMAT(@"%@",textField3.text),
+                                      @"de_type":FORMAT(@"%@",textField4.text),
+                                      @"de_currentlinecode":FORMAT(@"%@",textField5.text),
+                                      @"de_currentcentername":FORMAT(@"%@",textField6.text),
+                                      @"de_currentuser":FORMAT(@"%@",textField7.text),
+                                      @"de_manageman":FORMAT(@"%@",textField8.text),
+                                      @"de_runstatus":status
+                                      };
+                self.block([arr componentsJoinedByString:@" and "],dic);
             }
             [self dismissViewControllerAnimated:NO completion:^{
                 
@@ -323,9 +353,9 @@ static NSString *cellID = @"stutasa";
 
 
 
-- (UITextField *)CreateTextfiledWithtag:(int)tag placeText:(NSString *)str withHeight:(float)high
+- (UITextField *)CreateTextfiledWithtag:(int)tag placeText:(NSString *)str withHeight:(float)high text:(NSString *)textStr
 {
-    UITextField  *textFiled = [[UITextField alloc]initWithFrame:CGRectMake(110, _height,SCREEN_WIDTH-110, 30)];
+    UITextField  *textFiled = [[UITextField alloc]initWithFrame:CGRectMake(110, _height,SCREEN_WIDTH-100, 30)];
     textFiled.returnKeyType = UIReturnKeyDone;
     //textFiled.borderStyle =UITextBorderStyleBezel;
     textFiled.layer.borderColor = [UIColor lightGrayColor].CGColor;
@@ -333,7 +363,8 @@ static NSString *cellID = @"stutasa";
     textFiled.tag = tag;
     textFiled.delegate = self;
     textFiled.placeholder = str;
-    textFiled.font = FONT_SIZE(15);
+    textFiled.text = textStr;
+    textFiled.font = FONT_SIZE(14);
     return textFiled;
     
 }
@@ -343,14 +374,20 @@ static NSString *cellID = @"stutasa";
     
     return YES;
 }
-/*
-#pragma mark - Navigation
 
-// In a storyboard-based application, you will often want to do a little preparation before navigation
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
-    // Get the new view controller using [segue destinationViewController].
-    // Pass the selected object to the new view controller.
+-(void)viewWillAppear:(BOOL)animated{
+    
+    [super viewWillAppear:animated];
+    
+    [IQKeyboardManager sharedManager].enable = YES;
+}
+
+-(void)viewWillDisappear:(BOOL)animated{
+    
+    [super viewWillDisappear:animated];
+    
+    [IQKeyboardManager sharedManager].enable = NO;
+    
 }
-*/
 
 @end

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

@@ -74,7 +74,7 @@
         _rightlabel.font = FONT_SIZE(foneSzie);
         _rightlabel.textColor = HexColor(@"#333333");
         _rightlabel.verticalAlignment  = NSTextVerticalAlignmentTop;
-        _rightlabel.numberOfLines = 0;
+        _rightlabel.numberOfLines = 1;
     }
     return _rightlabel;
     

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

@@ -0,0 +1,35 @@
+//
+//  DeviceEnterFormVC.h
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/6/25.
+//
+
+#import "UASBaseVC.h"
+
+@interface DeviceEnterFormVC : UASBaseVC
+/**
+ 正常单据传的caller;如养护管理【保修单】
+ */
+@property (nonatomic,strong) NSString *caller;
+
+/**
+ 正常单据传的单据ID
+ */
+@property (nonatomic,strong) NSString *idStr;
+
+/**
+ 特殊赋值:设备信息带过来的值
+ 设备编号:dc_devcode
+ 设备名称:dc_devname
+ 当前部门编号:dc_oldcentercode
+ 当前部门名称:dc_oldcentername
+ 当前车间:dc_workshop
+ 当前线别:dc_oldlinecode
+ 人员编号:dc_emcode
+ 姓名:dc_emname
+ */
+@property (nonatomic,strong) NSArray *specialArr;
+
+@end
+

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

@@ -0,0 +1,1177 @@
+//
+//  DeviceEnterFormVC.m
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/6/25.
+//
+
+#import "DeviceEnterFormVC.h"
+#import "MoreGridModel.h"
+#import "DeviceFormView.h"
+#import "DeviceSpecialView.h"
+#import "LYYDMDataSearchVC.h"
+#import "DocumentDataVC.h"
+#import "LYYDBfindSelctedVC.h"
+#import "MFselectVC.h"
+#import "ConfigModel.h"
+#import "YPSelectShenPiPersonVC.h"
+#import "DeviceFormVC.h"
+
+@interface DeviceEnterFormVC ()
+@property (nonatomic,strong) NSMutableArray *gridData;//主从表数据
+@property (nonatomic,strong) DeviceSpecialView *dView;//
+@end
+
+@implementation DeviceEnterFormVC
+{
+    BOOL multidetailgrid;//判断是否有多明细表
+    NSMutableArray *_listArr; //获取配置表的数据(主表)
+    JXDatePicker *_date;
+    UITableView *_acceptTableView;
+    int _textTag; //判断哪个textView触发选择日期
+    ConfigModel *_cModel; //单据配置时标识状态码字段
+}
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    _listArr = [NSMutableArray new];
+    _gridData = [NSMutableArray new];
+    multidetailgrid = NO;
+    _acceptTableView = nil;
+    
+    /*获取配置数据*/
+    [self getFormDataFromSever];
+}
+
+#pragma mark --- 提交上传操作
+-(void)uploadFormAction
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    
+    [self.view endEditing:YES];
+    
+    //拼接主表上传的数据
+    NSMutableDictionary *formParam = [NSMutableDictionary new];
+    //拼接多明细表单上传的数据
+    NSMutableArray *dataArr = [NSMutableArray new];
+    
+    for (UITableView *tableView in self.dView.tableViewArr) {
+        [tableView endEditing:YES];
+        
+        id obj = tableView.dataArray[0];
+        if ([obj isKindOfClass:[FormModel class]]) {
+            for (int i = 0; i<_listArr.count; i++) {
+                FormModel *model = _listArr[i];
+                for (int j = 0; j < model.showItems.count; j++) {
+                    DetailFormModel *detailModel = model.showItems[j];
+                    /*判断必填项*/
+                    if ([detailModel.fd_allowblank isEqualToString:@"F"] || [detailModel.fd_allowblank isEqualToString:@"necessaryField"]) {
+                        if (detailModel.fd_value.length == 0) {
+                            [JOShowMessageFromNavi showDropViewWithMessage:@"必填项不能为空!" ToNavi:self.navigationController withColor:nil];
+                            [MBProgressHUD hideHUDForView:self.view];
+                            return;
+                        }else{
+                            [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
+                        }
+                    }else{
+                        [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
+                    }
+                }
+                
+                for (int j = 0; j < model.hideItems.count; j++) {
+                    DetailFormModel *detailModel = model.hideItems[j];
+                    [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
+                }
+            }
+            
+        }else{
+            NSMutableArray *gridDataArr = [NSMutableArray new];
+            NSString *dgCaller = @"";
+            for (int i = 0; i < tableView.dataArray.count; i++) {
+                NSMutableDictionary *gridDataDic = [NSMutableDictionary new];
+                MoreGridModel *model = tableView.dataArray[i];
+                /*特殊处理:配件用料,当类型选择为辅材且数量大于0时,必须要输入新设备/仓库名称和编号*/
+                NSString *typeStr = @"",*codeStr = @"",*newDevice = @"",*shuLiang = @"";
+                for (int j = 0; j < model.showItems.count; j++) {
+                    DetailgridModel *detailModel = model.showItems[j];
+                    if ([detailModel.dg_value isEqualToString:@"PROD"] || [detailModel.dg_value isEqualToString:@"辅材"]) {
+                        typeStr = @"PROD";
+                    }
+                    if ([detailModel.dg_field isEqualToString:@"dd_ordercode"]) {
+                        codeStr = detailModel.dg_value;
+                    }
+                    if ([detailModel.dg_field isEqualToString:@"dd_othcode"]) {
+                        newDevice = detailModel.dg_value;
+                    }
+                    if ([detailModel.dg_field isEqualToString:@"dd_qty"]) {
+                        shuLiang = detailModel.dg_value;
+                    }
+                    /*判断必填项*/
+                    if ([detailModel.dg_logictype isEqualToString:@"F"] || [detailModel.dg_logictype isEqualToString:@"necessaryField"]) {
+                        if (detailModel.dg_value.length == 0) {
+                            [JOShowMessageFromNavi showDropViewWithMessage:@"明细必填项不能为空!" ToNavi:self.navigationController withColor:nil];
+                            [MBProgressHUD hideHUDForView:self.view];
+                            return;
+                        }else{
+                            [gridDataDic addEntriesFromDictionary:@{detailModel.dg_field:FORMAT(@"%@",detailModel.dg_value != nil ? detailModel.dg_value:@"")}];
+                        }
+                    }else{
+                        [gridDataDic addEntriesFromDictionary:@{detailModel.dg_field:FORMAT(@"%@",detailModel.dg_value != nil ? detailModel.dg_value:@"")}];
+                    }
+                }
+                /*特殊处理:配件用料,当类型选择为辅材且数量大于0时,必须要输入新设备/仓库名称和编号*/
+                if ([typeStr isEqualToString:@"PROD"] && [shuLiang intValue] > 0) {
+                    if (newDevice.length == 0 || codeStr.length == 0) {
+                        [JOShowMessageFromNavi showDropViewWithMessage:FORMAT(@"明细%d的编号和新设备/仓库名称不能为空",i+1) ToNavi:self.navigationController withColor:nil];
+                        [MBProgressHUD hideHUDForView:self.view];
+                        return;
+                    }
+                }
+                
+                for (int j = 0; j < model.hideItems.count; j++) {
+                    DetailgridModel *detailModel = model.hideItems[j];
+                    [gridDataDic addEntriesFromDictionary:@{detailModel.dg_field:FORMAT(@"%@",detailModel.dg_value != nil ? detailModel.dg_value:@"")}];
+                }
+                [gridDataArr addObject:gridDataDic];
+                dgCaller = model.dgcaller;
+            }
+            NSDictionary *dgDic = @{
+                                    @"dgcaller":dgCaller,
+                                    @"dgData":gridDataArr,
+                                    };
+            if (multidetailgrid) {
+                [dataArr addObject:dgDic];
+            }else
+                dataArr = gridDataArr;
+        }
+    }
+    
+    //主表
+    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:formParam options:NSJSONWritingPrettyPrinted error:nil];
+    NSString *formStr=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
+    
+    //多明细表
+    NSData *gridData = [NSJSONSerialization dataWithJSONObject:dataArr options:NSJSONWritingPrettyPrinted error:nil];
+    NSString *gridStr = [[NSString alloc] initWithData:gridData encoding:NSUTF8StringEncoding];
+    if (dataArr.count == 0) {
+        gridStr = @"";
+    }
+    
+    SLog(@"主表合并的东西:%@",formParam);
+    SLog(@"多明细表合并的东西:%@",dataArr);
+    
+    NSString *url = [NSString stringWithFormat:@"%@mobile/device/saveAndSubmitDeviceChange.action",g_id];
+    
+    if (self.idStr) {
+        url = [NSString stringWithFormat:@"%@mobile/device/updateAndSubmitDeviceChange.action",g_id];
+    }
+    
+    NSDictionary *dic = @{
+                          @"caller":_caller,
+                          @"formStore":formStr,
+                          @"gridStore":multidetailgrid ? @"":gridStr,
+                          @"othergridStore":multidetailgrid ? gridStr:@"",
+                          @"master":g_master,
+                          @"sessionUser":g_sessionUser,
+                          @"sessionId":g_sessionId,
+                          @"id":self.idStr ? self.idStr : @"0"
+                          };
+    
+    SLog(@"aaaaaaaa:%@ --- url:%@",dic,url);
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    UASNetworkManager *manager = [UASNetworkManager shareManager];
+    
+    [manager request:url method:POST parameters:dic progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        [MBProgressHUD hideHUDForView:self.view];
+        
+        SLog(@"chenggong---:%@",responseObject);
+        
+        NSString *specialStr = responseObject[@"exceptionInfo"];
+        //异常
+        if (specialStr.length != 0) {
+            
+            [JOShowMessageFromNavi showDropViewWithMessage:specialStr ToNavi:self.navigationController withColor:nil];
+            
+            return;
+        }
+        
+        NSDictionary *dic =  responseObject;
+
+        NSString *idStr = @"";
+
+        idStr = FORMAT(@"%@",[dic objectForKey:_cModel.fo_keyfield]);
+
+        if (idStr.length == 0 || [idStr isEqualToString:@"(null)"]) {
+            idStr = [NSString stringWithFormat:@"%@",dic[@"keyvalue"]];
+        }
+        
+        [self selectShenPiPersonWithDanJuId:idStr];
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        [MBProgressHUD hideHUDForView:self.view];
+        
+        SLog(@"错误的原因:%@",error);
+        ErrorInfomation;
+        
+    }];
+    
+}
+
+#pragma mark --- 提交审核人
+-(void)selectShenPiPersonWithDanJuId:(NSString *)idStr
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    
+    UASNetworkManager *manager1 = [UASNetworkManager manager];
+    manager1.requestSerializer = [AFHTTPRequestSerializer serializer];
+    manager1.responseSerializer = [AFHTTPResponseSerializer serializer];
+    
+    NSString *url = [NSString stringWithFormat:@"%@common/getMultiNodeAssigns.action?caller=%@&id=%@&sessionId=%@&master=%@&sessionUser=%@",g_id,_caller,idStr,g_sessionId,g_master,g_sessionUser];
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    [manager1 request:url method:GET parameters:nil progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        
+        [MBProgressHUD hideHUDForView:self.view];
+        
+        NSData *data = responseObject;
+        
+        NSMutableArray *dataArray = [[NSMutableArray alloc]init];
+        
+        id rootDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
+        
+        NSString *idString = @"";
+        
+        for (id obj in rootDic[@"assigns"])
+        {
+            for (id obk in obj[@"JP_CANDIDATES"]) {
+                
+                [dataArray addObject:obk];
+            }
+            
+            NSString * str = [NSString stringWithFormat:@"%@",obj[@"JP_NODEID"]];
+            idString = str;
+            
+        }
+        
+        if (dataArray.count == 0) {
+            /*详情页*/
+            DeviceFormVC *vc = [DeviceFormVC new];
+            vc.idStr = idStr;
+            vc.caller = self.caller;
+            vc.title = self.title;
+            vc.status = @"已提交";
+            [self.navigationController pushViewController:vc animated:YES];
+
+        }else
+        {
+            YPSelectShenPiPersonVC *selectVC = [[YPSelectShenPiPersonVC alloc]init];
+            selectVC.dataArr = dataArray;
+            selectVC.backID = idString;
+            selectVC.master = @"";
+            //选择审批人之后的回调,跳转详情页
+            selectVC.block = ^{
+                DeviceFormVC *vc = [DeviceFormVC new];
+                vc.idStr = idStr;
+                vc.caller = self.caller;
+                vc.title = self.title;
+                vc.status = @"已提交";
+                [self.navigationController pushViewController:vc animated:YES];
+            };
+            [self.navigationController pushViewController:selectVC animated:YES];
+        }
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        
+        [MBProgressHUD hideHUDForView:self.view];
+        
+        DLog(@"什么错误呀==%@",error);
+    }];
+}
+
+#pragma mark --- 获取配置数据
+-(void)getFormDataFromSever
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+
+    NSString *url = self.idStr ? [NSString stringWithFormat:@"%@mobile/getformandgriddetail.action",g_id] : [NSString stringWithFormat:@"%@mobile/common/getformandgriddetail.action",g_id];
+    NSDictionary *param = @{
+                            @"id":self.idStr?self.idStr:@"0",
+                            @"caller":self.caller,
+                            @"condition":@"1=1",
+                            @"sessionId":g_sessionId,
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    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);
+        
+        //单据配置时标识状态码字段
+        _cModel = [[ConfigModel alloc]initWithDic:responseObject[@"config"]];
+        
+        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;
+            }
+            
+            if ([self.caller isEqualToString:@"DeviceChange!Maintain"]) {
+                detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
+                if (self.specialArr.count != 0 ) {
+                    for (int z = 0; z < self.specialArr.count; z++) {
+                        if ([[_specialArr[z] objectForKey:@"fd_field"] isEqualToString: detailFormModel.fd_field]) {
+                            detailFormModel.fd_value = FORMAT(@"%@",[_specialArr[z] objectForKey:@"fd_value"]);
+                        }
+                    }
+                }
+                if ([detailFormModel.fd_field isEqualToString:@"dc_emcode"]) {
+                    detailFormModel.fd_value = g_emcode;
+                }
+                if ([detailFormModel.fd_field isEqualToString:@"dc_emname"]) {
+                    detailFormModel.fd_value = g_personChineseName;
+                }
+            }else
+                detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
+        }
+        
+        for (id obj in model.hideItems) {
+            DetailFormModel *detailFormModel = obj;
+            detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
+        }
+        
+        [_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
+{
+    self.dView = [[DeviceSpecialView alloc]initWithFrame:CGRectMake(0, 0, self_width, self_height-50)];
+    self.dView.statuType = Enter;
+    self.dView.idStr = self.idStr;
+    self.dView.gridData = arr;
+    [self.view addSubview:self.dView];
+    
+    @weakify(self)
+    self.dView.msgBlock = ^(NSString *msgStr) {
+        @strongify(self)
+        [JOShowMessageFromNavi showDropViewWithMessage:msgStr ToNavi:self.navigationController withColor:nil];
+    };
+    
+    __weak typeof(self)  weakSelf = self;
+    self.dView.block = ^(int whichTextView,UITableView *tableView) {
+        __strong typeof(DeviceEnterFormVC)  *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];
+            
+            /*保养用料-特殊处理*/
+            if ([fieldStr isEqualToString:@"dd_ordercode"] || [fieldStr isEqualToString:@"dd_othcode"]) {//类型选择/新设备编号选择
+                NSString *valueStr = @"";
+                for (int i = 0; i < model.showItems.count; i ++) {
+                    DetailgridModel *detailModel = model.showItems[i];
+                    if ([detailModel.dg_field isEqualToString:@"dd_type"]) {
+                        valueStr = FORMAT(@"%@",detailModel.dg_value);
+                    }
+                }
+                for (int i = 0; i < model.hideItems.count; i ++) {
+                    DetailgridModel *detailModel = model.hideItems[i];
+                    if ([detailModel.dg_field isEqualToString:@"dd_type"]) {
+                        valueStr = FORMAT(@"%@",detailModel.dg_value);
+                    }
+                }
+                if ([valueStr isEqualToString:@"配件"]) {
+                    valueStr = @"DEVICE";
+                }
+                if ([valueStr isEqualToString:@"辅材"]) {
+                    valueStr = @"PROD";
+                }
+                
+                if (valueStr.length == 0) {
+                    [JOShowMessageFromNavi showDropViewWithMessage:@"请先选择类型" ToNavi:strongSelf.navigationController withColor:nil];
+                }else{
+                    LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
+                    if ([valueStr isEqualToString:@"DEVICE"]) {
+                        if ([fieldStr isEqualToString:@"dd_ordercode"]) {
+                            vc.caller = @"DeviceNew";
+                            vc.type = @"SpecialGrid";
+                            vc.mainCaller = model.dgcaller;
+                            vc.filed = @"1devcode";
+                        }
+                        if ([fieldStr isEqualToString:@"dd_othcode"]) {
+                            vc.caller = @"DeviceNew";
+                            vc.type = @"SpecialGrid";
+                            vc.mainCaller = model.dgcaller;
+                            vc.filed = @"2decode";
+                        }
+                    }
+                    if ([valueStr isEqualToString:@"PROD"]) {
+                        if ([fieldStr isEqualToString:@"dd_ordercode"]) {
+                            vc.caller = @"ProdOthDevice";
+                            vc.type = @"SpecialGrid";
+                            vc.mainCaller = model.dgcaller;
+                            vc.filed = @"2prodcode";
+                        }
+                        if ([fieldStr isEqualToString:@"dd_othcode"]) {
+                            vc.caller = @"WareHouse!Dev";
+                            vc.type = @"SpecialGrid";
+                            vc.mainCaller = model.dgcaller;
+                            vc.filed = @"1whcode";
+                        }
+                    }
+                    
+                    vc.title = titleStr;
+                    
+                    [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
+                        
+                        for (int z = 0; z < arr.count; z++) {
+                            NSDictionary *arrDic = arr[z];
+                            
+                            NSString *backField = @"";
+                            
+                            //从表回调
+                            backField = FORMAT(@"%@",[arrDic objectForKey:@"ds_gridfield"]);
+                            /*显示的*/
+                            for (int i = 0; i < model.showItems.count; i++) {
+                                DetailgridModel *dmodel = model.showItems[i];
+                                if ([dmodel.dg_field isEqualToString:backField]) {
+                                    dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
+                                }
+                            }
+                            /*隐藏的*/
+                            for (int i = 0; i < model.hideItems.count; i++) {
+                                DetailgridModel *dmodel = model.hideItems[i];
+                                if ([dmodel.dg_field isEqualToString:backField]) {
+                                    dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
+                                }
+                            }
+                        }
+                        
+                        [tableView reloadData];
+                    }];
+                    
+                    [strongSelf.navigationController pushViewController:vc animated:YES];
+                }
+            }
+            
+            else{
+                if ([typeStr isEqualToString:@"C"]) { //下拉框跳转界面
+                    strongSelf->_date.hidden = YES;
+                    strongSelf->_acceptTableView = nil;
+                    [strongSelf.view endEditing:YES];
+                    
+                    DocumentDataVC *dataVC = [[DocumentDataVC alloc]init];
+                    
+                    dataVC.caller = model.dgcaller;
+                    
+                    dataVC.field = fieldStr;
+                    
+                    dataVC.type = typeStr;
+                    
+                    dataVC.block = ^(NSDictionary *listData,NSString *showKey,NSDictionary *chain){
+                        
+                        detailModel.dg_value = [listData objectForKey:@"DISPLAY"];
+                        
+                        if ([fieldStr isEqualToString:@"dd_type"]) {
+                            for (int i = 0; i < model.showItems.count; i ++) {
+                                DetailgridModel *detailModel = model.showItems[i];
+                                if (![detailModel.dg_field isEqualToString:@"dd_type"]) {
+                                    detailModel.dg_value = @"";
+                                }
+                            }
+                            for (int i = 0; i < model.hideItems.count; i ++) {
+                                DetailgridModel *detailModel = model.hideItems[i];
+                                if (![detailModel.dg_field  isEqualToString:@"dd_type"]) {
+                                    detailModel.dg_value = @"";
+                                }
+                            }
+                        }
+                        
+                        [tableView reloadData];
+                    };
+                    
+                    dataVC.title = titleStr;
+                    
+                    [strongSelf.navigationController pushViewController:dataVC animated:YES];
+                }
+                
+                else if ([typeStr isEqualToString:@"SF"] || [typeStr isEqualToString:@"DF"]) { //单选跳转界面
+                    strongSelf->_date.hidden = YES;
+                    strongSelf->_acceptTableView = nil;
+                    [strongSelf.view endEditing:YES];
+                    
+                    LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
+                    vc.caller = strongSelf->_caller;
+                    vc.type = @"grid";
+                    vc.mainCaller = strongSelf->_caller;
+                    
+                    if(strongSelf->multidetailgrid){
+                        //多明细表的要用多明细表自己的caller
+                        vc.mainCaller = model.dgcaller;
+                    }
+                    
+                    if ([[NSString stringWithFormat:@"%@",detailModel.dg_findfunctionname] containsString:@"|"]) {
+                        vc.caller = [NSString stringWithFormat:@"%@",detailModel.dg_findfunctionname];
+                        
+                    }else{
+                        [JOShowMessageFromNavi showDropViewWithMessage:@"服务器配置错误" ToNavi:strongSelf.navigationController withColor:nil];
+                    }
+                    
+                    vc.filed = fieldStr;
+                    vc.title = titleStr;
+                    
+                    [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
+                        
+                        for (int z = 0; z < arr.count; z++) {
+                            NSDictionary *arrDic = arr[z];
+                            
+                            NSString *backField = @"";
+                            
+                            //从表回调
+                            backField = FORMAT(@"%@",[arrDic objectForKey:@"ds_gridfield"]);
+                            /*显示的*/
+                            for (int i = 0; i < model.showItems.count; i++) {
+                                DetailgridModel *dmodel = model.showItems[i];
+                                if ([dmodel.dg_field isEqualToString:backField]) {
+                                    dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
+                                }
+                            }
+                            /*隐藏的*/
+                            for (int i = 0; i < model.hideItems.count; i++) {
+                                DetailgridModel *dmodel = model.hideItems[i];
+                                if ([dmodel.dg_field isEqualToString:backField]) {
+                                    dmodel.dg_value = [dic objectForKey:[arrDic objectForKey:@"ds_dbfindfield"]];
+                                }
+                            }
+                        }
+                        
+                        [tableView reloadData];
+                    }];
+                    
+                    [strongSelf.navigationController pushViewController:vc animated:YES];
+                }
+                
+                else if ([typeStr isEqualToString:@"MF"]) { //多选跳转界面
+                    
+                    strongSelf->_date.hidden = YES;
+                    strongSelf->_acceptTableView = nil;
+                    [strongSelf.view endEditing:YES];
+                    
+                    MFselectVC *dataVC = [[MFselectVC alloc]init];
+                    
+                    dataVC.caller = strongSelf->_caller;
+                    
+                    dataVC.title = titleStr;
+                    
+                    dataVC.field = fieldStr;
+                    
+                    dataVC.type = typeStr;
+                    
+                    dataVC.block = ^(NSArray *backData,NSString *showKey,NSMutableArray *dgField){
+                        for (int a = 0; a < dgField.count; a++) {
+                            /*显示的*/
+                            for (int i = 0; i < model.showItems.count; i++) {
+                                DetailgridModel *dmodel = model.showItems[i];
+                                NSString *valueStr = @"";
+                                if ([dmodel.dg_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
+                                    for (int i = 0; i < backData.count; i++) {
+                                        valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
+                                        if (i != (backData.count-1)) {
+                                            valueStr = [valueStr stringByAppendingString:@"#"];
+                                        }
+                                    }
+                                    
+                                    dmodel.dg_value = valueStr;
+                                }
+                            }
+                            /*隐藏的*/
+                            for (int i = 0; i < model.hideItems.count; i++) {
+                                DetailgridModel *dmodel = model.hideItems[i];
+                                NSString *valueStr = @"";
+                                if ([dmodel.dg_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
+                                    for (int i = 0; i < backData.count; i++) {
+                                        valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
+                                        if (i != (backData.count-1)) {
+                                            valueStr = [valueStr stringByAppendingString:@"#"];
+                                        }
+                                    }
+                                    
+                                    dmodel.dg_value = valueStr;
+                                }
+                            }
+                        }
+                        
+                        [tableView reloadData];
+                    };
+                    
+                    [strongSelf.navigationController pushViewController:dataVC animated:YES];
+                }
+                
+                else if ([typeStr isEqualToString:@"D"]) { //日期类型 - UIDatePickerModeDate
+                    
+                    _textTag = whichTextView;
+                    _acceptTableView = tableView;
+                    strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDate;
+                    [strongSelf.view addSubview:strongSelf->_date];
+                    strongSelf->_date.hidden = NO;
+                    [strongSelf.view endEditing:YES];
+                }
+                
+                else if ([typeStr isEqualToString:@"DT"]) { //日期类型- UIDatePickerModeDateAndTime
+                    
+                    _textTag = whichTextView;
+                    _acceptTableView = tableView;
+                    strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDateAndTime;
+                    [strongSelf.view addSubview:strongSelf->_date];
+                    strongSelf->_date.hidden = NO;
+                    [strongSelf.view endEditing:YES];
+                    
+                }
+            }
+
+        }
+        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 ([typeStr isEqualToString:@"C"]) { //下拉框跳转界面
+                strongSelf->_date.hidden = YES;
+                strongSelf->_acceptTableView = nil;
+                [strongSelf.view endEditing:YES];
+                
+                DocumentDataVC *dataVC = [[DocumentDataVC alloc]init];
+                
+                dataVC.caller = strongSelf->_caller;
+                
+                dataVC.field = fieldStr;
+                
+                dataVC.type = typeStr;
+                
+                dataVC.block = ^(NSDictionary *listData,NSString *showKey,NSDictionary *chain){
+                    
+                    detailModel.fd_value = [listData objectForKey:@"VALUE"];
+                    
+                    [tableView reloadData];
+                };
+                
+                dataVC.title = titleStr;
+                
+                [strongSelf.navigationController pushViewController:dataVC animated:YES];
+            }
+            
+            else if ([typeStr isEqualToString:@"SF"] || [typeStr isEqualToString:@"DF"]) { //单选跳转界面
+                strongSelf->_date.hidden = YES;
+                strongSelf->_acceptTableView = nil;
+                [strongSelf.view endEditing:YES];
+                
+                NSString *formType = @"";
+                LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
+                formType = @"form";
+                vc.type = @"form";
+                vc.caller = strongSelf->_caller;
+                vc.filed = fieldStr;
+                vc.title = titleStr;
+                
+                //特殊处理:保养单主表设备编号的DBFIND的condition要加上公司dc_cop
+                if ([fieldStr isEqualToString:@"dc_devcode"]) {
+                    NSString *valueStr = @"";
+                    for (int i = 0; i < model.showItems.count; i ++) {
+                        DetailFormModel *detailModel = model.showItems[i];
+                        if ([detailModel.fd_field isEqualToString:@"dc_cop"]) {
+                            valueStr = FORMAT(@"%@",detailModel.fd_value);
+                        }
+                    }
+                    for (int i = 0; i < model.hideItems.count; i ++) {
+                        DetailFormModel *detailModel = model.hideItems[i];
+                        if ([detailModel.fd_field isEqualToString:@"dc_cop"]) {
+                            valueStr = FORMAT(@"%@",detailModel.fd_value);
+                        }
+                    }
+                    vc.specialConditon = @{@"dc_cop":valueStr};
+                }
+                
+                [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
+                    
+                    for (int z = 0; z < arr.count; z++) {
+                        NSDictionary *arrDic = arr[z];
+                        
+                        NSString *backField = @"";
+                        //主表回调
+                        backField = FORMAT(@"%@",[arrDic objectForKey:@"field"]);
+                        /*显示的*/
+                        for (int i = 0; i < model.showItems.count; i++) {
+                            DetailFormModel *dmodel = model.showItems[i];
+                            if ([dmodel.fd_field isEqualToString:backField]) {
+                                dmodel.fd_value = [dic objectForKey:[arrDic objectForKey:@"dbGridField"]];
+                            }
+                        }
+                        /*隐藏的*/
+                        for (int i = 0; i < model.hideItems.count; i++) {
+                            DetailFormModel *dmodel = model.hideItems[i];
+                            if ([dmodel.fd_field isEqualToString:backField]) {
+                                dmodel.fd_value = [dic objectForKey:[arrDic objectForKey:@"dbGridField"]];
+                            }
+                        }
+                    }
+                    
+                    [tableView reloadData];
+                }];
+                
+                [strongSelf.navigationController pushViewController:vc animated:YES];
+            }
+            
+            else if ([typeStr isEqualToString:@"MF"]) { //多选跳转界面
+                
+                strongSelf->_date.hidden = YES;
+                strongSelf->_acceptTableView = nil;
+                [strongSelf.view endEditing:YES];
+                
+                MFselectVC *dataVC = [[MFselectVC alloc]init];
+                
+                dataVC.caller = strongSelf->_caller;
+                
+                dataVC.title = titleStr;
+                
+                dataVC.field = fieldStr;
+                
+                dataVC.type = typeStr;
+                
+                dataVC.block = ^(NSArray *backData,NSString *showKey,NSMutableArray *dgField){
+                    for (int a = 0; a < dgField.count; a++) {
+                        /*显示的*/
+                        for (int i = 0; i < model.showItems.count; i++) {
+                            DetailFormModel *dmodel = model.showItems[i];
+                            NSString *valueStr = @"";
+                            if ([dmodel.fd_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
+                                for (int i = 0; i < backData.count; i++) {
+                                    valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
+                                    if (i != (backData.count-1)) {
+                                        valueStr = [valueStr stringByAppendingString:@"#"];
+                                    }
+                                }
+                                
+                                dmodel.fd_value = valueStr;
+                            }
+                        }
+                        /*隐藏的*/
+                        for (int i = 0; i < model.hideItems.count; i++) {
+                            DetailFormModel *dmodel = model.hideItems[i];
+                            NSString *valueStr = @"";
+                            if ([dmodel.fd_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
+                                for (int i = 0; i < backData.count; i++) {
+                                    valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
+                                    if (i != (backData.count-1)) {
+                                        valueStr = [valueStr stringByAppendingString:@"#"];
+                                    }
+                                }
+                                
+                                dmodel.fd_value = valueStr;
+                            }
+                        }
+                    }
+                    
+                    [tableView reloadData];
+                };
+                
+                [strongSelf.navigationController pushViewController:dataVC animated:YES];
+            }
+            
+            else if ([typeStr isEqualToString:@"D"]) { //日期类型 - UIDatePickerModeDate
+                
+                _textTag = whichTextView;
+                _acceptTableView = tableView;
+                strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDate;
+                [strongSelf.view addSubview:strongSelf->_date];
+                strongSelf->_date.hidden = NO;
+                [strongSelf.view endEditing:YES];
+            }
+            
+            else if ([typeStr isEqualToString:@"DT"]) { //日期类型- UIDatePickerModeDateAndTime
+                
+                _textTag = whichTextView;
+                _acceptTableView = tableView;
+                strongSelf->_date.datePicker.datePickerMode = UIDatePickerModeDateAndTime;
+                [strongSelf.view addSubview:strongSelf->_date];
+                strongSelf->_date.hidden = NO;
+                [strongSelf.view endEditing:YES];
+                
+            }
+ 
+        }
+    };
+}
+
+#pragma mark -- 时期选择
+-(void)onDateDO
+{
+    NSDate *selected = [_date date];
+    
+    int a = _textTag  / 1000;
+    int b = _textTag  % 1000;
+    
+    id obj = _acceptTableView.dataArray[a];
+    if ([obj isKindOfClass:[MoreGridModel class]]) {
+        NSString *dateStr = @"";
+        if (_date.datePicker.datePickerMode == UIDatePickerModeDate) {
+            dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd"];
+        }else{
+            dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd HH:mm:ss"];
+        }
+        
+        MoreGridModel *model = _acceptTableView.dataArray[a];
+        DetailgridModel *detailModel = model.showItems[b];
+        detailModel.dg_value = dateStr;
+        [_acceptTableView reloadData];
+    }
+    else{
+        NSString *dateStr = @"";
+        if (_date.datePicker.datePickerMode == UIDatePickerModeDate) {
+            dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd"];
+        }else{
+            dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd HH:mm:ss"];
+        }
+        
+        FormModel *model = _listArr[a];
+        DetailFormModel *detailModel = model.showItems[b];
+        detailModel.fd_value = dateStr;
+        [_acceptTableView reloadData];
+    }
+    
+}
+
+-(void)onDateClear
+{
+    int a = _textTag  / 1000;
+    int b = _textTag  % 1000;
+    id obj = _acceptTableView.dataArray[a];
+    if ([obj isKindOfClass:[MoreGridModel class]]) {
+        NSString *dateStr = @"";
+        
+        MoreGridModel *model = _acceptTableView.dataArray[a];
+        DetailgridModel *detailModel = model.showItems[b];
+        detailModel.dg_value = dateStr;
+        [_acceptTableView reloadData];
+        
+    }else{
+        NSString *dateStr = @"";
+        
+        FormModel *model = _listArr[a];
+        DetailFormModel *detailModel = model.showItems[b];
+        detailModel.fd_value = dateStr;
+        [_acceptTableView reloadData];
+    }
+}
+
+#pragma mark --- 创建UI
+-(void)createUI
+{
+    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
+    btn.frame = CGRectMake(0, 0, 21, 21);
+    UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 21, 21)];
+    image.image = [UIImage imageNamed:@"UU_device_list"];
+    [btn addSubview:image];
+    [btn addTarget:self action:@selector(clickRightBtn) forControlEvents:UIControlEventTouchUpInside];
+    
+    if (!self.idStr) {
+        UIBarButtonItem *bbi = [[UIBarButtonItem alloc]initWithCustomView:btn];
+        self.navigationItem.rightBarButtonItems = @[bbi];
+    }
+    
+    UIButton *uploadBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    uploadBtn.layer.masksToBounds = YES;
+    uploadBtn.layer.cornerRadius = 5;
+    [uploadBtn setBackgroundColor:HexColor(@"#33A2EE") forState:UIControlStateNormal];
+    [uploadBtn setBackgroundColor:HexColor(@"#8EB2CD") forState:UIControlStateDisabled];
+    [uploadBtn setBackgroundColor:HexColor(@"#2D84C0") forState:UIControlStateHighlighted];
+    [uploadBtn setTitle:Localized(@"UU_custom_submit") forState:UIControlStateNormal];
+    uploadBtn.userInteractionEnabled = YES;
+    [uploadBtn addTarget:self action:@selector(uploadFormAction) forControlEvents:UIControlEventTouchUpInside];
+    [self.view addSubview:uploadBtn];
+    [uploadBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.equalTo(self.view).offset(20);
+        make.right.equalTo(self.view).offset(-20);
+        make.bottom.equalTo(self.view).offset(-5);
+        make.height.mas_equalTo(40);
+    }];
+    
+    _date = [[JXDatePicker alloc] initWithFrame:CGRectMake(0, 0, self_width, self_height)];
+    _date.delegate = self;
+    _date.didSelect = @selector(onDateDO);
+    _date.didClear = @selector(onDateClear);
+}
+
+#pragma mark --- 列表
+-(void)clickRightBtn
+{
+    LYYDMDataSearchVC *dListVC = [[LYYDMDataSearchVC alloc]init];
+    dListVC.title = self.title;
+    dListVC.caller = self.caller;
+    if ([self.title isEqualToString:Localized(@"UU_Maintenance")]) {
+        dListVC.mustStr = @"保养维护";
+    }else{
+        dListVC.mustStr = self.title;
+    }
+    [self.navigationController pushViewController:dListVC 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

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

@@ -8,7 +8,24 @@
 #import "UASBaseVC.h"
 
 @interface DeviceFormVC : UASBaseVC
-
+/**
+ 设备查询传的设备编号
+ */
 @property (nonatomic,strong) NSString *deviceCode;
 
+/**
+ 正常单据传的caller;如保养维护【保修单】
+ */
+@property (nonatomic,strong) NSString *caller;
+
+/**
+ 正常单据传的单据ID
+ */
+@property (nonatomic,strong) NSString *idStr;
+
+/**
+ 单据状态
+ */
+@property (nonatomic,strong) NSString *status;
+
 @end

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

@@ -11,6 +11,10 @@
 #import "LYYFuJianModel.h"
 #import "LYYReadingVC.h"
 #import "LYYBigImageVC.h"
+#import "KxMenu.h"
+#import "DeviceEnterFormVC.h"
+#import "LYYDMDataSearchVC.h"
+#import "LYYDocumentVC.h"
 
 @interface DeviceFormVC ()
 @property (nonatomic,strong) NSMutableArray *gridData;//从表数据
@@ -18,32 +22,144 @@
 
 @implementation DeviceFormVC
 {
-    BOOL multidetailgrid;//判断是否有多明细表
+    BOOL multidetailgrid; //判断是否有多明细表
     NSMutableArray *_listArr; //获取配置表的数据(主表)
-    
+    NSMutableArray *_specilArr; //设备信息转单需要特殊带过去的赋值
 }
 - (void)viewDidLoad {
     [super viewDidLoad];
-    self.title = @"设备信息";
     
     _listArr = [NSMutableArray new];
     _gridData = [NSMutableArray new];
+    _specilArr = [NSMutableArray new];
     multidetailgrid = NO;
     
     /*获取配置数据*/
     [self getFormDataFromSever];
 }
 
+#pragma mark --- 重新提交单据
+-(void)reloadFormAction
+{
+    [UASAlertView showWithTitle:nil content:@"是否确定反提交该单据?" sureTitle:Localized(@"UU_custom_sure") cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+        
+        if (index == 2) {
+            [MBProgressHUD showMessage:@"" toView:self.view];
+            
+            NSString *url = [NSString stringWithFormat:@"%@mobile/commonres.action",g_id];
+            
+            if([_caller isEqualToString:@"DeviceChange!Inspect"]){
+                url = [NSString stringWithFormat:@"%@mobile/device/deviceInspectRes.action",g_id];
+            }
+            
+            url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+            
+            NSDictionary *dic = @{
+                                  @"caller":self.caller,
+                                  @"id":self.idStr,
+                                  @"sessionId":g_sessionId,
+                                  };
+            
+            UASNetworkManager *manager = [UASNetworkManager shareManager];
+            manager.responseSerializer = [AFJSONResponseSerializer serializer];
+            
+            [manager request:url method:POST parameters:dic progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+                [MBProgressHUD hideHUDForView:self.view];
+
+                DeviceEnterFormVC *vc = [DeviceEnterFormVC new];
+                vc.caller = self.caller;
+                vc.title = self.title;
+                vc.idStr = self.idStr;
+                [self.navigationController pushViewController:vc animated:YES];
+                
+            } failure:^(NSURLSessionDataTask *task, NSError *error) {
+                [MBProgressHUD hideHUDForView:self.view];
+                DLog(@"请求失败:%@",error);
+                ErrorInfomation
+            }];
+        }
+    }];
+}
+
+#pragma mark --- 删除单据
+-(void)deleteFormAction
+{
+    [UASAlertView showWithTitle:nil content:@"确认删除该条单据?" sureTitle:Localized(@"UU_custom_sure") cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+        
+        if (index == 2) {
+            [MBProgressHUD showMessage:@"" toView:self.view];
+            
+            NSString *url = [NSString stringWithFormat:@"%@mobile/commondelete.action",g_id];
+            
+            url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+            
+            NSDictionary *dic = @{
+                                  @"caller":self.caller,
+                                  @"id":self.idStr,
+                                  @"sessionId":g_sessionId,
+                                  };
+            UASNetworkManager *manager = [UASNetworkManager shareManager];
+            manager.responseSerializer = [AFJSONResponseSerializer serializer];
+            
+            [manager request:url method:POST parameters:dic progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+                
+                [MBProgressHUD hideHUDForView:self.view];
+                
+                [JOShowMessageFromNavi showDropViewWithMessage:@"删除成功" ToNavi:self.navigationController withColor:nil];
+                
+                if ([self.caller isEqualToString:@"DeviceChange!Repair"]) {
+
+                    UIViewController *vc = (UIViewController *)[self.navigationController.viewControllers objectAtIndex:2];
+                    if([vc isKindOfClass:[LYYDMDataSearchVC class]]){
+                        [self.navigationController popToViewController:self.navigationController.viewControllers[2] animated:YES];
+                    }else{
+                        [self.navigationController popViewControllerAnimated:YES];
+                    }
+                }else{
+                    NSArray *arr = self.navigationController.viewControllers;
+                    if (arr.count > 4) {
+                        [self.navigationController popToViewController:self.navigationController.viewControllers[3] animated:YES];
+                    }else{
+                        [self.navigationController popToViewController:self.navigationController.viewControllers[1] animated:YES];
+                    }
+                }
+                
+            } failure:^(NSURLSessionDataTask *task, NSError *error) {
+                
+                [MBProgressHUD hideHUDForView:self.view];
+                DLog(@"请求失败:%@",error);
+                ErrorInfomation
+            }];
+            
+        }
+    }];
+}
+
 #pragma mark --- 获取配置数据
 -(void)getFormDataFromSever
 {
     [MBProgressHUD showMessage:@"" toView:self.view];
-    NSString *url = [NSString stringWithFormat:@"http://10.1.80.28:8080/ERP/mobile/device/getDeviceInfo.action"];
+    
+    NSString *url;
+    NSDictionary *param;
+    
+    if (self.caller) {
+        url = [NSString stringWithFormat:@"%@mobile/getformandgriddetail.action",g_id];
+        param = @{
+                  @"id":self.idStr?self.idStr:@"0",
+                  @"caller":self.caller,
+                  @"condition":@"1=1",
+                  @"sessionId":g_sessionId,
+                  };
+    }else{
+        url = [NSString stringWithFormat:@"%@mobile/device/getDeviceInfo.action",g_id];
+        param = @{
+                  @"decode":self.deviceCode,
+                  @"sessionId":g_sessionId,
+                  };
+    }
+    
     url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-    NSDictionary *param = @{
-                            @"decode":@"a001",
-//                            @"sessionId":g_sessionId,
-                            };
     
     UASNetworkManager *manager = [UASNetworkManager shareManager];
     manager.responseSerializer = [AFJSONResponseSerializer serializer];
@@ -55,12 +171,39 @@
         NSMutableArray *gridAllDataArr = [NSMutableArray new];
 
         for (id obj in responseObject[@"data"][@"formdetail"]) {
-
             [formAllDataArr addObject:obj];
+            
+            if (self.deviceCode) {
+                DetailFormModel *model = [DetailFormModel mj_objectWithKeyValues:obj];
+                if ([model.fd_field isEqualToString:@"de_code"]) {
+                    NSDictionary *dic = @{@"fd_field":@"dc_devcode",@"fd_value":model.fd_value};
+                    [_specilArr addObject:dic];
+                }
+                if ([model.fd_field isEqualToString:@"de_name"]){
+                    NSDictionary *dic = @{@"fd_field":@"dc_devname",@"fd_value":model.fd_value};
+                    [_specilArr addObject:dic];
+                }
+                if ([model.fd_field isEqualToString:@"de_currentcentercode"]){
+                    NSDictionary *dic = @{@"fd_field":@"dc_oldcentercode",@"fd_value":model.fd_value};
+                    [_specilArr addObject:dic];
+                }
+                if ([model.fd_field isEqualToString:@"de_currentcentername"]){
+                    NSDictionary *dic = @{@"fd_field":@"dc_oldcentername",@"fd_value":model.fd_value};
+                    [_specilArr addObject:dic];
+                }
+                if ([model.fd_field isEqualToString:@"de_workshop"]){
+                    NSDictionary *dic = @{@"fd_field":@"dc_workshop",@"fd_value":model.fd_value};
+                    [_specilArr addObject:dic];
+                }
+                if ([model.fd_field isEqualToString:@"de_currentlinecode"]){
+                    NSDictionary *dic = @{@"fd_field":@"dc_oldlinecode",@"fd_value":model.fd_value};
+                    [_specilArr addObject:dic];
+                }
+            }
         }
         
         formAllDataArr = [NSDictionary changeType:formAllDataArr];
-
+        
         multidetailgrid = [responseObject[@"data"][@"multidetailgrid"] boolValue];
         if (multidetailgrid) {
             for (id obj in responseObject[@"data"][@"othergridetail"]) {
@@ -187,6 +330,12 @@
             }else{
                 detailFormModel.cellHeight = heightStr;
             }
+            detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
+        }
+        
+        for (id obj in model.hideItems) {
+            DetailFormModel *detailFormModel = obj;
+            detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
         }
         
         [_listArr addObject:model];
@@ -261,7 +410,8 @@
             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"]) {
+                NSString *groupStr = FORMAT(@"%@",[obj objectForKey:@"dg_group"]);
+                if ([isShow isEqualToString:@"-1"] && ![typeStr isEqualToString:@"H"] && ![groupStr isEqualToString:@"0"]) {
                     [showArr addObject:obj];
                 }else{
                     [hideArr addObject:obj];
@@ -291,7 +441,17 @@
 #pragma mark --- 配置表单页面
 -(void)creatFormUIWithData:(NSMutableArray *)arr
 {
-    DeviceFormView *view = [[DeviceFormView alloc]initWithFrame:CGRectMake(0, 0, self_width, self_height)];
+    CGRect rect;
+    if (self.status) {
+        if ([self.status isEqualToString:@"已提交"]) {
+            rect = CGRectMake(0, 60, self_width, self_height-110);
+        }else
+            rect = CGRectMake(0, 60, self_width, self_height-60);
+    }else{
+        rect = CGRectMake(0, 0, self_width, self_height);
+    }
+    
+    DeviceFormView *view = [[DeviceFormView alloc]initWithFrame:rect];
     view.statuType = Editing;
     view.gridData = arr;
     [self.view addSubview:view];
@@ -355,7 +515,9 @@
             
             for (NSDictionary *dic in arr) {
                 
-                NSString *ip=[UASUserInfo shareManager].urlIp;
+
+                NSString *ip = [[NSUserDefaults standardUserDefaults] objectForKey:@"ipAndPort"];
+
                 
                 NSString *urlStr = FORMAT(@"%@common/download.action?path=%@&%@",ip,dic[@"fp_path"],mustString);
                 
@@ -410,6 +572,171 @@
         [self.navigationController pushViewController:vc1 animated:YES];
 }
 
+#pragma mark --- 创建UI
+-(void)createUI
+{
+    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
+    btn.frame = CGRectMake(0, 0, 21, 21);
+    UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 21, 21)];
+    image.image = [UIImage imageNamed:@"UU_device_operate"];
+    [btn addSubview:image];
+    [btn addTarget:self action:@selector(clickRightBtn) forControlEvents:UIControlEventTouchUpInside];
+    
+    if (self.deviceCode) {
+        UIBarButtonItem *bbi = [[UIBarButtonItem alloc]initWithCustomView:btn];
+        self.navigationItem.rightBarButtonItems = @[bbi];
+    }
+    
+    if (self.status) {
+        UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self_width, 60)];
+        view.backgroundColor = BGKJ_COLOR;
+        [self.view addSubview:view];
+        
+        UIImageView *_headImage = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 40, 40)];
+        _headImage.layer.masksToBounds = YES;
+        _headImage.layer.cornerRadius = 20;
+        [view addSubview:_headImage];
+        [g_server getHeadImageSmall:g_server.myself.userId imageView:_headImage];
+        
+        UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(CGRectGetMaxX(_headImage.frame)+10, 10, 100, 40)];
+        lbl.text = g_personChineseName;
+        lbl.textColor = HexColor(@"#4A4A4A");
+        lbl.font = FONT_SIZE(15);
+        [view addSubview:lbl];
+        
+        UILabel *statusL = [[UILabel alloc]initWithFrame:CGRectMake(self_width - 100, 10, 90, 40)];
+        statusL.text = self.status;
+        statusL.textColor = HexColor(@"#4A4A4A");
+        statusL.font = FONT_SIZE(15);
+        statusL.textAlignment = NSTextAlignmentRight;
+        [view addSubview:statusL];
+        
+        if ([self.status isEqualToString:@"已提交"]) {
+            UIButton *uploadBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+            uploadBtn.layer.masksToBounds = YES;
+            uploadBtn.layer.cornerRadius = 5;
+            [uploadBtn setBackgroundColor:HexColor(@"#33A2EE") forState:UIControlStateNormal];
+            [uploadBtn setBackgroundColor:HexColor(@"#8EB2CD") forState:UIControlStateDisabled];
+            [uploadBtn setBackgroundColor:HexColor(@"#2D84C0") forState:UIControlStateHighlighted];
+            [uploadBtn setTitle:Localized(@"UU_work_OA_DailyWork_Resubmit") forState:UIControlStateNormal];
+            uploadBtn.userInteractionEnabled = YES;
+            [uploadBtn addTarget:self action:@selector(reloadFormAction) forControlEvents:UIControlEventTouchUpInside];
+            [self.view addSubview:uploadBtn];
+            [uploadBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+                make.left.equalTo(self.view).offset(20);
+                make.right.equalTo(self.view).offset(-20-self_width/2);
+                make.bottom.equalTo(self.view).offset(-5);
+                make.height.mas_equalTo(40);
+            }];
+            
+            UIButton *deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+            deleteBtn.layer.masksToBounds = YES;
+            deleteBtn.layer.cornerRadius = 5;
+            [deleteBtn setBackgroundColor:HexColor(@"#33A2EE") forState:UIControlStateNormal];
+            [deleteBtn setBackgroundColor:HexColor(@"#8EB2CD") forState:UIControlStateDisabled];
+            [deleteBtn setBackgroundColor:HexColor(@"#2D84C0") forState:UIControlStateHighlighted];
+            [deleteBtn setTitle:Localized(@"UU_custom_delete") forState:UIControlStateNormal];
+            deleteBtn.userInteractionEnabled = YES;
+            [deleteBtn addTarget:self action:@selector(deleteFormAction) forControlEvents:UIControlEventTouchUpInside];
+            [self.view addSubview:deleteBtn];
+            [deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+                make.left.equalTo(self.view).offset(20+self_width/2);
+                make.right.equalTo(self.view).offset(-20);
+                make.bottom.equalTo(self.view).offset(-5);
+                make.height.mas_equalTo(40);
+            }];
+        }
+    }
+}
+
+#pragma mark --- 操作
+-(void)clickRightBtn
+{
+    NSArray *menuItems = @[
+                           [KxMenuItem menuItem:@"使用申请"
+                                          image:nil
+                                         target:self
+                                         action:@selector(useDetail)],
+                           [KxMenuItem menuItem:@"报废申请"
+                                          image:nil
+                                         target:self
+                                         action:@selector(verbApply)],
+                           [KxMenuItem menuItem:@"养护管理"
+                                          image:nil
+                                         target:self
+                                         action:@selector(protectTool)],
+                           [KxMenuItem menuItem:@"故障送检"
+                                          image:nil
+                                         target:self
+                                         action:@selector(breakdownAction)],
+                           ];
+    [KxMenu showMenuInView:self.view
+                  fromRect:CGRectMake(SCREEN_WIDTH - 50,-30,30,30)
+                 menuItems:menuItems];
+}
+
+#pragma mark --- 使用详情
+-(void)useDetail
+{
+    LYYDocumentVC *a = [[LYYDocumentVC alloc]init];
+    a.nameStr = @"使用申请";
+    a.caller = @"DeviceChange!Use";
+    a.specialArr = [_specilArr mutableCopy];
+    [self.navigationController pushViewController:a animated:YES];
+}
+
+#pragma mark --- 报废申请
+-(void)verbApply
+{
+    LYYDocumentVC *a = [[LYYDocumentVC alloc]init];
+    a.nameStr = @"报废申请";
+    a.caller = @"DeviceChange!Scrap";
+    a.specialArr = [_specilArr mutableCopy];
+    [self.navigationController pushViewController:a animated:YES];
+}
+
+#pragma mark --- 养护管理
+-(void)protectTool
+{
+    DeviceEnterFormVC *vc = [DeviceEnterFormVC new];
+    vc.caller = @"DeviceChange!Maintain";
+    vc.title = @"养护管理";
+    vc.specialArr = [_specilArr mutableCopy];
+    [self.navigationController pushViewController:vc animated:YES];
+}
+
+#pragma mark --- 故障送检
+-(void)breakdownAction
+{
+    LYYDocumentVC *a = [[LYYDocumentVC alloc]init];
+    a.nameStr = @"故障送检";
+    a.caller = @"DeviceChange!Inspect";
+    a.specialArr = [_specilArr mutableCopy];
+    [self.navigationController pushViewController:a animated:YES];
+}
+
+#pragma mark --- 返回
+-(void)backAction
+{
+    if ([self.caller isEqualToString:@"Device"] || [self.caller isEqualToString:@"DeviceChange!Repair"]) {
+        
+        LYYDMDataSearchVC *vc = (LYYDMDataSearchVC *)[self.navigationController.viewControllers objectAtIndex:2];
+        if([vc isKindOfClass:[LYYDMDataSearchVC class]]){
+            [self.navigationController popToViewController:self.navigationController.viewControllers[2] animated:YES];
+        }else{
+            [self.navigationController popViewControllerAnimated:YES];
+        }
+    }else{
+        LYYDMDataSearchVC *vc = (LYYDMDataSearchVC *)[self.navigationController.viewControllers objectAtIndex:3];
+        if([vc isKindOfClass:[LYYDMDataSearchVC class]]){
+            [self.navigationController popToViewController:self.navigationController.viewControllers[3] animated:YES];
+        }else{
+            [self.navigationController popViewControllerAnimated:YES];
+        }
+    }
+    
+}
+
 #pragma mark --- 自动获取文本高度
 - (CGSize)getSizeWithText:(NSString *)text
 {

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

@@ -0,0 +1,16 @@
+//
+//  StockListVC.h
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/4.
+//
+
+#import "UASBaseVC.h"
+
+@interface StockListVC : UASBaseVC
+
+@property (nonatomic,strong) NSString *caller;
+@property (nonatomic,strong) NSString *conditionStr;
+
+@end
+

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

@@ -0,0 +1,160 @@
+//
+//  StockListVC.m
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/4.
+//
+
+#import "StockListVC.h"
+#import "NicheMainCell.h"
+#import "NicheModel.h"
+
+static NSString *cellID = @"cellID";
+@interface StockListVC ()<UITableViewDataSource,UITableViewDelegate>
+@property (nonatomic,strong) UITableView *tableView;
+@property (nonatomic,retain) NSString *CountType;
+@property (nonatomic,strong) NSMutableArray *allData;
+@property (nonatomic,strong) NicheModel *model;
+@property (nonatomic,assign) int page;
+
+@end
+
+@implementation StockListVC
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.view.backgroundColor = BGB_COLOR;
+    self.page = 1;
+    
+    /*设置列表*/
+    [self setUpTableView];
+    
+    /*上下拉刷新*/
+    [self setUpDownRefresh];
+    
+    /*获取数据*/
+    [self getDataFromSever];
+}
+
+#pragma mark --- 获取数据
+-(void)getDataFromSever
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+
+    NSString *url = [NSString stringWithFormat:@"%@mobile/common/list.action",g_id];
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    NSDictionary *param = @{
+                            @"caller":self.caller,
+                            @"condition":self.conditionStr,
+                            @"page":FORMAT(@"%d",self.page),
+                            @"pageSize":@"20",
+                            @"sessionId":g_sessionId,
+                            };
+    
+    UASNetworkManager *manager = [UASNetworkManager shareManager];
+    manager.responseSerializer = [AFJSONResponseSerializer serializer];
+    [manager request:url method:GET parameters:param progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        [MBProgressHUD hideHUDForView:self.view];
+        SLog(@"东西:%@",responseObject);
+        
+        self.model = [NicheModel mj_objectWithKeyValues:responseObject];
+        
+        for (id obj in self.model.listdata) {
+            [self.allData addObject:obj];
+        }
+        
+        if (self.allData.count == 0){
+             [self.tableView addEmptyViewWithImageName:@"crm_all_noData" title:@""];
+        }
+        
+        [self.tableView reloadData];
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        ErrorInfomation;
+        [MBProgressHUD hideHUDForView:self.view];
+        [self.tableView addEmptyViewWithImageName:@"crm_all_noData" title:@""];
+        SLog(@"%@",error);
+    }];
+}
+#pragma mark --- 上下拉刷新
+-(void)setUpDownRefresh
+{
+    _tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
+        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+            [self.allData removeAllObjects];
+            self.page = 1;
+            [self getDataFromSever];
+            [_tableView.mj_header endRefreshing];
+        });
+    }];
+    
+    _tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
+        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+            self.page ++;
+            [self getDataFromSever];
+            [_tableView.mj_footer endRefreshing];
+        });
+    }];
+}
+
+#pragma mark --- TableView Delegat / DataSource
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+    return self.allData.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%ld%ld", (long)[indexPath section], (long)[indexPath row]];//以indexPath来唯一确定cell
+    MyNicheCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; //出列可重用的cell
+    if (cell == nil) {
+        cell = [[MyNicheCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
+    }
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    cell.detailDic = self.allData[indexPath.row];
+    cell.model = self.model;
+    return cell;
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    return self.model.columns.count * 20 + 10 ;
+}
+
+-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+
+}
+
+#pragma mark --- 设置UITableView
+-(void)setUpTableView
+{
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.top.right.bottom.equalTo(self.view);
+    }];
+    [self.tableView registerClass:[MyNicheCell class] forCellReuseIdentifier:@"MyNicheCellid"];
+}
+
+#pragma mark --- lazy
+-(UITableView *)tableView{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+        _tableView.showsVerticalScrollIndicator = NO;
+    }
+    return _tableView;
+}
+
+-(NSMutableArray *)allData
+{
+    if (!_allData) {
+        _allData = [NSMutableArray new];
+    }
+    return _allData;
+}
+
+@end

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

@@ -0,0 +1,13 @@
+//
+//  StockSearchVC.h
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/3.
+//
+
+#import "UASBaseVC.h"
+
+@interface StockSearchVC : UASBaseVC
+
+@end
+

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

@@ -0,0 +1,353 @@
+//
+//  StockSearchVC.m
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/3.
+//
+
+#import "StockSearchVC.h"
+#import "MoreGridModel.h"
+#import "NicheModel.h"
+#import "LYYDBfindSelctedVC.h"
+#import "StockListVC.h"
+
+static NSString *cellID = @"cellID";
+@interface StockSearchVC ()<UITableViewDelegate,UITableViewDataSource,UITextFieldDelegate>
+@property (nonatomic,strong) UITableView *tableView;
+@property (nonatomic,strong) NSMutableArray *dataArr;
+@property (nonatomic,strong) NSMutableArray *formData;
+@property (nonatomic,strong) NicheModel *model;
+@property (nonatomic,strong) NSString *searchStr;
+@end
+
+@implementation StockSearchVC
+{
+    UIView *bgView;
+}
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.title = @"设备状态查询";
+    self.searchStr = @"";
+}
+
+#pragma mark --- UITableViewDelegate / DataSource
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+    return self.dataArr.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
+    
+    if (!cell) {
+        
+        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellID];
+        cell.textLabel.textColor = HexColor(@"#333333");
+        
+    }
+    
+    cell.textLabel.font = FONT_SIZE(14);
+    cell.detailTextLabel.font = FONT_SIZE(14);
+    cell.textLabel.text = FORMAT(@"%@ : %@",[self.model.columns[0] objectForKey:@"caption"],[self.dataArr[indexPath.row] objectForKey:[self.model.columns[0] objectForKey:@"dataIndex"]]);
+    cell.detailTextLabel.text = FORMAT(@"%@ : %@",[self.model.columns[1] objectForKey:@"caption"],[self.dataArr[indexPath.row] objectForKey:[self.model.columns[1] objectForKey:@"dataIndex"]]);
+    
+    return cell;
+}
+
+-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    StockListVC *vc = [StockListVC new];
+    vc.conditionStr = [self.searchStr stringByAppendingString:FORMAT(@" and upper(%@) like upper('%%%@%%')",@"de_runstatus",[self.dataArr[indexPath.row] objectForKey:@"de_runstatus"])];
+    vc.caller = @"DeviceAppQueryDetail";
+    vc.title = self.title;
+    [self.navigationController pushViewController:vc animated:YES];
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    return 40;
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
+    
+    return [UIView new];
+    
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+{
+    return CGFLOAT_MIN;
+}
+
+#pragma mark --- 重置
+-(void)reloadFormAction
+{
+    for (int i = 0; i < self.formData.count; i ++) {
+        DetailFormModel *model = self.formData[i];
+        model.fd_value = @"";
+        UITextField *textfield = (UITextField *)[bgView viewWithTag:i+200];
+        textfield.text = @"";
+    }
+}
+
+#pragma mark --- 确认
+-(void)confirmAction
+{
+    [self.view endEditing:YES];
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    
+    NSMutableArray *arr = [NSMutableArray new];
+    int a = 0;
+    for (int i = 0; i < self.formData.count; i ++) {
+        DetailFormModel *model = self.formData[i];
+        if (model.fd_value.length != 0) {
+            [arr addObject:FORMAT(@"upper(%@) like upper('%%%@%%')",model.fd_field,model.fd_value)];
+        }
+        if ([model.fd_field isEqualToString:@"de_prodcode"] || [model.fd_field isEqualToString:@"de_code"] || [model.fd_field isEqualToString:@"de_name"]) {
+            if (model.fd_value.length != 0) {
+                a = 1;
+            }
+        }
+    }
+    if (a == 0) {
+        [MBProgressHUD hideHUDForView:self.view];
+        [JOShowMessageFromNavi showDropViewWithMessage:@"物料编号、设备编号、设备名称需填一项" ToNavi:self.navigationController withColor:nil];
+        return;
+    }
+    
+    NSString *conditionStr = [arr componentsJoinedByString:@" and "];
+    
+    self.searchStr = conditionStr;
+    
+    NSString *url = [NSString stringWithFormat:@"%@mobile/common/list.action",g_id];
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    NSDictionary *dic = @{
+                          @"caller":@"DeviceAppQuery",
+                          @"condition":conditionStr,
+                          @"page":@"1",
+                          @"pageSize":@"100",
+                          @"sessionId":g_sessionId,
+                          };
+    UASNetworkManager *manager = [UASNetworkManager shareManager];
+    manager.responseSerializer = [AFJSONResponseSerializer serializer];
+    
+    [manager request:url method:POST parameters:dic progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        
+        [MBProgressHUD hideHUDForView:self.view];
+        
+        [self.dataArr removeAllObjects];
+        
+        self.model = [NicheModel mj_objectWithKeyValues:responseObject];
+        
+        for (id obj in self.model.listdata) {
+            [self.dataArr addObject:obj];
+        }
+        
+        if (self.dataArr.count == 0) {
+            [JOShowMessageFromNavi showDropViewWithMessage:@"设备不存在或未审核" ToNavi:self.navigationController withColor:nil];
+        }
+        
+        [self.tableView reloadData];
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        
+        [MBProgressHUD hideHUDForView:self.view];
+        DLog(@"请求失败:%@",error);
+        ErrorInfomation
+    }];
+}
+
+#pragma mark --- UITextField Delegate
+-(void)textFieldDidEndEditing:(UITextField *)textField
+{
+    [self.view endEditing:YES];
+    
+    DetailFormModel *model = self.formData[textField.tag-200];
+    model.fd_value = textField.text;
+}
+
+-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
+{
+    DetailFormModel *model = self.formData[textField.tag-200];
+    
+    if ([model.fd_type isEqualToString:@"C"] || [model.fd_type isEqualToString:@"SF"]) {
+        LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
+        vc.type = @"form";
+        vc.filed = model.fd_field;
+        vc.caller = @"DeviceAppQuery";
+        vc.title = model.fd_caption;
+        [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
+            for (NSInteger b  = 0; b < arr.count; b ++) {
+                NSDictionary *dic1 = arr[b];
+                for (int i = 0; i < self.formData.count; i++) {
+                    DetailFormModel *dmodel = self.formData[i];
+                    UITextField *textfield2 = (UITextField *)[bgView viewWithTag:i+200];
+                    if ([dic1[@"field"] isEqualToString:dmodel.fd_field]) {
+                        dmodel.fd_value = dic[dic1[@"dbGridField"]];
+                        textfield2.text = dmodel.fd_value;
+                    }
+                }
+            }
+        }];
+        [self.navigationController pushViewController:vc animated:YES];
+        return NO;
+    }
+    else
+        return YES;
+}
+
+- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
+{
+    if ([string isEqualToString:@"\n"]){ //判断输入的字是否是回车,即按下return
+        //在这里做你响应return键的代码
+        [textField resignFirstResponder];
+        return NO; //这里返回NO,就代表return键值失效,即页面上按下return,不会出现换行,如果为yes,则输入页面会换行
+    }
+    return YES;
+}
+
+#pragma mark --- 创建UI
+-(void)createUI
+{
+    bgView = [UIView new];
+    bgView.backgroundColor = BGKJ_COLOR;
+    [self.view addSubview:bgView];
+    [bgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.top.equalTo(self.view);
+        make.height.mas_equalTo(8*40 + 50);
+    }];
+    
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.bottom.right.equalTo(self.view);
+        make.top.equalTo(bgView.mas_bottom);
+    }];
+    
+    NSArray *titleName = @[@"部门编号",@"部门名称",@"车间",@"线别",@"物料编号",@"设备编号",@"设备名称",@"设备规格"];
+    NSArray *keyField = @[@"de_currentcentercode",@"de_currentcentername",@"de_workshop",@"de_currentlinecode",@"de_prodcode",@"de_code",@"de_name",@"de_spec"];
+    NSArray *type = @[@"C",@"C",@"C",@"C",@"SF",@"SF",@"",@""];
+    for (int i = 0; i < titleName.count; i++) {
+        [bgView addSubview:[self CreateTextfiledWithtag:i placeText:FORMAT(@"请输入%@",titleName[i])]];
+        [bgView addSubview:[self creatRightLabelWithHeight:i text:titleName[i]]];
+        
+        DetailFormModel *model = [DetailFormModel new];
+        model.fd_field = keyField[i];
+        model.fd_caption = titleName[i];
+        model.fd_type = type[i];
+        model.fd_value = @"";
+        [self.formData addObject:model];
+    }
+    
+    UIButton *uploadBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    uploadBtn.layer.masksToBounds = YES;
+    uploadBtn.layer.cornerRadius = 5;
+    [uploadBtn setBackgroundColor:HexColor(@"#33A2EE") forState:UIControlStateNormal];
+    [uploadBtn setBackgroundColor:HexColor(@"#8EB2CD") forState:UIControlStateDisabled];
+    [uploadBtn setBackgroundColor:HexColor(@"#2D84C0") forState:UIControlStateHighlighted];
+    [uploadBtn setTitle:@"重置" forState:UIControlStateNormal];
+    uploadBtn.userInteractionEnabled = YES;
+    [uploadBtn addTarget:self action:@selector(reloadFormAction) forControlEvents:UIControlEventTouchUpInside];
+    uploadBtn.titleLabel.font = FONT_SIZE(13);
+    [bgView addSubview:uploadBtn];
+    [uploadBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(60);
+        make.height.mas_equalTo(30);
+        make.left.equalTo(bgView).offset(40);
+        make.bottom.equalTo(bgView.mas_bottom).offset(-10);
+    }];
+    
+    UIButton *deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    deleteBtn.layer.masksToBounds = YES;
+    deleteBtn.layer.cornerRadius = 5;
+    [deleteBtn setBackgroundColor:HexColor(@"#33A2EE") forState:UIControlStateNormal];
+    [deleteBtn setBackgroundColor:HexColor(@"#8EB2CD") forState:UIControlStateDisabled];
+    [deleteBtn setBackgroundColor:HexColor(@"#2D84C0") forState:UIControlStateHighlighted];
+    [deleteBtn setTitle:@"确认" forState:UIControlStateNormal];
+    deleteBtn.userInteractionEnabled = YES;
+    [deleteBtn addTarget:self action:@selector(confirmAction) forControlEvents:UIControlEventTouchUpInside];
+    deleteBtn.titleLabel.font = FONT_SIZE(13);
+    [self.view addSubview:deleteBtn];
+    [deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(60);
+        make.height.mas_equalTo(30);
+        make.right.equalTo(bgView.mas_right).offset(-40);
+        make.bottom.equalTo(bgView.mas_bottom).offset(-10);
+    }];
+    
+}
+
+#pragma mark --- method
+- (UITextField *)CreateTextfiledWithtag:(int)tag placeText:(NSString *)str
+{
+    UITextField  *textFiled = [[UITextField alloc]initWithFrame:CGRectMake(100, 10+tag*40,self_width-110, 30)];
+    textFiled.returnKeyType = UIReturnKeyDone;
+    textFiled.borderStyle = UITextBorderStyleRoundedRect;
+    textFiled.autocorrectionType = UITextAutocorrectionTypeNo;
+    textFiled.autocapitalizationType = UITextAutocapitalizationTypeNone;
+    textFiled.layer.cornerRadius = 5.0;
+    textFiled.layer.masksToBounds = YES;
+    textFiled.tag = tag + 200;
+    textFiled.delegate = self;
+    textFiled.placeholder = str;
+    textFiled.font = FONT_SIZE(13);
+    return textFiled;
+}
+
+-(UILabel *)creatRightLabelWithHeight:(int)hang text:(NSString *)text
+{
+    UILabel *lbl = [[UILabel alloc]initWithFrame:CGRectMake(10, 10+hang*40 ,90 , 30)];
+    lbl.text = FORMAT(@"%@",text);
+    lbl.font = FONT_SIZE(15);
+    return lbl;
+}
+
+#pragma mark --- lazy
+-(UITableView *)tableView{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStyleGrouped];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.backgroundColor = BGB_COLOR;
+        _tableView.showsHorizontalScrollIndicator = NO;
+        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+        _tableView.tableFooterView = [UIView new];
+    }
+    return _tableView;
+}
+
+- (NSMutableArray *)dataArr
+{
+    if (!_dataArr) {
+        _dataArr = [NSMutableArray new];
+    }
+    return _dataArr;
+}
+
+- (NSMutableArray *)formData
+{
+    if (!_formData) {
+        _formData = [NSMutableArray new];
+    }
+    return _formData;
+}
+
+-(void)viewWillAppear:(BOOL)animated{
+    
+    [super viewWillAppear:animated];
+    
+    [IQKeyboardManager sharedManager].enable = YES;
+}
+
+-(void)viewWillDisappear:(BOOL)animated{
+    
+    [super viewWillDisappear:animated];
+    
+    [IQKeyboardManager sharedManager].enable = NO;
+    
+}
+
+@end

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

@@ -0,0 +1,28 @@
+//
+//  TransDetailVC.h
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/8.
+//
+
+#import "UASBaseVC.h"
+
+@interface TransDetailVC : UASBaseVC
+
+/**
+ 正常单据传的caller
+ */
+@property (nonatomic,strong) NSString *caller;
+
+/**
+ 正常单据传的单据id
+ */
+@property (nonatomic,strong) NSString *idStr;
+
+/**
+ 正常单据传的单据状态
+ */
+@property (nonatomic,strong) NSString *status;
+
+@end
+

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

@@ -0,0 +1,730 @@
+//
+//  TransDetailVC.m
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/8.
+//
+
+#import "TransDetailVC.h"
+#import "ConfigModel.h"
+#import "TransCell.h"
+#import "DocumentCell.h"
+#import "MoreGridModel.h"
+#import "MoreGridFooterView.h"
+#import "HCScanQRViewController.h"
+#import <AssetsLibrary/AssetsLibrary.h>
+#import <AVFoundation/AVFoundation.h>
+#import "StockListVC.h"
+
+static NSString *cellID = @"cellID";
+@interface TransDetailVC ()<UITableViewDelegate,UITableViewDataSource>
+@property (nonatomic,strong) UITableView *tableView;
+@property (nonatomic,strong) NSMutableArray *gridData;//从表数据
+@property (nonatomic,strong) NSMutableArray *listArr; //获取配置表的数据(主表)
+@property (nonatomic,strong) MoreGridFooterView *footerView;
+@end
+
+@implementation TransDetailVC
+{
+    ConfigModel *_cModel; //单据配置时标识状态码字段
+    UIView *_bgView;
+}
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.title = @"批量转移";
+    self.view.backgroundColor = BGKJ_COLOR;
+    
+    _listArr = [NSMutableArray new];
+    _gridData = [NSMutableArray new];
+    
+    [self getFormDataFromSever];
+}
+
+#pragma mark --- 提交
+-(void)confirmAction
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    
+    NSString *url = [NSString stringWithFormat:@"%@mobile/device/submitDeviceInventory.action",g_id];
+    NSDictionary *param = @{
+                            @"id":self.idStr,
+                            @"caller":self.caller,
+                            @"sessionId":g_sessionId,
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    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);
+        
+        [JOShowMessageFromNavi showDropViewWithMessage:@"提交成功" ToNavi:self.navigationController withColor:nil];
+        
+        [self handleActionDataWith:responseObject];
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        ErrorInfomation;
+        [MBProgressHUD hideHUDForView:self.view];
+        SLog(@"%@",error);
+    }];
+}
+
+#pragma mark --- 重置
+-(void)resetAction
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    
+    NSString *url = [NSString stringWithFormat:@"%@mobile/device/resetDeviceInventory.action",g_id];
+    NSDictionary *param = @{
+                            @"id":self.idStr,
+                            @"caller":self.caller,
+                            @"sessionId":g_sessionId,
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    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);
+        
+        [JOShowMessageFromNavi showDropViewWithMessage:@"重置成功" ToNavi:self.navigationController withColor:nil];
+        
+        [self handleActionDataWith:responseObject];
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        ErrorInfomation;
+        [MBProgressHUD hideHUDForView:self.view];
+        SLog(@"%@",error);
+    }];
+}
+
+#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 = 112;
+    @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(), ^{
+            
+            NSString *searchText = FORMAT(@"%@",QRCodeInfo);
+            
+            [MBProgressHUD showMessage:@"" toView:self.view];
+            
+            NSString *url = [NSString stringWithFormat:@"%@mobile/device/scanDeviceInventory.action",g_id];
+            NSDictionary *param = @{
+                                    @"id":self.idStr,
+                                    @"caller":self.caller,
+                                    @"decode":searchText,
+                                    @"sessionId":g_sessionId,
+                                    };
+            
+            url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+            
+            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);
+                
+                [JOShowMessageFromNavi showDropViewWithMessage:@"扫描成功" ToNavi:self.navigationController withColor:nil];
+                
+                [self handleActionDataWith:responseObject];
+                
+            } failure:^(NSURLSessionDataTask *task, NSError *error) {
+                ErrorInfomation;
+                [MBProgressHUD hideHUDForView:self.view];
+                SLog(@"%@",error);
+            }];
+        });
+        
+    }];
+    
+    [self.navigationController pushViewController:hvc animated:YES];
+}
+
+#pragma mark --- 三个操作处理数据重置页面
+-(void)handleActionDataWith:(id)responseObject
+{
+    //单据配置时标识状态码字段
+    _cModel = [[ConfigModel alloc]initWithDic:responseObject[@"config"]];
+    
+    NSMutableArray *formAllDataArr = [NSMutableArray new];
+    NSMutableArray *gridAllDataArr = [NSMutableArray new];
+    NSString *status = @"";
+    
+    for (id obj in responseObject[@"data"][@"formdetail"]) {
+        [formAllDataArr addObject:obj];
+        
+        NSDictionary *dic = obj;
+        if ([[dic objectForKey:@"fd_field"] isEqualToString:_cModel.fo_statusfield]) {
+            status = FORMAT(@"%@",[dic objectForKey:@"fd_value"]);
+        }
+    }
+    
+    formAllDataArr = [NSDictionary changeType:formAllDataArr];
+    
+    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) {
+        [_listArr removeAllObjects];
+        [_gridData removeAllObjects];
+        [_footerView removeFromSuperview];
+        
+        if ([status isEqualToString:@"在录入"]) {
+            [_bgView mas_updateConstraints:^(MASConstraintMaker *make) {
+                make.height.mas_equalTo(40);
+            }];
+        }else{
+            [_bgView mas_updateConstraints:^(MASConstraintMaker *make) {
+                make.height.mas_equalTo(0);
+            }];
+            [_bgView removeAllSubviews];
+        }
+        
+        [self handlerDataFromDowload:formAllDataArr andGridData:gridAllDataArr];
+    }
+}
+
+#pragma mark --- UITableViewDelegate / DataSource
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+    return _listArr.count;
+}
+
+// 每组多少行
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+    FormModel *model = _listArr[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];
+    }
+    
+    FormModel *model = _listArr[indexPath.section];
+    DetailFormModel *detailModel = model.showItems[indexPath.row];
+    
+    //...其他代码
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    
+    cell.MyTextView.tag = indexPath.row + indexPath.section*1000;
+    
+    cell.MyTextView.block = ^(NSString *textViewHeight, NSString *row) {
+        [tableView beginUpdates];
+        int a = [row integerValue] / 1000;
+        int b = [row integerValue] % 1000;
+        
+        FormModel *model1 = _listArr[a];
+        DetailFormModel *detailModel1 = model1.showItems[b];
+        
+        if ([textViewHeight isEqualToString:@"32"]) {
+            detailModel1.cellHeight = @"40";
+        }else
+            detailModel1.cellHeight = textViewHeight;
+        
+        [tableView endUpdates];
+    };
+    
+    cell.MyTextView.text = detailModel.fd_value;
+    
+    CGRect frame = cell.titleName.frame;
+    frame.size.height = [detailModel.cellHeight floatValue];
+    cell.titleName.frame = frame;
+    
+    //名字
+    NSString *titleName = [NSString stringWithFormat:@"%@",detailModel.fd_caption];
+    
+    //类型
+    NSString *str = [NSString stringWithFormat:@"%@",detailModel.fd_type];
+    
+    //key值
+    NSString *field = [NSString stringWithFormat:@"%@",detailModel.fd_field];
+    
+    //长度
+    NSString *length = [NSString stringWithFormat:@"%@",detailModel.fd_maxlength];
+    
+    //是否必填(是否允许为空)
+    NSString *allowblank = [NSString stringWithFormat:@"%@",detailModel.fd_allowblank];
+    
+    /*富文本,为了必填项的红色“*”*/
+    NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:FORMAT(@"%@*",titleName)];
+    [AttributedStr addAttribute:NSForegroundColorAttributeName
+                          value:[UIColor redColor]
+                          range:NSMakeRange(titleName.length, 1)];
+    
+    if ([allowblank isEqualToString:@"F"] || [allowblank isEqualToString:@"necessaryField"]) {/*必填项*/
+        cell.titleName.attributedText = AttributedStr;
+    }else{
+        cell.titleName.text = titleName;
+    }
+    
+    //是否只读
+    NSString *readonly = [NSString stringWithFormat:@"%@",detailModel.fd_readonly];
+    
+    //T只读,F非只读,默认非只读
+    cell.MyTextView.userInteractionEnabled = NO;
+    
+    SLog(@"类型:%@ -- 名字:%@ -- 第几个:%ld -- key:%@ -- 是否只读:%@ -- 长度:%@ -- 是否必填:%@",str,titleName,(long)cell.MyTextView.tag,field,readonly,length,allowblank);
+    
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    FormModel *model = _listArr[indexPath.section];
+    DetailFormModel *detailModel = model.showItems[indexPath.row];
+    return [detailModel.cellHeight floatValue];
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+{
+    return CGFLOAT_MIN;
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
+{
+    return CGFLOAT_MIN;
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+    return nil;
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
+{
+    return nil;
+}
+
+#pragma mark --- 获取配置数据
+-(void)getFormDataFromSever
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    
+    NSString *url = [NSString stringWithFormat:@"%@mobile/getformandgriddetail.action",g_id];
+    NSDictionary *param = @{
+                            @"id":self.idStr,
+                            @"caller":self.caller,
+                            @"condition":@"1=1",
+                            @"sessionId":g_sessionId,
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    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);
+        
+        //单据配置时标识状态码字段
+        _cModel = [[ConfigModel alloc]initWithDic:responseObject[@"config"]];
+        
+        NSMutableArray *formAllDataArr = [NSMutableArray new];
+        NSMutableArray *gridAllDataArr = [NSMutableArray new];
+        
+        for (id obj in responseObject[@"data"][@"formdetail"]) {
+            [formAllDataArr addObject:obj];
+        }
+        
+        formAllDataArr = [NSDictionary changeType:formAllDataArr];
+        
+        
+        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];
+    }
+    
+    int count = 7;
+    /*构造模型*/
+    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;
+            }
+            
+            detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
+        }
+        count = model.showItems.count;
+        
+        for (id obj in model.hideItems) {
+            DetailFormModel *detailFormModel = obj;
+            detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:detailFormModel.fd_value;
+        }
+        
+        [_listArr addObject:model];
+    }
+    
+    [_tableView reloadData];
+    
+    [self.tableView mas_updateConstraints:^(MASConstraintMaker *make) {
+        make.height.mas_equalTo(count*40);
+    }];
+    
+    /*明细表的创建FooterView*/
+    if (gridDataArr.count != 0) {
+        [self handleGridDataWith:gridDataArr];
+    }
+}
+
+-(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];
+    }
+    
+    @weakify(self)
+    _footerView = [[MoreGridFooterView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(_bgView.frame), self.view.width, self_height-CGRectGetMaxY(_bgView.frame))];
+    _footerView.statuType = Editing;
+    _footerView.gridData = _gridData;
+    _footerView.conditionBlock = ^(NSDictionary *dic) {
+        @strongify(self)
+        StockListVC *vc = [StockListVC new];
+        vc.caller = [dic objectForKey:@"caller"];
+        vc.title = [dic objectForKey:@"dg_title"];
+        if ([[dic objectForKey:@"dg_field"] isEqualToString:@"num"]) {
+            vc.conditionStr = [NSString stringWithFormat:@"dc_sourceid=%@",[dic objectForKey:@"dr_id"]];
+        }else{
+            NSString *formID = @"";
+            for (int i = 0; i < self.listArr.count; i++) {
+                FormModel *model = self.listArr[i];
+                for (id obj in model.showItems) {
+                    DetailFormModel *detailFormModel = obj;
+                    if ([detailFormModel.fd_field isEqualToString:@"db_wsid"]) {
+                        formID = detailFormModel.fd_value;
+                    }
+                }
+            }
+            for (int i = 0; i < self.listArr.count; i++) {
+                FormModel *model = self.listArr[i];
+                for (id obj in model.hideItems) {
+                    DetailFormModel *detailFormModel = obj;
+                    if ([detailFormModel.fd_field isEqualToString:@"db_wsid"]) {
+                        formID = detailFormModel.fd_value;
+                    }
+                }
+            }
+            
+            NSString *spec = [dic objectForKey:@"dr_despec"];
+            if (spec.length != 0) {
+                vc.conditionStr = FORMAT(@"ws_id='%@' and de_name='%@' and de_spec='%@'",formID,[dic objectForKey:@"dr_dename"],[dic objectForKey:@"dr_despec"]);
+            }else{
+                vc.conditionStr = FORMAT(@"ws_id='%@' and de_name='%@'",formID,[dic objectForKey:@"dr_dename"]);
+            }
+        }
+        
+        [self.navigationController pushViewController:vc animated:YES];
+    };
+    
+    [self.view addSubview:_footerView];
+    [_footerView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.bottom.equalTo(self.view);
+        make.top.equalTo(_bgView.mas_bottom);
+    }];
+}
+
+#pragma mark --- 设置UI
+-(void)createUI
+{
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.left.right.equalTo(self.view);
+        make.height.mas_equalTo(40*7);
+    }];
+    [self.tableView registerClass:[DocumentCell class] forCellReuseIdentifier:cellID];
+    
+    _bgView = [UIView new];
+    _bgView.backgroundColor = BGKJ_COLOR;
+    [self.view addSubview:_bgView];
+    [_bgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.right.equalTo(self.view);
+        make.top.equalTo(self.tableView.mas_bottom);
+        make.height.mas_equalTo(40);
+    }];
+
+    if ([self.status isEqualToString:@"在录入"]) {
+        UIButton *resetBtn = [self creatButtonWithTitle:@"重置"];
+        [_bgView addSubview:resetBtn];
+        [resetBtn addTarget:self action:@selector(resetAction) forControlEvents:UIControlEventTouchUpInside];
+        [resetBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.width.mas_equalTo(60);
+            make.height.mas_equalTo(30);
+            make.left.equalTo(_bgView).offset(40);
+            make.bottom.equalTo(_bgView.mas_bottom).offset(-5);
+        }];
+        
+        UIButton *scanBtn = [self creatButtonWithTitle:@"扫描"];
+        [_bgView addSubview:scanBtn];
+        [scanBtn addTarget:self action:@selector(scanAction) forControlEvents:UIControlEventTouchUpInside];
+        [scanBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.width.mas_equalTo(60);
+            make.height.mas_equalTo(30);
+            make.centerX.equalTo(_bgView);
+            make.bottom.equalTo(_bgView.mas_bottom).offset(-5);
+        }];
+        
+        UIButton *confirmBtn = [self creatButtonWithTitle:@"提交"];
+        [_bgView addSubview:confirmBtn];
+        [confirmBtn addTarget:self action:@selector(confirmAction) forControlEvents:UIControlEventTouchUpInside];
+        [confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+            make.width.mas_equalTo(60);
+            make.height.mas_equalTo(30);
+            make.right.equalTo(_bgView.mas_right).offset(-40);
+            make.bottom.equalTo(_bgView.mas_bottom).offset(-5);
+        }];
+        
+    }else{
+        [_bgView mas_updateConstraints:^(MASConstraintMaker *make) {
+            make.height.mas_equalTo(0);
+        }];
+    }
+}
+
+-(UIButton *)creatButtonWithTitle:(NSString *)title
+{
+    UIButton *uploadBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    uploadBtn.layer.masksToBounds = YES;
+    uploadBtn.layer.cornerRadius = 5;
+    [uploadBtn setBackgroundColor:HexColor(@"#33A2EE") forState:UIControlStateNormal];
+    [uploadBtn setBackgroundColor:HexColor(@"#8EB2CD") forState:UIControlStateDisabled];
+    [uploadBtn setBackgroundColor:HexColor(@"#2D84C0") forState:UIControlStateHighlighted];
+    [uploadBtn setTitle:title forState:UIControlStateNormal];
+    uploadBtn.userInteractionEnabled = YES;
+    uploadBtn.titleLabel.font = FONT_SIZE(13);
+    return uploadBtn;
+}
+
+#pragma mark --- 自动获取文本高度
+- (CGSize)getSizeWithText:(NSString *)text
+{
+    return [FORMAT(@"%@",text) boundingRectWithSize:CGSizeMake(90, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : FONT_SIZE(14)} context:NULL].size;
+}
+
+#pragma mark --- lazy
+-(UITableView *)tableView{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStyleGrouped];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.showsVerticalScrollIndicator = NO;
+        _tableView.showsHorizontalScrollIndicator = NO;
+        _tableView.backgroundColor = BGKJ_COLOR;
+        [_tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
+    }
+    return _tableView;
+}
+
+@end

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

@@ -0,0 +1,18 @@
+//
+//  TransFormVC.h
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/8.
+//
+
+#import "UASBaseVC.h"
+
+@interface TransFormVC : UASBaseVC
+/**
+ 正常单据传的caller
+ */
+@property (nonatomic,strong) NSString *caller;
+
+
+@end
+

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

@@ -0,0 +1,877 @@
+//
+//  TransFormVC.m
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/8.
+//
+
+#import "TransFormVC.h"
+#import "ConfigModel.h"
+#import "TransCell.h"
+#import "MoreGridModel.h"
+#import "DocumentDataVC.h"
+#import "LYYDBfindSelctedVC.h"
+#import "MFselectVC.h"
+#import "TransDetailVC.h"
+
+static NSString *cellID = @"cellID";
+@interface TransFormVC ()<UITableViewDelegate,UITableViewDataSource,HypTextViewDelegate>
+@property (nonatomic,strong) UITableView *tableView;
+@end
+
+@implementation TransFormVC
+{
+    ConfigModel *_cModel; //单据配置时标识状态码字段
+    NSMutableArray *_listArr; //获取配置表的数据(主表)
+    JXDatePicker *_date;
+    int _textTag; //判断哪个textView触发选择日期
+}
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.view.backgroundColor = BGKJ_COLOR;
+    self.title = @"批量转移";
+    
+    _listArr = [NSMutableArray new];
+    
+    [self getFormDataFromSever];
+}
+
+#pragma mark --- 确认保存操作
+-(void)confirmAction
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    
+    [self.view endEditing:YES];
+    
+    //拼接主表上传的数据
+    NSMutableDictionary *formParam = [NSMutableDictionary new];
+    for (int i = 0; i<_listArr.count; i++) {
+        FormModel *model = _listArr[i];
+        /*特殊处理:领用时机型必填;领用或退仓时仓库必填*/
+        NSString *typeStr = @"",*deviceType = @"",*store = @"";
+        for (int j = 0; j < model.showItems.count; j++) {
+            DetailFormModel *detailModel = model.showItems[j];
+            if ([detailModel.fd_field isEqualToString:@"db_kind"]) {
+                typeStr = detailModel.fd_value;
+            }
+            if ([detailModel.fd_field isEqualToString:@"db_dmcode"]) {
+                deviceType = detailModel.fd_value;
+            }
+            if ([detailModel.fd_field isEqualToString:@"db_wslinecode"]) {
+                store = detailModel.fd_value;
+            }
+            /*判断必填项*/
+            if ([detailModel.fd_allowblank isEqualToString:@"F"] || [detailModel.fd_allowblank isEqualToString:@"necessaryField"]) {
+                if (detailModel.fd_value.length == 0) {
+                    [JOShowMessageFromNavi showDropViewWithMessage:@"必填项不能为空!" ToNavi:self.navigationController withColor:nil];
+                    [MBProgressHUD hideHUDForView:self.view];
+                    return;
+                }else{
+                    [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
+                }
+            }else{
+                [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
+            }
+        }
+        
+        /*特殊处理:领用时机型必填;领用或退仓时仓库必填*/
+        if ([typeStr isEqualToString:@"领用"]) {
+            if (deviceType.length == 0 || store.length == 0) {
+                [JOShowMessageFromNavi showDropViewWithMessage:@"类型为领用时,机型和仓库必填" ToNavi:self.navigationController withColor:nil];
+                [MBProgressHUD hideHUDForView:self.view];
+                return;
+            }
+        }else if ([typeStr isEqualToString:@"退仓"]) {
+            if (store.length == 0) {
+                [JOShowMessageFromNavi showDropViewWithMessage:@"类型为退仓时,仓库必填" ToNavi:self.navigationController withColor:nil];
+                [MBProgressHUD hideHUDForView:self.view];
+                return;
+            }
+        }
+        
+        for (int j = 0; j < model.hideItems.count; j++) {
+            DetailFormModel *detailModel = model.hideItems[j];
+            [formParam addEntriesFromDictionary:@{detailModel.fd_field:FORMAT(@"%@",detailModel.fd_value != nil ? detailModel.fd_value:@"")}];
+        }
+    }
+    
+    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:formParam options:NSJSONWritingPrettyPrinted error:nil];
+    NSString *formStr=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
+    
+    SLog(@"主表合并的东西:%@",formParam);
+    
+    NSString *url = [NSString stringWithFormat:@"%@mobile/device/saveDeviceInventory.action",g_id];
+    
+    NSDictionary *dic = @{
+                          @"caller":_caller,
+                          @"formStore":formStr,
+                          @"master":g_master,
+                          @"sessionUser":g_sessionUser,
+                          @"sessionId":g_sessionId,
+                          @"id":@"0"
+                          };
+    
+    SLog(@"aaaaaaaa:%@ --- url:%@",dic,url);
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    UASNetworkManager *manager = [UASNetworkManager shareManager];
+    
+    [manager request:url method:POST parameters:dic progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
+        [MBProgressHUD hideHUDForView:self.view];
+        SLog(@"chenggong---:%@",responseObject);
+        
+        NSString *specialStr = responseObject[@"exceptionInfo"];
+        //异常
+        if (specialStr.length != 0) {
+            
+            [JOShowMessageFromNavi showDropViewWithMessage:specialStr ToNavi:self.navigationController withColor:nil];
+            
+            return;
+        }
+        
+        NSDictionary *dic = responseObject;
+        
+        NSString *idStr = @"";
+        
+        idStr = FORMAT(@"%@",[dic objectForKey:_cModel.fo_keyfield]);
+        
+        if (idStr.length == 0 || [idStr isEqualToString:@"(null)"]) {
+            idStr = [NSString stringWithFormat:@"%@",dic[@"keyvalue"]];
+        }
+        
+        TransDetailVC *vc = [TransDetailVC new];
+        vc.idStr = idStr;
+        vc.caller = FORMAT(@"%@",[dic objectForKey:@"formcode"]);
+        vc.status = @"在录入";
+        [self.navigationController pushViewController:vc animated:YES];
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        [MBProgressHUD hideHUDForView:self.view];
+        
+        SLog(@"错误的原因:%@",error);
+        ErrorInfomation;
+        
+    }];
+}
+
+#pragma mark --- UITableViewDelegate / DataSource
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+    return _listArr.count;
+}
+
+// 每组多少行
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+    FormModel *model = _listArr[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
+    TransCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; //出列可重用的cell
+    if (cell == nil) {
+        cell = [[TransCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
+    }
+    
+    FormModel *model = _listArr[indexPath.section];
+    DetailFormModel *detailModel = model.showItems[indexPath.row];
+    
+    //...其他代码
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    
+    cell.MyTextView.tag = indexPath.row + indexPath.section*1000;
+    
+    cell.MyTextView.delegate = self;
+    
+    cell.MyTextView.block = ^(NSString *textViewHeight, NSString *row) {
+        [tableView beginUpdates];
+        int a = [row integerValue] / 1000;
+        int b = [row integerValue] % 1000;
+        
+        FormModel *model1 = _listArr[a];
+        DetailFormModel *detailModel1 = model1.showItems[b];
+        
+        if ([textViewHeight isEqualToString:@"32"]) {
+            detailModel1.cellHeight = @"50";
+        }else
+            detailModel1.cellHeight = textViewHeight;
+        
+        [tableView endUpdates];
+    };
+    
+    cell.MyTextView.text = detailModel.fd_value;
+    
+    CGRect frame = cell.titleName.frame;
+    frame.size.height = [detailModel.cellHeight floatValue];
+    cell.titleName.frame = frame;
+    
+    //名字
+    NSString *titleName = [NSString stringWithFormat:@"%@",detailModel.fd_caption];
+    
+    //类型
+    NSString *str = [NSString stringWithFormat:@"%@",detailModel.fd_type];
+    
+    //key值
+    NSString *field = [NSString stringWithFormat:@"%@",detailModel.fd_field];
+    
+    //长度
+    NSString *length = [NSString stringWithFormat:@"%@",detailModel.fd_maxlength];
+    
+    //是否必填(是否允许为空)
+    NSString *allowblank = [NSString stringWithFormat:@"%@",detailModel.fd_allowblank];
+    
+    /*富文本,为了必填项的红色“*”*/
+    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;
+    }
+    
+    //是否只读
+    NSString *readonly = [NSString stringWithFormat:@"%@",detailModel.fd_readonly];
+    
+    //T只读,F非只读,默认非只读
+    if ([readonly isEqualToString:@"T"]) {
+        
+        cell.MyTextView.userInteractionEnabled = NO;
+        
+    }else{
+        
+        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
+{
+    FormModel *model = _listArr[indexPath.section];
+    DetailFormModel *detailModel = model.showItems[indexPath.row];
+    return [detailModel.cellHeight floatValue];
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+{
+    return CGFLOAT_MIN;
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
+{
+    return 10;
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+    return nil;
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
+{
+    return nil;
+}
+
+#pragma mark --- HypTextView代理
+- (void)HypTextView:(HypTextView *)HypTextView textDidChanged:(NSString *)text
+{
+    int a = HypTextView.tag  / 1000;
+    int b = HypTextView.tag  % 1000;
+    
+    FormModel *model = _listArr[a];
+    DetailFormModel *detailModel = model.showItems[b];
+    
+    NSString *maxlength = [NSString stringWithFormat:@"%@",detailModel.fd_maxlength];
+    
+    if ([maxlength isEqualToString:@"0"]) {
+        maxlength = @"300";
+    }
+    
+    int length = [maxlength intValue];
+    
+    if (HypTextView.text.length > length)
+    {
+        HypTextView.text = [HypTextView.text substringToIndex:length];
+        [self.view endEditing:YES];
+        [JOShowMessageFromNavi showDropViewWithMessage:[NSString stringWithFormat:@"不能超过%d个字",length] ToNavi:self.navigationController withColor:nil];
+    }
+}
+
+-(BOOL)textViewShouldBeginEditing:(HypTextView *)textView
+{
+    int a = textView.tag  / 1000;
+    int b = textView.tag  % 1000;
+    
+    FormModel *model = _listArr[a];
+    DetailFormModel *detailModel = model.showItems[b];
+    
+    NSString *typeStr = [NSString stringWithFormat:@"%@",detailModel.fd_type];
+    
+    NSString *fieldStr = [NSString stringWithFormat:@"%@",detailModel.fd_field];
+    
+    NSString *titleStr = [NSString stringWithFormat:@"%@",detailModel.fd_caption];
+    
+    if ([typeStr isEqualToString:@"C"]) { //下拉框跳转界面
+        _date.hidden = YES;
+        [self.view endEditing:YES];
+        DocumentDataVC *dataVC = [[DocumentDataVC alloc]init];
+        
+        dataVC.caller = _caller;
+        
+        dataVC.field = fieldStr;
+        
+        dataVC.type = typeStr;
+        
+        dataVC.block = ^(NSDictionary *listData,NSString *showKey,NSDictionary *chain){
+            DLog(@"返回来的数据是什么:%@--%@",listData,showKey);
+            textView.text = [NSString stringWithFormat:@"%@",[listData objectForKey:@"VALUE"]];
+            detailModel.fd_value = [listData objectForKey:@"VALUE"];
+            
+            [self.tableView reloadData];
+        };
+        
+        dataVC.title = titleStr;
+        
+        [self.navigationController pushViewController:dataVC animated:YES];
+        
+        return NO;
+    }
+    else if ([typeStr isEqualToString:@"SF"] || [typeStr isEqualToString:@"DF"]) { //单选跳转界面
+        _date.hidden = YES;
+        [self.view endEditing:YES];
+        
+        NSString *formType = @"";
+        LYYDBfindSelctedVC *vc = [[LYYDBfindSelctedVC alloc] init];
+        formType = @"form";
+        vc.type = @"form";
+        vc.caller = _caller;
+        vc.filed = fieldStr;
+        vc.title = titleStr;
+        
+        [vc setMyBlock:^(NSDictionary *dic,NSMutableArray *arr) {
+            
+            for (int z = 0; z < arr.count; z++) {
+                NSDictionary *arrDic = arr[z];
+                
+                NSString *backField = @"";
+                //主表回调
+                backField = FORMAT(@"%@",[arrDic objectForKey:@"field"]);
+                /*显示的*/
+                for (int i = 0; i < model.showItems.count; i++) {
+                    DetailFormModel *dmodel = model.showItems[i];
+                    if ([dmodel.fd_field isEqualToString:backField]) {
+                        dmodel.fd_value = [dic objectForKey:[arrDic objectForKey:@"dbGridField"]];
+                    }
+                }
+                /*隐藏的*/
+                for (int i = 0; i < model.hideItems.count; i++) {
+                    DetailFormModel *dmodel = model.hideItems[i];
+                    if ([dmodel.fd_field isEqualToString:backField]) {
+                        dmodel.fd_value = [dic objectForKey:[arrDic objectForKey:@"dbGridField"]];
+                    }
+                }
+            }
+            [self.tableView reloadData];
+        }];
+        
+        [self.navigationController pushViewController:vc animated:YES];
+        
+        return NO;
+    }
+    
+    else if ([typeStr isEqualToString:@"MF"]) { //多选跳转界面
+        _date.hidden = YES;
+        [self.view endEditing:YES];
+        
+        MFselectVC *dataVC = [[MFselectVC alloc]init];
+        
+        dataVC.caller = self.caller;
+        
+        dataVC.title = titleStr;
+        
+        dataVC.field = fieldStr;
+        
+        dataVC.type = typeStr;
+        
+        dataVC.block = ^(NSArray *backData,NSString *showKey,NSMutableArray *dgField){
+            for (int a = 0; a < dgField.count; a++) {
+                /*显示的*/
+                for (int i = 0; i < model.showItems.count; i++) {
+                    DetailFormModel *dmodel = model.showItems[i];
+                    NSString *valueStr = @"";
+                    if ([dmodel.fd_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
+                        for (int i = 0; i < backData.count; i++) {
+                            valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
+                            if (i != (backData.count-1)) {
+                                valueStr = [valueStr stringByAppendingString:@"#"];
+                            }
+                        }
+                        
+                        dmodel.fd_value = valueStr;
+                    }
+                }
+                /*隐藏的*/
+                for (int i = 0; i < model.hideItems.count; i++) {
+                    DetailFormModel *dmodel = model.hideItems[i];
+                    NSString *valueStr = @"";
+                    if ([dmodel.fd_field isEqualToString:[dgField[a] objectForKey:@"field"]]) {
+                        for (int i = 0; i < backData.count; i++) {
+                            valueStr = [valueStr stringByAppendingString:[backData[i] objectForKey:[dgField[a] objectForKey:@"dbGridField"]]];
+                            if (i != (backData.count-1)) {
+                                valueStr = [valueStr stringByAppendingString:@"#"];
+                            }
+                        }
+                        
+                        dmodel.fd_value = valueStr;
+                    }
+                }
+            }
+            
+            [self.tableView reloadData];
+        };
+        [self.navigationController pushViewController:dataVC animated:YES];
+        return NO;
+    }
+    
+    else if ([typeStr isEqualToString:@"D"]) { //日期类型 - UIDatePickerModeDate
+        SLog(@"hyp进来选日期,%@",textView.text);
+        
+        _textTag = textView.tag;
+        _date.datePicker.datePickerMode = UIDatePickerModeDate;
+        [self.view addSubview:_date];
+        _date.hidden = NO;
+        [self.view endEditing:YES];
+        
+        return NO;
+    }
+    
+    else if ([typeStr isEqualToString:@"DT"]) { //日期类型- UIDatePickerModeDateAndTime
+        SLog(@"hyp进来选日期,%@",textView.text);
+        
+        _textTag = textView.tag;
+        _date.datePicker.datePickerMode = UIDatePickerModeDateAndTime;
+        [self.view addSubview:_date];
+        _date.hidden = NO;
+        [self.view endEditing:YES];
+        
+        return NO;
+    }
+    else
+    {
+        _date.hidden = YES;
+        
+        return YES;
+    }
+}
+
+- (BOOL)textView:(HypTextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
+    if ([text isEqualToString:@"\n"]){ //判断输入的字是否是回车,即按下return
+        //在这里做你响应return键的代码
+        [self.view 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;
+    FormModel *model = _listArr[a];
+    DetailFormModel *detailModel = model.showItems[b];
+    
+    NSString *typeStr = detailModel.fd_type;
+    
+    if ([typeStr isEqualToString:@"N"]) {
+        BOOL a = [self validateNumber:allText];
+        if (![self validateNumber:allText]) {
+            [JOShowMessageFromNavi showDropViewWithMessage:@"只能填写数字" ToNavi:self.navigationController withColor:nil];
+        }
+        return a;
+    }
+    
+    return YES;
+}
+
+-(void)textViewDidEndEditing:(HypTextView *)textView
+{
+    
+}
+
+- (void)HypTextView:(HypTextView *)HypTextView textDidEnd:(NSString *)text
+{
+    int a = HypTextView.tag  / 1000;
+    int b = HypTextView.tag  % 1000;
+    
+    FormModel *model = _listArr[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;
+}
+
+#pragma mark -- 时期选择
+-(void)onDateDO
+{
+    NSDate *selected = [_date date];
+    
+    int a = _textTag  / 1000;
+    int b = _textTag  % 1000;
+
+    NSString *dateStr = @"";
+    if (_date.datePicker.datePickerMode == UIDatePickerModeDate) {
+        dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd"];
+    }else{
+        dateStr = [((AppDelegate*)[[UIApplication sharedApplication] delegate]) formatdate:selected format:@"yyyy-MM-dd HH:mm:ss"];
+    }
+    
+    FormModel *model = _listArr[a];
+    DetailFormModel *detailModel = model.showItems[b];
+    detailModel.fd_value = dateStr;
+    [self.tableView reloadData];
+}
+
+-(void)onDateClear
+{
+    int a = _textTag  / 1000;
+    int b = _textTag  % 1000;
+    
+    NSString *dateStr = @"";
+    
+    FormModel *model = _listArr[a];
+    DetailFormModel *detailModel = model.showItems[b];
+    detailModel.fd_value = dateStr;
+    [self.tableView reloadData];
+    
+}
+
+#pragma mark --- 获取配置数据
+-(void)getFormDataFromSever
+{
+    [MBProgressHUD showMessage:@"" toView:self.view];
+    
+    NSString *url = [NSString stringWithFormat:@"%@mobile/common/getformandgriddetail.action",g_id];
+    NSDictionary *param = @{
+                            @"id":@"0",
+                            @"caller":self.caller,
+                            @"condition":@"1=1",
+                            @"sessionId":g_sessionId,
+                            };
+    
+    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    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);
+        
+        //单据配置时标识状态码字段
+        _cModel = [[ConfigModel alloc]initWithDic:responseObject[@"config"]];
+        
+        NSMutableArray *formAllDataArr = [NSMutableArray new];
+      
+        for (id obj in responseObject[@"data"][@"formdetail"]) {
+            [formAllDataArr addObject:obj];
+        }
+        
+        formAllDataArr = [NSDictionary changeType:formAllDataArr];
+
+        if (formAllDataArr.count != 0) {
+            [self handlerDataFromDowload:formAllDataArr];
+        }
+        
+    } failure:^(NSURLSessionDataTask *task, NSError *error) {
+        ErrorInfomation;
+        [MBProgressHUD hideHUDForView:self.view];
+        SLog(@"%@",error);
+    }];
+}
+
+#pragma mark --- 配置表单数据处理
+- (void)handlerDataFromDowload:(NSMutableArray *)dataArr
+{
+    /*先排序,后分组【坑货需求】*/
+    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 < 50) {
+                detailFormModel.cellHeight = @"50";
+            }else{
+                detailFormModel.cellHeight = heightStr;
+            }
+            
+            detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:@"";
+        }
+        
+        for (id obj in model.hideItems) {
+            DetailFormModel *detailFormModel = obj;
+            detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:@"";
+        }
+        
+        [_listArr addObject:model];
+    }
+    
+    [_tableView reloadData];
+}
+
+#pragma mark --- 设置UI
+-(void)createUI
+{
+    [self.view addSubview:self.tableView];
+    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.left.right.equalTo(self.view);
+        make.bottom.equalTo(self.view).offset(-40);
+    }];
+    [self.tableView registerClass:[TransCell class] forCellReuseIdentifier:cellID];
+    
+    UIButton *cancelBtn = [self creatButtonWithTitle:@"取消"];
+    [self.view addSubview:cancelBtn];
+    [cancelBtn addTarget:self action:@selector(cancelAction) forControlEvents:UIControlEventTouchUpInside];
+    [cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(60);
+        make.height.mas_equalTo(30);
+        make.left.equalTo(self.view).offset(40);
+        make.bottom.equalTo(self.view.mas_bottom).offset(-5);
+    }];
+    
+    UIButton *resetBtn = [self creatButtonWithTitle:@"重置"];
+    [self.view addSubview:resetBtn];
+    [resetBtn addTarget:self action:@selector(resetAction) forControlEvents:UIControlEventTouchUpInside];
+    [resetBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(60);
+        make.height.mas_equalTo(30);
+        make.centerX.equalTo(self.view);
+        make.bottom.equalTo(self.view.mas_bottom).offset(-5);
+    }];
+    
+    UIButton *confirmBtn = [self creatButtonWithTitle:@"确认"];
+    [self.view addSubview:confirmBtn];
+    [confirmBtn addTarget:self action:@selector(confirmAction) forControlEvents:UIControlEventTouchUpInside];
+    [confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(60);
+        make.height.mas_equalTo(30);
+        make.right.equalTo(self.view.mas_right).offset(-40);
+        make.bottom.equalTo(self.view.mas_bottom).offset(-5);
+    }];
+    
+    _date = [[JXDatePicker alloc] initWithFrame:CGRectMake(0, 0, self_width, self_height)];
+    _date.delegate = self;
+    _date.didSelect = @selector(onDateDO);
+    _date.didClear = @selector(onDateClear);
+}
+
+-(UIButton *)creatButtonWithTitle:(NSString *)title
+{
+    UIButton *uploadBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    uploadBtn.layer.masksToBounds = YES;
+    uploadBtn.layer.cornerRadius = 5;
+    [uploadBtn setBackgroundColor:HexColor(@"#33A2EE") forState:UIControlStateNormal];
+    [uploadBtn setBackgroundColor:HexColor(@"#8EB2CD") forState:UIControlStateDisabled];
+    [uploadBtn setBackgroundColor:HexColor(@"#2D84C0") forState:UIControlStateHighlighted];
+    [uploadBtn setTitle:title forState:UIControlStateNormal];
+    uploadBtn.userInteractionEnabled = YES;
+    uploadBtn.titleLabel.font = FONT_SIZE(13);
+    return uploadBtn;
+}
+
+#pragma mark --- 取消操作
+-(void)cancelAction
+{
+    [self.navigationController popViewControllerAnimated:YES];
+}
+
+#pragma mark --- 重置操作
+-(void)resetAction
+{
+    for (int i = 0; i < _listArr.count; i ++) {
+        FormModel *model = _listArr[i];
+        for (id obj in model.showItems) {
+            DetailFormModel *detailFormModel = obj;
+            detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:@"";
+        }
+        
+        for (id obj in model.hideItems) {
+            DetailFormModel *detailFormModel = obj;
+            detailFormModel.fd_value = detailFormModel.fd_defaultvalue != nil ? detailFormModel.fd_defaultvalue:@"";
+        }
+    }
+    
+    [self.tableView reloadData];
+}
+
+#pragma mark --- 自动获取文本高度
+- (CGSize)getSizeWithText:(NSString *)text
+{
+    return [FORMAT(@"%@",text) boundingRectWithSize:CGSizeMake(90, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : FONT_SIZE(14)} context:NULL].size;
+}
+
+#pragma mark --- lazy
+-(UITableView *)tableView{
+    if (!_tableView) {
+        _tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStyleGrouped];
+        _tableView.delegate = self;
+        _tableView.dataSource = self;
+        _tableView.showsVerticalScrollIndicator = NO;
+        [_tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
+        _tableView.backgroundColor = BGKJ_COLOR;
+    }
+    return _tableView;
+}
+
+@end

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

@@ -129,6 +129,35 @@
         allowblank = [NSString stringWithFormat:@"%@",detailModel.dg_logictype];
         readonly = [NSString stringWithFormat:@"%@",detailModel.dg_editable];
         renderer = [NSString stringWithFormat:@"%@",detailModel.dg_renderer];
+        
+        if ([str isEqualToString:@"C"]) {
+            NSString *value = detailModel.dg_value;
+            for (int i = 0; i < detailModel.COMBOSTORE.count; i ++) {
+                NSDictionary *dic = detailModel.COMBOSTORE[i];
+                if ([value isEqualToString:FORMAT(@"%@",[dic objectForKey:@"DLC_DISPLAY"])]) {
+                    value = FORMAT(@"%@",[dic objectForKey:@"DLC_VALUE"]);
+                }
+            }
+            cell.MyTextView.text = value;
+        }
+        
+        //配件用料明细表-特殊要求:来自明细显示是否
+        if ([field isEqualToString:@"dd_source"]) {
+            if ([detailModel.dg_value intValue] > 0) {
+                cell.MyTextView.text = @"是";
+            }else
+                cell.MyTextView.text = @"否";
+        }
+        
+        //附件只显示文件名,不显示ID
+        if ([renderer isEqualToString:@"detailAttach"] || [str isEqualToString:@"FF"]) {
+            NSString *value = detailModel.dg_value;
+            NSArray *arr = [value componentsSeparatedByString:@";"];
+            if (arr.count == 2) {
+                cell.MyTextView.text = FORMAT(@"%@",arr[0]);
+            }
+        }
+        
     }else{
         FormModel *model = tableView.dataArray[indexPath.section];
         DetailFormModel *detailModel = model.showItems[indexPath.row];
@@ -144,6 +173,17 @@
         length = [NSString stringWithFormat:@"%@",detailModel.fd_maxlength];
         allowblank = [NSString stringWithFormat:@"%@",detailModel.fd_logictype];
         readonly = [NSString stringWithFormat:@"%@",detailModel.fd_readonly];
+        
+        if ([str isEqualToString:@"C"]) {
+            NSString *value = detailModel.fd_value;
+            for (int i = 0; i < detailModel.COMBOSTORE.count; i ++) {
+                NSDictionary *dic = detailModel.COMBOSTORE[i];
+                if ([value isEqualToString:FORMAT(@"%@",[dic objectForKey:@"DLC_DISPLAY"])]) {
+                    value = FORMAT(@"%@",[dic objectForKey:@"DLC_VALUE"]);
+                }
+            }
+            cell.MyTextView.text = value;
+        }
     }
     
     /*富文本,为了必填项的红色“*”*/
@@ -240,39 +280,7 @@
 
 - (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;
-    
+    return nil;
 }
 
 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
@@ -476,27 +484,6 @@
     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
 {
@@ -516,6 +503,7 @@
         tableView.dataSource = self;
         tableView.showsVerticalScrollIndicator = NO;
         tableView.backgroundColor = BGB_COLOR;
+        [tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
         tableView.tag = i + 88888;
         
         tableView.dataArray = [NSMutableArray new];
@@ -527,7 +515,14 @@
                 MoreGridModel *model = dArr[j];
                 for (id obj in model.showItems) {
                     DetailgridModel *showObj = obj;
-                    CGFloat height = [self getSizeWithText:FORMAT(@"%@*",showObj.dg_caption)].height;
+                    CGFloat titleHeight = [self getSizeWithText:FORMAT(@"%@*",showObj.dg_caption)].height;
+                    CGFloat valueHeight = [self getSizeWithText:FORMAT(@"%@",showObj.dg_value)].height;
+                    CGFloat height;
+                    if (titleHeight < valueHeight) {
+                        height = valueHeight;
+                    }else{
+                        height = titleHeight;
+                    }
                     NSString *heightStr = FORMAT(@"%f",height+10);
                     if (height < 40) {
                         showObj.cellHeight = @"40";
@@ -659,7 +654,7 @@
      参数4:context 上下文
      */
     
-    return [FORMAT(@"%@",text) boundingRectWithSize:CGSizeMake(90, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : FONT_SIZE(14)} context:NULL].size;
+    return [FORMAT(@"%@",text) boundingRectWithSize:CGSizeMake(SCREEN_WIDTH-90-10, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : FONT_SIZE(14)} context:NULL].size;
 }
 
 @end

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

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

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

@@ -0,0 +1,786 @@
+//
+//  DeviceSpecialView.m
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/6/25.
+//
+
+#import "DeviceSpecialView.h"
+#import <objc/runtime.h>
+#import "DocumentCell.h"
+#import "MoreGridModel.h"
+
+@implementation UITableView(adata)
+
+-(void)setDataArray:(NSMutableArray *)dataArray{
+    objc_setAssociatedObject(self, @"UITableViewDataArray", dataArray, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
+    [self reloadData];
+}
+
+-(NSMutableArray *)dataArray{
+    return objc_getAssociatedObject(self, @"UITableViewDataArray");
+}
+
+@end
+
+@interface DeviceSpecialView()<UIScrollViewDelegate,UITableViewDelegate,UITableViewDataSource,HypTextViewDelegate>
+@property(strong,nonatomic)UIScrollView *scorlView;
+@property(strong,nonatomic)HMSegmentedControl *segment;
+@end
+
+@implementation DeviceSpecialView
+- (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];
+        
+        if ([str isEqualToString:@"C"]) {
+            NSString *value = detailModel.dg_value;
+            for (int i = 0; i < detailModel.COMBOSTORE.count; i ++) {
+                NSDictionary *dic = detailModel.COMBOSTORE[i];
+                if ([value isEqualToString:FORMAT(@"%@",[dic objectForKey:@"DLC_DISPLAY"])]) {
+                    value = FORMAT(@"%@",[dic objectForKey:@"DLC_VALUE"]);
+                }
+            }
+            cell.MyTextView.text = value;
+        }
+        
+        //配件用料明细表-特殊要求:来自明细显示是否
+        if ([field isEqualToString:@"dd_source"]) {
+            if ([detailModel.dg_value intValue] > 0) {
+                cell.MyTextView.text = @"是";
+            }else
+                cell.MyTextView.text = @"否";
+        }
+        
+    }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_allowblank];
+        readonly = [NSString stringWithFormat:@"%@",detailModel.fd_readonly];
+        
+        if ([str isEqualToString:@"C"]) {
+            NSString *value = detailModel.fd_value;
+            for (int i = 0; i < detailModel.COMBOSTORE.count; i ++) {
+                NSDictionary *dic = detailModel.COMBOSTORE[i];
+                if ([value isEqualToString:FORMAT(@"%@",[dic objectForKey:@"DLC_DISPLAY"])]) {
+                    value = FORMAT(@"%@",[dic objectForKey:@"DLC_VALUE"]);
+                }
+            }
+            cell.MyTextView.text = value;
+        }
+    }
+    
+    /*富文本,为了必填项的红色“*”*/
+    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 (self.idStr) {
+        if ([field isEqualToString:@"dc_devcode"] || [field isEqualToString:@"dc_kind"]) {
+            cell.MyTextView.userInteractionEnabled = NO;
+        }
+    }
+    
+    //附件判断-可点击查看附件
+    if ([renderer isEqualToString:@"detailAttach"] || [str isEqualToString:@"FF"]) {
+        cell.MyTextView.userInteractionEnabled = YES;
+    }
+    
+    //配件用料明细表-特殊要求:如果来自设备明细时,类型和编号不能编辑
+    if ([field isEqualToString:@"dd_ordercode"] || [field isEqualToString:@"dd_type"]) {
+        MoreGridModel *model = tableView.dataArray[indexPath.section];
+        NSString *dgValue = @"";
+        for (int i = 0; i < model.showItems.count; i++) {
+            DetailgridModel *detailModel = model.showItems[i];
+            if ([detailModel.dg_field isEqualToString:@"dd_source"]) {
+                dgValue = FORMAT(@"%@",detailModel.dg_value);
+            }
+        }
+        for (int i = 0; i < model.hideItems.count; i++) {
+            DetailgridModel *detailModel = model.hideItems[i];
+            if ([detailModel.dg_field isEqualToString:@"dd_source"]) {
+                dgValue = FORMAT(@"%@",detailModel.dg_value);
+            }
+        }
+        if (dgValue.length != 0) {
+            cell.MyTextView.userInteractionEnabled = NO;
+        }
+    }
+    
+    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 == Edit) {
+        return 10;
+    }else{
+        id obj = tableView.dataArray[section];
+        if ([obj isKindOfClass:[MoreGridModel class]]) {
+            return 40;
+        }else
+            return 10;
+    }
+}
+
+-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
+{
+    return CGFLOAT_MIN;
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+    if (_statuType == Edit) {
+        
+        return nil;
+        
+    }else{
+        
+        id obj = tableView.dataArray[section];
+        if ([obj isKindOfClass:[MoreGridModel class]]) {
+            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];
+            
+            MoreGridModel *model = obj;
+            NSString *dgValue = @"0";
+            for (int i = 0; i < model.showItems.count; i++) {
+                DetailgridModel *detailModel = model.showItems[i];
+                if ([detailModel.dg_field isEqualToString:@"dd_source"]) {
+                    if (detailModel.dg_value.length != 0) {
+                        dgValue = FORMAT(@"%@",detailModel.dg_value);
+                    }
+                }
+            }
+            for (int i = 0; i < model.hideItems.count; i++) {
+                DetailgridModel *detailModel = model.hideItems[i];
+                if ([detailModel.dg_field isEqualToString:@"dd_source"]) {
+                    if (detailModel.dg_value.length != 0) {
+                        dgValue = FORMAT(@"%@",detailModel.dg_value);
+                    }
+                }
+            }
+            
+            if (_statuType != Edit && [dgValue intValue] == 0) {
+                if (![model.dgcaller isEqualToString:@"DeviceChange!Maintain"]) {
+                    UIButton *deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+                    deleteBtn.frame = CGRectMake(SCREEN_WIDTH-70, 4, 70, 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, 70, 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;
+            
+        }else{
+            return nil;
+        }
+        
+    }
+}
+
+- (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
+{
+    [UASAlertView showWithTitle:nil content:@"确认删除该明细?" sureTitle:Localized(@"UU_custom_sure") cancelTitle:Localized(@"UU_custom_cancle") click:^(NSInteger index) {
+        if (index == 2) {
+            UITableView *tableView = objc_getAssociatedObject(sender, "firstObject");
+            
+            int section = [objc_getAssociatedObject(sender, "secondObject") intValue];
+            
+            if (tableView.dataArray.count == 1) {
+                MoreGridModel *model = [MoreGridModel copyWithModel:tableView.dataArray[section]];
+                
+                [tableView.dataArray removeObjectAtIndex:section];
+                
+                [tableView.dataArray addObject:model];
+            }
+            else{
+                [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];
+        NSString *objType = @"Form"; NSString *caller = @"DefaultCaller";
+        for (int j = 0; j < dArr.count; j++) {
+            id obj = dArr[j];
+            if ([obj isKindOfClass:[MoreGridModel class]]) {
+                objType = @"Grid";
+                MoreGridModel *model = dArr[j];
+                caller = model.dgcaller;
+                for (id obj in model.showItems) {
+                    DetailgridModel *showObj = obj;
+                    CGFloat titleHeight = [self getSizeWithText:FORMAT(@"%@*",showObj.dg_caption)].height;
+                    CGFloat valueHeight = [self getSizeWithText:FORMAT(@"%@",showObj.dg_value)].height;
+                    CGFloat height;
+                    if (titleHeight < valueHeight) {
+                        height = valueHeight;
+                    }else{
+                        height = titleHeight;
+                    }
+                    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 != Edit && [objType isEqualToString:@"Grid"] && ![caller isEqualToString:@"DeviceChange!Maintain"]) {
+            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(SCREEN_WIDTH-90-10, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : FONT_SIZE(14)} context:NULL].size;
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

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

@@ -0,0 +1,17 @@
+//
+//  TransCell.h
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/8.
+//
+
+#import <UIKit/UIKit.h>
+#import "HypTextView.h"
+
+@interface TransCell : UITableViewCell
+
+@property (nonatomic, strong) HypTextView *MyTextView;
+
+@property (nonatomic, strong) UILabel *titleName;
+
+@end

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

@@ -0,0 +1,63 @@
+//
+//  TransCell.m
+//  shiku_im
+//
+//  Created by huangyp-pc on 2019/7/8.
+//
+
+#import "TransCell.h"
+
+@implementation TransCell
+
+-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
+    {
+        self.contentView.backgroundColor = BGKJ_COLOR;
+        
+        _titleName = [[UILabel alloc]initWithFrame:CGRectMake(5, 0, 90, 40)];
+        _titleName.textColor = HexColor(@"#333333");
+        _titleName.font = FONT_SIZE(14);
+        _titleName.numberOfLines = 0;
+        [self.contentView addSubview:_titleName];
+        _titleName.lineBreakMode = NSLineBreakByCharWrapping;
+        
+        _MyTextView = [[HypTextView alloc] initWithFrame:CGRectMake(95, 5, SCREEN_WIDTH-90-10, 40)];
+        _MyTextView.textColor = HexColor(@"#999999");
+        _MyTextView.font = FONT_SIZE(14);
+        _MyTextView.isCanExtend = YES;
+        _MyTextView.extendLimitRow = 5;
+        _MyTextView.layer.cornerRadius = 5.0;
+        _MyTextView.layer.masksToBounds = YES;
+        _MyTextView.layer.borderWidth = 0.5;
+        _MyTextView.layer.borderColor = [UIColor lightGrayColor].CGColor;
+        
+        /** 伸缩方向 */
+        _MyTextView.extendDirection = ExtendDown;
+        _MyTextView.backgroundColor = [UIColor clearColor];
+        _MyTextView.textAlignment = NSTextAlignmentRight;
+        _MyTextView.returnKeyType = UIReturnKeyDone;
+        [self.contentView addSubview:_MyTextView];
+        
+    }
+    return self;
+}
+
+-(void)layoutSubviews
+{
+    [super layoutSubviews];
+    _MyTextView.frame = CGRectMake(95, 5, self.contentView.frame.size.width-90-10, 40);
+}
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

Some files were not shown because too many files changed in this diff