Commit c25aa29db5e9eafd76d4b54f3476fddaa7d016f9
1 parent
95533522
提交身份认证界面
Showing
19 changed files
with
974 additions
and
31 deletions
Podfile
| @@ -12,8 +12,6 @@ target 'metaCode' do | @@ -12,8 +12,6 @@ target 'metaCode' do | ||
| 12 | # Comment the next line if you don't want to use dynamic frameworks | 12 | # Comment the next line if you don't want to use dynamic frameworks |
| 13 | use_frameworks! | 13 | use_frameworks! |
| 14 | 14 | ||
| 15 | -# pod 'YYCategories' | ||
| 16 | - | ||
| 17 | # Pods for metaCode | 15 | # Pods for metaCode |
| 18 | #网络请求基础库 | 16 | #网络请求基础库 |
| 19 | pod 'AFNetworking' | 17 | pod 'AFNetworking' |
| @@ -23,6 +21,8 @@ target 'metaCode' do | @@ -23,6 +21,8 @@ target 'metaCode' do | ||
| 23 | pod 'IQKeyboardManagerSwift' | 21 | pod 'IQKeyboardManagerSwift' |
| 24 | #布局文件 | 22 | #布局文件 |
| 25 | pod 'SnapKit' | 23 | pod 'SnapKit' |
| 24 | + #刷新组件 | ||
| 25 | + pod 'MJRefresh' | ||
| 26 | #加载框 | 26 | #加载框 |
| 27 | pod 'MBProgressHUD' | 27 | pod 'MBProgressHUD' |
| 28 | #空白占位 | 28 | #空白占位 |
metaCode.xcodeproj/project.pbxproj
| @@ -9,6 +9,7 @@ | @@ -9,6 +9,7 @@ | ||
| 9 | /* Begin PBXBuildFile section */ | 9 | /* Begin PBXBuildFile section */ |
| 10 | 0D39E93D7229931C86EB1161 /* Pods_metaCode_metaCodeUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63D879B49B1E42F1584DD75E /* Pods_metaCode_metaCodeUITests.framework */; }; | 10 | 0D39E93D7229931C86EB1161 /* Pods_metaCode_metaCodeUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63D879B49B1E42F1584DD75E /* Pods_metaCode_metaCodeUITests.framework */; }; |
| 11 | 1DD2808DF02C120276F99F4D /* Pods_metaCode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F1C55A719CFEE073C06D37CE /* Pods_metaCode.framework */; }; | 11 | 1DD2808DF02C120276F99F4D /* Pods_metaCode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F1C55A719CFEE073C06D37CE /* Pods_metaCode.framework */; }; |
| 12 | + 7905BB492AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7905BB482AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift */; }; | ||
| 12 | 790B1FB42A4153E90074CF00 /* CNLiveMineBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 790B1FB32A4153E90074CF00 /* CNLiveMineBaseModel.swift */; }; | 13 | 790B1FB42A4153E90074CF00 /* CNLiveMineBaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 790B1FB32A4153E90074CF00 /* CNLiveMineBaseModel.swift */; }; |
| 13 | 790B1FB62A41938F0074CF00 /* UIImage+CNLiveExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 790B1FB52A41938F0074CF00 /* UIImage+CNLiveExtensions.swift */; }; | 14 | 790B1FB62A41938F0074CF00 /* UIImage+CNLiveExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 790B1FB52A41938F0074CF00 /* UIImage+CNLiveExtensions.swift */; }; |
| 14 | 790B1FB82A41B6A60074CF00 /* CNLiveMineMessageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 790B1FB72A41B6A60074CF00 /* CNLiveMineMessageViewController.swift */; }; | 15 | 790B1FB82A41B6A60074CF00 /* CNLiveMineMessageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 790B1FB72A41B6A60074CF00 /* CNLiveMineMessageViewController.swift */; }; |
| @@ -33,6 +34,7 @@ | @@ -33,6 +34,7 @@ | ||
| 33 | 793CAF522A58FCA200882EF4 /* CNLiveMineExchangeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 793CAF512A58FCA200882EF4 /* CNLiveMineExchangeViewController.swift */; }; | 34 | 793CAF522A58FCA200882EF4 /* CNLiveMineExchangeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 793CAF512A58FCA200882EF4 /* CNLiveMineExchangeViewController.swift */; }; |
| 34 | 796398942A260C0100D045EB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963988D2A260C0100D045EB /* AppDelegate.swift */; }; | 35 | 796398942A260C0100D045EB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963988D2A260C0100D045EB /* AppDelegate.swift */; }; |
| 35 | 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */; }; | 36 | 7963989D2A260E6200D045EB /* CNLiveBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */; }; |
| 37 | + 79656E382AAEBA8E00119A61 /* CNLiveMineInputViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79656E372AAEBA8E00119A61 /* CNLiveMineInputViewController.swift */; }; | ||
| 36 | 7978A8432A396632007C86B8 /* CNLiveMineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */; }; | 38 | 7978A8432A396632007C86B8 /* CNLiveMineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */; }; |
| 37 | 7987BF3D2A497644000A1ABC /* CNLiveMineQuestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */; }; | 39 | 7987BF3D2A497644000A1ABC /* CNLiveMineQuestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */; }; |
| 38 | 7989B5C52A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */; }; | 40 | 7989B5C52A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */; }; |
| @@ -111,6 +113,7 @@ | @@ -111,6 +113,7 @@ | ||
| 111 | 63D879B49B1E42F1584DD75E /* Pods_metaCode_metaCodeUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_metaCode_metaCodeUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | 113 | 63D879B49B1E42F1584DD75E /* Pods_metaCode_metaCodeUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_metaCode_metaCodeUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; |
| 112 | 67F8190701D1AB7F7724E8BA /* Pods-metaCodeTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-metaCodeTests.release.xcconfig"; path = "Target Support Files/Pods-metaCodeTests/Pods-metaCodeTests.release.xcconfig"; sourceTree = "<group>"; }; | 114 | 67F8190701D1AB7F7724E8BA /* Pods-metaCodeTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-metaCodeTests.release.xcconfig"; path = "Target Support Files/Pods-metaCodeTests/Pods-metaCodeTests.release.xcconfig"; sourceTree = "<group>"; }; |
| 113 | 721865F548C997EFAE525B6F /* Pods-metaCode-metaCodeUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-metaCode-metaCodeUITests.release.xcconfig"; path = "Target Support Files/Pods-metaCode-metaCodeUITests/Pods-metaCode-metaCodeUITests.release.xcconfig"; sourceTree = "<group>"; }; | 115 | 721865F548C997EFAE525B6F /* Pods-metaCode-metaCodeUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-metaCode-metaCodeUITests.release.xcconfig"; path = "Target Support Files/Pods-metaCode-metaCodeUITests/Pods-metaCode-metaCodeUITests.release.xcconfig"; sourceTree = "<group>"; }; |
| 116 | + 7905BB482AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineAuthResultViewController.swift; sourceTree = "<group>"; }; | ||
| 114 | 790B1FB32A4153E90074CF00 /* CNLiveMineBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineBaseModel.swift; sourceTree = "<group>"; }; | 117 | 790B1FB32A4153E90074CF00 /* CNLiveMineBaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineBaseModel.swift; sourceTree = "<group>"; }; |
| 115 | 790B1FB52A41938F0074CF00 /* UIImage+CNLiveExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+CNLiveExtensions.swift"; sourceTree = "<group>"; }; | 118 | 790B1FB52A41938F0074CF00 /* UIImage+CNLiveExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+CNLiveExtensions.swift"; sourceTree = "<group>"; }; |
| 116 | 790B1FB72A41B6A60074CF00 /* CNLiveMineMessageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineMessageViewController.swift; sourceTree = "<group>"; }; | 119 | 790B1FB72A41B6A60074CF00 /* CNLiveMineMessageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineMessageViewController.swift; sourceTree = "<group>"; }; |
| @@ -135,6 +138,7 @@ | @@ -135,6 +138,7 @@ | ||
| 135 | 793CAF512A58FCA200882EF4 /* CNLiveMineExchangeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineExchangeViewController.swift; sourceTree = "<group>"; }; | 138 | 793CAF512A58FCA200882EF4 /* CNLiveMineExchangeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineExchangeViewController.swift; sourceTree = "<group>"; }; |
| 136 | 7963988D2A260C0100D045EB /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; | 139 | 7963988D2A260C0100D045EB /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; |
| 137 | 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CNLiveBaseViewController.swift; sourceTree = "<group>"; }; | 140 | 7963989C2A260E6200D045EB /* CNLiveBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CNLiveBaseViewController.swift; sourceTree = "<group>"; }; |
| 141 | + 79656E372AAEBA8E00119A61 /* CNLiveMineInputViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineInputViewController.swift; sourceTree = "<group>"; }; | ||
| 138 | 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineViewModel.swift; sourceTree = "<group>"; }; | 142 | 7978A8422A396632007C86B8 /* CNLiveMineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineViewModel.swift; sourceTree = "<group>"; }; |
| 139 | 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineQuestViewController.swift; sourceTree = "<group>"; }; | 143 | 7987BF3C2A497644000A1ABC /* CNLiveMineQuestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineQuestViewController.swift; sourceTree = "<group>"; }; |
| 140 | 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineEarnViewController.swift; sourceTree = "<group>"; }; | 144 | 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CNLiveMineEarnViewController.swift; sourceTree = "<group>"; }; |
| @@ -323,6 +327,8 @@ | @@ -323,6 +327,8 @@ | ||
| 323 | 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */, | 327 | 7989B5C42A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift */, |
| 324 | 7989B5C62A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift */, | 328 | 7989B5C62A4BDC7200A19B10 /* CNLiveMineEarnListViewController.swift */, |
| 325 | 793CAF512A58FCA200882EF4 /* CNLiveMineExchangeViewController.swift */, | 329 | 793CAF512A58FCA200882EF4 /* CNLiveMineExchangeViewController.swift */, |
| 330 | + 79656E372AAEBA8E00119A61 /* CNLiveMineInputViewController.swift */, | ||
| 331 | + 7905BB482AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift */, | ||
| 326 | ); | 332 | ); |
| 327 | path = Controller; | 333 | path = Controller; |
| 328 | sourceTree = "<group>"; | 334 | sourceTree = "<group>"; |
| @@ -878,6 +884,7 @@ | @@ -878,6 +884,7 @@ | ||
| 878 | 7CD675402A2740B0008354C1 /* CNDownSlideView.swift in Sources */, | 884 | 7CD675402A2740B0008354C1 /* CNDownSlideView.swift in Sources */, |
| 879 | 7C2703362A3AFD3A0061EC50 /* CNLiveEnvironment.swift in Sources */, | 885 | 7C2703362A3AFD3A0061EC50 /* CNLiveEnvironment.swift in Sources */, |
| 880 | 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */, | 886 | 798A44FD2A309EBA00815935 /* CNLiveTypeFeedBackViewController.swift in Sources */, |
| 887 | + 79656E382AAEBA8E00119A61 /* CNLiveMineInputViewController.swift in Sources */, | ||
| 881 | 7CD6754F2A2840B9008354C1 /* CNMetaCodeHomePageController.swift in Sources */, | 888 | 7CD6754F2A2840B9008354C1 /* CNMetaCodeHomePageController.swift in Sources */, |
| 882 | 7989B5C52A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift in Sources */, | 889 | 7989B5C52A4BDC6000A19B10 /* CNLiveMineEarnViewController.swift in Sources */, |
| 883 | 792E57DB2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift in Sources */, | 890 | 792E57DB2A3AE9F4005834DB /* CNLiveCommonQiniuTool.swift in Sources */, |
| @@ -896,6 +903,7 @@ | @@ -896,6 +903,7 @@ | ||
| 896 | 79396EED2A319F220053E1AF /* NSObject+CNLiveExtensions.swift in Sources */, | 903 | 79396EED2A319F220053E1AF /* NSObject+CNLiveExtensions.swift in Sources */, |
| 897 | 7C4931312A2F142F000E44B4 /* CNHomePageBackgroupView.swift in Sources */, | 904 | 7C4931312A2F142F000E44B4 /* CNHomePageBackgroupView.swift in Sources */, |
| 898 | 790D018B2A2D8B3300C5978D /* CNLiveLoginViewController.swift in Sources */, | 905 | 790D018B2A2D8B3300C5978D /* CNLiveLoginViewController.swift in Sources */, |
| 906 | + 7905BB492AB0588B0089BC50 /* CNLiveMineAuthResultViewController.swift in Sources */, | ||
| 899 | 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */, | 907 | 798A44EC2A302DBE00815935 /* CNLiveMineAddInfoViewController.swift in Sources */, |
| 900 | 7CD675422A2740F8008354C1 /* CNCustomIndexView.swift in Sources */, | 908 | 7CD675422A2740F8008354C1 /* CNCustomIndexView.swift in Sources */, |
| 901 | 790D01912A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift in Sources */, | 909 | 790D01912A2DAC5E00C5978D /* CNLiveConfigFontMacro.swift in Sources */, |
metaCode/Classes/Common/Base/CNLiveBaseViewController.swift
| @@ -50,6 +50,19 @@ class CNLiveBaseViewController: UIViewController { | @@ -50,6 +50,19 @@ class CNLiveBaseViewController: UIViewController { | ||
| 50 | } | 50 | } |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | + public var _leftBtnWhite: Bool = false | ||
| 54 | + public var leftBtnWhite: Bool { | ||
| 55 | + get { | ||
| 56 | + return _leftBtnWhite | ||
| 57 | + } | ||
| 58 | + set { | ||
| 59 | + _leftBtnWhite = newValue | ||
| 60 | + //先设置一个默认返回按钮 | ||
| 61 | + let leftBtn_array : Array<UIButton> = [UIButton.backItem(imageName: (_leftBtnWhite ? "mine_header_icon_white_back":"main_navi_left_icon_back"), target: self, action: #selector(ClickBackBtn))] | ||
| 62 | + leftNavBtns = leftBtn_array | ||
| 63 | + } | ||
| 64 | + } | ||
| 65 | + | ||
| 53 | /// //顶部导航内容(不带topLine)偏移量Y 初始值为0 | 66 | /// //顶部导航内容(不带topLine)偏移量Y 初始值为0 |
| 54 | public var _topNavViewSubUIContentOffsetY: CGFloat = 0.0 | 67 | public var _topNavViewSubUIContentOffsetY: CGFloat = 0.0 |
| 55 | public var topNavViewSubUIContentOffsetY: CGFloat { | 68 | public var topNavViewSubUIContentOffsetY: CGFloat { |
| @@ -199,9 +212,7 @@ class CNLiveBaseViewController: UIViewController { | @@ -199,9 +212,7 @@ class CNLiveBaseViewController: UIViewController { | ||
| 199 | topNavView.addSubview(titleLabel) | 212 | topNavView.addSubview(titleLabel) |
| 200 | topNavView.addSubview(topLine) | 213 | topNavView.addSubview(topLine) |
| 201 | 214 | ||
| 202 | - //先设置一个默认返回按钮 | ||
| 203 | - let leftBtn_array : Array<UIButton> = [UIButton.backItem(imageName: "main_navi_left_icon_back", target: self, action: #selector(ClickBackBtn))] | ||
| 204 | - leftNavBtns = leftBtn_array | 215 | + leftBtnWhite = false |
| 205 | } | 216 | } |
| 206 | 217 | ||
| 207 | @objc func ClickBackBtn() { | 218 | @objc func ClickBackBtn() { |
metaCode/Classes/Config/Database/CNLiveIdentityDB.swift
| @@ -12,7 +12,7 @@ import WCDBSwift | @@ -12,7 +12,7 @@ import WCDBSwift | ||
| 12 | let CNLiveIdentityTableName = "CNLiveIdentityTable" | 12 | let CNLiveIdentityTableName = "CNLiveIdentityTable" |
| 13 | 13 | ||
| 14 | ///身份model | 14 | ///身份model |
| 15 | -class CNLiveIdentityModel: BaseModel,TableCodable { | 15 | +final class CNLiveIdentityModel: BaseModel,TableCodable { |
| 16 | var id: String = "" | 16 | var id: String = "" |
| 17 | var name: String? | 17 | var name: String? |
| 18 | var icon: String? | 18 | var icon: String? |
metaCode/Classes/Extensions/NSObject+CNLiveExtensions.swift
| @@ -94,7 +94,7 @@ func showMessage(message: String) { | @@ -94,7 +94,7 @@ func showMessage(message: String) { | ||
| 94 | /// - Parameter message: 提示词 | 94 | /// - Parameter message: 提示词 |
| 95 | func showLoading(message: String) { | 95 | func showLoading(message: String) { |
| 96 | let delegate = UIApplication.shared.delegate as! AppDelegate | 96 | let delegate = UIApplication.shared.delegate as! AppDelegate |
| 97 | - | 97 | + |
| 98 | delegate.window?.subviews.forEach({ view in | 98 | delegate.window?.subviews.forEach({ view in |
| 99 | if view.isKind(of: MBProgressHUD.layerClass) { | 99 | if view.isKind(of: MBProgressHUD.layerClass) { |
| 100 | let hub = view as! MBProgressHUD | 100 | let hub = view as! MBProgressHUD |
metaCode/Classes/Main/MinePage/Controller/CNLiveMineAddInfoViewController.swift
| @@ -7,6 +7,7 @@ | @@ -7,6 +7,7 @@ | ||
| 7 | 7 | ||
| 8 | import Foundation | 8 | import Foundation |
| 9 | import EmptyDataSet_Swift | 9 | import EmptyDataSet_Swift |
| 10 | +import MJRefresh | ||
| 10 | 11 | ||
| 11 | enum CNLiveMineInfoShowType { | 12 | enum CNLiveMineInfoShowType { |
| 12 | case add//添加身份 | 13 | case add//添加身份 |
| @@ -39,13 +40,13 @@ class CNLiveMineAddInfoViewController : CNLiveBaseViewController, UITableViewDel | @@ -39,13 +40,13 @@ class CNLiveMineAddInfoViewController : CNLiveBaseViewController, UITableViewDel | ||
| 39 | 40 | ||
| 40 | lazy var dataArray: NSMutableArray = { | 41 | lazy var dataArray: NSMutableArray = { |
| 41 | var dataArray = NSMutableArray() | 42 | var dataArray = NSMutableArray() |
| 42 | - if _show_type == .add { | ||
| 43 | - dataArray.add(["image":"mine_header_icon_defult_ava","name":"志愿者身份"]) | ||
| 44 | - dataArray.add(["image":"mine_header_icon_defult_ava","name":"退伍军人身份"]) | ||
| 45 | - } | ||
| 46 | if _show_type == .info { | 43 | if _show_type == .info { |
| 47 | dataArray.add(["image":"mine_header_icon_defult_ava","name":"志愿者身份","number":"证件编号:410800111127954"]) | 44 | dataArray.add(["image":"mine_header_icon_defult_ava","name":"志愿者身份","number":"证件编号:410800111127954"]) |
| 48 | - dataArray.add(["image":"mine_header_icon_defult_ava","name":"退伍军人身份","number":"证件编号:410800111127954"]) | 45 | + dataArray.add(["image":"mine_header_icon_defult_ava","name":"退伍军人身份","number":"证件编号:410800111127912"]) |
| 46 | + dataArray.add(["image":"mine_header_icon_defult_ava","name":"退伍军人身份","number":"证件编号:410800111127934"]) | ||
| 47 | + dataArray.add(["image":"mine_header_icon_defult_ava","name":"退伍军人身份","number":"证件编号:410800111127956"]) | ||
| 48 | + dataArray.add(["image":"mine_header_icon_defult_ava","name":"退伍军人身份","number":"证件编号:410800111127967"]) | ||
| 49 | + dataArray.add(["image":"mine_header_icon_defult_ava","name":"退伍军人身份","number":"证件编号:410800111127978"]) | ||
| 49 | } | 50 | } |
| 50 | return dataArray | 51 | return dataArray |
| 51 | }() | 52 | }() |
| @@ -75,13 +76,16 @@ class CNLiveMineAddInfoViewController : CNLiveBaseViewController, UITableViewDel | @@ -75,13 +76,16 @@ class CNLiveMineAddInfoViewController : CNLiveBaseViewController, UITableViewDel | ||
| 75 | return copyButton | 76 | return copyButton |
| 76 | }() | 77 | }() |
| 77 | 78 | ||
| 79 | + var pageNum: NSInteger | ||
| 78 | var network_type: CNLiveMineResponseType! | 80 | var network_type: CNLiveMineResponseType! |
| 79 | var _show_type:CNLiveMineInfoShowType! | 81 | var _show_type:CNLiveMineInfoShowType! |
| 80 | init(show_type:CNLiveMineInfoShowType) { | 82 | init(show_type:CNLiveMineInfoShowType) { |
| 83 | + self.pageNum = 1 | ||
| 81 | super.init(nibName:nil, bundle:nil) | 84 | super.init(nibName:nil, bundle:nil) |
| 82 | _show_type = show_type | 85 | _show_type = show_type |
| 83 | } | 86 | } |
| 84 | 87 | ||
| 88 | + | ||
| 85 | required init?(coder: NSCoder) { | 89 | required init?(coder: NSCoder) { |
| 86 | fatalError("init(coder:) has not been implemented") | 90 | fatalError("init(coder:) has not been implemented") |
| 87 | } | 91 | } |
| @@ -96,14 +100,13 @@ class CNLiveMineAddInfoViewController : CNLiveBaseViewController, UITableViewDel | @@ -96,14 +100,13 @@ class CNLiveMineAddInfoViewController : CNLiveBaseViewController, UITableViewDel | ||
| 96 | tableView.dragInteractionEnabled = true | 100 | tableView.dragInteractionEnabled = true |
| 97 | case .message: | 101 | case .message: |
| 98 | titleName = "消息中心" | 102 | titleName = "消息中心" |
| 99 | - loadData() | ||
| 100 | // topNavView.addSubview(setButton) | 103 | // topNavView.addSubview(setButton) |
| 101 | // topNavView.addSubview(copyButton) | 104 | // topNavView.addSubview(copyButton) |
| 102 | - | ||
| 103 | case .none: | 105 | case .none: |
| 104 | break | 106 | break |
| 105 | } | 107 | } |
| 106 | - | 108 | + loadData() |
| 109 | + addRefreshView() | ||
| 107 | navigationBarHidden = false | 110 | navigationBarHidden = false |
| 108 | view.addSubview(tableView) | 111 | view.addSubview(tableView) |
| 109 | tableView.snp.makeConstraints { make in | 112 | tableView.snp.makeConstraints { make in |
| @@ -111,17 +114,58 @@ class CNLiveMineAddInfoViewController : CNLiveBaseViewController, UITableViewDel | @@ -111,17 +114,58 @@ class CNLiveMineAddInfoViewController : CNLiveBaseViewController, UITableViewDel | ||
| 111 | make.left.right.bottom.equalToSuperview() | 114 | make.left.right.bottom.equalToSuperview() |
| 112 | } | 115 | } |
| 113 | } | 116 | } |
| 117 | + | ||
| 114 | 118 | ||
| 115 | - func loadData() { | ||
| 116 | - CNLiveMineViewModel.requestMessage { [weak self] result, respStatue in | ||
| 117 | - self!.network_type = respStatue | ||
| 118 | - if respStatue == .success { | ||
| 119 | - self!.listArray = (result as! NewsModel).list | ||
| 120 | - self!.tableView.reloadData() | ||
| 121 | - }else{ | ||
| 122 | - self!.tableView.reloadEmptyDataSet() | 119 | + private func loadData() { |
| 120 | + if _show_type == .add { | ||
| 121 | + CNLiveMineViewModel.requestAuthStandList(page: self.pageNum) { [weak self] result, respStatue in | ||
| 122 | + if respStatue == .success { | ||
| 123 | + let listBaseModel = result as! StandListBaseModel | ||
| 124 | + if listBaseModel.pageNum == 1 { | ||
| 125 | + self!.dataArray.removeAllObjects() | ||
| 126 | + self!.dataArray.addObjects(from: (result as! StandListBaseModel).list) | ||
| 127 | + self!.tableView.reloadData() | ||
| 128 | + self!.tableView.mj_header?.endRefreshing() | ||
| 129 | + self!.tableView.mj_footer?.endRefreshing() | ||
| 130 | + } | ||
| 131 | + if listBaseModel.total == listBaseModel.pageNum { | ||
| 132 | + self!.tableView.mj_footer?.endRefreshing() | ||
| 133 | + self!.tableView.mj_footer?.endRefreshingWithNoMoreData() | ||
| 134 | + self!.tableView.reloadData() | ||
| 135 | + } | ||
| 136 | + }else if (respStatue == .noNetwork) { | ||
| 137 | + self!.network_type = .noNetwork | ||
| 138 | + self!.tableView.reloadEmptyDataSet() | ||
| 139 | + } else { | ||
| 140 | + self!.network_type = .failed | ||
| 141 | + self!.tableView.reloadEmptyDataSet() | ||
| 142 | + } | ||
| 123 | } | 143 | } |
| 124 | } | 144 | } |
| 145 | + if _show_type == .message { | ||
| 146 | + CNLiveMineViewModel.requestMessage { [weak self] result, respStatue in | ||
| 147 | + self!.network_type = respStatue | ||
| 148 | + if respStatue == .success { | ||
| 149 | + self!.listArray = (result as! NewsModel).list | ||
| 150 | + self!.tableView.reloadData() | ||
| 151 | + }else{ | ||
| 152 | + self!.tableView.reloadEmptyDataSet() | ||
| 153 | + } | ||
| 154 | + } | ||
| 155 | + } | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + private func addRefreshView() { | ||
| 159 | + if _show_type == .add { | ||
| 160 | + tableView.mj_header = MJRefreshNormalHeader.init(refreshingBlock: {[weak self] in | ||
| 161 | + self!.pageNum = 1 | ||
| 162 | + self!.loadData() | ||
| 163 | + }) | ||
| 164 | + tableView.mj_footer = MJRefreshFooter.init(refreshingBlock: {[weak self] in | ||
| 165 | + self!.pageNum += 1 | ||
| 166 | + self!.loadData() | ||
| 167 | + }) | ||
| 168 | + } | ||
| 125 | } | 169 | } |
| 126 | 170 | ||
| 127 | 171 | ||
| @@ -198,8 +242,8 @@ extension CNLiveMineAddInfoViewController { | @@ -198,8 +242,8 @@ extension CNLiveMineAddInfoViewController { | ||
| 198 | guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveMineInfoLListTableViewIdentifier) as? MineInfoLListTableViewCell else { | 242 | guard let cell = tableView.dequeueReusableCell(withIdentifier: kCNLiveMineInfoLListTableViewIdentifier) as? MineInfoLListTableViewCell else { |
| 199 | return MineInfoLListTableViewCell() | 243 | return MineInfoLListTableViewCell() |
| 200 | } | 244 | } |
| 201 | - let dict = dataArray[indexPath.row] as! Dictionary<String, Any> | ||
| 202 | - cell.setupWithDataSource(icon: dict["image"] as! String, name: dict["name"] as! String) | 245 | + let listModel = dataArray[indexPath.row] as! StandListModel |
| 246 | + cell.setupWithDataSource(icon: listModel.icon!, name: listModel.name!, is_auth: listModel.auth) | ||
| 203 | cell.userInteractionEnabledWhileDragging = true | 247 | cell.userInteractionEnabledWhileDragging = true |
| 204 | return cell | 248 | return cell |
| 205 | 249 | ||
| @@ -226,6 +270,14 @@ extension CNLiveMineAddInfoViewController { | @@ -226,6 +270,14 @@ extension CNLiveMineAddInfoViewController { | ||
| 226 | let listModel = listArray[indexPath.row] | 270 | let listModel = listArray[indexPath.row] |
| 227 | self.navigationController?.pushViewController(CNLiveMineMessageViewController.init(listModel: listModel), animated: true) | 271 | self.navigationController?.pushViewController(CNLiveMineMessageViewController.init(listModel: listModel), animated: true) |
| 228 | } | 272 | } |
| 273 | + if _show_type == .add { | ||
| 274 | + let listModel = dataArray[indexPath.row] as! StandListModel | ||
| 275 | + if listModel.auth { | ||
| 276 | + showMessage(message: "您已添加此身份,请直接使用") | ||
| 277 | + return | ||
| 278 | + } | ||
| 279 | + self.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: listModel), animated: true) | ||
| 280 | + } | ||
| 229 | } | 281 | } |
| 230 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | 282 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { |
| 231 | return 100 | 283 | return 100 |
| @@ -247,6 +299,9 @@ extension CNLiveMineAddInfoViewController { | @@ -247,6 +299,9 @@ extension CNLiveMineAddInfoViewController { | ||
| 247 | func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, | 299 | func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, |
| 248 | to destinationIndexPath: IndexPath) { | 300 | to destinationIndexPath: IndexPath) { |
| 249 | objc_sync_enter(self) | 301 | objc_sync_enter(self) |
| 302 | + print("交换之前===>\(dataArray)") | ||
| 303 | + swap(&dataArray[sourceIndexPath.row], &dataArray[destinationIndexPath.row]) | ||
| 304 | + print("交换之后===>\(dataArray)") | ||
| 250 | // let dict: Dictionary = dataArray[sourceIndexPath.row] as! Dictionary<String, Any> | 305 | // let dict: Dictionary = dataArray[sourceIndexPath.row] as! Dictionary<String, Any> |
| 251 | // dataArray.remove(sourceIndexPath.row) | 306 | // dataArray.remove(sourceIndexPath.row) |
| 252 | // if destinationIndexPath.row > dataArray.count { | 307 | // if destinationIndexPath.row > dataArray.count { |
metaCode/Classes/Main/MinePage/Controller/CNLiveMineAuthResultViewController.swift
0 → 100644
| 1 | +// | ||
| 2 | +// CNLiveMineAuthResultViewController.swift | ||
| 3 | +// metaCode | ||
| 4 | +// | ||
| 5 | +// Created by open on 2023/9/12. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import Foundation | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +class CNLiveMineAuthResultViewController: CNLiveBaseViewController { | ||
| 12 | + | ||
| 13 | + lazy var mainView: UIImageView = { | ||
| 14 | + let mainView = UIImageView() | ||
| 15 | + mainView.backgroundColor = .white | ||
| 16 | + mainView.contentMode = .scaleToFill | ||
| 17 | + mainView.image = UIImage(named: "mIne_auth_result_header_icon") | ||
| 18 | + return mainView | ||
| 19 | + }() | ||
| 20 | + | ||
| 21 | + lazy var tipName: UILabel = { | ||
| 22 | + let tipName = UILabel.init() | ||
| 23 | + tipName.text = "资料审核中" | ||
| 24 | + tipName.font = BoldFont_18_Fit | ||
| 25 | + tipName.textAlignment = .center | ||
| 26 | + tipName.textColor = .black | ||
| 27 | + return tipName | ||
| 28 | + }() | ||
| 29 | + | ||
| 30 | + lazy var tipDesc: UILabel = { | ||
| 31 | + let tipDesc = UILabel.init() | ||
| 32 | + tipDesc.text = "请耐心等待,预计一分钟之内完成审核" | ||
| 33 | + tipDesc.textColor = HexColor("#A9A9A9") | ||
| 34 | + tipDesc.textAlignment = .center | ||
| 35 | + tipDesc.font = Font_13 | ||
| 36 | + return tipDesc | ||
| 37 | + }() | ||
| 38 | + | ||
| 39 | + lazy var sendButton: UIButton = { | ||
| 40 | + let sendButton = UIButton(type: .custom) | ||
| 41 | + sendButton.setTitle("确 定", for: .normal) | ||
| 42 | + sendButton.setTitleColor(.white, for: .normal) | ||
| 43 | + sendButton.titleLabel?.font = BoldFont_16_Fit | ||
| 44 | + sendButton.layer.cornerRadius = 20 | ||
| 45 | + sendButton.layer.masksToBounds = true | ||
| 46 | + sendButton.addTarget(self, action: #selector(sendInfoActionMothod), for: .touchUpInside) | ||
| 47 | + return sendButton | ||
| 48 | + }() | ||
| 49 | + | ||
| 50 | + var _listModel:StandListModel! | ||
| 51 | + init(listModel:StandListModel) { | ||
| 52 | + super.init(nibName:nil, bundle:nil) | ||
| 53 | + _listModel = listModel | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + required init?(coder: NSCoder) { | ||
| 57 | + fatalError("init(coder:) has not been implemented") | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + override func viewWillAppear(_ animated: Bool) { | ||
| 61 | + super.viewWillAppear(animated) | ||
| 62 | + | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + override func viewDidLoad() { | ||
| 66 | + super.viewDidLoad() | ||
| 67 | + | ||
| 68 | + navigationBarHidden = false | ||
| 69 | + view.backgroundColor = .white | ||
| 70 | + topNavView.backgroundColor = .clear | ||
| 71 | + titleName = "添加\(_listModel.name!)" | ||
| 72 | + titleLabel.textColor = .white | ||
| 73 | + leftBtnWhite = true | ||
| 74 | + setNeedsStatusBarAppearanceUpdate() | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + view.insertSubview(mainView, belowSubview: topNavView) | ||
| 78 | + mainView.snp.makeConstraints { make in | ||
| 79 | + make.left.top.right.equalToSuperview() | ||
| 80 | + make.height.equalTo(346) | ||
| 81 | + } | ||
| 82 | + view.addSubview(tipName) | ||
| 83 | + tipName.snp.makeConstraints { make in | ||
| 84 | + make.centerX.equalToSuperview() | ||
| 85 | + make.top.equalTo(mainView.snp.bottom).offset(20) | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + view.addSubview(tipDesc) | ||
| 89 | + tipDesc.snp.makeConstraints { make in | ||
| 90 | + make.centerX.equalToSuperview() | ||
| 91 | + make.top.equalTo(tipName.snp.bottom).offset(10) | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + view.addSubview(sendButton) | ||
| 95 | + sendButton.snp.makeConstraints { make in | ||
| 96 | + make.centerX.equalToSuperview() | ||
| 97 | + make.top.equalTo(tipDesc.snp.bottom).offset(50) | ||
| 98 | + make.height.equalTo(40) | ||
| 99 | + make.width.equalTo(150) | ||
| 100 | + } | ||
| 101 | + sendButton.setGradient(colors: [UIColor(red: 103/255.0, green: 197/255.0, blue: 255/255.0, alpha: 1),UIColor(red: 96/255.0, green: 154/255.0, blue: 255/255.0, alpha: 1)], startPoint: CGPoint(x: 0, y: 0.5), endPoint: CGPoint(x: 1, y: 0.5)) | ||
| 102 | + } | ||
| 103 | + | ||
| 104 | + | ||
| 105 | + override var preferredStatusBarStyle: UIStatusBarStyle { | ||
| 106 | + return .lightContent | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + @objc func sendInfoActionMothod() { | ||
| 110 | + | ||
| 111 | + } | ||
| 112 | +} |
metaCode/Classes/Main/MinePage/Controller/CNLiveMineInputViewController.swift
0 → 100644
| 1 | +// | ||
| 2 | +// CNLiveMineInputViewController.swift | ||
| 3 | +// metaCode | ||
| 4 | +// | ||
| 5 | +// Created by open on 2023/9/11. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import Foundation | ||
| 9 | +import EmptyDataSet_Swift | ||
| 10 | + | ||
| 11 | +class CNLiveMineInputViewController : CNLiveBaseViewController, UITableViewDelegate, UITableViewDataSource, EmptyDataSetSource, EmptyDataSetDelegate{ | ||
| 12 | + | ||
| 13 | + let kMineBodyInputAuthCellIdentifier = "kMineBodyInputAuthCellIdentifier" | ||
| 14 | + lazy var tableView: UITableView = { | ||
| 15 | + let tableView = UITableView(frame: .zero, style: .plain) | ||
| 16 | + tableView.delegate = self | ||
| 17 | + tableView.dataSource = self | ||
| 18 | + tableView.emptyDataSetSource = self | ||
| 19 | + tableView.emptyDataSetDelegate = self | ||
| 20 | + tableView.backgroundColor = HexColor("#F7F8FA") | ||
| 21 | + tableView.tableFooterView = UIView.init() | ||
| 22 | + tableView.contentInsetAdjustmentBehavior = .scrollableAxes | ||
| 23 | + tableView.separatorStyle = .none | ||
| 24 | + tableView.register(MineBodyInputAuthCell.self, forCellReuseIdentifier: kMineBodyInputAuthCellIdentifier) | ||
| 25 | + return tableView | ||
| 26 | + }() | ||
| 27 | + | ||
| 28 | + lazy var sendButton: UIButton = { | ||
| 29 | + let sendButton = UIButton(type: .custom) | ||
| 30 | + sendButton.setTitle("添加身份", for: .normal) | ||
| 31 | + sendButton.setTitleColor(.white, for: .normal) | ||
| 32 | + sendButton.titleLabel?.font = BoldFont_16_Fit | ||
| 33 | + sendButton.layer.cornerRadius = 20 | ||
| 34 | + sendButton.layer.masksToBounds = true | ||
| 35 | + sendButton.isHidden = true | ||
| 36 | + sendButton.addTarget(self, action: #selector(sendInfoActionMothod), for: .touchUpInside) | ||
| 37 | + return sendButton | ||
| 38 | + }() | ||
| 39 | + | ||
| 40 | + lazy var dataArray: NSMutableArray = { | ||
| 41 | + return NSMutableArray.init() | ||
| 42 | + }() | ||
| 43 | + | ||
| 44 | + var _listModel:StandListModel! | ||
| 45 | + init(listModel:StandListModel) { | ||
| 46 | + super.init(nibName:nil, bundle:nil) | ||
| 47 | + _listModel = listModel | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + required init?(coder: NSCoder) { | ||
| 51 | + fatalError("init(coder:) has not been implemented") | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + override func viewDidLoad() { | ||
| 55 | + super.viewDidLoad() | ||
| 56 | + | ||
| 57 | + navigationBarHidden = false | ||
| 58 | + titleName = _listModel.name ?? "" | ||
| 59 | + view.backgroundColor = HexColor("#F7F8FA") | ||
| 60 | + | ||
| 61 | + loadStandInfoData() | ||
| 62 | + | ||
| 63 | + view.addSubview(sendButton) | ||
| 64 | + sendButton.snp.makeConstraints { make in | ||
| 65 | + make.bottom.equalToSuperview().offset(-get_system_tabbar_ui_offsetHeight() - 20) | ||
| 66 | + make.left.equalToSuperview().offset(10) | ||
| 67 | + make.right.equalToSuperview().offset(-10) | ||
| 68 | + make.height.equalTo(40) | ||
| 69 | + } | ||
| 70 | + setupWithSendBtnStatue(statue: false) | ||
| 71 | + | ||
| 72 | + view.addSubview(tableView) | ||
| 73 | + tableView.snp.makeConstraints { make in | ||
| 74 | + make.top.equalTo(get_system_nav_height()) | ||
| 75 | + make.left.right.equalToSuperview() | ||
| 76 | + make.bottom.equalTo(sendButton.snp.top).offset(-10) | ||
| 77 | + } | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + private func loadStandInfoData() { | ||
| 81 | + CNLiveMineViewModel.requestsStandInfo(identityId: "\(_listModel.id)") {[weak self] result, respStatue in | ||
| 82 | + if respStatue == .success { | ||
| 83 | + self?.dataArray.addObjects(from: result as! [Any]) | ||
| 84 | + self?.tableView.reloadData() | ||
| 85 | + if (self?.dataArray.count)! > 0 { | ||
| 86 | + self?.sendButton.isHidden = false | ||
| 87 | + self?.tableView.tableHeaderView = self?.setupHeaderAndFooter(is_last: false) | ||
| 88 | + self?.tableView.tableFooterView = self?.setupHeaderAndFooter(is_last: true) | ||
| 89 | + } | ||
| 90 | + } | ||
| 91 | + } | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + private func setupWithSendBtnStatue(statue: Bool) { | ||
| 95 | + var alpha = 0.3 | ||
| 96 | + if statue { | ||
| 97 | + alpha = 1 | ||
| 98 | + } | ||
| 99 | + sendButton.setGradient(colors: [UIColor(red: 103/255.0, green: 197/255.0, blue: 255/255.0, alpha: alpha),UIColor(red: 96/255.0, green: 154/255.0, blue: 255/255.0, alpha: alpha)], startPoint: CGPoint(x: 0, y: 0.5), endPoint: CGPoint(x: 1, y: 0.5)) | ||
| 100 | + sendButton.isUserInteractionEnabled = statue | ||
| 101 | + } | ||
| 102 | + | ||
| 103 | + @objc func sendInfoActionMothod() { | ||
| 104 | + | ||
| 105 | + CNLiveMineViewModel.requestsPOSTAuthInfo(identityId: "\(_listModel.id)", infos: self.dataArray) { [self] result, respStatue in | ||
| 106 | + if respStatue == .success { | ||
| 107 | + showMessage(message: "上传成功") | ||
| 108 | + DispatchQueue.main.asyncAfter(deadline: .now()+1) { [self] in | ||
| 109 | + self.navigationController?.pushViewController(CNLiveMineAuthResultViewController.init(listModel: _listModel), animated: true) | ||
| 110 | + } | ||
| 111 | + } | ||
| 112 | + } | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + | ||
| 116 | + func setupHeaderAndFooter(is_last: Bool) -> UIView { | ||
| 117 | + let mainView = UIView.init(frame: CGRect(x: 0, y: 0, width: Int(KSreenWidth), height: 10)); | ||
| 118 | + mainView.backgroundColor = .clear | ||
| 119 | + let v = UIView.init(frame: CGRect(x: 10, y: 0, width: Int(KSreenWidth) - 20, height: 10)) | ||
| 120 | + v.backgroundColor = .white | ||
| 121 | + if !is_last { | ||
| 122 | + v.addCorner(conrners: [.topLeft, .topRight], radius: 10) | ||
| 123 | + } else { | ||
| 124 | + v.addCorner(conrners: [.bottomLeft, .bottomRight], radius: 10) | ||
| 125 | + } | ||
| 126 | + mainView.addSubview(v) | ||
| 127 | + return mainView | ||
| 128 | + } | ||
| 129 | + | ||
| 130 | +} | ||
| 131 | + | ||
| 132 | +extension CNLiveMineInputViewController { | ||
| 133 | + | ||
| 134 | + func numberOfSections(in tableView: UITableView) -> Int { | ||
| 135 | + return 1 | ||
| 136 | + } | ||
| 137 | + | ||
| 138 | + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
| 139 | + return self.dataArray.count | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
| 143 | + | ||
| 144 | + let cell = tableView.dequeueReusableCell(withIdentifier: kMineBodyInputAuthCellIdentifier) as! MineBodyInputAuthCell | ||
| 145 | + cell.setListModel(infoModel: self.dataArray[indexPath.row] as! MineStandInfoModel, is_last: indexPath.row == self.dataArray.count - 1) { [weak self] in | ||
| 146 | + let is_result = self?.inspectResult() | ||
| 147 | + self?.setupWithSendBtnStatue(statue: is_result ?? true) | ||
| 148 | + } | ||
| 149 | + return cell | ||
| 150 | + } | ||
| 151 | + | ||
| 152 | + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | ||
| 153 | + return 50 | ||
| 154 | + } | ||
| 155 | + | ||
| 156 | + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { | ||
| 157 | + let infoModel = self.dataArray[indexPath.row] as! MineStandInfoModel | ||
| 158 | + if infoModel.children.count > 0 { | ||
| 159 | + self.view.endEditing(true) | ||
| 160 | + DispatchQueue.main.asyncAfter(deadline: .now()+0.5) { | ||
| 161 | + MineStandListAlertView.showStandListView(infos: infoModel.children as NSArray,name: "选择\(infoModel.name ?? "")") {[weak self] text in | ||
| 162 | + infoModel.value = text | ||
| 163 | + self?.tableView.reloadData() | ||
| 164 | + let is_result = self?.inspectResult() | ||
| 165 | + self?.setupWithSendBtnStatue(statue: is_result ?? true) | ||
| 166 | + } | ||
| 167 | + } | ||
| 168 | + } | ||
| 169 | + } | ||
| 170 | + | ||
| 171 | + private func inspectResult() -> Bool { | ||
| 172 | + var is_result: Bool = true | ||
| 173 | + for item in self.dataArray { | ||
| 174 | + let listModel = item as! MineStandInfoModel | ||
| 175 | + if (listModel.nonEmpty && listModel.value?.count == 0) { | ||
| 176 | + is_result = false | ||
| 177 | + } | ||
| 178 | + } | ||
| 179 | + return is_result | ||
| 180 | + } | ||
| 181 | +} |
metaCode/Classes/Main/MinePage/View/CNLiveMineBodyListView.swift
| @@ -613,5 +613,136 @@ class MIneBodyFiveViewCell: UITableViewCell { | @@ -613,5 +613,136 @@ class MIneBodyFiveViewCell: UITableViewCell { | ||
| 613 | required init?(coder: NSCoder) { | 613 | required init?(coder: NSCoder) { |
| 614 | fatalError("init(coder:) has not been implemented") | 614 | fatalError("init(coder:) has not been implemented") |
| 615 | } | 615 | } |
| 616 | +} | ||
| 617 | + | ||
| 618 | +typealias resultInputBlock = () -> Void | ||
| 619 | +class MineBodyInputAuthCell: UITableViewCell, UITextFieldDelegate { | ||
| 616 | 620 | ||
| 621 | + lazy var mainView: UIView = { | ||
| 622 | + let mainView = UIView.init(frame: CGRect.zero) | ||
| 623 | + mainView.backgroundColor = .white | ||
| 624 | + return mainView | ||
| 625 | + }() | ||
| 626 | + | ||
| 627 | + lazy var nameLabel: UILabel = { | ||
| 628 | + let nameLabel = UILabel.init() | ||
| 629 | + nameLabel.textColor = HexColor("#333333") | ||
| 630 | + nameLabel.font = BoldFont_16_Fit | ||
| 631 | + nameLabel.backgroundColor = .white | ||
| 632 | + return nameLabel | ||
| 633 | + }() | ||
| 634 | + | ||
| 635 | + lazy var contentField: UITextField = { | ||
| 636 | + let contentField = UITextField.init() | ||
| 637 | + contentField.backgroundColor = .white | ||
| 638 | + contentField.font = BoldFont_15_Fit | ||
| 639 | + contentField.textColor = HexColor("#333333") | ||
| 640 | + contentField.clearButtonMode = .whileEditing | ||
| 641 | + contentField.textAlignment = .right | ||
| 642 | + contentField.delegate = self | ||
| 643 | + return contentField | ||
| 644 | + }() | ||
| 645 | + | ||
| 646 | + lazy var moreBtn: UIButton = { | ||
| 647 | + let moreBtn = UIButton.init(type: .custom) | ||
| 648 | + moreBtn.setImage(UIImage(named: "mine_header_message_gray_more"), for: .normal) | ||
| 649 | + moreBtn.layer.masksToBounds = true | ||
| 650 | + moreBtn.layer.cornerRadius = 15 | ||
| 651 | + moreBtn.isHidden = true | ||
| 652 | + return moreBtn | ||
| 653 | + }() | ||
| 654 | + | ||
| 655 | + lazy var line_label: UILabel = { | ||
| 656 | + let lineLabel = UILabel.init() | ||
| 657 | + lineLabel.backgroundColor = HexColor("#f3f3f3") | ||
| 658 | + return lineLabel | ||
| 659 | + }() | ||
| 660 | + | ||
| 661 | + | ||
| 662 | + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { | ||
| 663 | + super.init(style: style, reuseIdentifier: reuseIdentifier) | ||
| 664 | + selectionStyle = .none | ||
| 665 | + backgroundColor = .clear | ||
| 666 | + | ||
| 667 | + addSubview(mainView) | ||
| 668 | + mainView.addSubview(nameLabel) | ||
| 669 | + mainView.addSubview(moreBtn) | ||
| 670 | + mainView.addSubview(contentField) | ||
| 671 | + mainView.addSubview(moreBtn) | ||
| 672 | + mainView.addSubview(line_label) | ||
| 673 | + setConstrainta() | ||
| 674 | + } | ||
| 675 | + | ||
| 676 | + required init?(coder: NSCoder) { | ||
| 677 | + fatalError("init(coder:) has not been implemented") | ||
| 678 | + } | ||
| 679 | + | ||
| 680 | + func contentAction() { | ||
| 681 | + | ||
| 682 | + } | ||
| 683 | + | ||
| 684 | + fileprivate var _infoModel : MineStandInfoModel? | ||
| 685 | + fileprivate var _resultInputBlock : resultInputBlock? | ||
| 686 | + func setListModel(infoModel: MineStandInfoModel, is_last: Bool,resultInputBlock: @escaping resultInputBlock) { | ||
| 687 | + _infoModel = infoModel | ||
| 688 | + _resultInputBlock = resultInputBlock | ||
| 689 | + nameLabel.text = infoModel.name | ||
| 690 | + if (infoModel.value ?? "").count > 0 { | ||
| 691 | + contentField.text = infoModel.value | ||
| 692 | + } | ||
| 693 | + contentField.placeholder = "请输入\(infoModel.name ?? "")" | ||
| 694 | + line_label.isHidden = is_last | ||
| 695 | + if infoModel.inputType == 2 { | ||
| 696 | + contentField.keyboardType = .numberPad | ||
| 697 | + } else if (infoModel.inputType == 1) { | ||
| 698 | + contentField.keyboardType = .default | ||
| 699 | + } else if (infoModel.inputType == 3 && infoModel.children.count > 0) {//禁止输入 显示下拉选择 | ||
| 700 | + contentField.isUserInteractionEnabled = false | ||
| 701 | + moreBtn.isHidden = false | ||
| 702 | + contentField.snp.remakeConstraints { make in | ||
| 703 | + make.centerY.equalToSuperview() | ||
| 704 | + make.right.equalTo(moreBtn.snp.left) | ||
| 705 | + } | ||
| 706 | + } | ||
| 707 | + } | ||
| 708 | + | ||
| 709 | + func setConstrainta() { | ||
| 710 | + mainView.snp.makeConstraints { make in | ||
| 711 | + make.top.equalToSuperview() | ||
| 712 | + make.bottom.equalToSuperview() | ||
| 713 | + make.left.equalToSuperview().offset(10) | ||
| 714 | + make.right.equalToSuperview().offset(-10) | ||
| 715 | + } | ||
| 716 | + nameLabel.snp.makeConstraints { make in | ||
| 717 | + make.centerY.equalToSuperview() | ||
| 718 | + make.left.equalToSuperview().offset(15) | ||
| 719 | + } | ||
| 720 | + moreBtn.snp.makeConstraints { make in | ||
| 721 | + make.centerY.equalToSuperview() | ||
| 722 | + make.right.equalToSuperview().offset(-8) | ||
| 723 | + } | ||
| 724 | + contentField.snp.makeConstraints { make in | ||
| 725 | + make.centerY.equalToSuperview() | ||
| 726 | + make.right.equalToSuperview().offset(-10) | ||
| 727 | + } | ||
| 728 | + moreBtn.snp.makeConstraints { make in | ||
| 729 | + make.centerY.equalToSuperview() | ||
| 730 | + make.right.equalToSuperview().offset(-5) | ||
| 731 | + } | ||
| 732 | + line_label.snp.makeConstraints { make in | ||
| 733 | + make.centerX.equalToSuperview() | ||
| 734 | + make.bottom.equalToSuperview().offset(-1) | ||
| 735 | + make.width.equalTo(Int(KSreenWidth) - 40) | ||
| 736 | + make.height.equalTo(0.5) | ||
| 737 | + } | ||
| 738 | + } | ||
| 739 | + | ||
| 740 | + func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { | ||
| 741 | + return contentField.resignFirstResponder() | ||
| 742 | + } | ||
| 743 | + | ||
| 744 | + func textFieldDidEndEditing(_ textField: UITextField) { | ||
| 745 | + _infoModel?.value = textField.text ?? "" | ||
| 746 | + _resultInputBlock!() | ||
| 747 | + } | ||
| 617 | } | 748 | } |
metaCode/Classes/Main/MinePage/View/CNLiveMineInfoAlertView.swift
| @@ -543,5 +543,180 @@ class UpdataAlertView: UIView { | @@ -543,5 +543,180 @@ class UpdataAlertView: UIView { | ||
| 543 | ConfigManager.shared.show_update = false | 543 | ConfigManager.shared.show_update = false |
| 544 | removeFromSuperview() | 544 | removeFromSuperview() |
| 545 | } | 545 | } |
| 546 | +} | ||
| 547 | + | ||
| 548 | +class MineStandListAlertView: UIView, UIPickerViewDelegate, UIPickerViewDataSource { | ||
| 549 | + | ||
| 550 | + lazy var tapGesture = UITapGestureRecognizer() | ||
| 551 | + lazy var grayMaskView: UIView = { | ||
| 552 | + let grayMaskView = UIView() | ||
| 553 | + tapGesture.addTarget(self, action: #selector(setupCloseButtonAction)) | ||
| 554 | + grayMaskView.backgroundColor = UIColor.black.withAlphaComponent(0.2) | ||
| 555 | + grayMaskView.addGestureRecognizer(tapGesture) | ||
| 556 | + return grayMaskView | ||
| 557 | + }() | ||
| 558 | + | ||
| 559 | + lazy var backView: UIView = { | ||
| 560 | + let backView = UIView() | ||
| 561 | + backView.backgroundColor = UIColor.white | ||
| 562 | + backView.layer.cornerRadius = 12 | ||
| 563 | + return backView | ||
| 564 | + }() | ||
| 546 | 565 | ||
| 566 | + lazy var pickerView: UIPickerView = { | ||
| 567 | + let pickerView = UIPickerView.init() | ||
| 568 | + pickerView.backgroundColor = .white | ||
| 569 | + pickerView.delegate = self | ||
| 570 | + pickerView.dataSource = self | ||
| 571 | + return pickerView | ||
| 572 | + }() | ||
| 573 | + | ||
| 574 | + lazy var nameLable : UILabel = { | ||
| 575 | + let nameLable = UILabel.init() | ||
| 576 | + nameLable.backgroundColor = .white | ||
| 577 | + nameLable.font = BoldFont_16_Fit | ||
| 578 | + nameLable.textAlignment = .center | ||
| 579 | + nameLable.textColor = .black | ||
| 580 | + return nameLable | ||
| 581 | + }() | ||
| 582 | + | ||
| 583 | + lazy var lineLable : UILabel = { | ||
| 584 | + let lineLable = UILabel.init() | ||
| 585 | + lineLable.backgroundColor = HexColor("#E6E6E6") | ||
| 586 | + return lineLable | ||
| 587 | + }() | ||
| 588 | + | ||
| 589 | + lazy var doneButton : UIButton = { | ||
| 590 | + let doneButton = UIButton(type: .custom) | ||
| 591 | + doneButton.setTitle("确定", for: .normal) | ||
| 592 | + doneButton.setTitleColor(HexColor("#0066FE"), for: .normal) | ||
| 593 | + doneButton.titleLabel?.font = Font_16 | ||
| 594 | + doneButton.addTarget(self, action: #selector(setupDoneButtonAction), for: .touchUpInside) | ||
| 595 | + return doneButton | ||
| 596 | + }() | ||
| 597 | + | ||
| 598 | + lazy var closeButton : UIButton = { | ||
| 599 | + let closeButton = UIButton(type: .custom) | ||
| 600 | + closeButton.setTitle("取消", for: .normal) | ||
| 601 | + closeButton.setTitleColor(HexColor("#B4B4B4"), for: .normal) | ||
| 602 | + closeButton.titleLabel?.font = Font_16 | ||
| 603 | + closeButton.addTarget(self, action: #selector(setupCloseButtonAction), for: .touchUpInside) | ||
| 604 | + return closeButton | ||
| 605 | + }() | ||
| 606 | + | ||
| 607 | + var text: String? | ||
| 608 | + var result: CloseGenderResultBlock? | ||
| 609 | + var _infos: NSArray? | ||
| 610 | + init(frame: CGRect, infos: NSArray) { | ||
| 611 | + super.init(frame: frame) | ||
| 612 | + | ||
| 613 | + _infos = infos | ||
| 614 | + text = (infos.firstObject as! MineStandInfoModel).name | ||
| 615 | + | ||
| 616 | + addSubview(grayMaskView) | ||
| 617 | + addSubview(backView) | ||
| 618 | + backView.addSubview(pickerView) | ||
| 619 | + backView.addSubview(nameLable) | ||
| 620 | + backView.addSubview(lineLable) | ||
| 621 | + backView.addSubview(closeButton) | ||
| 622 | + backView.addSubview(doneButton) | ||
| 623 | + setConstraints() | ||
| 624 | + } | ||
| 625 | + | ||
| 626 | + func setConstraints() { | ||
| 627 | + grayMaskView.snp.makeConstraints { make in | ||
| 628 | + make.edges.equalToSuperview() | ||
| 629 | + } | ||
| 630 | + backView.snp.makeConstraints { make in | ||
| 631 | + make.top.equalTo(self.snp.bottom).offset(0) | ||
| 632 | + make.left.right.equalToSuperview() | ||
| 633 | + make.height.equalTo(250) | ||
| 634 | + } | ||
| 635 | + doneButton.snp.makeConstraints { make in | ||
| 636 | + make.right.equalToSuperview() | ||
| 637 | + make.top.equalTo(10) | ||
| 638 | + make.height.equalTo(30) | ||
| 639 | + make.width.equalTo(60) | ||
| 640 | + } | ||
| 641 | + closeButton.snp.makeConstraints { make in | ||
| 642 | + make.centerY.equalTo(doneButton) | ||
| 643 | + make.left.equalTo(8) | ||
| 644 | + make.height.equalTo(30) | ||
| 645 | + make.width.equalTo(60) | ||
| 646 | + } | ||
| 647 | + nameLable.snp.makeConstraints { make in | ||
| 648 | + make.centerY.equalTo(doneButton) | ||
| 649 | + make.centerX.equalToSuperview() | ||
| 650 | + } | ||
| 651 | + lineLable.snp.makeConstraints { make in | ||
| 652 | + make.left.right.equalToSuperview() | ||
| 653 | + make.height.equalTo(1) | ||
| 654 | + make.top.equalTo(doneButton.snp.bottom).offset(10) | ||
| 655 | + } | ||
| 656 | + pickerView.snp.makeConstraints { make in | ||
| 657 | + make.bottom.equalToSuperview() | ||
| 658 | + make.left.right.equalToSuperview() | ||
| 659 | + make.top.equalTo(lineLable.snp.bottom) | ||
| 660 | + } | ||
| 661 | + } | ||
| 662 | + | ||
| 663 | + static public func showStandListView(infos: NSArray, name: String, result: @escaping CloseGenderResultBlock) { | ||
| 664 | + let pickerView = MineStandListAlertView.init(frame: .zero, infos: infos) | ||
| 665 | + pickerView.result = result | ||
| 666 | + pickerView.nameLable.text = name | ||
| 667 | + let window = UIApplication.shared.windows.last | ||
| 668 | + window?.addSubview(pickerView) | ||
| 669 | + pickerView.snp.makeConstraints { make in | ||
| 670 | + make.edges.equalToSuperview() | ||
| 671 | + } | ||
| 672 | + window?.layoutIfNeeded() | ||
| 673 | + pickerView.alpha = 0 | ||
| 674 | + UIView.animate(withDuration: 0.1) { | ||
| 675 | + pickerView.alpha = 1 | ||
| 676 | + } completion: { _ in | ||
| 677 | + UIView.animate(withDuration: 0.1) { | ||
| 678 | + pickerView.backView.snp.updateConstraints { make in | ||
| 679 | + make.top.equalTo(pickerView.snp.bottom).offset(-pickerView.backView.frame.height) | ||
| 680 | + } | ||
| 681 | + pickerView.layoutIfNeeded() | ||
| 682 | + } | ||
| 683 | + } | ||
| 684 | + } | ||
| 685 | + | ||
| 686 | + func numberOfComponents(in pickerView: UIPickerView) -> Int { | ||
| 687 | + return 1 | ||
| 688 | + } | ||
| 689 | + | ||
| 690 | + func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { | ||
| 691 | + return _infos?.count ?? 0 | ||
| 692 | + } | ||
| 693 | + | ||
| 694 | + func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { | ||
| 695 | + let infoModel = _infos![row] as! MineStandInfoModel | ||
| 696 | + return infoModel.name | ||
| 697 | + } | ||
| 698 | + | ||
| 699 | + func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { | ||
| 700 | + return 45.0 | ||
| 701 | + } | ||
| 702 | + | ||
| 703 | + func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { | ||
| 704 | + let infoModel = _infos![row] as! MineStandInfoModel | ||
| 705 | + text = infoModel.name ?? "" | ||
| 706 | + } | ||
| 707 | + | ||
| 708 | + required init?(coder: NSCoder) { | ||
| 709 | + fatalError("init(coder:) has not been implemented") | ||
| 710 | + } | ||
| 711 | + | ||
| 712 | + @objc func setupCloseButtonAction() -> Void { | ||
| 713 | + removeFromSuperview() | ||
| 714 | + } | ||
| 715 | + | ||
| 716 | + @objc func setupDoneButtonAction() -> Void { | ||
| 717 | + removeFromSuperview() | ||
| 718 | + if (result != nil) { | ||
| 719 | + result!(text ?? "") | ||
| 720 | + } | ||
| 721 | + } | ||
| 547 | } | 722 | } |
metaCode/Classes/Main/MinePage/View/CNLiveMineSubBodyListView.swift
| @@ -32,6 +32,7 @@ class MineInfoLListTableViewCell : UITableViewCell { | @@ -32,6 +32,7 @@ class MineInfoLListTableViewCell : UITableViewCell { | ||
| 32 | titleLabel.backgroundColor = .clear | 32 | titleLabel.backgroundColor = .clear |
| 33 | titleLabel.textColor = .black | 33 | titleLabel.textColor = .black |
| 34 | titleLabel.font = BoldFont_18_Fit | 34 | titleLabel.font = BoldFont_18_Fit |
| 35 | + titleLabel.minimumScaleFactor = 14*FontFit | ||
| 35 | return titleLabel | 36 | return titleLabel |
| 36 | }() | 37 | }() |
| 37 | 38 | ||
| @@ -43,12 +44,23 @@ class MineInfoLListTableViewCell : UITableViewCell { | @@ -43,12 +44,23 @@ class MineInfoLListTableViewCell : UITableViewCell { | ||
| 43 | addBtn.titleLabel?.font = BoldFont_15 | 44 | addBtn.titleLabel?.font = BoldFont_15 |
| 44 | addBtn.layer.cornerRadius = 15 | 45 | addBtn.layer.cornerRadius = 15 |
| 45 | addBtn.layer.masksToBounds = true | 46 | addBtn.layer.masksToBounds = true |
| 47 | + addBtn.isUserInteractionEnabled = false | ||
| 46 | return addBtn | 48 | return addBtn |
| 47 | }() | 49 | }() |
| 48 | 50 | ||
| 49 | - public func setupWithDataSource(icon: String, name: String) { | ||
| 50 | - iconView.image = UIImage(named: icon) | 51 | + public func setupWithDataSource(icon: String, name: String, is_auth: Bool) { |
| 52 | + iconView.kf.indicatorType = .activity | ||
| 53 | + iconView.kf.setImage(with: URL(string: icon), placeholder: UIImage.imageWithColor(color: HexColor("0xf9f9f9")!, size: CGSize(width: 50, height: 50))) | ||
| 51 | titleLabel.text = name | 54 | titleLabel.text = name |
| 55 | + if is_auth { | ||
| 56 | + addBtn.backgroundColor = HexColor("#DCDCDC") | ||
| 57 | + addBtn.setTitleColor(HexColor("#666666"), for: .normal) | ||
| 58 | + addBtn.setTitle(" 已添加 ", for: .normal) | ||
| 59 | + }else { | ||
| 60 | + addBtn.backgroundColor = HexColor("#67C5FF") | ||
| 61 | + addBtn.setTitleColor(.white, for: .normal) | ||
| 62 | + addBtn.setTitle(" 去添加 ", for: .normal) | ||
| 63 | + } | ||
| 52 | } | 64 | } |
| 53 | 65 | ||
| 54 | override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { | 66 | override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { |
| @@ -76,16 +88,17 @@ class MineInfoLListTableViewCell : UITableViewCell { | @@ -76,16 +88,17 @@ class MineInfoLListTableViewCell : UITableViewCell { | ||
| 76 | make.left.equalToSuperview().offset(15) | 88 | make.left.equalToSuperview().offset(15) |
| 77 | make.size.equalTo(50) | 89 | make.size.equalTo(50) |
| 78 | } | 90 | } |
| 79 | - titleLabel.snp.makeConstraints { make in | ||
| 80 | - make.centerY.equalToSuperview() | ||
| 81 | - make.left.equalTo(iconView.snp.right).offset(10) | ||
| 82 | - } | ||
| 83 | addBtn.snp.makeConstraints { make in | 91 | addBtn.snp.makeConstraints { make in |
| 84 | make.centerY.equalToSuperview() | 92 | make.centerY.equalToSuperview() |
| 85 | make.right.equalToSuperview().offset(-15) | 93 | make.right.equalToSuperview().offset(-15) |
| 86 | make.width.equalTo(80) | 94 | make.width.equalTo(80) |
| 87 | make.height.equalTo(30) | 95 | make.height.equalTo(30) |
| 88 | } | 96 | } |
| 97 | + titleLabel.snp.makeConstraints { make in | ||
| 98 | + make.centerY.equalToSuperview() | ||
| 99 | + make.left.equalTo(iconView.snp.right).offset(10) | ||
| 100 | + make.right.equalTo(addBtn.snp.left).offset(5) | ||
| 101 | + } | ||
| 89 | } | 102 | } |
| 90 | 103 | ||
| 91 | required init?(coder: NSCoder) { | 104 | required init?(coder: NSCoder) { |
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineBaseModel.swift
| @@ -109,3 +109,77 @@ class NewsListModel: BaseModel { | @@ -109,3 +109,77 @@ class NewsListModel: BaseModel { | ||
| 109 | // }) | 109 | // }) |
| 110 | } | 110 | } |
| 111 | } | 111 | } |
| 112 | + | ||
| 113 | +class StandListBaseModel: BaseModel { | ||
| 114 | + var prePage: Int = 0 | ||
| 115 | + var pageSize: Int = 0 | ||
| 116 | + var startRow: Int = 0 | ||
| 117 | + var navigateLastPage: Int = 0 | ||
| 118 | + var firstPage: Int = 0 | ||
| 119 | + var nextPage: Int = 0 | ||
| 120 | + var size: Int = 0 | ||
| 121 | + var endRow: Int = 0 | ||
| 122 | + var isLastPage: Bool = false | ||
| 123 | + var hasNextPage: Bool = false | ||
| 124 | + var navigateFirstPage: Int = 0 | ||
| 125 | + var lastPage: Int = 0 | ||
| 126 | + var total: Int = 0 | ||
| 127 | + var list = [StandListModel]() | ||
| 128 | + var navigatepageNums = [Int]() | ||
| 129 | + var isFirstPage: Bool = false | ||
| 130 | + var hasPreviousPage: Bool = false | ||
| 131 | + var navigatePages: Int = 0 | ||
| 132 | + var pageNum: Int = 0 | ||
| 133 | + var pages: Int = 0 | ||
| 134 | +} | ||
| 135 | + | ||
| 136 | +class StandListModel: BaseModel { | ||
| 137 | + | ||
| 138 | + var icon: String? | ||
| 139 | + var name: String? | ||
| 140 | + var enable: Bool = false | ||
| 141 | + var id: Int = 0 | ||
| 142 | + var createTime: Int = 0 | ||
| 143 | + var createTimeString: String = "" | ||
| 144 | + var timeString: String = "" | ||
| 145 | + var auth: Bool = false | ||
| 146 | + | ||
| 147 | + override func mapping(mapper: HelpingMapper) { | ||
| 148 | + mapper <<< | ||
| 149 | + self.createTime <-- TransformOf(fromJSON: { [weak self] (raw) -> Int in | ||
| 150 | + if (raw ?? 0)! > 0 { | ||
| 151 | + let date = NSDate(timeIntervalSince1970: TimeInterval((raw!)/1000)) | ||
| 152 | + let dateFormatter = DateFormatter() | ||
| 153 | + dateFormatter.locale = Locale.init(identifier: "zh_CN") | ||
| 154 | + dateFormatter.dateFormat = "MM-dd" | ||
| 155 | + self?.createTimeString = dateFormatter.string(from: date as Date) | ||
| 156 | + let dateFormatter_time = DateFormatter() | ||
| 157 | + dateFormatter_time.locale = Locale.init(identifier: "zh_CN") | ||
| 158 | + dateFormatter_time.dateFormat = "yyyy年MM月dd日 HH:mm" | ||
| 159 | + self?.timeString = dateFormatter_time.string(from: date as Date) | ||
| 160 | + } | ||
| 161 | + return raw! | ||
| 162 | + }, toJSON: { (tuple) -> Int? in | ||
| 163 | + return tuple | ||
| 164 | + }) | ||
| 165 | + } | ||
| 166 | +} | ||
| 167 | + | ||
| 168 | +class MineStandInfoBaseModel: BaseModel { | ||
| 169 | + var authInfos = [MineStandInfoModel]() | ||
| 170 | + var icon: String? | ||
| 171 | + var name: String? | ||
| 172 | + var identityId: Int = 0 | ||
| 173 | +} | ||
| 174 | + | ||
| 175 | +class MineStandInfoModel: BaseModel { | ||
| 176 | + var authInfoId: Int = 0 | ||
| 177 | + var name: String? | ||
| 178 | + var inputType: Int = 0//1 文本输入 2数字输入 3下拉选择 4后台生成时间 5后台生成编码 | ||
| 179 | + var sort: Int = 0 | ||
| 180 | + var nonEmpty: Bool = false | ||
| 181 | + var input: Bool = false | ||
| 182 | + var show: Bool = false | ||
| 183 | + var value: String? = ""//自己定义的值 | ||
| 184 | + var children = [MineStandInfoModel]() | ||
| 185 | +} |
metaCode/Classes/Main/MinePage/ViewModel/CNLiveMineViewModel.swift
| @@ -7,6 +7,8 @@ | @@ -7,6 +7,8 @@ | ||
| 7 | 7 | ||
| 8 | import Foundation | 8 | import Foundation |
| 9 | import CNLiveRequestBastKit | 9 | import CNLiveRequestBastKit |
| 10 | +import HandyJSON | ||
| 11 | +import AFNetworking | ||
| 10 | 12 | ||
| 11 | enum CNLiveMineRequestType { | 13 | enum CNLiveMineRequestType { |
| 12 | case icon | 14 | case icon |
| @@ -241,6 +243,143 @@ class CNLiveMineViewModel: NSObject { | @@ -241,6 +243,143 @@ class CNLiveMineViewModel: NSObject { | ||
| 241 | } | 243 | } |
| 242 | } | 244 | } |
| 243 | 245 | ||
| 246 | + /// 获取身份信息列表数据 | ||
| 247 | + /// - Parameters: | ||
| 248 | + /// - page: 页数 | ||
| 249 | + /// - resultBlock: 返回 | ||
| 250 | + static func requestAuthStandList(page: NSInteger, resultBlock: @escaping resultNewsBlock) { | ||
| 251 | + let param = NSMutableDictionary() | ||
| 252 | + param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "sid") | ||
| 253 | + param.setValue("10", forKey: "pageSize") | ||
| 254 | + param.setValue("\(page)", forKey: "page") | ||
| 255 | + showLoading(message: "") | ||
| 256 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | ||
| 257 | + CNLiveNetworking.setupShowDataResult(false) | ||
| 258 | + CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseMCUrl+"/identityApi/allList", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in | ||
| 259 | + hiddenLoading() | ||
| 260 | + if (error == nil) { | ||
| 261 | + let resp = result as! NSDictionary | ||
| 262 | + let errorCode = "\(resp["errorCode"] ?? "0")" | ||
| 263 | + if (errorCode == "0") { | ||
| 264 | + let newsModel = dictionaryToModel(resp as! [String : Any], StandListBaseModel.self,"data") as! StandListBaseModel | ||
| 265 | + resultBlock(newsModel,.success) | ||
| 266 | + } else { | ||
| 267 | + showMessage(message: resp["errorMessage"] as! String) | ||
| 268 | + resultBlock(NSNull(),.failed) | ||
| 269 | + } | ||
| 270 | + } else { | ||
| 271 | + if page > 1 { | ||
| 272 | + if CNLiveNetworking.isNetworking() { | ||
| 273 | + showMessage(message: "获取失败") | ||
| 274 | + resultBlock(NSNull(),.failed) | ||
| 275 | + } else { | ||
| 276 | + showMessage(message: "似乎与网络断开链接") | ||
| 277 | + resultBlock(NSNull(),.noNetwork) | ||
| 278 | + } | ||
| 279 | + } | ||
| 280 | + } | ||
| 281 | + } | ||
| 282 | + } | ||
| 283 | + | ||
| 284 | + /// 上传用户认证信息接口 | ||
| 285 | + /// - Parameters: | ||
| 286 | + /// - infos: 认证信息数据 | ||
| 287 | + /// - resultBlock: 返回 | ||
| 288 | + static func requestsPOSTAuthInfo(identityId: String,infos: NSArray, resultBlock: @escaping resultNewsBlock) { | ||
| 289 | + | ||
| 290 | + let values = NSMutableDictionary() | ||
| 291 | + values.addEntries(from: ["sid":UserInfoManager.shared.userInfo.uid]) | ||
| 292 | + values.addEntries(from: ["identityId":identityId]) | ||
| 293 | + let temp_array = NSMutableArray() | ||
| 294 | + for info in infos { | ||
| 295 | + let value = (info as! MineStandInfoModel).value ?? "" | ||
| 296 | + let key = (info as! MineStandInfoModel).name ?? "" | ||
| 297 | + let authInfoId = (info as! MineStandInfoModel).authInfoId | ||
| 298 | + let inputType = (info as! MineStandInfoModel).inputType | ||
| 299 | + if value.count == 0 { | ||
| 300 | + if inputType == 3 { | ||
| 301 | + showMessage(message: "请选择\(key)") | ||
| 302 | + return | ||
| 303 | + } else { | ||
| 304 | + showMessage(message: "请填写\(key)") | ||
| 305 | + return | ||
| 306 | + } | ||
| 307 | + } | ||
| 308 | + temp_array.add(["authInfoId":authInfoId,"msg":value] as [String : Any]) | ||
| 309 | + } | ||
| 310 | + values.addEntries(from: ["authInfo":temp_array]) | ||
| 311 | + do { | ||
| 312 | + let request = URLRequest.init(url: URL.init(string: APPBaseMCUrl+"/identityApi/saveUserMsg")!) as! NSMutableURLRequest | ||
| 313 | + request.httpMethod = "POST" | ||
| 314 | + request.timeoutInterval = 10 | ||
| 315 | + request.setValue("application/json", forHTTPHeaderField: "Content-Type") | ||
| 316 | + let data = try JSONSerialization.data(withJSONObject: values, options: .prettyPrinted) | ||
| 317 | + request.httpBody = data | ||
| 318 | + showLoading(message: "") | ||
| 319 | + CNLiveNetworking.setAllowRequestDefaultArgument(false) | ||
| 320 | + CNLiveNetworking.setupShowDataResult(false) | ||
| 321 | + CNLiveNetworking.setBuildCustomUrlRequest(request as URLRequest) { task, result, error in | ||
| 322 | + hiddenLoading() | ||
| 323 | + if (error == nil) { | ||
| 324 | + let resp = result as! NSDictionary | ||
| 325 | + let errorCode = "\(resp["errorCode"] ?? "0")" | ||
| 326 | + if (errorCode == "0") { | ||
| 327 | + resultBlock(NSNull(),.success) | ||
| 328 | + } else { | ||
| 329 | + showMessage(message: resp["errorMessage"] as! String) | ||
| 330 | + resultBlock(NSNull(),.failed) | ||
| 331 | + } | ||
| 332 | + } else { | ||
| 333 | + if CNLiveNetworking.isNetworking() { | ||
| 334 | + showMessage(message: "上传失败") | ||
| 335 | + resultBlock(NSNull(),.failed) | ||
| 336 | + } else { | ||
| 337 | + showMessage(message: "似乎与网络断开链接") | ||
| 338 | + resultBlock(NSNull(),.noNetwork) | ||
| 339 | + } | ||
| 340 | + } | ||
| 341 | + } | ||
| 342 | + } catch { | ||
| 343 | + showMessage(message: "上传失败") | ||
| 344 | + resultBlock(NSNull(),.failed) | ||
| 345 | + } | ||
| 346 | + } | ||
| 347 | + | ||
| 348 | + /// 获取身份信息数据 | ||
| 349 | + /// - Parameters: | ||
| 350 | + /// - identityId: 身份id | ||
| 351 | + /// - resultBlock: 返回 | ||
| 352 | + static func requestsStandInfo(identityId: String, resultBlock: @escaping resultNewsBlock) { | ||
| 353 | + let param = NSMutableDictionary() | ||
| 354 | + param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "sid") | ||
| 355 | + param.setValue(identityId, forKey: "identityId") | ||
| 356 | + showLoading(message: "") | ||
| 357 | + CNLiveNetworking.setAllowRequestDefaultArgument(true) | ||
| 358 | + CNLiveNetworking.setupShowDataResult(false) | ||
| 359 | + CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseMCUrl+"/identityApi/getIdentity", param: param as! [String: String], cacheType: .networkOnly) { task, result, error in | ||
| 360 | + hiddenLoading() | ||
| 361 | + if (error == nil) { | ||
| 362 | + let resp = result as! NSDictionary | ||
| 363 | + let errorCode = "\(resp["errorCode"] ?? "0")" | ||
| 364 | + if (errorCode == "0") { | ||
| 365 | + let newsModel = dictionaryToModel(resp as! [String : Any], MineStandInfoBaseModel.self,"data") as! MineStandInfoBaseModel | ||
| 366 | + resultBlock(newsModel.authInfos,.success) | ||
| 367 | + } else { | ||
| 368 | + showMessage(message: resp["errorMessage"] as! String) | ||
| 369 | + resultBlock(NSNull(),.failed) | ||
| 370 | + } | ||
| 371 | + } else { | ||
| 372 | + if CNLiveNetworking.isNetworking() { | ||
| 373 | + showMessage(message: "获取失败") | ||
| 374 | + resultBlock(NSNull(),.failed) | ||
| 375 | + } else { | ||
| 376 | + showMessage(message: "似乎与网络断开链接") | ||
| 377 | + resultBlock(NSNull(),.noNetwork) | ||
| 378 | + } | ||
| 379 | + } | ||
| 380 | + } | ||
| 381 | + } | ||
| 382 | + | ||
| 244 | /// 获取最新app版本 | 383 | /// 获取最新app版本 |
| 245 | /// - Parameter resultBlock: 结果回调 | 384 | /// - Parameter resultBlock: 结果回调 |
| 246 | static func requestSystemNews(resultBlock: @escaping resultNewsBlock) { | 385 | static func requestSystemNews(resultBlock: @escaping resultNewsBlock) { |
metaCode/Supporting Files/Assets.xcassets/MinePage/mIne_auth_result_header_icon.imageset/Contents.json
0 → 100644
| 1 | +{ | ||
| 2 | + "images" : [ | ||
| 3 | + { | ||
| 4 | + "idiom" : "universal", | ||
| 5 | + "scale" : "1x" | ||
| 6 | + }, | ||
| 7 | + { | ||
| 8 | + "filename" : "mIne_auth_result_header_icon@2x.png", | ||
| 9 | + "idiom" : "universal", | ||
| 10 | + "scale" : "2x" | ||
| 11 | + }, | ||
| 12 | + { | ||
| 13 | + "filename" : "mIne_auth_result_header_icon@3x.png", | ||
| 14 | + "idiom" : "universal", | ||
| 15 | + "scale" : "3x" | ||
| 16 | + } | ||
| 17 | + ], | ||
| 18 | + "info" : { | ||
| 19 | + "author" : "xcode", | ||
| 20 | + "version" : 1 | ||
| 21 | + } | ||
| 22 | +} |
metaCode/Supporting Files/Assets.xcassets/MinePage/mIne_auth_result_header_icon.imageset/mIne_auth_result_header_icon@2x.png
0 → 100644
159 KB
metaCode/Supporting Files/Assets.xcassets/MinePage/mIne_auth_result_header_icon.imageset/mIne_auth_result_header_icon@3x.png
0 → 100644
575 KB
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_message_gray_more.imageset/Contents.json
0 → 100644
| 1 | +{ | ||
| 2 | + "images" : [ | ||
| 3 | + { | ||
| 4 | + "idiom" : "universal", | ||
| 5 | + "scale" : "1x" | ||
| 6 | + }, | ||
| 7 | + { | ||
| 8 | + "filename" : "mine_header_message_gray_more@2x.png", | ||
| 9 | + "idiom" : "universal", | ||
| 10 | + "scale" : "2x" | ||
| 11 | + }, | ||
| 12 | + { | ||
| 13 | + "filename" : "mine_header_message_gray_more@3x.png", | ||
| 14 | + "idiom" : "universal", | ||
| 15 | + "scale" : "3x" | ||
| 16 | + } | ||
| 17 | + ], | ||
| 18 | + "info" : { | ||
| 19 | + "author" : "xcode", | ||
| 20 | + "version" : 1 | ||
| 21 | + } | ||
| 22 | +} |
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_message_gray_more.imageset/mine_header_message_gray_more@2x.png
0 → 100644
333 Bytes
metaCode/Supporting Files/Assets.xcassets/MinePage/mine_header_message_gray_more.imageset/mine_header_message_gray_more@3x.png
0 → 100644
578 Bytes