Commit fd6ee8b2 authored by 曹云霄's avatar 曹云霄

去掉无用框架、整理部分代码

parent 1980c2e1
......@@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
29278C412004986800656DF1 /* TodoResultModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29278C402004986800656DF1 /* TodoResultModel.swift */; };
296AAC5A1FFCB2A4008BE04C /* BaseTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296AAC591FFCB2A4008BE04C /* BaseTableViewController.swift */; };
296AAC9D1FFDF533008BE04C /* SearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296AAC991FFDF532008BE04C /* SearchViewController.swift */; };
296AAC9F1FFDF54A008BE04C /* SearchTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296AAC9E1FFDF54A008BE04C /* SearchTableViewCell.swift */; };
......@@ -59,6 +60,11 @@
29DA417C200367F5002762A2 /* RepairOrderEditSonOrderCompleteView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 29DA417B200367F5002762A2 /* RepairOrderEditSonOrderCompleteView.xib */; };
29DA417E20036FDD002762A2 /* LoginResultModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DA417D20036FDD002762A2 /* LoginResultModel.swift */; };
29DA4180200373C3002762A2 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DA417F200373C3002762A2 /* LoginViewModel.swift */; };
29DA418220045AC3002762A2 /* QueryTodoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DA418120045AC2002762A2 /* QueryTodoModel.swift */; };
29DA418620046E86002762A2 /* AboutUsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DA418520046E86002762A2 /* AboutUsTableViewController.swift */; };
29DA4189200472A1002762A2 /* UIDevice+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 29DA4188200472A1002762A2 /* UIDevice+Helper.m */; };
29DA418B200475AC002762A2 /* AccountViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DA418A200475AC002762A2 /* AccountViewModel.swift */; };
29DA418D200486D6002762A2 /* ChangePasswordTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DA418C200486D6002762A2 /* ChangePasswordTableViewController.swift */; };
29EA0BF81FEA3156005A6170 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 29EA0BBD1FEA3156005A6170 /* Assets.xcassets */; };
29EA0BFB1FEA3156005A6170 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 29EA0BC21FEA3156005A6170 /* Info.plist */; };
29EA0BFC1FEA3156005A6170 /* AppManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29EA0BC61FEA3156005A6170 /* AppManager.swift */; };
......@@ -96,6 +102,7 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
29278C402004986800656DF1 /* TodoResultModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodoResultModel.swift; sourceTree = "<group>"; };
296AAC591FFCB2A4008BE04C /* BaseTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTableViewController.swift; sourceTree = "<group>"; };
296AAC991FFDF532008BE04C /* SearchViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchViewController.swift; sourceTree = "<group>"; };
296AAC9E1FFDF54A008BE04C /* SearchTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchTableViewCell.swift; sourceTree = "<group>"; };
......@@ -149,6 +156,12 @@
29DA417B200367F5002762A2 /* RepairOrderEditSonOrderCompleteView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RepairOrderEditSonOrderCompleteView.xib; sourceTree = "<group>"; };
29DA417D20036FDD002762A2 /* LoginResultModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginResultModel.swift; sourceTree = "<group>"; };
29DA417F200373C3002762A2 /* LoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = "<group>"; };
29DA418120045AC2002762A2 /* QueryTodoModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QueryTodoModel.swift; sourceTree = "<group>"; };
29DA418520046E86002762A2 /* AboutUsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutUsTableViewController.swift; sourceTree = "<group>"; };
29DA4187200472A1002762A2 /* UIDevice+Helper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIDevice+Helper.h"; sourceTree = "<group>"; };
29DA4188200472A1002762A2 /* UIDevice+Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+Helper.m"; sourceTree = "<group>"; };
29DA418A200475AC002762A2 /* AccountViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewModel.swift; sourceTree = "<group>"; };
29DA418C200486D6002762A2 /* ChangePasswordTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangePasswordTableViewController.swift; sourceTree = "<group>"; };
29EA0B951FEA2F9C005A6170 /* IFS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IFS.app; sourceTree = BUILT_PRODUCTS_DIR; };
29EA0BBD1FEA3156005A6170 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
29EA0BC21FEA3156005A6170 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
......@@ -273,6 +286,7 @@
29D530621FFF626500851F00 /* Model */ = {
isa = PBXGroup;
children = (
29278C402004986800656DF1 /* TodoResultModel.swift */,
);
path = Model;
sourceTree = "<group>";
......@@ -498,6 +512,8 @@
isa = PBXGroup;
children = (
296FE4431FFB393C00810820 /* AccountTableViewController.swift */,
29DA418520046E86002762A2 /* AboutUsTableViewController.swift */,
29DA418C200486D6002762A2 /* ChangePasswordTableViewController.swift */,
);
path = Controller;
sourceTree = "<group>";
......@@ -519,6 +535,7 @@
29EA0BB01FEA3156005A6170 /* ViewModel */ = {
isa = PBXGroup;
children = (
29DA418A200475AC002762A2 /* AccountViewModel.swift */,
);
path = ViewModel;
sourceTree = "<group>";
......@@ -557,6 +574,7 @@
29EA0BB81FEA3156005A6170 /* Model */ = {
isa = PBXGroup;
children = (
29DA418120045AC2002762A2 /* QueryTodoModel.swift */,
);
path = Model;
sourceTree = "<group>";
......@@ -717,6 +735,8 @@
children = (
29EA0BDB1FEA3156005A6170 /* UIImage+Category.h */,
29EA0BDC1FEA3156005A6170 /* UIImage+Category.m */,
29DA4187200472A1002762A2 /* UIDevice+Helper.h */,
29DA4188200472A1002762A2 /* UIDevice+Helper.m */,
);
path = Category;
sourceTree = "<group>";
......@@ -894,13 +914,11 @@
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-IFS/Pods-IFS-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
"${BUILT_PRODUCTS_DIR}/AsyncSwift/Async.framework",
"${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework",
"${BUILT_PRODUCTS_DIR}/DeviceKit/DeviceKit.framework",
"${BUILT_PRODUCTS_DIR}/FDFullscreenPopGesture/FDFullscreenPopGesture.framework",
"${BUILT_PRODUCTS_DIR}/HandyJSON/HandyJSON.framework",
"${BUILT_PRODUCTS_DIR}/Hero/Hero.framework",
"${BUILT_PRODUCTS_DIR}/IGListKit/IGListKit.framework",
"${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework",
"${BUILT_PRODUCTS_DIR}/ImagePicker/ImagePicker.framework",
"${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework",
......@@ -916,18 +934,15 @@
"${BUILT_PRODUCTS_DIR}/YXAlertController/YXAlertController.framework",
"${BUILT_PRODUCTS_DIR}/YXKit/YXKit.framework",
"${BUILT_PRODUCTS_DIR}/YXPickerView/YXPickerView.framework",
"${BUILT_PRODUCTS_DIR}/YYText/YYText.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Async.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DeviceKit.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FDFullscreenPopGesture.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HandyJSON.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Hero.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IGListKit.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImagePicker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework",
......@@ -943,7 +958,6 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YXAlertController.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YXKit.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YXPickerView.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YYText.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
......@@ -1000,7 +1014,9 @@
29D5307F1FFF626500851F00 /* RepairOrderAddTableViewController.swift in Sources */,
29DA416220031377002762A2 /* RepairOrderDetailBottomView.swift in Sources */,
29EA0C061FEA3156005A6170 /* BaseViewModel.swift in Sources */,
29DA418620046E86002762A2 /* AboutUsTableViewController.swift in Sources */,
29EA0BFF1FEA3156005A6170 /* TabBarViewController.swift in Sources */,
29DA4189200472A1002762A2 /* UIDevice+Helper.m in Sources */,
29EA0C1C1FEA3156005A6170 /* AppDelegate.swift in Sources */,
29D530811FFF626500851F00 /* PhotoAttachmentModel.swift in Sources */,
29EA0BFE1FEA3156005A6170 /* LoginViewController.swift in Sources */,
......@@ -1020,6 +1036,7 @@
29EA0C0F1FEA3156005A6170 /* String+Extension.swift in Sources */,
29D5307D1FFF626500851F00 /* FunctionCollectionViewCell.swift in Sources */,
29DA4169200334BC002762A2 /* RepairOrderSubOrderTableViewCell.swift in Sources */,
29DA418B200475AC002762A2 /* AccountViewModel.swift in Sources */,
29EA0C011FEA3156005A6170 /* BaseColletionViewPullController.swift in Sources */,
29D530801FFF626500851F00 /* RepairOrderViewController.swift in Sources */,
29D530911FFF6FA800851F00 /* PhotoAttachmentViewController.swift in Sources */,
......@@ -1047,9 +1064,11 @@
29EA0C0A1FEA3156005A6170 /* Notification.swift in Sources */,
29D5307C1FFF626500851F00 /* FunctionCollectionReusableView.swift in Sources */,
296FE4441FFB393C00810820 /* AccountTableViewController.swift in Sources */,
29DA418220045AC3002762A2 /* QueryTodoModel.swift in Sources */,
296AAC9D1FFDF533008BE04C /* SearchViewController.swift in Sources */,
29D530881FFF62CB00851F00 /* TodoTableViewCell.swift in Sources */,
29EA0C181FEA3156005A6170 /* EmptyTableViewCell.swift in Sources */,
29278C412004986800656DF1 /* TodoResultModel.swift in Sources */,
29DA417620035B3C002762A2 /* RepairBeforAttachmentTableViewCell.swift in Sources */,
29EA0C161FEA3156005A6170 /* Network.swift in Sources */,
29EA0C041FEA3156005A6170 /* BaseTableViewPullController.swift in Sources */,
......@@ -1060,6 +1079,7 @@
29EA0BFD1FEA3156005A6170 /* AppStyle.swift in Sources */,
296AACB31FFE31FC008BE04C /* SearchViewModel.swift in Sources */,
29EA0C071FEA3156005A6170 /* UIImage+Category.m in Sources */,
29DA418D200486D6002762A2 /* ChangePasswordTableViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......
......@@ -54,8 +54,8 @@ class BaseTableViewPullController: BaseViewController {
// MARK: - 添加上拉加载更多
func setupTableViewFooter() {
let footer = MJRefreshAutoNormalFooter.init(refreshingTarget: self, refreshingAction: #selector(BaseTableViewPullController.loadTableViewFooter))
footer?.setTitle("~ 加载更多 ~", for: .idle)
let footer = MJRefreshAutoNormalFooter(refreshingTarget: self, refreshingAction: #selector(BaseTableViewPullController.loadTableViewFooter))
footer?.setTitle("", for: .idle)
footer?.setTitle("~ 加载中 ~", for: .refreshing)
footer?.setTitle("~ end ~", for: .noMoreData)
footer?.stateLabel.textColor = kNavColor
......@@ -104,7 +104,6 @@ class BaseTableViewPullController: BaseViewController {
}
}
extension BaseTableViewPullController: DZNEmptyDataSetSource,DZNEmptyDataSetDelegate {
func image(forEmptyDataSet scrollView: UIScrollView!) -> UIImage! {
......
//
// UIDevice+Helper.h
// Patrol
//
// Created by 曹云霄 on 2017/7/19.
// Copyright © 2017年 上海勾芒科技信息有限公司. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIDevice (Helper)
/**
获取设备名称
*/
+ (NSString *)deviceModelName;
/**
app版本号
*/
+ (NSString *)appVersion;
/**
app名称
*/
+ (NSString *)appName;
/**
app图标
*/
+ (UIImage *)appIcon;
@end
//
// UIDevice+Helper.m
// Patrol
//
// Created by 曹云霄 on 2017/7/19.
// Copyright © 2017年 上海勾芒科技信息有限公司. All rights reserved.
//
#import "UIDevice+Helper.h"
#import <sys/utsname.h>
@implementation UIDevice (Helper)
//获取设备名称
+ (NSString*)deviceModelName
{
struct utsname systemInfo;
uname(&systemInfo);
NSString *deviceModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
//iPhone 系列
if ([deviceModel isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
if ([deviceModel isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([deviceModel isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([deviceModel isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([deviceModel isEqualToString:@"iPhone3,2"]) return @"Verizon iPhone 4";
if ([deviceModel isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([deviceModel isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([deviceModel isEqualToString:@"iPhone5,2"]) return @"iPhone 5";
if ([deviceModel isEqualToString:@"iPhone5,3"]) return @"iPhone 5C";
if ([deviceModel isEqualToString:@"iPhone5,4"]) return @"iPhone 5C";
if ([deviceModel isEqualToString:@"iPhone6,1"]) return @"iPhone 5S";
if ([deviceModel isEqualToString:@"iPhone6,2"]) return @"iPhone 5S";
if ([deviceModel isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([deviceModel isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([deviceModel isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([deviceModel isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([deviceModel isEqualToString:@"iPhone9,1"]) return @"iPhone 7 (CDMA)";
if ([deviceModel isEqualToString:@"iPhone9,3"]) return @"iPhone 7 (GSM)";
if ([deviceModel isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus (CDMA)";
if ([deviceModel isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus (GSM)";
//iPod 系列
if ([deviceModel isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([deviceModel isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([deviceModel isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([deviceModel isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([deviceModel isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";
//iPad 系列
if ([deviceModel isEqualToString:@"iPad1,1"]) return @"iPad";
if ([deviceModel isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([deviceModel isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
if ([deviceModel isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([deviceModel isEqualToString:@"iPad2,4"]) return @"iPad 2 (32nm)";
if ([deviceModel isEqualToString:@"iPad2,5"]) return @"iPad mini (WiFi)";
if ([deviceModel isEqualToString:@"iPad2,6"]) return @"iPad mini (GSM)";
if ([deviceModel isEqualToString:@"iPad2,7"]) return @"iPad mini (CDMA)";
if ([deviceModel isEqualToString:@"iPad3,1"]) return @"iPad 3(WiFi)";
if ([deviceModel isEqualToString:@"iPad3,2"]) return @"iPad 3(CDMA)";
if ([deviceModel isEqualToString:@"iPad3,3"]) return @"iPad 3(4G)";
if ([deviceModel isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([deviceModel isEqualToString:@"iPad3,5"]) return @"iPad 4 (4G)";
if ([deviceModel isEqualToString:@"iPad3,6"]) return @"iPad 4 (CDMA)";
if ([deviceModel isEqualToString:@"iPad4,1"]) return @"iPad Air";
if ([deviceModel isEqualToString:@"iPad4,2"]) return @"iPad Air";
if ([deviceModel isEqualToString:@"iPad4,3"]) return @"iPad Air";
if ([deviceModel isEqualToString:@"iPad5,3"]) return @"iPad Air 2";
if ([deviceModel isEqualToString:@"iPad5,4"]) return @"iPad Air 2";
if ([deviceModel isEqualToString:@"i386"]) return @"Simulator";
if ([deviceModel isEqualToString:@"x86_64"]) return @"Simulator";
if ([deviceModel isEqualToString:@"iPad4,4"]
||[deviceModel isEqualToString:@"iPad4,5"]
||[deviceModel isEqualToString:@"iPad4,6"]) return @"iPad mini 2";
if ([deviceModel isEqualToString:@"iPad4,7"]
||[deviceModel isEqualToString:@"iPad4,8"]
||[deviceModel isEqualToString:@"iPad4,9"]) return @"iPad mini 3";
return deviceModel;
}
/**
app版本号
*/
+ (NSString *)appVersion
{
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
return app_Version;
}
/**
app名称
*/
+ (NSString *)appName
{
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *app_Name = [infoDictionary objectForKey:@"CFBundleDisplayName"];
return app_Name;
}
/**
app图标
*/
+ (UIImage *)appIcon
{
NSDictionary *infoPlist = [[NSBundle mainBundle] infoDictionary];
NSString *icon = [[infoPlist valueForKeyPath:@"CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles"] lastObject];
UIImage *image = [UIImage imageNamed:icon];
return image;
}
@end
......@@ -11,3 +11,9 @@ import Foundation
//本地存储用户信息
public let accountPath: String = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! + "/userAccount.plist"
/// 添加图片
public let add_Photo: String = "add_photo"
/// 子订单完成界面,维修前、维修后
public let after: String = "after"
public let befor: String = "befor"
......@@ -72,10 +72,20 @@ public enum CHILD_BILL_EDIT_SECTION: Int {
case DESCRIBE
case AFTERATTACHMENT
case BEFORATTACHMENT
}
/// 待办事项状态
///
/// - INIT: 未开始
/// - DREW: 已领单
/// - ALL: 全部
public enum TODO_STATE: String {
case INIT = "init"
case DREW = "drew"
case ALL = "all"
}
......
......@@ -25,14 +25,19 @@ public let kTabBarHeight: CGFloat = 49
public let kROWS: Int = 15
public let kONE: Int = 1
public let kZERO: Int = 0
public let kPageSize: Int = 15
public let kSectionZero: CGFloat = 0.01
public let kSectionTen: CGFloat = 10
public let kEmptyHeight: CGFloat = 108
public let kWidth: CGFloat = UIScreen.main.bounds.size.width
public let kHeight: CGFloat = UIScreen.main.bounds.size.height
public let kWindow: UIWindow = ((UIApplication.shared.delegate?.window)!)!
/// 用户信息
public func kUser() -> UserModel {
return AppManager.shareInstance.userModel
}
......
......@@ -15,3 +15,6 @@ public let BaseUrl: String = "http://dev.gomoretech.com/ifs-server/rest"
/// 登录
public let loginUrl: String = "/user/login/%@"
/// 待办事项
public let todoUrl: String = "/message/query"
......@@ -22,6 +22,21 @@ extension UIViewController {
return searchBar
}
// MARK: - 创建UIBarbuttonItem
open func createButtonItem(_ title: String?, _ imageName: String?,_ target: Any,_ action: Selector) ->UIBarButtonItem {
let button = UIButton(type: .custom)
button.addTarget(target, action: action, for: .touchUpInside)
if title != nil {
button.setTitle(title, for: .normal)
}else if imageName != nil {
button.setImage(UIImage(named: imageName!), for: .normal)
}else {
button.setTitle("确认", for: .normal)
}
button.sizeToFit()
return UIBarButtonItem(customView: button)
}
///EZSE: Pushes a view controller onto the receiver’s stack and updates the display.
open func pushVC(_ vc: UIViewController) {
navigationController?.pushViewController(vc, animated: true)
......
......@@ -61,6 +61,15 @@ struct Network {
switch result {
/// 请求成功后先通过json解析数据,如果解析失败使用jsonString重试一次
case let .success(response):
//打印参数、返回
print("url = " + (response.request?.url?.absoluteString)!)
do {
let body = try JSON(data: (response.request?.httpBody)!)
print(body)
let result = try JSON(data: response.data)
print(result)
}catch {}
do {
guard response.statusCode == 200 else {
failure(MoyaError.statusCode(response))
......
......@@ -9,11 +9,14 @@
import Foundation
import Moya
import Alamofire
import SwiftyJSON
public enum Service {
// MARK: - 登录
case Login(String,String)
// MARK: - 待办事项查询
case QueryTodo(QueryTodoModel)
}
extension Service: TargetType {
......@@ -25,13 +28,17 @@ extension Service: TargetType {
switch self {
case .Login(let name, _):
return String(format: loginUrl, name)
case .QueryTodo(_):
return todoUrl
}
}
public var method: Moya.Method {
switch self {
case .Login(_, _):
case .Login(_, _),
.QueryTodo(_):
return .post
}
}
......@@ -45,6 +52,9 @@ extension Service: TargetType {
return .requestParameters(parameters: ["password": password,
"authenticode": "211534962"],
encoding: JSONEncoding.default)
case .QueryTodo(let model):
return .requestParameters(parameters: model.toDictionary(),
encoding: JSONEncoding.default)
}
}
......
......@@ -9,7 +9,6 @@
import UIKit
import ImagePicker
import SKPhotoBrowser
import Async
......
//
// AboutUsTableViewController.swift
// IFS
//
// Created by 曹云霄 on 2018/1/9.
// Copyright © 2018年 上海勾芒信息科技有限公司. All rights reserved.
//
import UIKit
class AboutUsTableViewController: BaseTableViewController {
/// app图标
@IBOutlet weak var appIconImg: UIImageView!
/// app图标背景
@IBOutlet weak var appIconBgView: UIView!
/// app版本
@IBOutlet weak var appVersionLab: UILabel!
/// 联系方式
@IBOutlet weak var appMobileLab: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
uiConfigAction()
}
// MARK: - UI
fileprivate func uiConfigAction() {
view.layoutIfNeeded()
appIconBgView.seth(h: kWidth * 9 / 16)
appVersionLab.text = UIDevice.version()
// appIconImg.image = UIDevice.appIcon()
appMobileLab.text = "15121161964"
}
}
......@@ -8,6 +8,7 @@
import UIKit
import Kingfisher
import YXAlertController
class AccountTableViewController: BaseTableViewController {
......@@ -17,7 +18,11 @@ class AccountTableViewController: BaseTableViewController {
@IBOutlet weak var userNameLab: UILabel!
/// 账户背景
@IBOutlet weak var accountBgView: UIView!
/// 账户VieWModel
lazy final var accountViewModel: AccountViewModel = {
var accountViewModel = AccountViewModel()
return accountViewModel;
}()
override func viewDidLoad() {
super.viewDidLoad()
......@@ -45,11 +50,18 @@ class AccountTableViewController: BaseTableViewController {
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 10
return kSectionTen
}
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return kSectionZero
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
if indexPath.section == kONE && indexPath.row == kZERO {
accountViewModel.loginOutAction()
}
}
}
......
//
// ChangePasswordTableViewController.swift
// IFS
//
// Created by 曹云霄 on 2018/1/9.
// Copyright © 2018年 上海勾芒信息科技有限公司. All rights reserved.
//
import UIKit
import RxSwift
class ChangePasswordTableViewController: BaseTableViewController {
/// RxSwift自动释放
let disposeBag = DisposeBag()
/// 旧密码
@IBOutlet weak var oldPasswordText: UITextField!
/// 新密码
@IBOutlet weak var newPasswordText: UITextField!
/// 确认新密码
@IBOutlet weak var new2PasswordText: UITextField!
/// 确认新密码
@IBOutlet weak var affirmButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
uiConfigAction()
bindingRxAction()
}
// MARK: - UI
fileprivate func uiConfigAction() {
affirmButton.addAngle(5.0)
}
// MARK: - UITextField绑定RxSwift事件
fileprivate func bindingRxAction() {
let oldPasswordValid = oldPasswordText.rx.text.map { (text) -> Bool in
if (text?.isEmpty)! {
return false
}
return true
}
let newPasswordValid = newPasswordText.rx.text.map { (text) -> Bool in
if (text?.isEmpty)! {
return false
}
return true
}
let new2PasswordValid = new2PasswordText.rx.text.map { (text) -> Bool in
if (text?.isEmpty)! {
return false
}
return true
}
Observable.combineLatest(oldPasswordValid,newPasswordValid,new2PasswordValid).map { (oldPasswordValid,newPasswordValid,new2PasswordValid) -> Bool in
return oldPasswordValid && newPasswordValid && new2PasswordValid
}.subscribe(onNext: {[weak self] (bool) in
self?.affirmButton.isEnabled = bool
self?.affirmButton.alpha = bool ? 1 : 0.5
}).disposed(by: disposeBag)
}
// MARK: - 确认新密码
@IBAction func affirmButtonClickAction(_ sender: UIButton) {
}
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return kSectionZero
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return kSectionTen
}
}
//
// AccountViewModel.swift
// IFS
//
// Created by 曹云霄 on 2018/1/9.
// Copyright © 2018年 上海勾芒信息科技有限公司. All rights reserved.
//
import UIKit
import YXAlertController
class AccountViewModel: BaseViewModel {
// MARK: - 退出登录
func loginOutAction() {
ShowAlertView("提示", "请确认是否退出登录?", ["取消","确认"], .alert) { (index) in
if index == kZERO { return }
do {
try FileManager.default.removeItem(atPath: accountPath)
}catch {
ShowMessage("删除用户信息失败")
}
AppManager.shareInstance.openLoginVc()
}
}
}
......@@ -66,12 +66,19 @@ class RepairOrderAddTableViewController: BaseTableViewController {
fileprivate func uiConfigAction() {
describeTextView.placeholder = "工单描述"
tableView.register(UINib(nibName: RepairAttachmentTableViewCell.name(), bundle: nil), forCellReuseIdentifier: RepairAttachmentTableViewCell.name())
describeTextView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0)
navigationItem.rightBarButtonItem = createButtonItem("提交", nil, self, #selector(RepairOrderAddTableViewController.submitButtonClickAction))
}
// MARK: - 提交工单
@objc fileprivate func submitButtonClickAction() {
}
// MARK: - 设置附件VC
fileprivate func setupPhotoAttachmentVc(){
addChildViewController(attachmentVc)
attachmentVc.attachmentViewModel.photoAttachments.append(PhotoAttachmentModel("add_photo", .ATTACHMENT_ADD))
attachmentVc.attachmentViewModel.photoAttachments.append(PhotoAttachmentModel(add_Photo, .ATTACHMENT_ADD))
attachmentHeight = attachmentVc.attachmentHeight(kONE,nil)
}
......
......@@ -21,9 +21,6 @@ class RepairOrderEditSonOrderViewController: BaseTableViewController {
var beforAttachmentHeight: CGFloat! = 0
/// 维修后图片附件高度
var afterAttachmentHeight: CGFloat! = 0
/// key
let after: String = "after"
let befor: String = "befor"
/// 维修前图片附件
lazy final var beforAttachmentVc: PhotoAttachmentViewController = {
......@@ -50,8 +47,8 @@ class RepairOrderEditSonOrderViewController: BaseTableViewController {
fileprivate func setupPhotoAttachmentVc(){
addChildViewController(afterAttachmentVc)
addChildViewController(beforAttachmentVc)
beforAttachmentVc.attachmentViewModel.photoAttachments.append(PhotoAttachmentModel("add_photo", .ATTACHMENT_ADD))
afterAttachmentVc.attachmentViewModel.photoAttachments.append(PhotoAttachmentModel("add_photo", .ATTACHMENT_ADD))
beforAttachmentVc.attachmentViewModel.photoAttachments.append(PhotoAttachmentModel(add_Photo, .ATTACHMENT_ADD))
afterAttachmentVc.attachmentViewModel.photoAttachments.append(PhotoAttachmentModel(add_Photo, .ATTACHMENT_ADD))
afterAttachmentHeight = afterAttachmentVc.attachmentHeight(kONE,after)
beforAttachmentHeight = beforAttachmentVc.attachmentHeight(kONE,befor)
}
......
//
// TodoResultModel.swift
//
// Create by 云霄 曹 on 9/1/2018
import Foundation
import SwiftyJSON
class TodoResultModel{
var data : TodoData!
var message : String!
var success : Bool!
/**
* Instantiate the instance using the passed json values to set the properties values
*/
init(fromJson json: JSON!){
if json.isEmpty{
return
}
let dataJson = json["data"]
if !dataJson.isEmpty{
data = TodoData(fromJson: dataJson)
}
message = json["message"].stringValue
success = json["success"].boolValue
}
}
class Record{
var content : String!
var createTime : String!
var entityType : String!
var entityUuid : String!
var prompt : String!
var state : Bool!
var userid : String!
var uuid : String!
var version : Int!
/**
* Instantiate the instance using the passed json values to set the properties values
*/
init(fromJson json: JSON!){
if json.isEmpty{
return
}
content = json["content"].stringValue
createTime = json["createTime"].stringValue
entityType = json["entityType"].stringValue
entityUuid = json["entityUuid"].stringValue
prompt = json["prompt"].stringValue
state = json["state"].boolValue
userid = json["userid"].stringValue
uuid = json["uuid"].stringValue
version = json["version"].intValue
}
}
class Paging{
var page : Int!
var pageCount : Int!
var pageSize : Int!
var recordCount : Int!
/**
* Instantiate the instance using the passed json values to set the properties values
*/
init(fromJson json: JSON!){
if json.isEmpty{
return
}
page = json["page"].intValue
pageCount = json["pageCount"].intValue
pageSize = json["pageSize"].intValue
recordCount = json["recordCount"].intValue
}
}
class TodoData{
var paging : Paging!
var records : [Record]!
/**
* Instantiate the instance using the passed json values to set the properties values
*/
init(fromJson json: JSON!){
if json.isEmpty{
return
}
let pagingJson = json["paging"]
if !pagingJson.isEmpty{
paging = Paging(fromJson: pagingJson)
}
records = [Record]()
let recordsArray = json["records"].arrayValue
for recordsJson in recordsArray{
let value = Record(fromJson: recordsJson)
records.append(value)
}
}
}
......@@ -7,15 +7,73 @@
//
import UIKit
import RxSwift
class TodoViewModel: BaseViewModel {
}
/// 查询待办事项model
lazy final var queryModel: QueryTodoModel = {
var queryModel = QueryTodoModel()
queryModel.prompt = "未处理"
queryModel.receiver = kUser().userUuid
return queryModel
}()
/// 待办事项结果
lazy final var todoArray: Array<Record> = {
var todoArray = Array<Record>()
return todoArray
}()
/// 查询待办事项
///
/// - Parameters:
/// - page: 页数
/// - state: 状态
func queryTodoAction(_ page: Int,_ state: TODO_STATE) ->Observable<Int> {
queryModel.page = page
queryModel.pageSize = kPageSize
queryModel.state = state.rawValue
return Observable.create({ (observer) -> Disposable in
Network.request(target: .QueryTodo(self.queryModel), success: {[weak self] (json) in
let resultModel = TodoResultModel(fromJson: json)
if resultModel.success {
if page == kZERO {
self?.todoArray.removeAll()
}
for data in resultModel.data.records {
self?.todoArray.append(data)
}
observer.onNext(resultModel.data.paging.pageCount)
}else {
ShowMessage(resultModel.message)
}
}, failure: { (error) in
ShowMessage(error.localizedDescription)
})
return Disposables.create()
})
}
}
extension TodoViewModel {
/// 待办事项菜单调用
func dequeueReusableCell(_ identifier: String, _ indexPath: IndexPath, _ tableView: UITableView) -> UITableViewCell {
let todoCell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! TodoTableViewCell
return todoCell
}
/// 首页待办事项调用
func dequeueReusableHomeCell(_ identifier: String, _ indexPath: IndexPath, _ tableView: UITableView) -> UITableViewCell {
let todoCell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! HomeTableViewCell
return todoCell
}
}
......@@ -18,6 +18,10 @@ class HomeContentViewController: BaseViewController {
/// 当前子视图
var currentVc: BaseTableViewPullController!
/// 待办事项状态
// 未开始,已领单
let todoStates = [TODO_STATE.INIT,TODO_STATE.DREW]
override func viewDidLoad() {
super.viewDidLoad()
addChildContentVc()
......@@ -26,7 +30,8 @@ class HomeContentViewController: BaseViewController {
// MARK: - 添加子控制器到主控制器
fileprivate func addChildContentVc() {
for i in 0..<contentSegmented.numberOfSegments {
let homeTableVc = HomeTableViewController.instantiateViewController(.Home) as! BaseTableViewPullController
let homeTableVc = HomeTableViewController.instantiateViewController(.Home) as! HomeTableViewController
homeTableVc.todoState = todoStates[i]
addChildViewController(homeTableVc)
if i == kZERO {
currentVc = homeTableVc
......
......@@ -7,31 +7,64 @@
//
import UIKit
import RxSwift
import RxCocoa
class HomeTableViewController: BaseTableViewPullController {
/// RxSwift自动释放
let disposeBag = DisposeBag()
/// 待办事项ViewModel
lazy final var todoViewModel: TodoViewModel = {
var todoViewModel = TodoViewModel()
return todoViewModel
}()
/// 待办状态
open var todoState: TODO_STATE!
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - 获取数据
override func loadWebDataSource() {
endRefresh()
todoViewModel.queryTodoAction(pullPageIndex, todoState).subscribe(onNext: {[weak self] (pageCount) in
if (self?.pullPageIndex)! >= pageCount {
self?.endRefreshNomoreData()
}else {
self?.endRefresh()
}
self?.tableView.reloadData()
}).disposed(by: disposeBag)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let homeCell = tableView.dequeueReusableCell(withIdentifier: HomeTableViewCell.name(), for: indexPath)
return homeCell
return todoViewModel.dequeueReusableHomeCell(HomeTableViewCell.name(), indexPath, tableView)
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
return todoViewModel.todoArray.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 50
return 60
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
}
......@@ -11,7 +11,6 @@ import SnapKit
class HomeViewController: BaseViewController {
/// 子视图背景View
@IBOutlet weak var contentBgView: UIView!
......
//
// QueryTodoModel.swift
//
// Create by 云霄 曹 on 9/1/2018
// Copyright © 2018. All rights reserved.
import Foundation
import SwiftyJSON
public class QueryTodoModel {
var content : String!
var order : Order!
var overReceiver : String!
var overSpecifyRole : String!
var overtime : String!
var page : Int!
var pageSize : Int!
var prompt : String!
var receiver : String!
var remindTime : String!
var specifyRole : String!
var state : String!
/**
* Returns all the available property values in the form of [String:Any] object where the key is the approperiate json key and the value is the value of the corresponding property
*/
func toDictionary() -> [String:Any]
{
var dictionary = [String:Any]()
if content != nil{
dictionary["content"] = content
}
if order != nil{
dictionary["order"] = order.toDictionary()
}
if overReceiver != nil{
dictionary["overReceiver"] = overReceiver
}
if overSpecifyRole != nil{
dictionary["overSpecifyRole"] = overSpecifyRole
}
if overtime != nil{
dictionary["overtime"] = overtime
}
if page != nil{
dictionary["page"] = page
}
if pageSize != nil{
dictionary["pageSize"] = pageSize
}
if prompt != nil{
dictionary["prompt"] = prompt
}
if receiver != nil{
dictionary["receiver"] = receiver
}
if remindTime != nil{
dictionary["remindTime"] = remindTime
}
if specifyRole != nil{
dictionary["specifyRole"] = specifyRole
}
if state != nil{
dictionary["state"] = state
}
return dictionary
}
}
public class Order{
var direction : String!
var field : String!
/**
* Returns all the available property values in the form of [String:Any] object where the key is the approperiate json key and the value is the value of the corresponding property
*/
func toDictionary() -> [String:Any]
{
var dictionary = [String:Any]()
if direction != nil{
dictionary["direction"] = direction
}
if field != nil{
dictionary["field"] = field
}
return dictionary
}
}
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="oZa-IQ-b7k">
<device id="retina5_9" orientation="portrait">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
......@@ -15,11 +15,11 @@
<objects>
<viewController id="oZa-IQ-b7k" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Qv6-mi-Qhw">
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="1470363197668_fact_1" translatesAutoresizingMaskIntoConstraints="NO" id="cwD-kG-8mE">
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="launchImage_bg" translatesAutoresizingMaskIntoConstraints="NO" id="cwD-kG-8mE">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
......@@ -38,6 +38,6 @@
</scene>
</scenes>
<resources>
<image name="1470363197668_fact_1" width="360" height="640"/>
<image name="launchImage_bg" width="360" height="640"/>
</resources>
</document>
......@@ -19,7 +19,7 @@
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo_bg" translatesAutoresizingMaskIntoConstraints="NO" id="vja-5Y-7mu">
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="logo_bg" translatesAutoresizingMaskIntoConstraints="NO" id="vja-5Y-7mu">
<rect key="frame" x="0.0" y="0.0" width="414" height="240"/>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LbX-eW-pH9">
......@@ -61,7 +61,7 @@
</constraints>
<nil key="textColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
<textInputTraits key="textInputTraits" secureTextEntry="YES"/>
</textField>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yPV-5e-fY6">
<rect key="frame" x="75" y="240.66666666666669" width="309" height="1"/>
......
......@@ -8,6 +8,7 @@
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
......@@ -15,7 +16,7 @@
<scene sceneID="WBF-tx-hSd">
<objects>
<tableViewController storyboardIdentifier="AccountTableViewController" id="nGd-2G-60V" customClass="AccountTableViewController" customModule="IFS" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" id="jum-Mm-S2N">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="1" id="jum-Mm-S2N">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
......@@ -72,6 +73,9 @@
<constraint firstItem="3oZ-Mf-Wde" firstAttribute="centerY" secondItem="uqV-H5-l10" secondAttribute="centerY" id="cH3-Xt-8og"/>
</constraints>
</tableViewCellContentView>
<connections>
<segue destination="If6-91-wc7" kind="show" id="EO0-ot-ooW"/>
</connections>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" id="onU-KU-A6a">
<rect key="frame" x="0.0" y="244" width="375" height="44"/>
......@@ -97,6 +101,9 @@
<constraint firstItem="Kgj-zg-H9h" firstAttribute="leading" secondItem="WYf-5i-bma" secondAttribute="leading" constant="20" id="SxR-pK-tm4"/>
</constraints>
</tableViewCellContentView>
<connections>
<segue destination="RKj-Im-rVW" kind="show" id="oDZ-ZF-V9a"/>
</connections>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" id="pbc-mB-oJF">
<rect key="frame" x="0.0" y="288" width="375" height="44"/>
......@@ -125,6 +132,35 @@
</tableViewCell>
</cells>
</tableViewSection>
<tableViewSection id="drY-Pl-vwY">
<cells>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" id="nor-ZM-YHe">
<rect key="frame" x="0.0" y="351" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="nor-ZM-YHe" id="yAi-UR-sAl">
<rect key="frame" x="0.0" y="0.0" width="341" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="login_out" translatesAutoresizingMaskIntoConstraints="NO" id="saJ-n6-rBK">
<rect key="frame" x="20" y="13" width="18" height="18"/>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="退出登录" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Xv-Qq-SZd">
<rect key="frame" x="50" y="13" width="61.5" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="saJ-n6-rBK" firstAttribute="centerY" secondItem="yAi-UR-sAl" secondAttribute="centerY" id="FhI-zT-8Lu"/>
<constraint firstItem="saJ-n6-rBK" firstAttribute="leading" secondItem="yAi-UR-sAl" secondAttribute="leading" constant="20" id="LOz-nq-1XU"/>
<constraint firstItem="9Xv-Qq-SZd" firstAttribute="centerY" secondItem="saJ-n6-rBK" secondAttribute="centerY" id="O0r-c2-0Uk"/>
<constraint firstItem="9Xv-Qq-SZd" firstAttribute="leading" secondItem="yAi-UR-sAl" secondAttribute="leading" constant="50" id="vm7-SW-oxF"/>
</constraints>
</tableViewCellContentView>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="nGd-2G-60V" id="MJp-0e-XqI"/>
......@@ -139,12 +175,361 @@
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="3hj-GV-DZY" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-402.39999999999998" y="187.55622188905548"/>
<point key="canvasLocation" x="-814" y="-146"/>
</scene>
<!--修改密码-->
<scene sceneID="a9S-dH-BY9">
<objects>
<tableViewController storyboardIdentifier="ChangePasswordTableViewController" title="修改密码" id="If6-91-wc7" customClass="ChangePasswordTableViewController" customModule="IFS" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" id="8Ws-WL-H80">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<sections>
<tableViewSection id="Ptw-s1-d1b">
<cells>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" id="1kz-tF-UgR">
<rect key="frame" x="0.0" y="35" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="1kz-tF-UgR" id="oUP-go-aHr">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="当前密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hUG-zi-U10">
<rect key="frame" x="15" y="13.5" width="61.5" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入旧密码" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="pRn-F5-R1e">
<rect key="frame" x="96.5" y="7.5" width="263.5" height="30"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="dKT-HA-bH4"/>
</constraints>
<nil key="textColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits"/>
</textField>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zAX-n7-eXK">
<rect key="frame" x="0.0" y="43" width="375" height="1"/>
<color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="nLq-3z-UIF"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstItem="pRn-F5-R1e" firstAttribute="centerY" secondItem="hUG-zi-U10" secondAttribute="centerY" id="Bir-Y2-Hzw"/>
<constraint firstItem="hUG-zi-U10" firstAttribute="centerY" secondItem="oUP-go-aHr" secondAttribute="centerY" id="CaM-ZC-g68"/>
<constraint firstItem="hUG-zi-U10" firstAttribute="leading" secondItem="oUP-go-aHr" secondAttribute="leading" constant="15" id="D1I-sv-oi3"/>
<constraint firstItem="pRn-F5-R1e" firstAttribute="leading" secondItem="hUG-zi-U10" secondAttribute="trailing" constant="20" id="Ffb-66-lv2"/>
<constraint firstAttribute="trailing" secondItem="zAX-n7-eXK" secondAttribute="trailing" id="TC5-0E-Met"/>
<constraint firstAttribute="trailing" secondItem="pRn-F5-R1e" secondAttribute="trailing" constant="15" id="muc-pL-acK"/>
<constraint firstAttribute="bottom" secondItem="zAX-n7-eXK" secondAttribute="bottom" id="oSs-Um-gm7"/>
<constraint firstItem="zAX-n7-eXK" firstAttribute="leading" secondItem="oUP-go-aHr" secondAttribute="leading" id="p5W-TO-BdK"/>
</constraints>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" id="Pcl-Yg-3Sd">
<rect key="frame" x="0.0" y="79" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Pcl-Yg-3Sd" id="Not-ds-ceF">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="新密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HCe-YW-Wlg">
<rect key="frame" x="15" y="13.5" width="46" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="DWH-hC-Xmo">
<rect key="frame" x="0.0" y="43" width="375" height="1"/>
<color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="ZCa-qO-Mm1"/>
</constraints>
</view>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入新密码" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="9Fh-CC-naj">
<rect key="frame" x="81" y="7.5" width="279" height="30"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="Kbr-Fu-auU"/>
</constraints>
<nil key="textColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" secureTextEntry="YES"/>
</textField>
</subviews>
<constraints>
<constraint firstItem="9Fh-CC-naj" firstAttribute="leading" secondItem="HCe-YW-Wlg" secondAttribute="trailing" constant="20" id="773-Us-mTl"/>
<constraint firstItem="HCe-YW-Wlg" firstAttribute="leading" secondItem="Not-ds-ceF" secondAttribute="leading" constant="15" id="AzI-RL-YG8"/>
<constraint firstAttribute="bottom" secondItem="DWH-hC-Xmo" secondAttribute="bottom" id="BDb-3j-oMu"/>
<constraint firstItem="DWH-hC-Xmo" firstAttribute="leading" secondItem="Not-ds-ceF" secondAttribute="leading" id="G5x-5w-tlY"/>
<constraint firstAttribute="trailing" secondItem="DWH-hC-Xmo" secondAttribute="trailing" id="ICw-hf-DaM"/>
<constraint firstItem="HCe-YW-Wlg" firstAttribute="centerY" secondItem="Not-ds-ceF" secondAttribute="centerY" id="IaS-jg-qWB"/>
<constraint firstItem="9Fh-CC-naj" firstAttribute="centerY" secondItem="HCe-YW-Wlg" secondAttribute="centerY" id="aPL-ii-Uz9"/>
<constraint firstAttribute="trailing" secondItem="9Fh-CC-naj" secondAttribute="trailing" constant="15" id="dKI-Cu-972"/>
</constraints>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" id="Gt8-nd-W5Z">
<rect key="frame" x="0.0" y="123" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Gt8-nd-W5Z" id="WWZ-PF-zba">
<rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="确认新密码" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qEG-ky-m6I">
<rect key="frame" x="15" y="13.5" width="77" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="88A-Wd-sde">
<rect key="frame" x="0.0" y="43" width="375" height="1"/>
<color key="backgroundColor" red="0.94117647059999998" green="0.93725490199999995" blue="0.96078431369999995" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="5Ci-QL-qr1"/>
</constraints>
</view>
<textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="请输入新密码" textAlignment="right" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="jFE-7Y-yRf">
<rect key="frame" x="112" y="7.5" width="248" height="30"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="Uvj-r2-nTz"/>
</constraints>
<nil key="textColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" secureTextEntry="YES"/>
</textField>
</subviews>
<constraints>
<constraint firstItem="88A-Wd-sde" firstAttribute="leading" secondItem="WWZ-PF-zba" secondAttribute="leading" id="0r5-a5-N2A"/>
<constraint firstAttribute="bottom" secondItem="88A-Wd-sde" secondAttribute="bottom" id="7lV-wc-CrY"/>
<constraint firstItem="jFE-7Y-yRf" firstAttribute="leading" secondItem="qEG-ky-m6I" secondAttribute="trailing" constant="20" id="A1X-Dq-iIz"/>
<constraint firstAttribute="trailing" secondItem="jFE-7Y-yRf" secondAttribute="trailing" constant="15" id="Atu-Hj-VUh"/>
<constraint firstItem="qEG-ky-m6I" firstAttribute="leading" secondItem="WWZ-PF-zba" secondAttribute="leading" constant="15" id="Xes-BQ-OHE"/>
<constraint firstItem="qEG-ky-m6I" firstAttribute="centerY" secondItem="WWZ-PF-zba" secondAttribute="centerY" id="fkz-FM-2mX"/>
<constraint firstItem="jFE-7Y-yRf" firstAttribute="centerY" secondItem="qEG-ky-m6I" secondAttribute="centerY" id="fpC-sR-hYw"/>
<constraint firstAttribute="trailing" secondItem="88A-Wd-sde" secondAttribute="trailing" id="zTz-wl-6BV"/>
</constraints>
</tableViewCellContentView>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" rowHeight="202" id="Klm-SC-swY">
<rect key="frame" x="0.0" y="167" width="375" height="202"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Klm-SC-swY" id="l7w-kT-HRd">
<rect key="frame" x="0.0" y="0.0" width="375" height="202"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Di1-uI-w3B">
<rect key="frame" x="20" y="81" width="335" height="40"/>
<color key="backgroundColor" red="0.17254901959999999" green="0.1764705882" blue="0.21176470589999999" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="ngy-ei-Nbs"/>
</constraints>
<state key="normal" title="确认">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="affirmButtonClickAction:" destination="If6-91-wc7" eventType="touchUpInside" id="Yhl-rJ-nnI"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="Di1-uI-w3B" secondAttribute="trailing" constant="20" id="VCS-Er-i7v"/>
<constraint firstItem="Di1-uI-w3B" firstAttribute="centerX" secondItem="l7w-kT-HRd" secondAttribute="centerX" id="oAv-pz-3jR"/>
<constraint firstItem="Di1-uI-w3B" firstAttribute="centerY" secondItem="l7w-kT-HRd" secondAttribute="centerY" id="zV0-oM-cnF"/>
<constraint firstItem="Di1-uI-w3B" firstAttribute="leading" secondItem="l7w-kT-HRd" secondAttribute="leading" constant="20" id="zfP-DR-glB"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<inset key="separatorInset" minX="1000" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="If6-91-wc7" id="191-Uc-agC"/>
<outlet property="delegate" destination="If6-91-wc7" id="ZiQ-qU-Csz"/>
</connections>
</tableView>
<connections>
<outlet property="affirmButton" destination="Di1-uI-w3B" id="rFg-vQ-ZyA"/>
<outlet property="new2PasswordText" destination="jFE-7Y-yRf" id="DTB-XX-GfQ"/>
<outlet property="newPasswordText" destination="9Fh-CC-naj" id="5Wd-Q8-Xcc"/>
<outlet property="oldPasswordText" destination="pRn-F5-R1e" id="Hsl-Sq-Fy2"/>
</connections>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="HRb-kH-F6h" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="381.60000000000002" y="-467.3163418290855"/>
</scene>
<!--关于-->
<scene sceneID="8NW-C3-55m">
<objects>
<viewController title="关于" id="RKj-Im-rVW" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="VaG-xA-a6A">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<containerView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="O8s-kT-c2r">
<rect key="frame" x="0.0" y="20" width="375" height="607"/>
<connections>
<segue destination="yVO-cY-Fzw" kind="embed" id="4tO-RQ-jFP"/>
</connections>
</containerView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Copyright@ 2014~2018" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uQd-09-G1m">
<rect key="frame" x="0.0" y="627" width="375" height="40"/>
<color key="backgroundColor" red="0.94117647058823528" green="0.93725490196078431" blue="0.96078431372549022" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="jl3-UG-fsF"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="uQd-09-G1m" firstAttribute="leading" secondItem="kDP-cE-uiG" secondAttribute="leading" id="BSM-11-k1l"/>
<constraint firstItem="uQd-09-G1m" firstAttribute="top" secondItem="O8s-kT-c2r" secondAttribute="bottom" id="DnR-Qq-3sI"/>
<constraint firstItem="O8s-kT-c2r" firstAttribute="leading" secondItem="kDP-cE-uiG" secondAttribute="leading" id="H4V-wb-Ucs"/>
<constraint firstItem="kDP-cE-uiG" firstAttribute="bottom" secondItem="uQd-09-G1m" secondAttribute="bottom" id="VBY-5c-cRL"/>
<constraint firstItem="kDP-cE-uiG" firstAttribute="trailing" secondItem="O8s-kT-c2r" secondAttribute="trailing" id="cLC-9h-lE6"/>
<constraint firstItem="kDP-cE-uiG" firstAttribute="trailing" secondItem="uQd-09-G1m" secondAttribute="trailing" id="ha7-hT-0Fs"/>
<constraint firstItem="O8s-kT-c2r" firstAttribute="top" secondItem="kDP-cE-uiG" secondAttribute="top" id="xa6-fq-NCT"/>
</constraints>
<viewLayoutGuide key="safeArea" id="kDP-cE-uiG"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="6ym-RM-UGh" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="380" y="191"/>
</scene>
<!--About Us Table View Controller-->
<scene sceneID="Yps-dz-sXh">
<objects>
<tableViewController storyboardIdentifier="AboutUsTableViewController" id="yVO-cY-Fzw" customClass="AboutUsTableViewController" customModule="IFS" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="1" id="sxj-Xe-aAQ">
<rect key="frame" x="0.0" y="0.0" width="375" height="607"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="0.94117647058823528" green="0.93725490196078431" blue="0.96078431372549022" alpha="1" colorSpace="calibratedRGB"/>
<view key="tableHeaderView" contentMode="scaleToFill" id="q03-sA-e9z">
<rect key="frame" x="0.0" y="0.0" width="375" height="200"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="3XQ-On-fAd">
<rect key="frame" x="150.5" y="63" width="75" height="75"/>
<constraints>
<constraint firstAttribute="width" secondItem="3XQ-On-fAd" secondAttribute="height" multiplier="1:1" id="rTf-XZ-vC7"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="3XQ-On-fAd" firstAttribute="centerY" secondItem="q03-sA-e9z" secondAttribute="centerY" id="tPo-ht-1DQ"/>
<constraint firstItem="3XQ-On-fAd" firstAttribute="centerX" secondItem="q03-sA-e9z" secondAttribute="centerX" id="uyX-Gw-de0"/>
<constraint firstItem="3XQ-On-fAd" firstAttribute="width" secondItem="q03-sA-e9z" secondAttribute="width" multiplier="0.2" id="w4n-mV-m7g"/>
</constraints>
</view>
<sections>
<tableViewSection id="baT-og-ZOS">
<cells>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" id="nog-DK-Jsv">
<rect key="frame" x="0.0" y="200" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="nog-DK-Jsv" id="RDS-2M-QHH">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="版本" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Oil-J7-tbX">
<rect key="frame" x="15" y="12.5" width="31" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="text" value="版本"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="---" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iQJ-hm-bop">
<rect key="frame" x="339" y="12" width="21" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<color key="textColor" red="0.29411764709999999" green="0.56862745100000001" blue="0.93333333330000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="iQJ-hm-bop" secondAttribute="trailing" constant="15" id="63a-xF-CYn"/>
<constraint firstItem="Oil-J7-tbX" firstAttribute="centerY" secondItem="RDS-2M-QHH" secondAttribute="centerY" id="ANz-92-Og2"/>
<constraint firstItem="iQJ-hm-bop" firstAttribute="centerY" secondItem="RDS-2M-QHH" secondAttribute="centerY" id="H70-Ez-8sg"/>
<constraint firstItem="Oil-J7-tbX" firstAttribute="leading" secondItem="RDS-2M-QHH" secondAttribute="leading" constant="15" id="LRO-Ff-NM0"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" id="sly-Au-fYr">
<rect key="frame" x="0.0" y="244" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="sly-Au-fYr" id="sWP-7J-xGY">
<rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="联系方式" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sLi-Hp-XHt">
<rect key="frame" x="15" y="12" width="62" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="string" keyPath="text" value="联系方式"/>
</userDefinedRuntimeAttributes>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="---" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qvM-xi-B0h">
<rect key="frame" x="339" y="13" width="21" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<color key="textColor" red="0.21755459899999999" green="0.53306800129999998" blue="0.99824184179999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="sLi-Hp-XHt" firstAttribute="centerY" secondItem="sWP-7J-xGY" secondAttribute="centerY" id="7Nk-k0-Pf9"/>
<constraint firstItem="qvM-xi-B0h" firstAttribute="centerY" secondItem="sWP-7J-xGY" secondAttribute="centerY" id="Lv1-aN-EeC"/>
<constraint firstAttribute="trailing" secondItem="qvM-xi-B0h" secondAttribute="trailing" constant="15" id="PmW-1V-PSY"/>
<constraint firstItem="sLi-Hp-XHt" firstAttribute="leading" secondItem="sWP-7J-xGY" secondAttribute="leading" constant="15" id="VPL-jX-M6L"/>
</constraints>
</tableViewCellContentView>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="yVO-cY-Fzw" id="PB3-Cc-eq6"/>
<outlet property="delegate" destination="yVO-cY-Fzw" id="HOw-9y-1CF"/>
</connections>
</tableView>
<connections>
<outlet property="appIconBgView" destination="q03-sA-e9z" id="8z2-50-y2P"/>
<outlet property="appIconImg" destination="3XQ-On-fAd" id="1mh-I2-msY"/>
<outlet property="appMobileLab" destination="qvM-xi-B0h" id="lUv-ms-fWg"/>
<outlet property="appVersionLab" destination="iQJ-hm-bop" id="IaR-EB-UHA"/>
</connections>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="4B8-bo-GxF" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1334" y="188"/>
</scene>
</scenes>
<resources>
<image name="about_us" width="19" height="17"/>
<image name="change_passowrd" width="15" height="17"/>
<image name="login_out" width="18" height="18"/>
<image name="update_version" width="17" height="17"/>
</resources>
</document>
......@@ -9,7 +9,7 @@ import Foundation
import SwiftyJSON
class UserModel : NSObject, NSCoding{
public class UserModel : NSObject, NSCoding{
var authenticode : String!
var belongOrgIsLeaf : Bool!
......@@ -109,7 +109,7 @@ class UserModel : NSObject, NSCoding{
* NSCoding required initializer.
* Fills the data from the passed decoder
*/
@objc required init(coder aDecoder: NSCoder)
@objc required public init(coder aDecoder: NSCoder)
{
authenticode = aDecoder.decodeObject(forKey: "authenticode") as? String
belongOrgIsLeaf = aDecoder.decodeObject(forKey: "belongOrgIsLeaf") as? Bool
......@@ -132,7 +132,7 @@ class UserModel : NSObject, NSCoding{
* NSCoding required method.
* Encodes mode properties into the decoder
*/
func encode(with aCoder: NSCoder)
public func encode(with aCoder: NSCoder)
{
if authenticode != nil{
aCoder.encode(authenticode, forKey: "authenticode")
......
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"idiom" : "iphone",
"filename" : "图层1iPhoneNotification_20pt@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"idiom" : "iphone",
"filename" : "图层1iPhoneNotification_20pt@3x.png",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"idiom" : "iphone",
"filename" : "图层1iPhoneSpootlight5_29pt@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"idiom" : "iphone",
"filename" : "图层1iPhoneSpootlight5_29pt@3x.png",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"idiom" : "iphone",
"filename" : "图层1iPhoneSpootlight7_40pt@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"idiom" : "iphone",
"filename" : "图层1iPhoneSpootlight7_40pt@3x.png",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"idiom" : "iphone",
"filename" : "图层1iPhoneApp_60pt@2x.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"idiom" : "iphone",
"filename" : "图层1iPhoneApp_60pt@3x.png",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"idiom" : "ipad",
"filename" : "图层1iPadNotifications_20pt.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"idiom" : "ipad",
"filename" : "图层1iPadNotifications_20pt@2x.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"idiom" : "ipad",
"filename" : "图层1iPadSpootlight5_29pt.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"idiom" : "ipad",
"filename" : "图层1iPadSpootlight5_29pt@2x.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"idiom" : "ipad",
"filename" : "图层1iPadSpootlight7_40pt.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"idiom" : "ipad",
"filename" : "图层1iPadSpootlight7_40pt@2x.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"idiom" : "ipad",
"filename" : "图层1iPadApp_76pt.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"idiom" : "ipad",
"filename" : "图层1iPadApp_76pt@2x.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "图层1iPadProApp_83.5pt@2x.png",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "图层1store_1024pt.png",
"scale" : "1x"
}
],
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "launchImage_bg@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "launchImage_bg@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
......@@ -2,15 +2,16 @@
"images" : [
{
"idiom" : "universal",
"filename" : "1470363197668_fact_1.jpg",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "login_out@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "login_out@3x.png",
"scale" : "3x"
}
],
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "launchImage_bg@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "launchImage_bg@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
......@@ -7,3 +7,4 @@
#import "YXKitHeader.h"
#import "YXPickerManager.h"
#import "IQTextView.h"
#import "UIDevice+Helper.h"
......@@ -2,11 +2,6 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>CFBundleDevelopmentRegion</key>
<string>zh_CN</string>
<key>CFBundleDisplayName</key>
......@@ -27,14 +22,19 @@
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能访问相册</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSCameraUsageDescription</key>
<string>App需要您的同意,才能访问相机</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能访问相册</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>LaunchScreen</string>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
......
......@@ -4,7 +4,6 @@ use_frameworks!
target IFS do
pod 'SnapKit'
pod 'SwiftyJSON'
pod 'IGListKit'
pod 'Moya'
pod 'DZNEmptyDataSet'
pod 'Kingfisher'
......@@ -14,8 +13,6 @@ target ‘IFS’ do
pod 'RxSwift'
pod 'RxCocoa'
pod 'HandyJSON', '~> 4.0.0-beta.1'
pod 'AsyncSwift'
pod 'YYText', '~> 1.0.7'
pod 'MJRefresh', '~> 3.1.15.1'
pod 'YXKit'
pod 'YXAlertController', '~> 1.0.8'
......
PODS:
- Alamofire (4.6.0)
- AsyncSwift (2.0.4)
- DeviceKit (1.4.0)
- DZNEmptyDataSet (1.8.1)
- FDFullscreenPopGesture (1.1)
- HandyJSON (4.0.0-beta.1)
- Hero (1.0.1)
- IGListKit (3.1.1):
- IGListKit/Default (= 3.1.1)
- IGListKit/Default (3.1.1):
- IGListKit/Diffing
- IGListKit/Diffing (3.1.1)
- ImagePicker (3.0.0)
- IQKeyboardManager (5.0.7)
- Kingfisher (4.6.1)
......@@ -31,16 +25,13 @@ PODS:
- YXAlertController (1.0.8)
- YXKit (0.0.8)
- YXPickerView (0.0.5)
- YYText (1.0.7)
DEPENDENCIES:
- AsyncSwift
- DeviceKit
- DZNEmptyDataSet
- FDFullscreenPopGesture (~> 1.1)
- HandyJSON (~> 4.0.0-beta.1)
- Hero
- IGListKit
- ImagePicker
- IQKeyboardManager (~> 5.0.6)
- Kingfisher
......@@ -55,17 +46,14 @@ DEPENDENCIES:
- YXAlertController (~> 1.0.8)
- YXKit
- YXPickerView (~> 0.0.4)
- YYText (~> 1.0.7)
SPEC CHECKSUMS:
Alamofire: f41a599bd63041760b26d393ec1069d9d7b917f4
AsyncSwift: 65775a7b32e740609b24969ece3de58723b9dc3e
DeviceKit: fa74d97499660e88081718b16688e19217595dba
DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7
FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
HandyJSON: 428bb18e2c34c2a77361accebf90cf64e4f74118
Hero: cee286821578e170d8c0c9c9cda7897357401112
IGListKit: cb97f405ae43e59fe1da74271e19427ec20d3c07
ImagePicker: 973953c25960fe04729a7082a56194321c6762d2
IQKeyboardManager: 0bfa4607d39924116b5c0c8b55b5d789288b5cba
Kingfisher: 1f9157d9c02b380cbd0b7cc890161195164eb634
......@@ -81,8 +69,7 @@ SPEC CHECKSUMS:
YXAlertController: 37a54642cb8e8b43b79004fe9148bb8ff2fab814
YXKit: 73d6ffbcf7530f1159e030460207286e9153b080
YXPickerView: 435b7b1362931fe63f2aab25d2810b1cf5ca2226
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
PODFILE CHECKSUM: 7d116579396cd862c5b27c1bfdfc97ea5045fa0f
PODFILE CHECKSUM: 36ab8d11dc09b068c8608b937c8558d98c298b69
COCOAPODS: 1.3.0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment