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

适配iPhone X,部分界面刷新

parent 80095dde
source "https://gems.ruby-china.org"
gem "fastlane"
gem "cocoapods"
\ No newline at end of file
GEM
remote: https://gems.ruby-china.org/
specs:
CFPropertyList (2.3.6)
activesupport (4.2.9)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
babosa (1.0.2)
claide (1.0.2)
cocoapods (1.3.0)
activesupport (>= 4.0.2, < 5)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.3.0)
cocoapods-deintegrate (>= 1.0.1, < 2.0)
cocoapods-downloader (>= 1.1.3, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-stats (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.2.0, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored2 (~> 3.1)
escape (~> 0.0.4)
fourflusher (~> 2.0.1)
gh_inspector (~> 1.0)
molinillo (~> 0.5.7)
nap (~> 1.0)
ruby-macho (~> 1.1)
xcodeproj (>= 1.5.1, < 2.0)
cocoapods-core (1.3.0)
activesupport (>= 4.0.2, < 6)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
cocoapods-deintegrate (1.0.1)
cocoapods-downloader (1.1.3)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.2.0)
nap (>= 0.8, < 2.0)
netrc (= 0.7.8)
cocoapods-try (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander-fastlane (4.4.5)
highline (~> 1.7.2)
declarative (0.0.10)
declarative-option (0.1.0)
domain_name (0.5.20170404)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.2.1)
escape (0.0.4)
excon (0.60.0)
faraday (0.13.1)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
http-cookie (~> 1.0.0)
faraday_middleware (0.12.2)
faraday (>= 0.7.4, < 1.0)
fastimage (2.1.1)
fastlane (2.76.1)
CFPropertyList (>= 2.3, < 3.0.0)
addressable (>= 2.3, < 3.0.0)
babosa (>= 1.0.2, < 2.0.0)
bundler (>= 1.12.0, < 2.0.0)
colored
commander-fastlane (>= 4.4.5, < 5.0.0)
dotenv (>= 2.1.1, < 3.0.0)
excon (>= 0.45.0, < 1.0.0)
faraday (~> 0.9)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 0.9)
fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.0.1, < 2.0.0)
google-api-client (>= 0.13.1, < 0.14.0)
highline (>= 1.7.2, < 2.0.0)
json (< 3.0.0)
mini_magick (~> 4.5.1)
multi_json
multi_xml (~> 0.5)
multipart-post (~> 2.0.0)
plist (>= 3.1.0, < 4.0.0)
public_suffix (~> 2.0.0)
rubyzip (>= 1.1.0, < 2.0.0)
security (= 0.1.3)
slack-notifier (>= 2.0.0, < 3.0.0)
terminal-notifier (>= 1.6.2, < 2.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.5.2, < 2.0.0)
xcpretty (>= 0.2.4, < 1.0.0)
xcpretty-travis-formatter (>= 0.0.3)
fourflusher (2.0.1)
fuzzy_match (2.0.4)
gh_inspector (1.0.3)
google-api-client (0.13.6)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.5)
httpclient (>= 2.8.1, < 3.0)
mime-types (~> 3.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
googleauth (0.6.2)
faraday (~> 0.12)
jwt (>= 1.4, < 3.0)
logging (~> 2.0)
memoist (~> 0.12)
multi_json (~> 1.11)
os (~> 0.9)
signet (~> 0.7)
highline (1.7.10)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
i18n (0.8.6)
json (2.1.0)
jwt (2.1.0)
little-plugger (1.1.4)
logging (2.2.2)
little-plugger (~> 1.1)
multi_json (~> 1.10)
memoist (0.16.0)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mini_magick (4.5.1)
minitest (5.10.3)
molinillo (0.5.7)
multi_json (1.13.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
nanaimo (0.2.3)
nap (1.1.0)
netrc (0.7.8)
os (0.9.6)
plist (3.4.0)
public_suffix (2.0.5)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
uber (< 0.2.0)
retriable (3.1.1)
rouge (2.0.7)
ruby-macho (1.1.0)
rubyzip (1.2.1)
security (0.1.3)
signet (0.8.1)
addressable (~> 2.3)
faraday (~> 0.9)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
slack-notifier (2.3.2)
terminal-notifier (1.8.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
tty-cursor (0.5.0)
tty-screen (0.6.4)
tty-spinner (0.8.0)
tty-cursor (>= 0.5.0)
tzinfo (1.2.3)
thread_safe (~> 0.1)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.4)
unicode-display_width (1.3.0)
word_wrap (1.0.0)
xcodeproj (1.5.4)
CFPropertyList (~> 2.3.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.2.3)
xcpretty (0.2.8)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.0)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
ruby
DEPENDENCIES
cocoapods
fastlane
BUNDLED WITH
1.16.0
...@@ -1013,6 +1013,7 @@ ...@@ -1013,6 +1013,7 @@
inputPaths = ( inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-IFS/Pods-IFS-frameworks.sh", "${SRCROOT}/Pods/Target Support Files/Pods-IFS/Pods-IFS-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
"${BUILT_PRODUCTS_DIR}/AsyncSwift/Async.framework",
"${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework", "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework",
"${BUILT_PRODUCTS_DIR}/DeviceKit/DeviceKit.framework", "${BUILT_PRODUCTS_DIR}/DeviceKit/DeviceKit.framework",
"${BUILT_PRODUCTS_DIR}/FDFullscreenPopGesture/FDFullscreenPopGesture.framework", "${BUILT_PRODUCTS_DIR}/FDFullscreenPopGesture/FDFullscreenPopGesture.framework",
...@@ -1021,7 +1022,6 @@ ...@@ -1021,7 +1022,6 @@
"${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework", "${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework",
"${BUILT_PRODUCTS_DIR}/ImagePicker/ImagePicker.framework", "${BUILT_PRODUCTS_DIR}/ImagePicker/ImagePicker.framework",
"${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework", "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework",
"${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework",
"${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework", "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework",
"${BUILT_PRODUCTS_DIR}/Moya/Moya.framework", "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework",
"${BUILT_PRODUCTS_DIR}/ObservableArray-RxSwift/ObservableArray_RxSwift.framework", "${BUILT_PRODUCTS_DIR}/ObservableArray-RxSwift/ObservableArray_RxSwift.framework",
...@@ -1030,6 +1030,7 @@ ...@@ -1030,6 +1030,7 @@
"${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework", "${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework",
"${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework", "${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework",
"${BUILT_PRODUCTS_DIR}/SKPhotoBrowser/SKPhotoBrowser.framework", "${BUILT_PRODUCTS_DIR}/SKPhotoBrowser/SKPhotoBrowser.framework",
"${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework",
"${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework", "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework", "${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework",
"${BUILT_PRODUCTS_DIR}/YXAlertController/YXAlertController.framework", "${BUILT_PRODUCTS_DIR}/YXAlertController/YXAlertController.framework",
...@@ -1039,6 +1040,7 @@ ...@@ -1039,6 +1040,7 @@
name = "[CP] Embed Pods Frameworks"; name = "[CP] Embed Pods Frameworks";
outputPaths = ( outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", "${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}/DZNEmptyDataSet.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DeviceKit.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DeviceKit.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FDFullscreenPopGesture.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FDFullscreenPopGesture.framework",
...@@ -1047,7 +1049,6 @@ ...@@ -1047,7 +1049,6 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImagePicker.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImagePicker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObservableArray_RxSwift.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObservableArray_RxSwift.framework",
...@@ -1056,6 +1057,7 @@ ...@@ -1056,6 +1057,7 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCocoa.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCocoa.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SKPhotoBrowser.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SKPhotoBrowser.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVProgressHUD.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyJSON.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YXAlertController.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/YXAlertController.framework",
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0920"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29EA0B941FEA2F9C005A6170"
BuildableName = "IFS.app"
BlueprintName = "IFS"
ReferencedContainer = "container:IFS.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29EA0B941FEA2F9C005A6170"
BuildableName = "IFS.app"
BlueprintName = "IFS"
ReferencedContainer = "container:IFS.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29EA0B941FEA2F9C005A6170"
BuildableName = "IFS.app"
BlueprintName = "IFS"
ReferencedContainer = "container:IFS.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "29EA0B941FEA2F9C005A6170"
BuildableName = "IFS.app"
BlueprintName = "IFS"
ReferencedContainer = "container:IFS.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
...@@ -15,6 +15,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { ...@@ -15,6 +15,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
AppManager.shareInstance.openLoginVc(); AppManager.shareInstance.openLoginVc();
return true return true
} }
......
...@@ -32,6 +32,9 @@ class BaseTableViewPullController: BaseViewController { ...@@ -32,6 +32,9 @@ class BaseTableViewPullController: BaseViewController {
tableView.dataSource = self tableView.dataSource = self
tableView.tableFooterView = UIView() tableView.tableFooterView = UIView()
tableView.register(UINib(nibName: EmptyTableViewCell.name(), bundle: nil), forCellReuseIdentifier: EmptyTableViewCell.name()) tableView.register(UINib(nibName: EmptyTableViewCell.name(), bundle: nil), forCellReuseIdentifier: EmptyTableViewCell.name())
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
}
} }
// MARK: - 加载网络数据 需要重载 // MARK: - 加载网络数据 需要重载
......
...@@ -11,13 +11,5 @@ import Foundation ...@@ -11,13 +11,5 @@ import Foundation
//本地存储用户信息 //本地存储用户信息
public let accountPath: String = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! + "/userAccount.plist" public let accountPath: String = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! + "/userAccount.plist"
/// 添加图片 /// 友盟统计Key
public let add_Photo: String = "add_photo" public let UMKey: String = "5a60727ff43e48288900008c"
/// 子订单完成界面,维修前、维修后
public let after: String = "after"
public let befor: String = "befor"
public let sure: String = "确认"
public let cancel: String = "取消"
public let hint: String = "提示"
...@@ -27,6 +27,7 @@ public let kROWS: Int = 15 ...@@ -27,6 +27,7 @@ public let kROWS: Int = 15
public let kONE: Int = 1 public let kONE: Int = 1
public let kZERO: Int = 0 public let kZERO: Int = 0
public let kPageSize: Int = 15 public let kPageSize: Int = 15
public let kMissTime: TimeInterval = 2
public let kSectionZero: CGFloat = 0.01 public let kSectionZero: CGFloat = 0.01
public let kSectionTen: CGFloat = 10 public let kSectionTen: CGFloat = 10
public let kEmptyHeight: CGFloat = 108 public let kEmptyHeight: CGFloat = 108
...@@ -48,7 +49,14 @@ public typealias SuspendViewAlphaBlock = (CGFloat) ->Void ...@@ -48,7 +49,14 @@ public typealias SuspendViewAlphaBlock = (CGFloat) ->Void
public typealias SuspendViewStateBlock = (BillDetailExecute,IndexPath,String) ->Void public typealias SuspendViewStateBlock = (BillDetailExecute,IndexPath,String) ->Void
/// 图片加载占位图 /// 图片加载占位图
public let loadingImage: UIImage = UIImage(named: "loading")! public let loadingImage: UIImage = UIImage(named: "loading")!
/// 添加图片
public let add_Photo: String = "add_photo"
/// 子订单完成界面,维修前、维修后
public let after: String = "after"
public let befor: String = "befor"
public let sure: String = "确认"
public let cancel: String = "取消"
public let hint: String = "提示"
......
...@@ -10,12 +10,12 @@ import Foundation ...@@ -10,12 +10,12 @@ import Foundation
/// BaseUrl /// BaseUrl
public let BaseUrl: String = "http://192.168.1.176:9030/ifs-server/rest" //public let BaseUrl: String = "http://192.168.1.176:9030/ifs-server/rest"
public let BaseAttachmentUrl: String = "http://192.168.1.176:9030" //public let BaseAttachmentUrl: String = "http://192.168.1.176:9030"
//测试环境 //测试环境
//public let BaseUrl: String = "http://222.180.250.18:7080/ifs-server/rest" public let BaseUrl: String = "http://222.180.250.18:7080/ifs-server/rest"
//public let BaseAttachmentUrl: String = "http://222.180.250.18:7080" public let BaseAttachmentUrl: String = "http://222.180.250.18:7080"
//外网开发环境 //外网开发环境
//public let BaseUrl: String = "http://dev.gomoretech.com/ifs-server/rest" //public let BaseUrl: String = "http://dev.gomoretech.com/ifs-server/rest"
......
...@@ -7,22 +7,24 @@ ...@@ -7,22 +7,24 @@
// //
import Moya import Moya
import SwiftyJSON import SwiftyJSON
import SVProgressHUD
struct Network { struct Network {
// 请求头 // 请求头
static let publicParamEndpointClosure = { (target: Service) -> Endpoint<Service> in static let publicParamEndpointPlugin = { (target: Service) -> Endpoint<Service> in
let url = target.baseURL.absoluteString + target.path let url = target.baseURL.absoluteString + target.path
let endpoint = Endpoint<Service>(url: url, sampleResponseClosure: { .networkResponse(200, target.sampleData) }, method: target.method, task: target.task, httpHeaderFields: target.headers) let endpoint = Endpoint<Service>(url: url, sampleResponseClosure: { .networkResponse(200, target.sampleData) }, method: target.method, task: target.task, httpHeaderFields: target.headers)
var enterprise = ""
if let userModel = AppManager.shareInstance.userModel { if let userModel = AppManager.shareInstance.userModel {
return endpoint.adding(newHTTPHeaderFields: ["enterprise" : userModel.enterpriseUuid,"Content-Type" : "application/json;charset=utf-8"]) enterprise = userModel.enterpriseUuid;
} }
return endpoint.adding(newHTTPHeaderFields: ["Content-Type" : "application/json;charset=utf-8"]) return endpoint.adding(newHTTPHeaderFields: ["enterprise" : enterprise,"Content-Type" : "application/json;charset=utf-8"])
} }
// 设置超时时间 // 设置超时时间
static let myRequestClosure = {(endpoint: Endpoint<Service>, closure: MoyaProvider<Service>.RequestResultClosure) -> Void in static let requestClosurePlugin = {(endpoint: Endpoint<Service>, closure: MoyaProvider<Service>.RequestResultClosure) -> Void in
do { do {
var urlRequest = try endpoint.urlRequest() var urlRequest = try endpoint.urlRequest()
urlRequest.timeoutInterval = 30 urlRequest.timeoutInterval = 30
...@@ -33,24 +35,76 @@ struct Network { ...@@ -33,24 +35,76 @@ struct Network {
} }
// 监听请求状态 // 监听请求状态
static let myNetworkActivityPlugin = NetworkActivityPlugin { (type,target) in static let networkActivityPlugin = NetworkActivityPlugin { (type,target) in
switch type { switch type {
case .began: case .began:
ShowLoadingView(kWindow) ShowLoadingView()
UIApplication.shared.isNetworkActivityIndicatorVisible = true UIApplication.shared.isNetworkActivityIndicatorVisible = true
case .ended: case .ended:
HideLoadingView(kWindow) HideLoadingView()
UIApplication.shared.isNetworkActivityIndicatorVisible = false UIApplication.shared.isNetworkActivityIndicatorVisible = false
} }
} }
// 日志
static let logPlugin = NetworkLoggerPlugin(verbose: true, cURL: true, output: { (_ separator: String,_ terminator: String,_ items: Any...) in
for item in items{
print("---\((item as! String).replacingOccurrences(of: "\\", with: ""))")
}
}, requestDataFormatter: nil, responseDataFormatter: nil)
// 公告请求对象 // 公告请求对象
static let provider = MoyaProvider<Service>(endpointClosure: publicParamEndpointClosure,requestClosure: myRequestClosure,plugins: [myNetworkActivityPlugin]) static let provider = MoyaProvider<Service>(endpointClosure: publicParamEndpointPlugin,requestClosure: requestClosurePlugin,plugins: [networkActivityPlugin,logPlugin])
// MARK: -取消所有请求 // MARK: -取消所有请求
static func cancelAllRequest() { static func cancelAllRequest() {
provider.manager.session.invalidateAndCancel() provider.manager.session.invalidateAndCancel()
} }
/// 文件上传
///
/// - Parameters:
/// - target: 请求方法
/// - progress: 上传进度
/// - success: 成功回调
/// - failure: 失败回调
static func upload(target: Service,progress: @escaping(Double) -> Void ,success: @escaping (JSON) -> Void, failure: @escaping (MoyaError) -> Void) {
provider.request(target, progress: { (pro) in
progress(pro.progress)
}) { (result) in
switch result {
/// 请求成功后先通过json解析数据,如果解析失败使用jsonString重试一次
case let .success(response):
do {
guard response.statusCode == 200 else {
failure(MoyaError.statusCode(response))
return
}
let json = try response.mapJSON()
success(JSON(json))
} catch {
switch (error) {
case MoyaError.jsonMapping(response):
do {
let jsonString = try response.mapString()
success(JSON(jsonString))
}catch {
failure(error as! MoyaError)
}
default:
failure(error as! MoyaError)
break
}
}
break
case let .failure(error):
failure(error)
break
}
}
}
/// 公共请求方法 /// 公共请求方法
/// ///
...@@ -63,20 +117,8 @@ struct Network { ...@@ -63,20 +117,8 @@ struct Network {
switch result { switch result {
/// 请求成功后先通过json解析数据,如果解析失败使用jsonString重试一次 /// 请求成功后先通过json解析数据,如果解析失败使用jsonString重试一次
case let .success(response): case let .success(response):
//打印参数、返回
print("url = " + (response.request?.url?.absoluteString)!)
do {
if let data = response.request!.httpBody {
let body = try JSON(data: data)
print(body)
}
let result = try JSON(data: response.data)
print(result)
}catch {}
do { do {
guard response.statusCode == 200 else { guard response.statusCode == 200 else {
print(response)
failure(MoyaError.statusCode(response)) failure(MoyaError.statusCode(response))
return return
} }
...@@ -99,7 +141,6 @@ struct Network { ...@@ -99,7 +141,6 @@ struct Network {
break break
case let .failure(error): case let .failure(error):
failure(error) failure(error)
print(error.localizedDescription)
break break
} }
} }
......
...@@ -11,7 +11,8 @@ import ImagePicker ...@@ -11,7 +11,8 @@ import ImagePicker
import SKPhotoBrowser import SKPhotoBrowser
import RxSwift import RxSwift
import RxCocoa import RxCocoa
import SVProgressHUD
import Async
class RepairOrderAddTableViewController: BaseTableViewController { class RepairOrderAddTableViewController: BaseTableViewController {
...@@ -79,7 +80,7 @@ class RepairOrderAddTableViewController: BaseTableViewController { ...@@ -79,7 +80,7 @@ class RepairOrderAddTableViewController: BaseTableViewController {
navigationItem.rightBarButtonItem = createButtonItem("提交", nil, self, #selector(RepairOrderAddTableViewController.submitButtonClickAction)) navigationItem.rightBarButtonItem = createButtonItem("提交", nil, self, #selector(RepairOrderAddTableViewController.submitButtonClickAction))
} }
// MARK: - 提交工单 // MARK: - 提交工单--上传附件
@objc fileprivate func submitButtonClickAction() { @objc fileprivate func submitButtonClickAction() {
var fileUrlArray = Array<String>() var fileUrlArray = Array<String>()
for i in 0..<attachmentVc.attachmentViewModel.photoAttachments.count - 1 { for i in 0..<attachmentVc.attachmentViewModel.photoAttachments.count - 1 {
...@@ -89,28 +90,55 @@ class RepairOrderAddTableViewController: BaseTableViewController { ...@@ -89,28 +90,55 @@ class RepairOrderAddTableViewController: BaseTableViewController {
fileUrlArray.append(fileUrl) fileUrlArray.append(fileUrl)
} }
let entityUuid = randomMD5() let entityUuid = randomMD5()
guard fileUrlArray.count != kZERO else {
submitRepairBillAction(entityUuid)
return
}
var oberverArray = Array<Observable<Double>>()
for i in 0..<fileUrlArray.count { for i in 0..<fileUrlArray.count {
let fileUrl = fileUrlArray[i] let fileUrl = fileUrlArray[i]
let model = UploadPhotoAttachmentModel(randomMD5(), fileUrl, ATTACHMENT_TYPE.BILL_ATTACHMENT_TYPE.rawValue,entityUuid) let model = UploadPhotoAttachmentModel(randomMD5(), fileUrl, ATTACHMENT_TYPE.BILL_ATTACHMENT_TYPE.rawValue,entityUuid)
Network.request(target: .UploadAttachment(model), success: {[weak self] (json) in let signal = Observable<Double>.create({ (oberver) -> Disposable in
let model = AttachmentReponseModel(fromJson: json) Network.upload(target: .UploadAttachment(model), progress: { (progress) in
if model.success { oberver.onNext(progress)
if i == fileUrlArray.count - kONE { }, success: { (json) in
if self!.repairOrderAddViewModel.repairOrderAvailable(self!.facilitiesSwitch) { oberver.onCompleted()
self?.repairOrderAddViewModel.saveOrderModel.attachmentId = entityUuid }, failure: { (error) in
self?.repairOrderAddViewModel.submitRepairOrder().subscribe(onNext: {[weak self] (result) in oberver.onError(error)
ShowMessage("提交成功") })
NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: UPDATE_BILL_LIST))) return Disposables.create()
self?.popVC()
}).disposed(by: self!.disposeBag)
}
}
}
}, failure: { (error) in
ShowMessage(error.localizedDescription)
HideLoadingView(kWindow)
return
}) })
oberverArray.append(signal)
}
Observable.zip(oberverArray).subscribe {[weak self] (event) in
switch event {
case .next(let result):
var average: Double = 0
for progress in result {
average += progress
}
let perogress = average / Double(fileUrlArray.count)
ShowProgressView(Float(perogress))
break
case .completed:
self?.submitRepairBillAction(entityUuid)
break
case .error(let error):
SVProgressHUD.showError(withStatus: error.localizedDescription)
break
}
}.disposed(by: disposeBag)
}
// MARK: - 提交工单
fileprivate func submitRepairBillAction(_ entityUuid: String) {
if repairOrderAddViewModel.repairOrderAvailable(facilitiesSwitch) {
repairOrderAddViewModel.saveOrderModel.attachmentId = entityUuid
repairOrderAddViewModel.submitRepairOrder().subscribe(onNext: {[weak self] (result) in
NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: UPDATE_BILL_LIST)))
self?.popVC()
ShowMessage("提交成功")
}).disposed(by: disposeBag)
} }
} }
...@@ -190,10 +218,6 @@ class RepairOrderAddTableViewController: BaseTableViewController { ...@@ -190,10 +218,6 @@ class RepairOrderAddTableViewController: BaseTableViewController {
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
repairOrderAddViewModel.didSelectRowAtIndePath(indexPath, self) repairOrderAddViewModel.didSelectRowAtIndePath(indexPath, self)
} }
deinit {
print("释放")
}
} }
// MARK: - 更新附件高度 // MARK: - 更新附件高度
......
...@@ -187,7 +187,7 @@ class RepairOrderChildBillDetailViewController: BaseTableViewController { ...@@ -187,7 +187,7 @@ class RepairOrderChildBillDetailViewController: BaseTableViewController {
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == CHILD_BILL_DETAIL_SECTION.DESCRIBE.rawValue { if indexPath.section == CHILD_BILL_DETAIL_SECTION.DESCRIBE.rawValue {
if indexPath.row == kZERO { if indexPath.row == kZERO {
return childBillViewModel.childBillDetailData.noteHeight + 15 return childBillViewModel.childBillDetailData.noteHeight + 30
} }
if indexPath.row == kONE { if indexPath.row == kONE {
return beforAttachmentHeight + 15 return beforAttachmentHeight + 15
......
...@@ -61,6 +61,7 @@ class RepairOrderCompletedViewController: BaseTableViewController { ...@@ -61,6 +61,7 @@ class RepairOrderCompletedViewController: BaseTableViewController {
ShowMessage("完成成功") ShowMessage("完成成功")
self?.stateBlock(SUBMIT_REPAIR_ORDER_STATE.FINISHED.rawValue) self?.stateBlock(SUBMIT_REPAIR_ORDER_STATE.FINISHED.rawValue)
NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: UPDATE_BILL_DETAIL_LIST))) NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: UPDATE_BILL_DETAIL_LIST)))
NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: UPDATE_BILL_LIST)))
self?.popVC() self?.popVC()
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
} }
......
...@@ -43,8 +43,14 @@ class RepairOrderDetailBgController: BaseViewController { ...@@ -43,8 +43,14 @@ class RepairOrderDetailBgController: BaseViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
uiConfigAction()
addChildBillDetailVc() addChildBillDetailVc()
} }
// MARK: - UI
fileprivate func uiConfigAction() {
bottomBgView.addShadow(UIColor.black)
}
// MARK: - 添加工单详情控制器 // MARK: - 添加工单详情控制器
fileprivate func addChildBillDetailVc() { fileprivate func addChildBillDetailVc() {
......
...@@ -46,6 +46,10 @@ class RepairOrderDetailViewController: BaseTableViewController { ...@@ -46,6 +46,10 @@ class RepairOrderDetailViewController: BaseTableViewController {
@IBOutlet weak var brokenTimeLab: UILabel! @IBOutlet weak var brokenTimeLab: UILabel!
/// 描述 /// 描述
@IBOutlet weak var descriptionLab: UILabel! @IBOutlet weak var descriptionLab: UILabel!
/// 是否解决
@IBOutlet weak var isSolveLabel: UILabel!
/// 完成情况
@IBOutlet weak var completionLabel: UILabel!
/// 附件宽度 /// 附件宽度
let imageWidth = ((kWidth - 90) - CGFloat((3 + kONE) * 5)) / 3 let imageWidth = ((kWidth - 90) - CGFloat((3 + kONE) * 5)) / 3
/// 工单状态回调 /// 工单状态回调
...@@ -68,7 +72,6 @@ class RepairOrderDetailViewController: BaseTableViewController { ...@@ -68,7 +72,6 @@ class RepairOrderDetailViewController: BaseTableViewController {
}() }()
/// 工单数据 /// 工单数据
open var billModel: RepairOrderRecord! open var billModel: RepairOrderRecord!
/// 图片附件高度 /// 图片附件高度
var attachmentHeight: CGFloat! = 0 var attachmentHeight: CGFloat! = 0
/// 图片附件 /// 图片附件
...@@ -276,11 +279,14 @@ extension RepairOrderDetailViewController { ...@@ -276,11 +279,14 @@ extension RepairOrderDetailViewController {
return 70 return 70
} }
if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 10 { if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 10 {
return orderDetailViewModel.billDetailModel.descriptionFieldHeight + 15 return orderDetailViewModel.billDetailModel.descriptionFieldHeight + 20
} }
if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 11 { if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 11 {
return attachmentHeight + 30 return attachmentHeight + 30
} }
if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.COMPLETED.rawValue && indexPath.row == 1 {
return orderDetailViewModel.billDetailModel.finishNoteHeight + 20
}
return super.tableView(tableView, heightForRowAt: indexPath) return super.tableView(tableView, heightForRowAt: indexPath)
} }
...@@ -289,6 +295,10 @@ extension RepairOrderDetailViewController { ...@@ -289,6 +295,10 @@ extension RepairOrderDetailViewController {
let model = orderDetailViewModel.billDetailModel.executes[indexPath.row] let model = orderDetailViewModel.billDetailModel.executes[indexPath.row]
switch model.state { switch model.state {
case SUBMIT_REPAIR_ORDER_STATE.INIT.rawValue: case SUBMIT_REPAIR_ORDER_STATE.INIT.rawValue:
if orderDetailViewModel.billDetailModel.state == SUBMIT_REPAIR_ORDER_STATE.FINISHED.rawValue {
self.performSegue(withIdentifier: RepairOrderChildBillDetailViewController.name(), sender: indexPath)
return
}
ShowAlertView(hint, "请确认是否领单?", [cancel,sure], .alert, {[weak self] (index) in ShowAlertView(hint, "请确认是否领单?", [cancel,sure], .alert, {[weak self] (index) in
if index == kZERO { return } if index == kZERO { return }
self?.orderDetailViewModel.getChildBillAction(model.uuid).subscribe(onNext: { () in self?.orderDetailViewModel.getChildBillAction(model.uuid).subscribe(onNext: { () in
...@@ -299,6 +309,10 @@ extension RepairOrderDetailViewController { ...@@ -299,6 +309,10 @@ extension RepairOrderDetailViewController {
}) })
break break
case SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue: case SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue:
if orderDetailViewModel.billDetailModel.state == SUBMIT_REPAIR_ORDER_STATE.FINISHED.rawValue {
self.performSegue(withIdentifier: RepairOrderChildBillDetailViewController.name(), sender: indexPath)
return
}
gotoEditingSonOrderVc(indexPath) gotoEditingSonOrderVc(indexPath)
break break
case SUBMIT_REPAIR_ORDER_STATE.DONE.rawValue: case SUBMIT_REPAIR_ORDER_STATE.DONE.rawValue:
......
...@@ -47,9 +47,13 @@ class RepairOrderViewController: BaseTableViewPullController { ...@@ -47,9 +47,13 @@ class RepairOrderViewController: BaseTableViewPullController {
sourceChooseButton.addBorder(1.0, kGaryColor) sourceChooseButton.addBorder(1.0, kGaryColor)
priorityChooseButton.addBorder(1.0, kGaryColor) priorityChooseButton.addBorder(1.0, kGaryColor)
dateChooseButton.horizontalCenterTitleAndImage(5) dateChooseButton.horizontalCenterTitleAndImage(5)
dateChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
stateChooseButton.horizontalCenterTitleAndImage(5) stateChooseButton.horizontalCenterTitleAndImage(5)
stateChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
sourceChooseButton.horizontalCenterTitleAndImage(5) sourceChooseButton.horizontalCenterTitleAndImage(5)
sourceChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
priorityChooseButton.horizontalCenterTitleAndImage(5) priorityChooseButton.horizontalCenterTitleAndImage(5)
priorityChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
} }
// MARK: - 绑定RxSwift事件 // MARK: - 绑定RxSwift事件
......
...@@ -71,8 +71,9 @@ open class BillDetailData : NSObject{ ...@@ -71,8 +71,9 @@ open class BillDetailData : NSObject{
var executes : [BillDetailExecute]! var executes : [BillDetailExecute]!
var feedback : AnyObject! var feedback : AnyObject!
var feedbackNote : AnyObject! var feedbackNote : AnyObject!
var finish : Bool! var finish : Bool! = false
var finishNote : String! var finishNote : String!
var finishNoteHeight : CGFloat! = 10
var finishTime : String! var finishTime : String!
var finishUser : UCN! var finishUser : UCN!
var labourfee : AnyObject! var labourfee : AnyObject!
...@@ -137,6 +138,7 @@ open class BillDetailData : NSObject{ ...@@ -137,6 +138,7 @@ open class BillDetailData : NSObject{
feedbackNote = json["feedbackNote"] as AnyObject feedbackNote = json["feedbackNote"] as AnyObject
finish = json["finish"].boolValue finish = json["finish"].boolValue
finishNote = json["finishNote"].stringValue finishNote = json["finishNote"].stringValue
finishNoteHeight = finishNote.calculateStringSize(CGSize(width: kWidth - 105, height: CGFloat.greatestFiniteMagnitude), font: UIFont.systemFont(ofSize: 13)).height
finishTime = json["finishTime"].stringValue finishTime = json["finishTime"].stringValue
let finishUserJson = json["finishUser"] let finishUserJson = json["finishUser"]
if !finishUserJson.isEmpty{ if !finishUserJson.isEmpty{
......
...@@ -146,8 +146,13 @@ extension RepairOrderAddViewModel { ...@@ -146,8 +146,13 @@ extension RepairOrderAddViewModel {
} }
let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController
for model in result { for model in result {
let filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kZERO)") let filterModel: PublicFilterModel?
publicFilterVc.publicViewModel.filterArray.add(filterModel) if model.name == controller.originatorLabel.text {
filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kONE)")
}else {
filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kZERO)")
}
publicFilterVc.publicViewModel.filterArray.add(filterModel!)
} }
controller.pushVC(publicFilterVc) controller.pushVC(publicFilterVc)
publicFilterVc.setNavigationTitle("筛选报事人",.SINGLE, { (choices, index) in publicFilterVc.setNavigationTitle("筛选报事人",.SINGLE, { (choices, index) in
...@@ -184,8 +189,13 @@ extension RepairOrderAddViewModel { ...@@ -184,8 +189,13 @@ extension RepairOrderAddViewModel {
} }
let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController
for model in result { for model in result {
let filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kZERO)") let filterModel: PublicFilterModel?
publicFilterVc.publicViewModel.filterArray.add(filterModel) if model.name == controller.specifiedLocationLabel.text {
filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kONE)")
}else {
filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kZERO)")
}
publicFilterVc.publicViewModel.filterArray.add(filterModel!)
} }
controller.pushVC(publicFilterVc) controller.pushVC(publicFilterVc)
publicFilterVc.setNavigationTitle("筛选位置",.SINGLE, { (choices, index) in publicFilterVc.setNavigationTitle("筛选位置",.SINGLE, { (choices, index) in
...@@ -206,8 +216,13 @@ extension RepairOrderAddViewModel { ...@@ -206,8 +216,13 @@ extension RepairOrderAddViewModel {
} }
let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController
for model in result { for model in result {
let filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kZERO)") let filterModel: PublicFilterModel?
publicFilterVc.publicViewModel.filterArray.add(filterModel) if model.name == controller.deviceTitleLabel.text {
filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kONE)")
}else {
filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kZERO)")
}
publicFilterVc.publicViewModel.filterArray.add(filterModel!)
} }
publicFilterVc.setNavigationTitle("筛选设施",.SINGLE, { (choices, index) in publicFilterVc.setNavigationTitle("筛选设施",.SINGLE, { (choices, index) in
let deviceModel = result[index!] let deviceModel = result[index!]
......
...@@ -164,6 +164,8 @@ extension RepairOrderDetailViewModel { ...@@ -164,6 +164,8 @@ extension RepairOrderDetailViewModel {
} }
controller.descriptionLab.text = billDetailModel.descriptionField controller.descriptionLab.text = billDetailModel.descriptionField
controller.billNumberLab.text = billDetailModel.workNo controller.billNumberLab.text = billDetailModel.workNo
controller.isSolveLabel.text = billDetailModel.finish ? "是" : "否"
controller.completionLabel.text = billDetailModel.finishNote
} }
// MARK: - 工单详情状态处理 // MARK: - 工单详情状态处理
......
...@@ -216,7 +216,9 @@ extension ReparirChildBillViewModel { ...@@ -216,7 +216,9 @@ extension ReparirChildBillViewModel {
controller.failureCauseLabel.text = disposeEmpty(childBillDetailData.reason) controller.failureCauseLabel.text = disposeEmpty(childBillDetailData.reason)
controller.processModeLabel.text = disposeEmpty(childBillDetailData.processMode) controller.processModeLabel.text = disposeEmpty(childBillDetailData.processMode)
controller.materialCostLabel.text = disposeEmpty(childBillDetailData.materielfee) controller.materialCostLabel.text = disposeEmpty(childBillDetailData.materielfee)
controller.operatorNameLabel.text = disposeEmpty(childBillDetailData.owner.name) if childBillDetailData.owner != nil {
controller.operatorNameLabel.text = disposeEmpty(childBillDetailData.owner.name)
}
controller.materialCostLabel.text = disposeEmpty(childBillDetailData.materielfee) controller.materialCostLabel.text = disposeEmpty(childBillDetailData.materielfee)
controller.costLaborLabel.text = disposeEmpty(childBillDetailData.labourfee) controller.costLaborLabel.text = disposeEmpty(childBillDetailData.labourfee)
controller.describeLabel.text = disposeEmpty(childBillDetailData.note) controller.describeLabel.text = disposeEmpty(childBillDetailData.note)
......
...@@ -68,6 +68,11 @@ class HomeTableViewController: BaseTableViewPullController { ...@@ -68,6 +68,11 @@ class HomeTableViewController: BaseTableViewPullController {
childBillVc.billModel = BillDetailExecute(fromJson: JSON(model.toDictionary())) childBillVc.billModel = BillDetailExecute(fromJson: JSON(model.toDictionary()))
pushVC(childBillVc) pushVC(childBillVc)
break break
case SUBMIT_REPAIR_ORDER_STATE.DONE.rawValue:
let childBillVc = RepairOrderChildBillDetailViewController.instantiateViewController(.Function) as! RepairOrderChildBillDetailViewController
childBillVc.billModel = BillDetailExecute(fromJson: JSON(model.toDictionary()))
pushVC(childBillVc)
break
default: default:
break break
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
...@@ -8,14 +8,15 @@ ...@@ -8,14 +8,15 @@
import Foundation import Foundation
import UIKit import UIKit
import SVProgressHUD
class AppStyle: NSObject { class AppStyle: NSObject {
// MARK: - App风格 // MARK: - App风格
open class func setupAppStyle() { open class func setupAppStyle() {
navigationStyle() navigationStyle()
thirdFrameworkStyle()
} }
// MARK: - 设置导航栏风格 // MARK: - 设置导航栏风格
...@@ -27,4 +28,33 @@ class AppStyle: NSObject { ...@@ -27,4 +28,33 @@ class AppStyle: NSObject {
bar.barStyle = .black bar.barStyle = .black
bar.titleTextAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white,NSAttributedStringKey.font:UIFont.boldSystemFont(ofSize:20)] bar.titleTextAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white,NSAttributedStringKey.font:UIFont.boldSystemFont(ofSize:20)]
} }
// MARK: - 第三方框架
fileprivate class func thirdFrameworkStyle() {
SVProgressHUD.setBackgroundColor(kGaryColor)
SVProgressHUD.setMinimumDismissTimeInterval(kMissTime)
SVProgressHUD.popActivity()
UMAnalyticsConfig.sharedInstance().appKey = UMKey
MobClick.start(withConfigure: UMAnalyticsConfig.sharedInstance())
MobClick.setLogEnabled(true)
}
} }
...@@ -38,7 +38,7 @@ class LoginViewModel: BaseViewModel { ...@@ -38,7 +38,7 @@ class LoginViewModel: BaseViewModel {
// MARK: - 归档用户信息 // MARK: - 归档用户信息
open class func archiveAccountInformation() { open class func archiveAccountInformation() {
let bool = NSKeyedArchiver.archiveRootObject(AppManager.shareInstance.userModel, toFile: accountPath) let bool = NSKeyedArchiver.archiveRootObject(kUser(), toFile: accountPath)
if bool { if bool {
print("归档成功") print("归档成功")
}else { }else {
......
...@@ -12,3 +12,5 @@ ...@@ -12,3 +12,5 @@
#import "UIDevice+Helper.h" #import "UIDevice+Helper.h"
#import "NSString+Helper.h" #import "NSString+Helper.h"
#import <CommonCrypto/CommonCrypto.h> #import <CommonCrypto/CommonCrypto.h>
#import <UMMobClick/MobClick.h>
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.0.0</string> <string>1.0.1</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.0.0</string> <string>1.0.1</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>NSAppTransportSecurity</key> <key>NSAppTransportSecurity</key>
......
...@@ -8,50 +8,28 @@ ...@@ -8,50 +8,28 @@
import Foundation import Foundation
import UIKit import UIKit
import MBProgressHUD import SVProgressHUD
// MARK: - 创建公共MBProgressHUD
func BaseMBProgressView(_ view: UIView) -> MBProgressHUD {
let hud = MBProgressHUD.showAdded(to: view, animated: true)
hud.removeFromSuperViewOnHide = true
hud.margin = 10
return hud
}
// MARK: - 纯文本显示框,默认主Window // MARK: - 纯文本显示框
func ShowMessage(_ message: String) { func ShowMessage(_ message: String) {
let hud = BaseMBProgressView(kWindow) SVProgressHUD.showInfo(withStatus: message)
hud.mode = MBProgressHUDMode.text
hud.label.text = "提示"
hud.detailsLabel.text = message
hud.hide(animated: true, afterDelay: 3)
} }
// MARK: - 菊花加载框,默认颜色和主题色相同 // MARK: - 菊花加载框,默认颜色和主题色相同
func ShowLoadingView(_ view: UIView) { func ShowLoadingView() {
if JudgeLoadingViewIsHide(view) { SVProgressHUD.setBackgroundLayerColor(kMainColor)
return SVProgressHUD.show()
}
let hud = BaseMBProgressView(view)
hud.mode = MBProgressHUDMode.indeterminate
hud.bezelView.style = .solidColor
hud.bezelView.backgroundColor = UIColor.clear
hud.contentColor = kNavColor
} }
// MARK: - 判断view中是否存在MBProgressHUD // MARK: - 上传文件中
func JudgeLoadingViewIsHide(_ view: UIView) ->Bool { func ShowProgressView(_ progress: Float) {
for object in view.subviews { SVProgressHUD.showProgress(progress, status: "附件上传中")
if object.isKind(of: MBProgressHUD.classForCoder()) {
return true
}
}
return false
} }
// MARK: - 销毁对应View上所有MBProgressHUD // MARK: - 销毁
func HideLoadingView(_ view: UIView) { func HideLoadingView() {
MBProgressHUD.hide(for: view, animated: true) SVProgressHUD.dismiss(withDelay: kMissTime)
} }
......
...@@ -9,7 +9,6 @@ target ‘IFS’ do ...@@ -9,7 +9,6 @@ target ‘IFS’ do
pod 'Kingfisher' pod 'Kingfisher'
pod 'DeviceKit' pod 'DeviceKit'
pod 'Hero' pod 'Hero'
pod 'MBProgressHUD'
pod 'RxSwift' pod 'RxSwift'
pod 'RxCocoa' pod 'RxCocoa'
pod 'HandyJSON', '~> 4.0.0-beta.1' pod 'HandyJSON', '~> 4.0.0-beta.1'
...@@ -23,4 +22,7 @@ target ‘IFS’ do ...@@ -23,4 +22,7 @@ target ‘IFS’ do
pod 'YXAlertController' pod 'YXAlertController'
pod 'ObservableArray-RxSwift', '~> 0.2.0' pod 'ObservableArray-RxSwift', '~> 0.2.0'
pod 'PPBadgeViewSwift' pod 'PPBadgeViewSwift'
pod 'SVProgressHUD', '~> 2.2.2'
pod 'AsyncSwift'
pod 'UMengAnalytics'
end end
PODS: PODS:
- Alamofire (4.6.0) - Alamofire (4.6.0)
- AsyncSwift (2.0.4)
- DeviceKit (1.4.0) - DeviceKit (1.4.0)
- DZNEmptyDataSet (1.8.1) - DZNEmptyDataSet (1.8.1)
- FDFullscreenPopGesture (1.1) - FDFullscreenPopGesture (1.1)
...@@ -8,7 +9,6 @@ PODS: ...@@ -8,7 +9,6 @@ PODS:
- ImagePicker (3.0.0) - ImagePicker (3.0.0)
- IQKeyboardManager (5.0.7) - IQKeyboardManager (5.0.7)
- Kingfisher (4.6.1) - Kingfisher (4.6.1)
- MBProgressHUD (1.1.0)
- MJRefresh (3.1.15.1) - MJRefresh (3.1.15.1)
- Moya (10.0.1): - Moya (10.0.1):
- Moya/Core (= 10.0.1) - Moya/Core (= 10.0.1)
...@@ -24,12 +24,15 @@ PODS: ...@@ -24,12 +24,15 @@ PODS:
- RxSwift (4.1.1) - RxSwift (4.1.1)
- SKPhotoBrowser (5.0.3) - SKPhotoBrowser (5.0.3)
- SnapKit (4.0.0) - SnapKit (4.0.0)
- SVProgressHUD (2.2.2)
- SwiftyJSON (4.0.0) - SwiftyJSON (4.0.0)
- UMengAnalytics (4.2.4)
- YXAlertController (1.0.8) - YXAlertController (1.0.8)
- YXKit (0.0.8) - YXKit (0.0.8)
- YXPickerView (2.0.0) - YXPickerView (2.0.0)
DEPENDENCIES: DEPENDENCIES:
- AsyncSwift
- DeviceKit - DeviceKit
- DZNEmptyDataSet - DZNEmptyDataSet
- FDFullscreenPopGesture (~> 1.1) - FDFullscreenPopGesture (~> 1.1)
...@@ -38,7 +41,6 @@ DEPENDENCIES: ...@@ -38,7 +41,6 @@ DEPENDENCIES:
- ImagePicker - ImagePicker
- IQKeyboardManager (~> 5.0.6) - IQKeyboardManager (~> 5.0.6)
- Kingfisher - Kingfisher
- MBProgressHUD
- MJRefresh (~> 3.1.15.1) - MJRefresh (~> 3.1.15.1)
- Moya - Moya
- ObservableArray-RxSwift (~> 0.2.0) - ObservableArray-RxSwift (~> 0.2.0)
...@@ -47,13 +49,16 @@ DEPENDENCIES: ...@@ -47,13 +49,16 @@ DEPENDENCIES:
- RxSwift - RxSwift
- SKPhotoBrowser (~> 5.0.0) - SKPhotoBrowser (~> 5.0.0)
- SnapKit - SnapKit
- SVProgressHUD (~> 2.2.2)
- SwiftyJSON - SwiftyJSON
- UMengAnalytics
- YXAlertController - YXAlertController
- YXKit - YXKit
- YXPickerView - YXPickerView
SPEC CHECKSUMS: SPEC CHECKSUMS:
Alamofire: f41a599bd63041760b26d393ec1069d9d7b917f4 Alamofire: f41a599bd63041760b26d393ec1069d9d7b917f4
AsyncSwift: 65775a7b32e740609b24969ece3de58723b9dc3e
DeviceKit: fa74d97499660e88081718b16688e19217595dba DeviceKit: fa74d97499660e88081718b16688e19217595dba
DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7
FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0 FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
...@@ -62,7 +67,6 @@ SPEC CHECKSUMS: ...@@ -62,7 +67,6 @@ SPEC CHECKSUMS:
ImagePicker: 973953c25960fe04729a7082a56194321c6762d2 ImagePicker: 973953c25960fe04729a7082a56194321c6762d2
IQKeyboardManager: 0bfa4607d39924116b5c0c8b55b5d789288b5cba IQKeyboardManager: 0bfa4607d39924116b5c0c8b55b5d789288b5cba
Kingfisher: 1f9157d9c02b380cbd0b7cc890161195164eb634 Kingfisher: 1f9157d9c02b380cbd0b7cc890161195164eb634
MBProgressHUD: e7baa36a220447d8aeb12769bf0585582f3866d9
MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6 MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6
Moya: 9e621707ff754eeb51ff3ec51a3d54e517c0733a Moya: 9e621707ff754eeb51ff3ec51a3d54e517c0733a
ObservableArray-RxSwift: 905a088f51b1653f7eb55e6887f8a13916618f50 ObservableArray-RxSwift: 905a088f51b1653f7eb55e6887f8a13916618f50
...@@ -72,11 +76,13 @@ SPEC CHECKSUMS: ...@@ -72,11 +76,13 @@ SPEC CHECKSUMS:
RxSwift: c6e3b1c7b325c7d121cd4327e9d98b7ed746b570 RxSwift: c6e3b1c7b325c7d121cd4327e9d98b7ed746b570
SKPhotoBrowser: 6de77f7004442e79059f19d86e2e7e6a03b43a13 SKPhotoBrowser: 6de77f7004442e79059f19d86e2e7e6a03b43a13
SnapKit: a42d492c16e80209130a3379f73596c3454b7694 SnapKit: a42d492c16e80209130a3379f73596c3454b7694
SVProgressHUD: 59b2d3dabacbd051576d21d32293ca7228dc18b0
SwiftyJSON: 070dabdcb1beb81b247c65ffa3a79dbbfb3b48aa SwiftyJSON: 070dabdcb1beb81b247c65ffa3a79dbbfb3b48aa
UMengAnalytics: ef8d45f94c0e5771dc364cf6a5731d9d3b101da2
YXAlertController: 37a54642cb8e8b43b79004fe9148bb8ff2fab814 YXAlertController: 37a54642cb8e8b43b79004fe9148bb8ff2fab814
YXKit: 73d6ffbcf7530f1159e030460207286e9153b080 YXKit: 73d6ffbcf7530f1159e030460207286e9153b080
YXPickerView: 527ca74d8fbe73b4e9bd0bbff6e143133dced907 YXPickerView: 527ca74d8fbe73b4e9bd0bbff6e143133dced907
PODFILE CHECKSUM: 04404f79c4f31a2c2f3feddc2c782615ce22ffce PODFILE CHECKSUM: 5196f50090d24cd5621742bc3c9182ea72ab06d6
COCOAPODS: 1.3.0 COCOAPODS: 1.3.0
app_identifier "com.gomore.IFS" # The bundle identifier of your app
apple_id "1105938518@qq.com" # Your Apple email address
team_id "W54V2VB863" # Developer Portal Team ID
# you can even provide different app identifiers, Apple IDs and team names per lane:
# More information: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Appfile.md
default_platform :ios
platform :ios do
before_all do
cocoapods
end
desc "打包企业版"
puts " \033[35mAre you ready?\033[0m\n"
lane :inHouse do |options|
increment_version_number(version_number: options[:version]) #根据入参version获取app版本号
gym(
workspace: "IFS.xcworkspace",
scheme: options[:target],
clean: true,
output_directory: File.expand_path('..', __FILE__) + "/iPA",
export_xcargs: "-allowProvisioningUpdates",
export_method: "enterprise",
output_name: options[:target] + Time.new.strftime("%Y-%m-%d %H:%M:%S") + ".ipa",
export_options: {
provisioningProfiles: {
"com.gomore.patrol" => "IFSDistribution"
}
}
)
if options[:pgy] == "dis"
puts " \033[31m打包正式版完成,正在上传正式环境蒲公英\033[0m\n"
pgyer(api_key: "cae8404d79c5e29cb641f84c8b9a6d1e", user_key: "9d4d2d2af95f22d4b6ccbd67b2444e46")
end
if options[:pgy] == "dev"
puts " \033[31m打包测试版完成,正在上传测试环境蒲公英\033[0m\n"
pgyer(api_key: "1c1acff227f9dea3eafd531ba369680d", user_key: "02794c3c6f78cbfda696f807d4cb1da0")
end
puts " \033[32mGood boy Have a nice day\033[0m\n"
end
error do |lane, exception|
# slack(
# message: exception.message,
# success: false
# )
end
end
git_url "https://github.com/fastlane/certificates"
type "development" # The default type, can be: appstore, adhoc, enterprise or development
# app_identifier ["tools.fastlane.app", "tools.fastlane.app2"]
# username "user@fastlane.tools" # Your Apple Developer Portal username
# For all available options run `fastlane match --help`
# Remove the # in the beginning of the line to enable the other options
# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!
gem 'fastlane-plugin-fir'
fastlane documentation
================
# Installation
Make sure you have the latest version of the Xcode command line tools installed:
```
xcode-select --install
```
## Choose your installation method:
| Method | OS support | Description |
|----------------------------|-----------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
| [Homebrew](http://brew.sh) | macOS | `brew cask install fastlane` |
| Installer Script | macOS | [Download the zip file](https://download.fastlane.tools). Then double click on the `install` script (or run it in a terminal window). |
| RubyGems | macOS or Linux with Ruby 2.0.0 or above | `sudo gem install fastlane -NV` |
# Available Actions
## iOS
### ios inHouse
```
fastlane ios inHouse
```
打包企业版
----
This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run.
More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite name="fastlane.lanes">
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.007035">
</testcase>
<testcase classname="fastlane.lanes" name="1: cocoapods" time="3.322345">
</testcase>
<testcase classname="fastlane.lanes" name="2: increment_version_number" time="1.55114">
</testcase>
<testcase classname="fastlane.lanes" name="3: gym" time="337.786907">
<failure message="/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/actions/actions_helper.rb:48:in `execute_action'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/runner.rb:231:in `block in execute_action'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/runner.rb:227:in `chdir'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/runner.rb:227:in `execute_action'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/runner.rb:148:in `trigger_action_by_name'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/fast_file.rb:148:in `method_missing'&#10;Fastfile:16:in `block (2 levels) in parsing_binding'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/lane.rb:33:in `call'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/runner.rb:49:in `block in execute'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/runner.rb:45:in `chdir'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/runner.rb:45:in `execute'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/lane_manager.rb:56:in `cruise_lane'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0@global/gems/commander-fastlane-4.4.5/lib/commander/command.rb:178:in `call'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0@global/gems/commander-fastlane-4.4.5/lib/commander/command.rb:153:in `run'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0@global/gems/commander-fastlane-4.4.5/lib/commander/runner.rb:476:in `run_active_command'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:75:in `run!'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0@global/gems/commander-fastlane-4.4.5/lib/commander/delegates.rb:15:in `run!'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/commands_generator.rb:337:in `run'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/commands_generator.rb:42:in `start'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/fastlane/lib/fastlane/cli_tools_distributor.rb:94:in `take_off'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/gems/fastlane-2.76.1/bin/fastlane:20:in `&lt;top (required)&gt;'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/bin/fastlane:23:in `load'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/bin/fastlane:23:in `&lt;main&gt;'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'&#10;/Users/caoyunxiao/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `&lt;main&gt;'&#10;&#10;Error packaging up the application" />
</testcase>
</testsuite>
</testsuites>
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