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 @@
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",
......@@ -1021,7 +1022,6 @@
"${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework",
"${BUILT_PRODUCTS_DIR}/ImagePicker/ImagePicker.framework",
"${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework",
"${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework",
"${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework",
"${BUILT_PRODUCTS_DIR}/Moya/Moya.framework",
"${BUILT_PRODUCTS_DIR}/ObservableArray-RxSwift/ObservableArray_RxSwift.framework",
......@@ -1030,6 +1030,7 @@
"${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework",
"${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework",
"${BUILT_PRODUCTS_DIR}/SKPhotoBrowser/SKPhotoBrowser.framework",
"${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework",
"${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyJSON/SwiftyJSON.framework",
"${BUILT_PRODUCTS_DIR}/YXAlertController/YXAlertController.framework",
......@@ -1039,6 +1040,7 @@
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",
......@@ -1047,7 +1049,6 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImagePicker.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}/Moya.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObservableArray_RxSwift.framework",
......@@ -1056,6 +1057,7 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCocoa.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.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}/SwiftyJSON.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 {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
AppManager.shareInstance.openLoginVc();
return true
}
......
......@@ -32,6 +32,9 @@ class BaseTableViewPullController: BaseViewController {
tableView.dataSource = self
tableView.tableFooterView = UIView()
tableView.register(UINib(nibName: EmptyTableViewCell.name(), bundle: nil), forCellReuseIdentifier: EmptyTableViewCell.name())
if #available(iOS 11.0, *) {
tableView.contentInsetAdjustmentBehavior = .never
}
}
// MARK: - 加载网络数据 需要重载
......
......@@ -11,13 +11,5 @@ 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"
public let sure: String = "确认"
public let cancel: String = "取消"
public let hint: String = "提示"
/// 友盟统计Key
public let UMKey: String = "5a60727ff43e48288900008c"
......@@ -27,6 +27,7 @@ public let kROWS: Int = 15
public let kONE: Int = 1
public let kZERO: Int = 0
public let kPageSize: Int = 15
public let kMissTime: TimeInterval = 2
public let kSectionZero: CGFloat = 0.01
public let kSectionTen: CGFloat = 10
public let kEmptyHeight: CGFloat = 108
......@@ -48,7 +49,14 @@ public typealias SuspendViewAlphaBlock = (CGFloat) ->Void
public typealias SuspendViewStateBlock = (BillDetailExecute,IndexPath,String) ->Void
/// 图片加载占位图
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
/// BaseUrl
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 BaseUrl: String = "http://192.168.1.176:9030/ifs-server/rest"
//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 BaseAttachmentUrl: String = "http://222.180.250.18:7080"
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 BaseUrl: String = "http://dev.gomoretech.com/ifs-server/rest"
......
......@@ -7,22 +7,24 @@
//
import Moya
import SwiftyJSON
import SVProgressHUD
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 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 {
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 {
var urlRequest = try endpoint.urlRequest()
urlRequest.timeoutInterval = 30
......@@ -33,24 +35,76 @@ struct Network {
}
// 监听请求状态
static let myNetworkActivityPlugin = NetworkActivityPlugin { (type,target) in
static let networkActivityPlugin = NetworkActivityPlugin { (type,target) in
switch type {
case .began:
ShowLoadingView(kWindow)
ShowLoadingView()
UIApplication.shared.isNetworkActivityIndicatorVisible = true
case .ended:
HideLoadingView(kWindow)
HideLoadingView()
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: -取消所有请求
static func cancelAllRequest() {
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 {
switch result {
/// 请求成功后先通过json解析数据,如果解析失败使用jsonString重试一次
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 {
guard response.statusCode == 200 else {
print(response)
failure(MoyaError.statusCode(response))
return
}
......@@ -99,7 +141,6 @@ struct Network {
break
case let .failure(error):
failure(error)
print(error.localizedDescription)
break
}
}
......
......@@ -11,7 +11,8 @@ import ImagePicker
import SKPhotoBrowser
import RxSwift
import RxCocoa
import SVProgressHUD
import Async
class RepairOrderAddTableViewController: BaseTableViewController {
......@@ -79,7 +80,7 @@ class RepairOrderAddTableViewController: BaseTableViewController {
navigationItem.rightBarButtonItem = createButtonItem("提交", nil, self, #selector(RepairOrderAddTableViewController.submitButtonClickAction))
}
// MARK: - 提交工单
// MARK: - 提交工单--上传附件
@objc fileprivate func submitButtonClickAction() {
var fileUrlArray = Array<String>()
for i in 0..<attachmentVc.attachmentViewModel.photoAttachments.count - 1 {
......@@ -89,28 +90,55 @@ class RepairOrderAddTableViewController: BaseTableViewController {
fileUrlArray.append(fileUrl)
}
let entityUuid = randomMD5()
guard fileUrlArray.count != kZERO else {
submitRepairBillAction(entityUuid)
return
}
var oberverArray = Array<Observable<Double>>()
for i in 0..<fileUrlArray.count {
let fileUrl = fileUrlArray[i]
let model = UploadPhotoAttachmentModel(randomMD5(), fileUrl, ATTACHMENT_TYPE.BILL_ATTACHMENT_TYPE.rawValue,entityUuid)
Network.request(target: .UploadAttachment(model), success: {[weak self] (json) in
let model = AttachmentReponseModel(fromJson: json)
if model.success {
if i == fileUrlArray.count - kONE {
if self!.repairOrderAddViewModel.repairOrderAvailable(self!.facilitiesSwitch) {
self?.repairOrderAddViewModel.saveOrderModel.attachmentId = entityUuid
self?.repairOrderAddViewModel.submitRepairOrder().subscribe(onNext: {[weak self] (result) in
ShowMessage("提交成功")
NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: UPDATE_BILL_LIST)))
self?.popVC()
}).disposed(by: self!.disposeBag)
}
}
}
}, failure: { (error) in
ShowMessage(error.localizedDescription)
HideLoadingView(kWindow)
return
let signal = Observable<Double>.create({ (oberver) -> Disposable in
Network.upload(target: .UploadAttachment(model), progress: { (progress) in
oberver.onNext(progress)
}, success: { (json) in
oberver.onCompleted()
}, failure: { (error) in
oberver.onError(error)
})
return Disposables.create()
})
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 {
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
repairOrderAddViewModel.didSelectRowAtIndePath(indexPath, self)
}
deinit {
print("释放")
}
}
// MARK: - 更新附件高度
......
......@@ -187,7 +187,7 @@ class RepairOrderChildBillDetailViewController: BaseTableViewController {
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == CHILD_BILL_DETAIL_SECTION.DESCRIBE.rawValue {
if indexPath.row == kZERO {
return childBillViewModel.childBillDetailData.noteHeight + 15
return childBillViewModel.childBillDetailData.noteHeight + 30
}
if indexPath.row == kONE {
return beforAttachmentHeight + 15
......
......@@ -61,6 +61,7 @@ class RepairOrderCompletedViewController: BaseTableViewController {
ShowMessage("完成成功")
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_LIST)))
self?.popVC()
}).disposed(by: disposeBag)
}
......
......@@ -43,8 +43,14 @@ class RepairOrderDetailBgController: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
uiConfigAction()
addChildBillDetailVc()
}
// MARK: - UI
fileprivate func uiConfigAction() {
bottomBgView.addShadow(UIColor.black)
}
// MARK: - 添加工单详情控制器
fileprivate func addChildBillDetailVc() {
......
......@@ -46,6 +46,10 @@ class RepairOrderDetailViewController: BaseTableViewController {
@IBOutlet weak var brokenTimeLab: 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
/// 工单状态回调
......@@ -68,7 +72,6 @@ class RepairOrderDetailViewController: BaseTableViewController {
}()
/// 工单数据
open var billModel: RepairOrderRecord!
/// 图片附件高度
var attachmentHeight: CGFloat! = 0
/// 图片附件
......@@ -276,11 +279,14 @@ extension RepairOrderDetailViewController {
return 70
}
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 {
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)
}
......@@ -289,6 +295,10 @@ extension RepairOrderDetailViewController {
let model = orderDetailViewModel.billDetailModel.executes[indexPath.row]
switch model.state {
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
if index == kZERO { return }
self?.orderDetailViewModel.getChildBillAction(model.uuid).subscribe(onNext: { () in
......@@ -299,6 +309,10 @@ extension RepairOrderDetailViewController {
})
break
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)
break
case SUBMIT_REPAIR_ORDER_STATE.DONE.rawValue:
......
......@@ -47,9 +47,13 @@ class RepairOrderViewController: BaseTableViewPullController {
sourceChooseButton.addBorder(1.0, kGaryColor)
priorityChooseButton.addBorder(1.0, kGaryColor)
dateChooseButton.horizontalCenterTitleAndImage(5)
dateChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
stateChooseButton.horizontalCenterTitleAndImage(5)
stateChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
sourceChooseButton.horizontalCenterTitleAndImage(5)
sourceChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
priorityChooseButton.horizontalCenterTitleAndImage(5)
priorityChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
}
// MARK: - 绑定RxSwift事件
......
......@@ -71,8 +71,9 @@ open class BillDetailData : NSObject{
var executes : [BillDetailExecute]!
var feedback : AnyObject!
var feedbackNote : AnyObject!
var finish : Bool!
var finish : Bool! = false
var finishNote : String!
var finishNoteHeight : CGFloat! = 10
var finishTime : String!
var finishUser : UCN!
var labourfee : AnyObject!
......@@ -137,6 +138,7 @@ open class BillDetailData : NSObject{
feedbackNote = json["feedbackNote"] as AnyObject
finish = json["finish"].boolValue
finishNote = json["finishNote"].stringValue
finishNoteHeight = finishNote.calculateStringSize(CGSize(width: kWidth - 105, height: CGFloat.greatestFiniteMagnitude), font: UIFont.systemFont(ofSize: 13)).height
finishTime = json["finishTime"].stringValue
let finishUserJson = json["finishUser"]
if !finishUserJson.isEmpty{
......
......@@ -146,8 +146,13 @@ extension RepairOrderAddViewModel {
}
let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController
for model in result {
let filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kZERO)")
publicFilterVc.publicViewModel.filterArray.add(filterModel)
let filterModel: PublicFilterModel?
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)
publicFilterVc.setNavigationTitle("筛选报事人",.SINGLE, { (choices, index) in
......@@ -184,8 +189,13 @@ extension RepairOrderAddViewModel {
}
let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController
for model in result {
let filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kZERO)")
publicFilterVc.publicViewModel.filterArray.add(filterModel)
let filterModel: PublicFilterModel?
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)
publicFilterVc.setNavigationTitle("筛选位置",.SINGLE, { (choices, index) in
......@@ -206,8 +216,13 @@ extension RepairOrderAddViewModel {
}
let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController
for model in result {
let filterModel = PublicFilterModel(uuid: model.uuid, title: model.name, isSelected: "\(kZERO)")
publicFilterVc.publicViewModel.filterArray.add(filterModel)
let filterModel: PublicFilterModel?
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
let deviceModel = result[index!]
......
......@@ -164,6 +164,8 @@ extension RepairOrderDetailViewModel {
}
controller.descriptionLab.text = billDetailModel.descriptionField
controller.billNumberLab.text = billDetailModel.workNo
controller.isSolveLabel.text = billDetailModel.finish ? "是" : "否"
controller.completionLabel.text = billDetailModel.finishNote
}
// MARK: - 工单详情状态处理
......
......@@ -216,7 +216,9 @@ extension ReparirChildBillViewModel {
controller.failureCauseLabel.text = disposeEmpty(childBillDetailData.reason)
controller.processModeLabel.text = disposeEmpty(childBillDetailData.processMode)
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.costLaborLabel.text = disposeEmpty(childBillDetailData.labourfee)
controller.describeLabel.text = disposeEmpty(childBillDetailData.note)
......
......@@ -68,6 +68,11 @@ class HomeTableViewController: BaseTableViewPullController {
childBillVc.billModel = BillDetailExecute(fromJson: JSON(model.toDictionary()))
pushVC(childBillVc)
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:
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 @@
import Foundation
import UIKit
import SVProgressHUD
class AppStyle: NSObject {
// MARK: - App风格
open class func setupAppStyle() {
navigationStyle()
thirdFrameworkStyle()
}
// MARK: - 设置导航栏风格
......@@ -27,4 +28,33 @@ class AppStyle: NSObject {
bar.barStyle = .black
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 {
// MARK: - 归档用户信息
open class func archiveAccountInformation() {
let bool = NSKeyedArchiver.archiveRootObject(AppManager.shareInstance.userModel, toFile: accountPath)
let bool = NSKeyedArchiver.archiveRootObject(kUser(), toFile: accountPath)
if bool {
print("归档成功")
}else {
......
......@@ -12,3 +12,5 @@
#import "UIDevice+Helper.h"
#import "NSString+Helper.h"
#import <CommonCrypto/CommonCrypto.h>
#import <UMMobClick/MobClick.h>
......@@ -17,9 +17,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<string>1.0.1</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<string>1.0.1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
......
......@@ -8,50 +8,28 @@
import Foundation
import UIKit
import MBProgressHUD
// MARK: - 创建公共MBProgressHUD
func BaseMBProgressView(_ view: UIView) -> MBProgressHUD {
let hud = MBProgressHUD.showAdded(to: view, animated: true)
hud.removeFromSuperViewOnHide = true
hud.margin = 10
return hud
}
import SVProgressHUD
// MARK: - 纯文本显示框,默认主Window
// MARK: - 纯文本显示框
func ShowMessage(_ message: String) {
let hud = BaseMBProgressView(kWindow)
hud.mode = MBProgressHUDMode.text
hud.label.text = "提示"
hud.detailsLabel.text = message
hud.hide(animated: true, afterDelay: 3)
SVProgressHUD.showInfo(withStatus: message)
}
// MARK: - 菊花加载框,默认颜色和主题色相同
func ShowLoadingView(_ view: UIView) {
if JudgeLoadingViewIsHide(view) {
return
}
let hud = BaseMBProgressView(view)
hud.mode = MBProgressHUDMode.indeterminate
hud.bezelView.style = .solidColor
hud.bezelView.backgroundColor = UIColor.clear
hud.contentColor = kNavColor
func ShowLoadingView() {
SVProgressHUD.setBackgroundLayerColor(kMainColor)
SVProgressHUD.show()
}
// MARK: - 判断view中是否存在MBProgressHUD
func JudgeLoadingViewIsHide(_ view: UIView) ->Bool {
for object in view.subviews {
if object.isKind(of: MBProgressHUD.classForCoder()) {
return true
}
}
return false
// MARK: - 上传文件中
func ShowProgressView(_ progress: Float) {
SVProgressHUD.showProgress(progress, status: "附件上传中")
}
// MARK: - 销毁对应View上所有MBProgressHUD
func HideLoadingView(_ view: UIView) {
MBProgressHUD.hide(for: view, animated: true)
// MARK: - 销毁
func HideLoadingView() {
SVProgressHUD.dismiss(withDelay: kMissTime)
}
......
......@@ -9,7 +9,6 @@ target ‘IFS’ do
pod 'Kingfisher'
pod 'DeviceKit'
pod 'Hero'
pod 'MBProgressHUD'
pod 'RxSwift'
pod 'RxCocoa'
pod 'HandyJSON', '~> 4.0.0-beta.1'
......@@ -23,4 +22,7 @@ target ‘IFS’ do
pod 'YXAlertController'
pod 'ObservableArray-RxSwift', '~> 0.2.0'
pod 'PPBadgeViewSwift'
pod 'SVProgressHUD', '~> 2.2.2'
pod 'AsyncSwift'
pod 'UMengAnalytics'
end
PODS:
- Alamofire (4.6.0)
- AsyncSwift (2.0.4)
- DeviceKit (1.4.0)
- DZNEmptyDataSet (1.8.1)
- FDFullscreenPopGesture (1.1)
......@@ -8,7 +9,6 @@ PODS:
- ImagePicker (3.0.0)
- IQKeyboardManager (5.0.7)
- Kingfisher (4.6.1)
- MBProgressHUD (1.1.0)
- MJRefresh (3.1.15.1)
- Moya (10.0.1):
- Moya/Core (= 10.0.1)
......@@ -24,12 +24,15 @@ PODS:
- RxSwift (4.1.1)
- SKPhotoBrowser (5.0.3)
- SnapKit (4.0.0)
- SVProgressHUD (2.2.2)
- SwiftyJSON (4.0.0)
- UMengAnalytics (4.2.4)
- YXAlertController (1.0.8)
- YXKit (0.0.8)
- YXPickerView (2.0.0)
DEPENDENCIES:
- AsyncSwift
- DeviceKit
- DZNEmptyDataSet
- FDFullscreenPopGesture (~> 1.1)
......@@ -38,7 +41,6 @@ DEPENDENCIES:
- ImagePicker
- IQKeyboardManager (~> 5.0.6)
- Kingfisher
- MBProgressHUD
- MJRefresh (~> 3.1.15.1)
- Moya
- ObservableArray-RxSwift (~> 0.2.0)
......@@ -47,13 +49,16 @@ DEPENDENCIES:
- RxSwift
- SKPhotoBrowser (~> 5.0.0)
- SnapKit
- SVProgressHUD (~> 2.2.2)
- SwiftyJSON
- UMengAnalytics
- YXAlertController
- YXKit
- YXPickerView
SPEC CHECKSUMS:
Alamofire: f41a599bd63041760b26d393ec1069d9d7b917f4
AsyncSwift: 65775a7b32e740609b24969ece3de58723b9dc3e
DeviceKit: fa74d97499660e88081718b16688e19217595dba
DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7
FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
......@@ -62,7 +67,6 @@ SPEC CHECKSUMS:
ImagePicker: 973953c25960fe04729a7082a56194321c6762d2
IQKeyboardManager: 0bfa4607d39924116b5c0c8b55b5d789288b5cba
Kingfisher: 1f9157d9c02b380cbd0b7cc890161195164eb634
MBProgressHUD: e7baa36a220447d8aeb12769bf0585582f3866d9
MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6
Moya: 9e621707ff754eeb51ff3ec51a3d54e517c0733a
ObservableArray-RxSwift: 905a088f51b1653f7eb55e6887f8a13916618f50
......@@ -72,11 +76,13 @@ SPEC CHECKSUMS:
RxSwift: c6e3b1c7b325c7d121cd4327e9d98b7ed746b570
SKPhotoBrowser: 6de77f7004442e79059f19d86e2e7e6a03b43a13
SnapKit: a42d492c16e80209130a3379f73596c3454b7694
SVProgressHUD: 59b2d3dabacbd051576d21d32293ca7228dc18b0
SwiftyJSON: 070dabdcb1beb81b247c65ffa3a79dbbfb3b48aa
UMengAnalytics: ef8d45f94c0e5771dc364cf6a5731d9d3b101da2
YXAlertController: 37a54642cb8e8b43b79004fe9148bb8ff2fab814
YXKit: 73d6ffbcf7530f1159e030460207286e9153b080
YXPickerView: 527ca74d8fbe73b4e9bd0bbff6e143133dced907
PODFILE CHECKSUM: 04404f79c4f31a2c2f3feddc2c782615ce22ffce
PODFILE CHECKSUM: 5196f50090d24cd5621742bc3c9182ea72ab06d6
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