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

添加功能权限,发布1.0.2正式版

parent 714c2739
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
29278C412004986800656DF1 /* TodoResultModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29278C402004986800656DF1 /* TodoResultModel.swift */; }; 29278C412004986800656DF1 /* TodoResultModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29278C402004986800656DF1 /* TodoResultModel.swift */; };
294B8642201974930035BF32 /* PermissionsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294B8641201974930035BF32 /* PermissionsManager.swift */; };
294B8646201AECAD0035BF32 /* ProjectQueryModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294B8645201AECAC0035BF32 /* ProjectQueryModel.swift */; };
294B8648201AF2DB0035BF32 /* ProjectResultModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294B8647201AF2DB0035BF32 /* ProjectResultModel.swift */; };
295064B7200C9E50008DC8DD /* AttachmentReponseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295064B6200C9E4F008DC8DD /* AttachmentReponseModel.swift */; }; 295064B7200C9E50008DC8DD /* AttachmentReponseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295064B6200C9E4F008DC8DD /* AttachmentReponseModel.swift */; };
295064B9200CAA6B008DC8DD /* AttachmentResultModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295064B8200CAA6B008DC8DD /* AttachmentResultModel.swift */; }; 295064B9200CAA6B008DC8DD /* AttachmentResultModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295064B8200CAA6B008DC8DD /* AttachmentResultModel.swift */; };
295064BB200CC7F5008DC8DD /* ChildBillSaveOrUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295064BA200CC7F5008DC8DD /* ChildBillSaveOrUpdateModel.swift */; }; 295064BB200CC7F5008DC8DD /* ChildBillSaveOrUpdateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295064BA200CC7F5008DC8DD /* ChildBillSaveOrUpdateModel.swift */; };
...@@ -132,6 +135,9 @@ ...@@ -132,6 +135,9 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
29278C402004986800656DF1 /* TodoResultModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodoResultModel.swift; sourceTree = "<group>"; }; 29278C402004986800656DF1 /* TodoResultModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodoResultModel.swift; sourceTree = "<group>"; };
294B8641201974930035BF32 /* PermissionsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PermissionsManager.swift; sourceTree = "<group>"; };
294B8645201AECAC0035BF32 /* ProjectQueryModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProjectQueryModel.swift; sourceTree = "<group>"; };
294B8647201AF2DB0035BF32 /* ProjectResultModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProjectResultModel.swift; sourceTree = "<group>"; };
295064B6200C9E4F008DC8DD /* AttachmentReponseModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentReponseModel.swift; sourceTree = "<group>"; }; 295064B6200C9E4F008DC8DD /* AttachmentReponseModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentReponseModel.swift; sourceTree = "<group>"; };
295064B8200CAA6B008DC8DD /* AttachmentResultModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentResultModel.swift; sourceTree = "<group>"; }; 295064B8200CAA6B008DC8DD /* AttachmentResultModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AttachmentResultModel.swift; sourceTree = "<group>"; };
295064BA200CC7F5008DC8DD /* ChildBillSaveOrUpdateModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChildBillSaveOrUpdateModel.swift; sourceTree = "<group>"; }; 295064BA200CC7F5008DC8DD /* ChildBillSaveOrUpdateModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChildBillSaveOrUpdateModel.swift; sourceTree = "<group>"; };
...@@ -274,6 +280,14 @@ ...@@ -274,6 +280,14 @@
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
294B86402019746B0035BF32 /* Permissions */ = {
isa = PBXGroup;
children = (
294B8641201974930035BF32 /* PermissionsManager.swift */,
);
path = Permissions;
sourceTree = "<group>";
};
296AAC951FFDF462008BE04C /* SearchVc */ = { 296AAC951FFDF462008BE04C /* SearchVc */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -304,6 +318,8 @@ ...@@ -304,6 +318,8 @@
29F6B8EB2007488C00EE4630 /* DeviceModel.swift */, 29F6B8EB2007488C00EE4630 /* DeviceModel.swift */,
29F6B8F9200884F900EE4630 /* PublicModel.swift */, 29F6B8F9200884F900EE4630 /* PublicModel.swift */,
29F6B8ED2007498A00EE4630 /* DeviceQueryModel.swift */, 29F6B8ED2007498A00EE4630 /* DeviceQueryModel.swift */,
294B8645201AECAC0035BF32 /* ProjectQueryModel.swift */,
294B8647201AF2DB0035BF32 /* ProjectResultModel.swift */,
); );
path = Model; path = Model;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -871,6 +887,7 @@ ...@@ -871,6 +887,7 @@
29EA0BF01FEA3156005A6170 /* Public */ = { 29EA0BF01FEA3156005A6170 /* Public */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
294B86402019746B0035BF32 /* Permissions */,
29D5308B1FFF6F1300851F00 /* PhotoAttachment */, 29D5308B1FFF6F1300851F00 /* PhotoAttachment */,
296AAC951FFDF462008BE04C /* SearchVc */, 296AAC951FFDF462008BE04C /* SearchVc */,
29EA0BF11FEA3156005A6170 /* EmptyCell */, 29EA0BF11FEA3156005A6170 /* EmptyCell */,
...@@ -1016,7 +1033,6 @@ ...@@ -1016,7 +1033,6 @@
"${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework", "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.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}/PPBadgeViewSwift/PPBadgeViewSwift.framework", "${BUILT_PRODUCTS_DIR}/PPBadgeViewSwift/PPBadgeViewSwift.framework",
"${BUILT_PRODUCTS_DIR}/Result/Result.framework", "${BUILT_PRODUCTS_DIR}/Result/Result.framework",
"${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework", "${BUILT_PRODUCTS_DIR}/RxCocoa/RxCocoa.framework",
...@@ -1042,7 +1058,6 @@ ...@@ -1042,7 +1058,6 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.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}/PPBadgeViewSwift.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PPBadgeViewSwift.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Result.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Result.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCocoa.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxCocoa.framework",
...@@ -1115,6 +1130,7 @@ ...@@ -1115,6 +1130,7 @@
29DA418620046E86002762A2 /* AboutUsTableViewController.swift in Sources */, 29DA418620046E86002762A2 /* AboutUsTableViewController.swift in Sources */,
29EA0BFF1FEA3156005A6170 /* TabBarViewController.swift in Sources */, 29EA0BFF1FEA3156005A6170 /* TabBarViewController.swift in Sources */,
29DA4189200472A1002762A2 /* UIDevice+Helper.m in Sources */, 29DA4189200472A1002762A2 /* UIDevice+Helper.m in Sources */,
294B8648201AF2DB0035BF32 /* ProjectResultModel.swift in Sources */,
29EA0C1C1FEA3156005A6170 /* AppDelegate.swift in Sources */, 29EA0C1C1FEA3156005A6170 /* AppDelegate.swift in Sources */,
29D530811FFF626500851F00 /* PhotoAttachmentModel.swift in Sources */, 29D530811FFF626500851F00 /* PhotoAttachmentModel.swift in Sources */,
29F6B8FC2008887500EE4630 /* RepairOrderDetailViewModel.swift in Sources */, 29F6B8FC2008887500EE4630 /* RepairOrderDetailViewModel.swift in Sources */,
...@@ -1142,6 +1158,7 @@ ...@@ -1142,6 +1158,7 @@
29DA4169200334BC002762A2 /* RepairOrderSubOrderTableViewCell.swift in Sources */, 29DA4169200334BC002762A2 /* RepairOrderSubOrderTableViewCell.swift in Sources */,
29F6B8F62007747900EE4630 /* RepairOrderResultModel.swift in Sources */, 29F6B8F62007747900EE4630 /* RepairOrderResultModel.swift in Sources */,
29F6B90A200C54CD00EE4630 /* RepairOrderCompletedViewController.swift in Sources */, 29F6B90A200C54CD00EE4630 /* RepairOrderCompletedViewController.swift in Sources */,
294B8646201AECAD0035BF32 /* ProjectQueryModel.swift in Sources */,
29516A89200DEC4400C3A17E /* MaintainBeforAttachmentTableViewCell.swift in Sources */, 29516A89200DEC4400C3A17E /* MaintainBeforAttachmentTableViewCell.swift in Sources */,
29DA418B200475AC002762A2 /* AccountViewModel.swift in Sources */, 29DA418B200475AC002762A2 /* AccountViewModel.swift in Sources */,
296DAD82200711CA00615A2D /* InitiatorModel.swift in Sources */, 296DAD82200711CA00615A2D /* InitiatorModel.swift in Sources */,
...@@ -1150,6 +1167,7 @@ ...@@ -1150,6 +1167,7 @@
29D530911FFF6FA800851F00 /* PhotoAttachmentViewController.swift in Sources */, 29D530911FFF6FA800851F00 /* PhotoAttachmentViewController.swift in Sources */,
29DA41662003163D002762A2 /* RepairOrderDetailSectionView.swift in Sources */, 29DA41662003163D002762A2 /* RepairOrderDetailSectionView.swift in Sources */,
295064B7200C9E50008DC8DD /* AttachmentReponseModel.swift in Sources */, 295064B7200C9E50008DC8DD /* AttachmentReponseModel.swift in Sources */,
294B8642201974930035BF32 /* PermissionsManager.swift in Sources */,
29D5307B1FFF626500851F00 /* FunctionModel.swift in Sources */, 29D5307B1FFF626500851F00 /* FunctionModel.swift in Sources */,
29EA0C141FEA3156005A6170 /* UIViewController+Extension.swift in Sources */, 29EA0C141FEA3156005A6170 /* UIViewController+Extension.swift in Sources */,
29EA0C0E1FEA3156005A6170 /* Date+Extensions.swift in Sources */, 29EA0C0E1FEA3156005A6170 /* Date+Extensions.swift in Sources */,
......
...@@ -13,3 +13,39 @@ public let accountPath: String = NSSearchPathForDirectoriesInDomains(.documentDi ...@@ -13,3 +13,39 @@ public let accountPath: String = NSSearchPathForDirectoriesInDomains(.documentDi
/// 友盟统计Key /// 友盟统计Key
public let UMKey: String = "5a60727ff43e48288900008c" public let UMKey: String = "5a60727ff43e48288900008c"
/// 主工单新建权
public let BillCreatePermissions: String = "500105"
/// 主工单完成权
public let BillFinishPermissions: String = "500103"
/// 主工单转交权
public let BillTransferPermissions: String = "500104"
/// 子工单保存权
public let ChildBillSavePermissions: String = "500204"
/// 子工单完成权
public let ChildBillFinishPermissions: String = "500203"
/// 子工单领取权
public let ChildBillDrewPermissions: String = "500205"
/// 工单菜单查看权
public let BillViewPermissions: String = "500101"
/// 待办菜单查看权
public let TodoViewPermissions: String = "500301"
/// 子工单查看权
public let ChildBillViewPermissions: String = "500201"
...@@ -93,8 +93,8 @@ public enum CHILD_BILL_EDIT_SECTION: Int { ...@@ -93,8 +93,8 @@ public enum CHILD_BILL_EDIT_SECTION: Int {
case BASIC = 0 case BASIC = 0
case COST case COST
case DESCRIBE case DESCRIBE
case AFTERATTACHMENT
case BEFORATTACHMENT case BEFORATTACHMENT
case AFTERATTACHMENT
} }
...@@ -239,8 +239,6 @@ public enum SUSPEND_BUTTON_TYPE: String { ...@@ -239,8 +239,6 @@ public enum SUSPEND_BUTTON_TYPE: String {
......
...@@ -11,5 +11,6 @@ import Foundation ...@@ -11,5 +11,6 @@ import Foundation
/// 更新工单列表数据 /// 更新工单列表数据
public let UPDATE_BILL_LIST: String = "UPDATE_BILL_LIST" public let UPDATE_BILL_LIST: String = "UPDATE_BILL_LIST"
/// 更新工单列表数据 /// 更新工单列表数据
public let UPDATE_BILL_DETAIL_LIST: String = "UPDATE_BILL_DETAIL_LIST" public let UPDATE_BILL_DETAIL_LIST: String = "UPDATE_BILL_DETAIL_LIST"
...@@ -61,9 +61,3 @@ public let hint: String = "提示" ...@@ -61,9 +61,3 @@ public let hint: String = "提示"
...@@ -10,16 +10,16 @@ import Foundation ...@@ -10,16 +10,16 @@ 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"
public let BaseAttachmentUrl: String = "http://dev.gomoretech.com" //public let BaseAttachmentUrl: String = "http://dev.gomoretech.com"
/// 登录 /// 登录
public let loginUrl: String = "/user/login/%@" public let loginUrl: String = "/user/login/%@"
...@@ -37,6 +37,8 @@ public let serviceTypeUrl: String = "/config/getValue/serviceType" ...@@ -37,6 +37,8 @@ public let serviceTypeUrl: String = "/config/getValue/serviceType"
public let prorityUrl: String = "/config/getValue/prorityOption" public let prorityUrl: String = "/config/getValue/prorityOption"
/// 新建工单报事人 /// 新建工单报事人
public let initiatorUrl: String = "/user/query" public let initiatorUrl: String = "/user/query"
/// 项目
public let projectUrl: String = "/store/query"
/// 新建工单位置 /// 新建工单位置
public let positionUrl: String = "/information/position/query" public let positionUrl: String = "/information/position/query"
/// 新建工单设施 /// 新建工单设施
...@@ -62,7 +64,7 @@ public let protectOptionUrl: String = "/config/getValue/protectOption" ...@@ -62,7 +64,7 @@ public let protectOptionUrl: String = "/config/getValue/protectOption"
/// 故障原因 /// 故障原因
public let brokenOptionUrl: String = "/config/getValue/brokenOption" public let brokenOptionUrl: String = "/config/getValue/brokenOption"
/// 处理方式 /// 处理方式
public let processMethodsUrl: String = "/config/getValue/processMethods" public let processMethodsUrl: String = "/config/getValue/processingMethod"
/// 上传图片附件 /// 上传图片附件
public let uploadAttachmentUrl: String = "/attachment/upload_by_file?entity_type=%@&entity_uuid=%@" public let uploadAttachmentUrl: String = "/attachment/upload_by_file?entity_type=%@&entity_uuid=%@"
/// 下载图片附件 /// 下载图片附件
......
...@@ -50,6 +50,8 @@ public enum Service { ...@@ -50,6 +50,8 @@ public enum Service {
case QuerybrokenOption() case QuerybrokenOption()
// MARK: - 处理方式 // MARK: - 处理方式
case QueryprocessMethods() case QueryprocessMethods()
// MARK: - 项目
case QueryProjectOption(ProjectQueryModel)
// MARK: - 上传图片附件 // MARK: - 上传图片附件
// 图片entityUuid 本地文件路径 // 图片entityUuid 本地文件路径
case UploadAttachment(UploadPhotoAttachmentModel) case UploadAttachment(UploadPhotoAttachmentModel)
...@@ -89,6 +91,8 @@ extension Service: TargetType { ...@@ -89,6 +91,8 @@ extension Service: TargetType {
return initiatorUrl return initiatorUrl
case .QueryPosition(): case .QueryPosition():
return positionUrl return positionUrl
case .QueryProjectOption(_):
return projectUrl
case .QueryDevice(_): case .QueryDevice(_):
return deviceUrl return deviceUrl
case .SubmitOrder(_): case .SubmitOrder(_):
...@@ -98,7 +102,8 @@ extension Service: TargetType { ...@@ -98,7 +102,8 @@ extension Service: TargetType {
let path = repairOrderUrl + "?operator.operId=\(kUser().userCode!)&operator.operName=\(kUser().userName!)&time=\(NSDate().httpParameterString()!)" let path = repairOrderUrl + "?operator.operId=\(kUser().userCode!)&operator.operName=\(kUser().userName!)&time=\(NSDate().httpParameterString()!)"
return path.urlEncoded() return path.urlEncoded()
case .GetRepairOrderDetail(let billNumber): case .GetRepairOrderDetail(let billNumber):
return String(format: getBillDetailUrl, billNumber) let path = String(format: getBillDetailUrl, billNumber) + "?operator.operId=\(kUser().userCode!)&operator.operName=\(kUser().userName!)&time=\(NSDate().httpParameterString()!)"
return path.urlEncoded()
case .GetRepairOrderDepartment: case .GetRepairOrderDepartment:
return organizationUrl return organizationUrl
case .TransferOrder(_): case .TransferOrder(_):
...@@ -128,7 +133,8 @@ extension Service: TargetType { ...@@ -128,7 +133,8 @@ extension Service: TargetType {
case .DownloadAttachment(let entity_type, let entity_uuid): case .DownloadAttachment(let entity_type, let entity_uuid):
return String(format: downloadAttachmentUrl, entity_type,entity_uuid) return String(format: downloadAttachmentUrl, entity_type,entity_uuid)
case .GetChildBillDetail(let uuid): case .GetChildBillDetail(let uuid):
return String(format: getChildBillDetailUrl, uuid) let path = String(format: getChildBillDetailUrl, uuid) + "?operator.operId=\(kUser().userCode!)&operator.operName=\(kUser().userName!)&time=\(NSDate().httpParameterString()!)"
return path.urlEncoded()
case .UpdateVersion(): case .UpdateVersion():
return updateUrl return updateUrl
case .ChangePassword(_): case .ChangePassword(_):
...@@ -152,6 +158,7 @@ extension Service: TargetType { ...@@ -152,6 +158,7 @@ extension Service: TargetType {
.SaveChildBill(_), .SaveChildBill(_),
.ChangePassword(_), .ChangePassword(_),
.FinishChildBill(_), .FinishChildBill(_),
.QueryProjectOption(_),
.QueryInitiator(_): .QueryInitiator(_):
return .post return .post
case .QuerySource(), case .QuerySource(),
...@@ -230,6 +237,8 @@ extension Service: TargetType { ...@@ -230,6 +237,8 @@ extension Service: TargetType {
return .requestParameters(parameters: model.toDictionary(), encoding: JSONEncoding.default) return .requestParameters(parameters: model.toDictionary(), encoding: JSONEncoding.default)
case .FinishChildBill(let model): case .FinishChildBill(let model):
return .requestParameters(parameters: model.toDictionary(), encoding: JSONEncoding.default) return .requestParameters(parameters: model.toDictionary(), encoding: JSONEncoding.default)
case .QueryProjectOption(let model):
return .requestParameters(parameters: model.toDictionary(), encoding: JSONEncoding.default)
} }
} }
......
//
// PermissionsManager.swift
// IFS
//
// Created by 曹云霄 on 2018/1/25.
// Copyright © 2018年 上海勾芒信息科技有限公司. All rights reserved.
//
import UIKit
import SwiftyJSON
class PermissionsManager: NSObject {
// MARK: - 子工单查看权
class func childViewPermissions() ->Bool {
let array = AppManager.shareInstance.userModel?.permissions.filter { (string) -> Bool in
return string == ChildBillViewPermissions
}
guard array != nil else {
return false
}
return Bool(exactly: NSNumber(value: array!.count))!
}
// MARK: - 子工单保存权
class func saveChildPermissions() ->Bool {
let array = AppManager.shareInstance.userModel?.permissions.filter { (string) -> Bool in
return string == ChildBillSavePermissions
}
guard array != nil else {
return false
}
return Bool(exactly: NSNumber(value: array!.count))!
}
// MARK: - 子工单完成权
class func finishChildPermissions() ->Bool {
let array = AppManager.shareInstance.userModel?.permissions.filter { (string) -> Bool in
return string == ChildBillFinishPermissions
}
guard array != nil else {
return false
}
return Bool(exactly: NSNumber(value: array!.count))!
}
// MARK: - 子工单领取权
class func drawChildPermissions() ->Bool {
let array = AppManager.shareInstance.userModel?.permissions.filter { (string) -> Bool in
return string == ChildBillDrewPermissions
}
guard array != nil else {
return false
}
return Bool(exactly: NSNumber(value: array!.count))!
}
// MARK: - 主工单转交权
class func transferBillPermissions() ->Bool {
let array = AppManager.shareInstance.userModel?.permissions.filter { (string) -> Bool in
return string == BillTransferPermissions
}
guard array != nil else {
return false
}
return Bool(exactly: NSNumber(value: array!.count))!
}
// MARK: - 主工单完成权
class func finishBillPermissions() ->Bool {
let array = AppManager.shareInstance.userModel?.permissions.filter { (string) -> Bool in
return string == BillFinishPermissions
}
guard array != nil else {
return false
}
return Bool(exactly: NSNumber(value: array!.count))!
}
// MARK: - 主工单新建权
class func createBillPermissions() ->Bool {
let array = AppManager.shareInstance.userModel?.permissions.filter { (string) -> Bool in
return string == BillCreatePermissions
}
guard array != nil else {
return false
}
return Bool(exactly: NSNumber(value: array!.count))!
}
// MARK: - 工单菜单查看权
class func billViewPermissions() ->Bool {
let array = AppManager.shareInstance.userModel?.permissions.filter { (string) -> Bool in
return string == BillViewPermissions
}
guard array != nil else {
return false
}
return Bool(exactly: NSNumber(value: array!.count))!
}
// MARK: - 待办菜单查看权
class func todoViewPermissions() ->Bool {
let array = AppManager.shareInstance.userModel?.permissions.filter { (string) -> Bool in
return string == TodoViewPermissions
}
guard array != nil else {
return false
}
return Bool(exactly: NSNumber(value: array!.count))!
}
}
//
// ProjectQueryModel.swift
//
// Create by 云霄 曹 on 26/1/2018
// Copyright © 2018. All rights reserved.
import Foundation
import SwiftyJSON
open class ProjectQueryModel : NSObject{
var codeEquals : String!
var enabled : Bool!
var nameLike : String!
var userId : String!
/**
* Returns all the available property values in the form of [String:Any] object where the key is the approperiate json key and the value is the value of the corresponding property
*/
func toDictionary() -> [String:Any]
{
var dictionary = [String:Any]()
if codeEquals != nil{
dictionary["codeEquals"] = codeEquals
}
if enabled != nil{
dictionary["enabled"] = enabled
}
if nameLike != nil{
dictionary["nameLike"] = nameLike
}
if userId != nil{
dictionary["userId"] = userId
}
return dictionary
}
}
//
// ProjectResultModel.swift
//
// Create by 云霄 曹 on 26/1/2018
// Copyright © 2018. All rights reserved.
// Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport
import Foundation
import SwiftyJSON
class ProjectResultModel : NSObject{
var data : ProjectResultData!
var message : String!
var success : Bool!
/**
* Instantiate the instance using the passed json values to set the properties values
*/
init(fromJson json: JSON!){
if json.isEmpty{
return
}
let dataJson = json["data"]
if !dataJson.isEmpty{
data = ProjectResultData(fromJson: dataJson)
}
message = json["message"].stringValue
success = json["success"].boolValue
}
/**
* Returns all the available property values in the form of [String:Any] object where the key is the approperiate json key and the value is the value of the corresponding property
*/
func toDictionary() -> [String:Any]
{
var dictionary = [String:Any]()
if data != nil{
dictionary["data"] = data.toDictionary()
}
if message != nil{
dictionary["message"] = message
}
if success != nil{
dictionary["success"] = success
}
return dictionary
}
}
class ProjectResultData : NSObject{
var paging : Paging!
var records : [ProjectResultRecord]!
/**
* Instantiate the instance using the passed json values to set the properties values
*/
init(fromJson json: JSON!){
if json.isEmpty{
return
}
let pagingJson = json["paging"]
if !pagingJson.isEmpty{
paging = Paging(fromJson: pagingJson)
}
records = [ProjectResultRecord]()
let recordsArray = json["records"].arrayValue
for recordsJson in recordsArray{
let value = ProjectResultRecord(fromJson: recordsJson)
records.append(value)
}
}
/**
* Returns all the available property values in the form of [String:Any] object where the key is the approperiate json key and the value is the value of the corresponding property
*/
func toDictionary() -> [String:Any]
{
var dictionary = [String:Any]()
if paging != nil{
dictionary["paging"] = paging.toDictionary()
}
if records != nil{
var dictionaryElements = [[String:Any]]()
for recordsElement in records {
dictionaryElements.append(recordsElement.toDictionary())
}
dictionary["records"] = dictionaryElements
}
return dictionary
}
}
class ProjectResultRecord : NSObject{
var code : String!
var createId : String!
var createOperName : String!
var createTime : String!
var enabled : Bool!
var lastModifyId : String!
var lastModifyOperName : String!
var lastModifyTime : String!
var name : String!
var upper : Upper!
var uuid : String!
var version : Int!
/**
* Instantiate the instance using the passed json values to set the properties values
*/
init(fromJson json: JSON!){
if json.isEmpty{
return
}
code = json["code"].stringValue
createId = json["create_id"].stringValue
createOperName = json["create_operName"].stringValue
createTime = json["create_time"].stringValue
enabled = json["enabled"].boolValue
lastModifyId = json["lastModify_id"].stringValue
lastModifyOperName = json["lastModify_operName"].stringValue
lastModifyTime = json["lastModify_time"].stringValue
name = json["name"].stringValue
let upperJson = json["upper"]
if !upperJson.isEmpty{
upper = Upper(fromJson: upperJson)
}
uuid = json["uuid"].stringValue
version = json["version"].intValue
}
/**
* Returns all the available property values in the form of [String:Any] object where the key is the approperiate json key and the value is the value of the corresponding property
*/
func toDictionary() -> [String:Any]
{
var dictionary = [String:Any]()
if code != nil{
dictionary["code"] = code
}
if createId != nil{
dictionary["create_id"] = createId
}
if createOperName != nil{
dictionary["create_operName"] = createOperName
}
if createTime != nil{
dictionary["create_time"] = createTime
}
if enabled != nil{
dictionary["enabled"] = enabled
}
if lastModifyId != nil{
dictionary["lastModify_id"] = lastModifyId
}
if lastModifyOperName != nil{
dictionary["lastModify_operName"] = lastModifyOperName
}
if lastModifyTime != nil{
dictionary["lastModify_time"] = lastModifyTime
}
if name != nil{
dictionary["name"] = name
}
if upper != nil{
dictionary["upper"] = upper.toDictionary()
}
if uuid != nil{
dictionary["uuid"] = uuid
}
if version != nil{
dictionary["version"] = version
}
return dictionary
}
}
class Upper : NSObject{
var code : String!
var createId : String!
var createOperName : String!
var createTime : String!
var enabled : Bool!
var lastModifyId : String!
var lastModifyOperName : String!
var lastModifyTime : String!
var name : String!
var upper : AnyObject!
var uuid : String!
var version : Int!
/**
* Instantiate the instance using the passed json values to set the properties values
*/
init(fromJson json: JSON!){
if json.isEmpty{
return
}
code = json["code"].stringValue
createId = json["create_id"].stringValue
createOperName = json["create_operName"].stringValue
createTime = json["create_time"].stringValue
enabled = json["enabled"].boolValue
lastModifyId = json["lastModify_id"].stringValue
lastModifyOperName = json["lastModify_operName"].stringValue
lastModifyTime = json["lastModify_time"].stringValue
name = json["name"].stringValue
upper = json["upper"].stringValue as AnyObject
uuid = json["uuid"].stringValue
version = json["version"].intValue
}
/**
* Returns all the available property values in the form of [String:Any] object where the key is the approperiate json key and the value is the value of the corresponding property
*/
func toDictionary() -> [String:Any]
{
var dictionary = [String:Any]()
if code != nil{
dictionary["code"] = code
}
if createId != nil{
dictionary["create_id"] = createId
}
if createOperName != nil{
dictionary["create_operName"] = createOperName
}
if createTime != nil{
dictionary["create_time"] = createTime
}
if enabled != nil{
dictionary["enabled"] = enabled
}
if lastModifyId != nil{
dictionary["lastModify_id"] = lastModifyId
}
if lastModifyOperName != nil{
dictionary["lastModify_operName"] = lastModifyOperName
}
if lastModifyTime != nil{
dictionary["lastModify_time"] = lastModifyTime
}
if name != nil{
dictionary["name"] = name
}
if upper != nil{
dictionary["upper"] = upper
}
if uuid != nil{
dictionary["uuid"] = uuid
}
if version != nil{
dictionary["version"] = version
}
return dictionary
}
}
...@@ -72,6 +72,28 @@ extension FilterViewModel { ...@@ -72,6 +72,28 @@ extension FilterViewModel {
}) })
} }
// MARK: - 查询项目
func queryProjectType() ->Observable<[ProjectResultRecord]> {
let queryModel = ProjectQueryModel()
queryModel.userId = kUser().userUuid
queryModel.nameLike = "重庆IFS项目"
queryModel.codeEquals = "CQIFS"
queryModel.enabled = true
return Observable.create({ (observer) -> Disposable in
Network.request(target: .QueryProjectOption(queryModel), success: { (json) in
let resultModel = ProjectResultModel(fromJson: json)
if resultModel.success {
observer.onNext(resultModel.data.records)
}else {
ShowMessage(resultModel.message)
}
}, failure: { (error) in
ShowMessage(error.localizedDescription)
})
return Disposables.create()
})
}
// MARK: - 查询服务类型 // MARK: - 查询服务类型
func queryServerType() ->Observable<[String]> { func queryServerType() ->Observable<[String]> {
return Observable.create({ (observer) -> Disposable in return Observable.create({ (observer) -> Disposable in
......
...@@ -32,7 +32,7 @@ class AboutUsTableViewController: BaseTableViewController { ...@@ -32,7 +32,7 @@ class AboutUsTableViewController: BaseTableViewController {
appIconBgView.seth(h: kWidth * 9 / 16) appIconBgView.seth(h: kWidth * 9 / 16)
appVersionLab.text = UIDevice.version() appVersionLab.text = UIDevice.version()
appIconImg.image = UIDevice.appIcon() appIconImg.image = UIDevice.appIcon()
appMobileLab.text = "15121161964" appMobileLab.text = "400-400-40000"
} }
} }
......
...@@ -52,9 +52,17 @@ extension FunctionViewController: UICollectionViewDelegate,UICollectionViewDataS ...@@ -52,9 +52,17 @@ extension FunctionViewController: UICollectionViewDelegate,UICollectionViewDataS
let model = functionViewModel.itemArrays[indexPath.item] let model = functionViewModel.itemArrays[indexPath.item]
switch model.item_name { switch model.item_name {
case FunctionType.TODO.rawValue: case FunctionType.TODO.rawValue:
if !PermissionsManager.todoViewPermissions() {
ShowMessage("当前用户对待办事项没有查看权限!")
return
}
self.performSegue(withIdentifier: TodoViewController.name(), sender: nil) self.performSegue(withIdentifier: TodoViewController.name(), sender: nil)
break break
case FunctionType.REPAIRORDER.rawValue: case FunctionType.REPAIRORDER.rawValue:
if !PermissionsManager.billViewPermissions() {
ShowMessage("当前用户对工单没有查看权限!")
return
}
self.performSegue(withIdentifier: RepairOrderViewController.name(), sender: nil) self.performSegue(withIdentifier: RepairOrderViewController.name(), sender: nil)
break break
default: default:
......
...@@ -10,9 +10,11 @@ struct FunctionModel { ...@@ -10,9 +10,11 @@ struct FunctionModel {
var item_name: String var item_name: String
var item_image: String var item_image: String
var permissions: String
init(item_name: String,item_image: String) { init(item_name: String,item_image: String,permissions: String) {
self.item_name = item_name self.item_name = item_name
self.item_image = item_image self.item_image = item_image
self.permissions = permissions
} }
} }
...@@ -17,7 +17,7 @@ class FunctionViewModel: BaseViewModel { ...@@ -17,7 +17,7 @@ class FunctionViewModel: BaseViewModel {
let tempArrays = NSArray(contentsOfFile: plistpath!) let tempArrays = NSArray(contentsOfFile: plistpath!)
for object in tempArrays! { for object in tempArrays! {
let dict = object as! Dictionary<String, String> let dict = object as! Dictionary<String, String>
let model = FunctionModel(item_name: dict["item_name"]!, item_image: dict["item_image"]!) let model = FunctionModel(item_name: dict["item_name"]!, item_image: dict["item_image"]!,permissions: dict["permissions"]!)
itemImgArrays.append(model) itemImgArrays.append(model)
} }
return itemImgArrays return itemImgArrays
......
...@@ -32,6 +32,8 @@ class RepairOrderAddTableViewController: BaseTableViewController { ...@@ -32,6 +32,8 @@ class RepairOrderAddTableViewController: BaseTableViewController {
@IBOutlet weak var specifiedTimeLabel: UILabel! @IBOutlet weak var specifiedTimeLabel: UILabel!
/// 位置 /// 位置
@IBOutlet weak var specifiedLocationLabel: UILabel! @IBOutlet weak var specifiedLocationLabel: UILabel!
/// 项目
@IBOutlet weak var projectLabel: UILabel!
/// 设施信息 /// 设施信息
@IBOutlet weak var facilitiesSwitch: UISwitch! @IBOutlet weak var facilitiesSwitch: UISwitch!
/// 设施 /// 设施
......
...@@ -39,7 +39,6 @@ class RepairOrderDetailBgController: BaseViewController { ...@@ -39,7 +39,6 @@ class RepairOrderDetailBgController: BaseViewController {
return orderDetailViewModel return orderDetailViewModel
}() }()
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
...@@ -81,19 +80,26 @@ class RepairOrderDetailBgController: BaseViewController { ...@@ -81,19 +80,26 @@ class RepairOrderDetailBgController: BaseViewController {
// MARK: - 转交工单 // MARK: - 转交工单
@IBAction func transferButtonClickAction(_ sender: UIButton) { @IBAction func transferButtonClickAction(_ sender: UIButton) {
if !PermissionsManager.transferBillPermissions() {
ShowMessage("当前用户对此工单没有转交权限!");
return;
}
detailVc.transferRepairOrder() detailVc.transferRepairOrder()
} }
// MARK: - 传递工单数据到工单完成界面 // MARK: - 完成工单
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { @IBAction func finishButtonClickAction(_ sender: UIButton) {
if segue.identifier == RepairOrderCompletedViewController.name() { if !PermissionsManager.finishBillPermissions() {
let completeVc = segue.destination as! RepairOrderCompletedViewController ShowMessage("当前用户对此工单没有完成权限!")
let model = BillCompletedRequestModel(fromJson: JSON(detailVc.orderDetailViewModel.billDetailModel.toDictionary())) return;
completeVc.setStateBlock({[weak self] (state) in
self?.rapairBillBottomViewAction(state)
})
completeVc.billCompleteViewModel.billCompltedModel = model
} }
let completeVc = RepairOrderCompletedViewController.instantiateViewController(.Function) as! RepairOrderCompletedViewController
let model = BillCompletedRequestModel(fromJson: JSON(detailVc.orderDetailViewModel.billDetailModel.toDictionary()))
completeVc.setStateBlock({[weak self] (state) in
self?.rapairBillBottomViewAction(state)
})
completeVc.billCompleteViewModel.billCompltedModel = model
pushVC(completeVc)
} }
// MARK: - 工单底部view // MARK: - 工单底部view
......
...@@ -11,6 +11,7 @@ import RxCocoa ...@@ -11,6 +11,7 @@ import RxCocoa
import RxSwift import RxSwift
import SwiftyJSON import SwiftyJSON
class RepairOrderDetailViewController: BaseTableViewController { class RepairOrderDetailViewController: BaseTableViewController {
/// 已发出状态 /// 已发出状态
...@@ -24,6 +25,8 @@ class RepairOrderDetailViewController: BaseTableViewController { ...@@ -24,6 +25,8 @@ class RepairOrderDetailViewController: BaseTableViewController {
@IBOutlet weak var completedStateLab: UILabel! @IBOutlet weak var completedStateLab: UILabel!
/// 单号 /// 单号
@IBOutlet weak var billNumberLab: UILabel! @IBOutlet weak var billNumberLab: UILabel!
/// 项目
@IBOutlet weak var projectLabel: UILabel!
/// 来源 /// 来源
@IBOutlet weak var sourceLab: UILabel! @IBOutlet weak var sourceLab: UILabel!
/// 服务类型 /// 服务类型
...@@ -142,7 +145,7 @@ class RepairOrderDetailViewController: BaseTableViewController { ...@@ -142,7 +145,7 @@ class RepairOrderDetailViewController: BaseTableViewController {
fileprivate func suspendViewStateAction() { fileprivate func suspendViewStateAction() {
for i in 0..<orderDetailViewModel.billDetailModel.executes.count { for i in 0..<orderDetailViewModel.billDetailModel.executes.count {
let model = orderDetailViewModel.billDetailModel.executes[i] let model = orderDetailViewModel.billDetailModel.executes[i]
if model.dept.uuid == kUser().orgUuid if model.isEditable == true
&& (model.state == SUBMIT_REPAIR_ORDER_STATE.INIT.rawValue || model.state == SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue) && (model.state == SUBMIT_REPAIR_ORDER_STATE.INIT.rawValue || model.state == SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue)
&& orderDetailViewModel.billDetailModel.state != SUBMIT_REPAIR_ORDER_STATE.FINISHED.rawValue && orderDetailViewModel.billDetailModel.state != SUBMIT_REPAIR_ORDER_STATE.FINISHED.rawValue
&& orderDetailViewModel.billDetailModel.state != SUBMIT_REPAIR_ORDER_STATE.CANCLED.rawValue && orderDetailViewModel.billDetailModel.state != SUBMIT_REPAIR_ORDER_STATE.CANCLED.rawValue
...@@ -159,7 +162,11 @@ class RepairOrderDetailViewController: BaseTableViewController { ...@@ -159,7 +162,11 @@ class RepairOrderDetailViewController: BaseTableViewController {
// MARK: - 悬浮框按钮点击 // MARK: - 悬浮框按钮点击
func suspendViewButtonClickAction(_ title: String, _ model: BillDetailExecute, _ indexPath: IndexPath) { func suspendViewButtonClickAction(_ title: String, _ model: BillDetailExecute, _ indexPath: IndexPath) {
if title == SUSPEND_BUTTON_TYPE.GET.rawValue { if title == SUSPEND_BUTTON_TYPE.GET.rawValue {
ShowAlertView(hint, "请确认是否领单?", [cancel,sure], .alert, {[weak self] (index) in if !PermissionsManager.drawChildPermissions() && model.isEditable {
ShowMessage("当前用户对此工单没有领取权限!")
return;
}
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
self?.getBillDetailAction() self?.getBillDetailAction()
...@@ -168,6 +175,10 @@ class RepairOrderDetailViewController: BaseTableViewController { ...@@ -168,6 +175,10 @@ class RepairOrderDetailViewController: BaseTableViewController {
}).disposed(by: self!.disposeBag) }).disposed(by: self!.disposeBag)
}) })
}else { }else {
if !PermissionsManager.finishChildPermissions() && model.isEditable {
ShowMessage("当前用户对此工单没有完成权限!")
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?.childBillViewModel.childBillDetailData = ChildBillDetailData(fromJson: JSON(model.toDictionary())) self?.childBillViewModel.childBillDetailData = ChildBillDetailData(fromJson: JSON(model.toDictionary()))
...@@ -249,7 +260,7 @@ extension RepairOrderDetailViewController { ...@@ -249,7 +260,7 @@ extension RepairOrderDetailViewController {
if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SUBORDER.rawValue { if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SUBORDER.rawValue {
return orderDetailViewModel.dequeueChildBillReusableCell(RepairOrderSubOrderTableViewCell.name(), indexPath, tableView) return orderDetailViewModel.dequeueChildBillReusableCell(RepairOrderSubOrderTableViewCell.name(), indexPath, tableView)
} }
if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 12 { if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 13 {
let attachmentCell = tableView.dequeueReusableCell(withIdentifier: RepairOrderAttachmentTableViewCell.name(), for: indexPath) let attachmentCell = tableView.dequeueReusableCell(withIdentifier: RepairOrderAttachmentTableViewCell.name(), for: indexPath)
attachmentVc.view.frame = CGRect(x: 80, y: 5, width: kWidth - 90, height: attachmentHeight) attachmentVc.view.frame = CGRect(x: 80, y: 5, width: kWidth - 90, height: attachmentHeight)
attachmentCell.contentView.addSubview(attachmentVc.view) attachmentCell.contentView.addSubview(attachmentVc.view)
...@@ -297,10 +308,10 @@ extension RepairOrderDetailViewController { ...@@ -297,10 +308,10 @@ extension RepairOrderDetailViewController {
} }
return childBillCellHeight return childBillCellHeight
} }
if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 11 { if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 12 {
return orderDetailViewModel.billDetailModel.descriptionFieldHeight + 20 return orderDetailViewModel.billDetailModel.descriptionFieldHeight + 20
} }
if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 12 { if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.SOURCE.rawValue && indexPath.row == 13 {
return attachmentHeight + 20 return attachmentHeight + 20
} }
if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.COMPLETED.rawValue && indexPath.row == 1 { if indexPath.section == REPAIR_ORDER_DETAIL_SECTION.COMPLETED.rawValue && indexPath.row == 1 {
...@@ -318,23 +329,45 @@ extension RepairOrderDetailViewController { ...@@ -318,23 +329,45 @@ extension RepairOrderDetailViewController {
self.performSegue(withIdentifier: RepairOrderChildBillDetailViewController.name(), sender: indexPath) self.performSegue(withIdentifier: RepairOrderChildBillDetailViewController.name(), sender: indexPath)
return return
} }
if !PermissionsManager.drawChildPermissions() || !model.isEditable {
ShowMessage("当前用户对此工单没有领取权限!")
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
self?.getBillDetailAction() self?.getBillDetailAction()
self?.gotoEditingSonOrderVc(indexPath) if model.isEditable {
self?.gotoEditingSonOrderVc(indexPath)
}
ShowMessage("领取成功") ShowMessage("领取成功")
}).disposed(by: self!.disposeBag) }).disposed(by: self!.disposeBag)
}) })
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 || orderDetailViewModel.billDetailModel.state == SUBMIT_REPAIR_ORDER_STATE.CANCLED.rawValue || orderDetailViewModel.billDetailModel.state == SUBMIT_REPAIR_ORDER_STATE.DELETED.rawValue { if orderDetailViewModel.billDetailModel.state == SUBMIT_REPAIR_ORDER_STATE.FINISHED.rawValue || orderDetailViewModel.billDetailModel.state == SUBMIT_REPAIR_ORDER_STATE.CANCLED.rawValue || orderDetailViewModel.billDetailModel.state == SUBMIT_REPAIR_ORDER_STATE.DELETED.rawValue {
if !PermissionsManager.childViewPermissions() {
ShowMessage("当前用户对此工单没有查看权限!")
return;
}
self.performSegue(withIdentifier: RepairOrderChildBillDetailViewController.name(), sender: indexPath) self.performSegue(withIdentifier: RepairOrderChildBillDetailViewController.name(), sender: indexPath)
return return
} }
if !model.isEditable && !PermissionsManager.childViewPermissions() {
ShowMessage("当前用户对此工单没有操作权限!")
return;
}
if !model.isEditable && PermissionsManager.childViewPermissions() {
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,SUBMIT_REPAIR_ORDER_STATE.CANCLED.rawValue:
if !PermissionsManager.childViewPermissions() {
ShowMessage("当前用户对此工单没有查看权限!")
return;
}
self.performSegue(withIdentifier: RepairOrderChildBillDetailViewController.name(), sender: indexPath) self.performSegue(withIdentifier: RepairOrderChildBillDetailViewController.name(), sender: indexPath)
break break
default: default:
...@@ -366,9 +399,6 @@ extension RepairOrderDetailViewController { ...@@ -366,9 +399,6 @@ extension RepairOrderDetailViewController {
} }
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
// if section == REPAIR_ORDER_DETAIL_SECTION.SUBORDER.rawValue {
// return kSectionTen
// }
return kSectionZero return kSectionZero
} }
......
...@@ -142,6 +142,10 @@ class RepairOrderEditSonOrderViewController: BaseTableViewController { ...@@ -142,6 +142,10 @@ class RepairOrderEditSonOrderViewController: BaseTableViewController {
let completeView = RepairOrderEditSonOrderCompleteView.instantiateFromNib() as! RepairOrderEditSonOrderCompleteView let completeView = RepairOrderEditSonOrderCompleteView.instantiateFromNib() as! RepairOrderEditSonOrderCompleteView
//完成子工单 //完成子工单
completeView.completeBtn.rx.controlEvent(UIControlEvents.touchUpInside).subscribe(onNext: {[weak self] (event) in completeView.completeBtn.rx.controlEvent(UIControlEvents.touchUpInside).subscribe(onNext: {[weak self] (event) in
if !PermissionsManager.finishChildPermissions() {
ShowMessage("当前用户对此工单没有完成权限!")
return;
}
ShowAlertView(hint, "确定完成此子工单吗?", [cancel,sure], .alert, { (index) in ShowAlertView(hint, "确定完成此子工单吗?", [cancel,sure], .alert, { (index) in
if index == kZERO { return } if index == kZERO { return }
self?.uploadActtachmentAction().subscribe(onNext: { (result) in self?.uploadActtachmentAction().subscribe(onNext: { (result) in
...@@ -159,6 +163,10 @@ class RepairOrderEditSonOrderViewController: BaseTableViewController { ...@@ -159,6 +163,10 @@ class RepairOrderEditSonOrderViewController: BaseTableViewController {
// MARK: - 提交、保存子工单 // MARK: - 提交、保存子工单
@objc fileprivate func saveButtonClickAction() { @objc fileprivate func saveButtonClickAction() {
if !PermissionsManager.saveChildPermissions() {
ShowMessage("当前用户对此工单没有保存权限!")
return;
}
ShowAlertView(hint, "确定保存此子工单吗?", [cancel,sure], .alert) {[weak self] (index) in ShowAlertView(hint, "确定保存此子工单吗?", [cancel,sure], .alert) {[weak self] (index) in
self?.uploadActtachmentAction().subscribe(onNext: { (result) in self?.uploadActtachmentAction().subscribe(onNext: { (result) in
self?.childBillViewModel.saveChildBillAction().subscribe(onNext: { () in self?.childBillViewModel.saveChildBillAction().subscribe(onNext: { () in
......
...@@ -54,6 +54,7 @@ class RepairOrderViewController: BaseTableViewPullController { ...@@ -54,6 +54,7 @@ class RepairOrderViewController: BaseTableViewPullController {
sourceChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true sourceChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
priorityChooseButton.horizontalCenterTitleAndImage(5) priorityChooseButton.horizontalCenterTitleAndImage(5)
priorityChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true priorityChooseButton.titleLabel?.adjustsFontSizeToFitWidth = true
addOrderButton.isHidden = !PermissionsManager.createBillPermissions()
} }
// MARK: - 绑定RxSwift事件 // MARK: - 绑定RxSwift事件
......
...@@ -84,6 +84,7 @@ open class ChildBillDetailData : NSObject{ ...@@ -84,6 +84,7 @@ open class ChildBillDetailData : NSObject{
var workid : String! var workid : String!
init(_ state: String) { init(_ state: String) {
self.state = state self.state = state
} }
......
...@@ -92,12 +92,12 @@ open class BillDetailData : NSObject{ ...@@ -92,12 +92,12 @@ open class BillDetailData : NSObject{
var serviceType : String! var serviceType : String!
var source : String! var source : String!
var state : String! var state : String!
var store : AnyObject! var store : UCN!
var tenant : UCN! var tenant : UCN!
var uuid : String! var uuid : String!
var version : Int! var version : Int!
var workNo : String! var workNo : String!
var isEditable: Bool! = false
init(_ state: String) { init(_ state: String) {
...@@ -111,6 +111,7 @@ open class BillDetailData : NSObject{ ...@@ -111,6 +111,7 @@ open class BillDetailData : NSObject{
if json.isEmpty{ if json.isEmpty{
return return
} }
isEditable = json["isEditable"].boolValue
attachmentId = json["attachmentId"].stringValue attachmentId = json["attachmentId"].stringValue
attachments = json["attachments"] as AnyObject attachments = json["attachments"] as AnyObject
brokenTime = json["brokenTime"].stringValue brokenTime = json["brokenTime"].stringValue
...@@ -166,7 +167,10 @@ open class BillDetailData : NSObject{ ...@@ -166,7 +167,10 @@ open class BillDetailData : NSObject{
serviceType = json["serviceType"].stringValue serviceType = json["serviceType"].stringValue
source = json["source"].stringValue source = json["source"].stringValue
state = json["state"].stringValue state = json["state"].stringValue
store = json["store"] as AnyObject let storeJson = json["store"]
if !storeJson.isEmpty{
store = UCN(fromJson: storeJson)
}
let tenantJson = json["tenant"] let tenantJson = json["tenant"]
if !tenantJson.isEmpty{ if !tenantJson.isEmpty{
tenant = UCN(fromJson: tenantJson) tenant = UCN(fromJson: tenantJson)
...@@ -209,6 +213,9 @@ open class BillDetailData : NSObject{ ...@@ -209,6 +213,9 @@ open class BillDetailData : NSObject{
if createTime != nil{ if createTime != nil{
dictionary["create_time"] = createTime dictionary["create_time"] = createTime
} }
if isEditable != nil{
dictionary["isEditable"] = isEditable
}
if descriptionField != nil{ if descriptionField != nil{
dictionary["description"] = descriptionField dictionary["description"] = descriptionField
} }
...@@ -350,7 +357,7 @@ open class BillDetailExecute : NSObject{ ...@@ -350,7 +357,7 @@ open class BillDetailExecute : NSObject{
var uuid : String! var uuid : String!
var version : Int! var version : Int!
var workid : String! var workid : String!
var isEditable: Bool! = false
/** /**
* Instantiate the instance using the passed json values to set the properties values * Instantiate the instance using the passed json values to set the properties values
...@@ -359,6 +366,7 @@ open class BillDetailExecute : NSObject{ ...@@ -359,6 +366,7 @@ open class BillDetailExecute : NSObject{
if json.isEmpty{ if json.isEmpty{
return return
} }
isEditable = json["isEditable"].boolValue
beginAttachmentId = json["beginAttachmentId"].stringValue beginAttachmentId = json["beginAttachmentId"].stringValue
beginAttachments = json["beginAttachments"] as AnyObject beginAttachments = json["beginAttachments"] as AnyObject
createId = json["create_id"].stringValue createId = json["create_id"].stringValue
...@@ -434,6 +442,9 @@ open class BillDetailExecute : NSObject{ ...@@ -434,6 +442,9 @@ open class BillDetailExecute : NSObject{
if endAttachmentId != nil{ if endAttachmentId != nil{
dictionary["endAttachmentId"] = endAttachmentId dictionary["endAttachmentId"] = endAttachmentId
} }
if isEditable != nil{
dictionary["isEditable"] = isEditable
}
if endAttachments != nil{ if endAttachments != nil{
dictionary["endAttachments"] = endAttachments dictionary["endAttachments"] = endAttachments
} }
......
...@@ -18,6 +18,7 @@ open class SaveRepairOrderModel { ...@@ -18,6 +18,7 @@ open class SaveRepairOrderModel {
var receiveTime : String! var receiveTime : String!
var reportOrg : String! var reportOrg : String!
var reportUser : UCN! var reportUser : UCN!
var store: UCN!
var reporterPhone : String! var reporterPhone : String!
var requestTime : String! var requestTime : String!
var serviceType : String! var serviceType : String!
...@@ -40,6 +41,9 @@ open class SaveRepairOrderModel { ...@@ -40,6 +41,9 @@ open class SaveRepairOrderModel {
if device != nil{ if device != nil{
dictionary["device"] = device.toDictionary() dictionary["device"] = device.toDictionary()
} }
if store != nil{
dictionary["store"] = store.toDictionary()
}
if level != nil{ if level != nil{
dictionary["level"] = level dictionary["level"] = level
} }
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<subviews> <subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="工程部" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9hT-Fx-col"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="工程部" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9hT-Fx-col">
<rect key="frame" x="15" y="9.5" width="43" height="17"/> <rect key="frame" x="15" y="9.5" width="43" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/> <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
<nil key="textColor"/> <nil key="textColor"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
<constraints> <constraints>
<constraint firstAttribute="width" constant="60" id="hwM-34-dPe"/> <constraint firstAttribute="width" constant="60" id="hwM-34-dPe"/>
</constraints> </constraints>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="15"/>
<state key="normal" title="领单"> <state key="normal" title="领单">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state> </state>
......
...@@ -32,6 +32,8 @@ class RepairOrderSubOrderTableViewCell: UITableViewCell { ...@@ -32,6 +32,8 @@ class RepairOrderSubOrderTableViewCell: UITableViewCell {
fileprivate func uiConfigAction() { fileprivate func uiConfigAction() {
contentBgView.addAngle(10.0) contentBgView.addAngle(10.0)
contentBgView.addBorder(1.0, kGaryColor) contentBgView.addBorder(1.0, kGaryColor)
selectedBackgroundView = UIView()
selectedBackgroundView?.backgroundColor = UIColor.clear
} }
// MARK: - 更新子工单cell // MARK: - 更新子工单cell
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<objects> <objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" id="KGk-i7-Jjw" customClass="RepairOrderSubOrderTableViewCell" customModule="IFS" customModuleProvider="target"> <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="KGk-i7-Jjw" customClass="RepairOrderSubOrderTableViewCell" customModule="IFS" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="375" height="70"/> <rect key="frame" x="0.0" y="0.0" width="375" height="70"/>
<autoresizingMask key="autoresizingMask"/> <autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
</label> </label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="已完成" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WXJ-0x-D52"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="已完成" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WXJ-0x-D52">
<rect key="frame" x="290" y="10" width="40" height="16"/> <rect key="frame" x="290" y="10" width="40" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/> <fontDescription key="fontDescription" type="system" weight="medium" pointSize="13"/>
<color key="textColor" red="0.21755459899999999" green="0.53306800129999998" blue="0.99824184179999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="textColor" red="0.21755459899999999" green="0.53306800129999998" blue="0.99824184179999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
...@@ -68,6 +68,7 @@ ...@@ -68,6 +68,7 @@
</constraints> </constraints>
</tableViewCellContentView> </tableViewCellContentView>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="tintColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<viewLayoutGuide key="safeArea" id="njF-e1-oar"/> <viewLayoutGuide key="safeArea" id="njF-e1-oar"/>
<connections> <connections>
<outlet property="contentBgView" destination="iXK-9n-8CZ" id="fiE-6x-Xdz"/> <outlet property="contentBgView" destination="iXK-9n-8CZ" id="fiE-6x-Xdz"/>
......
...@@ -23,7 +23,6 @@ class RepairOrderTableViewCell: UITableViewCell { ...@@ -23,7 +23,6 @@ class RepairOrderTableViewCell: UITableViewCell {
/// 单号 /// 单号
@IBOutlet weak var orderNumberLabel: UILabel! @IBOutlet weak var orderNumberLabel: UILabel!
override func awakeFromNib() { override func awakeFromNib() {
super.awakeFromNib() super.awakeFromNib()
} }
...@@ -33,8 +32,8 @@ class RepairOrderTableViewCell: UITableViewCell { ...@@ -33,8 +32,8 @@ class RepairOrderTableViewCell: UITableViewCell {
createTimeLabel.text = model.createTime createTimeLabel.text = model.createTime
orderStateLabel.text = repairOrderChineseState(model.state) orderStateLabel.text = repairOrderChineseState(model.state)
describeLabel.text = model.descriptionField describeLabel.text = model.descriptionField
priorityLabel.text = model.level as? String priorityLabel.text = model.level.isEmpty ? "---" : model.level
sourceLabel.text = model.source sourceLabel.text = model.source.isEmpty ? "---" : model.source
orderNumberLabel.text = String(format: "单号:%@", model.workNo) orderNumberLabel.text = String(format: "单号:%@", model.workNo)
} }
} }
......
...@@ -31,6 +31,10 @@ extension RepairOrderAddViewModel { ...@@ -31,6 +31,10 @@ extension RepairOrderAddViewModel {
// MARK: - 是否允许提交工单 // MARK: - 是否允许提交工单
func repairOrderAvailable(_ sender: UISwitch) ->Bool { func repairOrderAvailable(_ sender: UISwitch) ->Bool {
guard saveOrderModel.store != nil else {
ShowMessage("请选择项目")
return false
}
guard saveOrderModel.source != nil else { guard saveOrderModel.source != nil else {
ShowMessage("请选择工单来源") ShowMessage("请选择工单来源")
return false return false
...@@ -104,6 +108,33 @@ extension RepairOrderAddViewModel { ...@@ -104,6 +108,33 @@ extension RepairOrderAddViewModel {
func didSelectRowAtIndePath(_ indexPath: IndexPath, _ controller: RepairOrderAddTableViewController) { func didSelectRowAtIndePath(_ indexPath: IndexPath, _ controller: RepairOrderAddTableViewController) {
switch indexPath { switch indexPath {
case IndexPath(row: 0, section: 0): case IndexPath(row: 0, section: 0):
filterViewModel.queryProjectType().subscribe(onNext: {[weak self] (result) in
if result.isEmpty {
ShowMessage("无数据")
return
}
let publicFilterVc = FilterViewController.instantiateViewController(.Function) as! FilterViewController
for model in result {
let filterModel: PublicFilterModel?
if model.name == controller.projectLabel.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
let choiceModel = choices.first!
controller.projectLabel.text = choiceModel.title
controller.projectLabel.textColor = kBlackColor
let model = result[index!]
let user = UCN(model.code, model.name, model.uuid)
self?.saveOrderModel.store = user
})
}).disposed(by: disposeBag)
break
case IndexPath(row: 1, section: 0):
filterViewModel.queryProjectSponsors().subscribe(onNext: {[weak self] (result) in filterViewModel.queryProjectSponsors().subscribe(onNext: {[weak self] (result) in
if result.isEmpty { if result.isEmpty {
ShowMessage("无数据") ShowMessage("无数据")
...@@ -116,7 +147,7 @@ extension RepairOrderAddViewModel { ...@@ -116,7 +147,7 @@ extension RepairOrderAddViewModel {
}, cancel: nil) }, cancel: nil)
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
break break
case IndexPath(row: 1, section: 0): case IndexPath(row: 2, section: 0):
filterViewModel.queryServerType().subscribe(onNext: {[weak self] (result) in filterViewModel.queryServerType().subscribe(onNext: {[weak self] (result) in
if result.isEmpty { if result.isEmpty {
ShowMessage("无数据") ShowMessage("无数据")
...@@ -129,7 +160,7 @@ extension RepairOrderAddViewModel { ...@@ -129,7 +160,7 @@ extension RepairOrderAddViewModel {
}, cancel: nil) }, cancel: nil)
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
break break
case IndexPath(row: 2, section: 0): case IndexPath(row: 3, section: 0):
filterViewModel.queryProrityOption().subscribe(onNext: {[weak self] (result) in filterViewModel.queryProrityOption().subscribe(onNext: {[weak self] (result) in
if result.isEmpty { if result.isEmpty {
ShowMessage("无数据") ShowMessage("无数据")
...@@ -142,7 +173,7 @@ extension RepairOrderAddViewModel { ...@@ -142,7 +173,7 @@ extension RepairOrderAddViewModel {
}, cancel: nil) }, cancel: nil)
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
break break
case IndexPath(row: 3, section: 0): case IndexPath(row: 4, section: 0):
filterViewModel.queryInitiator().subscribe(onNext: {[weak self] (result) in filterViewModel.queryInitiator().subscribe(onNext: {[weak self] (result) in
if result.isEmpty { if result.isEmpty {
ShowMessage("无数据") ShowMessage("无数据")
...@@ -169,7 +200,7 @@ extension RepairOrderAddViewModel { ...@@ -169,7 +200,7 @@ extension RepairOrderAddViewModel {
}) })
}).disposed(by: disposeBag) }).disposed(by: disposeBag)
break break
case IndexPath(row: 5, section: 0): case IndexPath(row: 6, section: 0):
let defaultDate = controller.originatorTimeLabel.text == "工单接报时间" ? NSDate().httpParameterString() : controller.originatorTimeLabel.text let defaultDate = controller.originatorTimeLabel.text == "工单接报时间" ? NSDate().httpParameterString() : controller.originatorTimeLabel.text
YXPickerManager.share().showDatePickerView(kMainColor, datePickerModel: UIDatePickerMode.dateAndTime, minimumDate: Date(), maximumDate: nil, defaultDate: defaultDate, commit: {[weak self] (time) in YXPickerManager.share().showDatePickerView(kMainColor, datePickerModel: UIDatePickerMode.dateAndTime, minimumDate: Date(), maximumDate: nil, defaultDate: defaultDate, commit: {[weak self] (time) in
controller.originatorTimeLabel.text = time controller.originatorTimeLabel.text = time
...@@ -177,7 +208,7 @@ extension RepairOrderAddViewModel { ...@@ -177,7 +208,7 @@ extension RepairOrderAddViewModel {
self?.saveOrderModel.receiveTime = time self?.saveOrderModel.receiveTime = time
}, cancel: nil) }, cancel: nil)
break break
case IndexPath(row: 6, section: 0): case IndexPath(row: 7, section: 0):
let defaultDate = controller.specifiedTimeLabel.text == "工单指定时间" ? NSDate().httpParameterString() : controller.originatorTimeLabel.text let defaultDate = controller.specifiedTimeLabel.text == "工单指定时间" ? NSDate().httpParameterString() : controller.originatorTimeLabel.text
YXPickerManager.share().showDatePickerView(kMainColor, datePickerModel: UIDatePickerMode.dateAndTime, minimumDate: Date(), maximumDate: nil, defaultDate: defaultDate, commit: {[weak self] (time) in YXPickerManager.share().showDatePickerView(kMainColor, datePickerModel: UIDatePickerMode.dateAndTime, minimumDate: Date(), maximumDate: nil, defaultDate: defaultDate, commit: {[weak self] (time) in
controller.specifiedTimeLabel.text = time controller.specifiedTimeLabel.text = time
...@@ -185,7 +216,7 @@ extension RepairOrderAddViewModel { ...@@ -185,7 +216,7 @@ extension RepairOrderAddViewModel {
self?.saveOrderModel.requestTime = time self?.saveOrderModel.requestTime = time
}, cancel: nil) }, cancel: nil)
break break
case IndexPath(row: 7, section: 0): case IndexPath(row: 8, section: 0):
filterViewModel.queryLocation().subscribe(onNext: {[weak self] (result) in filterViewModel.queryLocation().subscribe(onNext: {[weak self] (result) in
if result.isEmpty { if result.isEmpty {
ShowMessage("无数据") ShowMessage("无数据")
......
...@@ -167,6 +167,9 @@ extension RepairOrderDetailViewModel { ...@@ -167,6 +167,9 @@ extension RepairOrderDetailViewModel {
controller.billNumberLab.text = billDetailModel.workNo controller.billNumberLab.text = billDetailModel.workNo
controller.isSolveLabel.text = billDetailModel.finish ? "是" : "否" controller.isSolveLabel.text = billDetailModel.finish ? "是" : "否"
controller.completionLabel.text = disposeEmpty(billDetailModel.finishNote) controller.completionLabel.text = disposeEmpty(billDetailModel.finishNote)
if billDetailModel.store != nil {
controller.projectLabel.text = disposeEmpty(billDetailModel.store.name)
}
} }
// MARK: - 处理空数据 // MARK: - 处理空数据
......
...@@ -259,11 +259,11 @@ extension ReparirChildBillViewModel { ...@@ -259,11 +259,11 @@ extension ReparirChildBillViewModel {
break break
case SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue: case SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue:
controller.createdStateImg.image = UIImage(named: "state_selected") controller.createdStateImg.image = UIImage(named: "state_default")
controller.createStateLab.textColor = kBlueColor controller.createStateLab.textColor = kLightGaryColor
controller.processedStateImg.image = UIImage(named: "state_default") controller.processedStateImg.image = UIImage(named: "state_selected")
controller.processedStateLab.textColor = kLightGaryColor controller.processedStateLab.textColor = kBlueColor
controller.completedStateImg.image = UIImage(named: "state_default") controller.completedStateImg.image = UIImage(named: "state_default")
controller.completedStateLab.textColor = kLightGaryColor controller.completedStateLab.textColor = kLightGaryColor
......
...@@ -69,6 +69,10 @@ class TodoViewController: BaseTableViewPullController { ...@@ -69,6 +69,10 @@ class TodoViewController: BaseTableViewPullController {
let model = todoViewModel.todoResultArray[indexPath.row] let model = todoViewModel.todoResultArray[indexPath.row]
switch model.state { switch model.state {
case SUBMIT_REPAIR_ORDER_STATE.INIT.rawValue: case SUBMIT_REPAIR_ORDER_STATE.INIT.rawValue:
if !PermissionsManager.drawChildPermissions() {
ShowMessage("当前用户对此工单没有领取权限!")
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
...@@ -78,11 +82,19 @@ class TodoViewController: BaseTableViewPullController { ...@@ -78,11 +82,19 @@ class TodoViewController: BaseTableViewPullController {
}) })
break break
case SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue: case SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue:
if !PermissionsManager.saveChildPermissions() {
ShowMessage("当前用户对此工单没有编辑权限!")
return;
}
let childBillVc = RepairOrderEditSonOrderViewController.instantiateViewController(.Function) as! RepairOrderEditSonOrderViewController let childBillVc = RepairOrderEditSonOrderViewController.instantiateViewController(.Function) as! RepairOrderEditSonOrderViewController
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: case SUBMIT_REPAIR_ORDER_STATE.DONE.rawValue,SUBMIT_REPAIR_ORDER_STATE.CANCLED.rawValue:
if !PermissionsManager.childViewPermissions() {
ShowMessage("当前用户对此工单没有查看权限!")
return;
}
let childBillVc = RepairOrderChildBillDetailViewController.instantiateViewController(.Function) as! RepairOrderChildBillDetailViewController let childBillVc = RepairOrderChildBillDetailViewController.instantiateViewController(.Function) as! RepairOrderChildBillDetailViewController
childBillVc.billModel = BillDetailExecute(fromJson: JSON(model.toDictionary())) childBillVc.billModel = BillDetailExecute(fromJson: JSON(model.toDictionary()))
pushVC(childBillVc) pushVC(childBillVc)
......
...@@ -38,6 +38,11 @@ class HomeTableViewController: BaseTableViewPullController { ...@@ -38,6 +38,11 @@ class HomeTableViewController: BaseTableViewPullController {
// MARK: - 获取数据 // MARK: - 获取数据
override func loadWebDataSource() { override func loadWebDataSource() {
if !PermissionsManager.todoViewPermissions() {
endRefresh()
tableView.reloadData()
return;
}
todoViewModel.queryTodoAction(todoState).subscribe {[weak self] (event) in todoViewModel.queryTodoAction(todoState).subscribe {[weak self] (event) in
switch event { switch event {
case .next(): case .next():
...@@ -70,6 +75,10 @@ class HomeTableViewController: BaseTableViewPullController { ...@@ -70,6 +75,10 @@ class HomeTableViewController: BaseTableViewPullController {
let model = todoViewModel.todoResultArray[indexPath.row] let model = todoViewModel.todoResultArray[indexPath.row]
switch model.state { switch model.state {
case SUBMIT_REPAIR_ORDER_STATE.INIT.rawValue: case SUBMIT_REPAIR_ORDER_STATE.INIT.rawValue:
if !PermissionsManager.drawChildPermissions() {
ShowMessage("当前用户对此工单没有领取权限!")
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
...@@ -79,11 +88,19 @@ class HomeTableViewController: BaseTableViewPullController { ...@@ -79,11 +88,19 @@ class HomeTableViewController: BaseTableViewPullController {
}) })
break break
case SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue: case SUBMIT_REPAIR_ORDER_STATE.DREW.rawValue:
if !PermissionsManager.saveChildPermissions() {
ShowMessage("当前用户对此工单没有编辑权限!")
return;
}
let childBillVc = RepairOrderEditSonOrderViewController.instantiateViewController(.Function) as! RepairOrderEditSonOrderViewController let childBillVc = RepairOrderEditSonOrderViewController.instantiateViewController(.Function) as! RepairOrderEditSonOrderViewController
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: case SUBMIT_REPAIR_ORDER_STATE.DONE.rawValue,SUBMIT_REPAIR_ORDER_STATE.CANCLED.rawValue:
if !PermissionsManager.childViewPermissions() {
ShowMessage("当前用户对此工单没有查看权限!")
return;
}
let childBillVc = RepairOrderChildBillDetailViewController.instantiateViewController(.Function) as! RepairOrderChildBillDetailViewController let childBillVc = RepairOrderChildBillDetailViewController.instantiateViewController(.Function) as! RepairOrderChildBillDetailViewController
childBillVc.billModel = BillDetailExecute(fromJson: JSON(model.toDictionary())) childBillVc.billModel = BillDetailExecute(fromJson: JSON(model.toDictionary()))
pushVC(childBillVc) pushVC(childBillVc)
...@@ -92,6 +109,14 @@ class HomeTableViewController: BaseTableViewPullController { ...@@ -92,6 +109,14 @@ class HomeTableViewController: BaseTableViewPullController {
break break
} }
} }
override func description(forEmptyDataSet scrollView: UIScrollView!) -> NSAttributedString! {
let dict: [NSAttributedStringKey: Any] = [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 15),NSAttributedStringKey.foregroundColor: kNavColor]
let boolValue = PermissionsManager.todoViewPermissions()
let attrString = NSAttributedString(string: boolValue ? "对不起,真的没有数据!" : "当前用户对待办事项没有查看权限!", attributes: dict)
return attrString
}
} }
......
...@@ -33,7 +33,7 @@ class AppStyle: NSObject { ...@@ -33,7 +33,7 @@ class AppStyle: NSObject {
fileprivate class func thirdFrameworkStyle() { fileprivate class func thirdFrameworkStyle() {
SVProgressHUD.setBackgroundColor(kGaryColor) SVProgressHUD.setBackgroundColor(kGaryColor)
SVProgressHUD.setMinimumDismissTimeInterval(kMissTime) SVProgressHUD.setMinimumDismissTimeInterval(kMissTime)
SVProgressHUD.popActivity() SVProgressHUD.resetOffsetFromCenter()
UMAnalyticsConfig.sharedInstance().appKey = UMKey UMAnalyticsConfig.sharedInstance().appKey = UMKey
MobClick.start(withConfigure: UMAnalyticsConfig.sharedInstance()) MobClick.start(withConfigure: UMAnalyticsConfig.sharedInstance())
MobClick.setLogEnabled(true) MobClick.setLogEnabled(true)
......
...@@ -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.1</string> <string>1.0.2</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.0.1</string> <string>1.0.2</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>NSAppTransportSecurity</key> <key>NSAppTransportSecurity</key>
......
...@@ -7,12 +7,16 @@ ...@@ -7,12 +7,16 @@
<string>todo_icon</string> <string>todo_icon</string>
<key>item_name</key> <key>item_name</key>
<string>待办事项</string> <string>待办事项</string>
<key>permissions</key>
<string>500301</string>
</dict> </dict>
<dict> <dict>
<key>item_image</key> <key>item_image</key>
<string>order_icon</string> <string>order_icon</string>
<key>item_name</key> <key>item_name</key>
<string>工单</string> <string>工单</string>
<key>permissions</key>
<string>500101</string>
</dict> </dict>
</array> </array>
</plist> </plist>
...@@ -29,7 +29,7 @@ func ShowProgressView(_ progress: Float) { ...@@ -29,7 +29,7 @@ func ShowProgressView(_ progress: Float) {
// MARK: - 销毁 // MARK: - 销毁
func HideLoadingView() { func HideLoadingView() {
SVProgressHUD.dismiss(withDelay: kMissTime) SVProgressHUD.popActivity()
} }
......
...@@ -20,7 +20,6 @@ target ‘IFS’ do ...@@ -20,7 +20,6 @@ target ‘IFS’ do
pod 'SKPhotoBrowser', '~> 5.0.0' pod 'SKPhotoBrowser', '~> 5.0.0'
pod 'YXPickerView' pod 'YXPickerView'
pod 'YXAlertController' pod 'YXAlertController'
pod 'ObservableArray-RxSwift', '~> 0.2.0'
pod 'PPBadgeViewSwift' pod 'PPBadgeViewSwift'
pod 'SVProgressHUD', '~> 2.2.2' pod 'SVProgressHUD', '~> 2.2.2'
pod 'UMengAnalytics' pod 'UMengAnalytics'
......
...@@ -14,8 +14,6 @@ PODS: ...@@ -14,8 +14,6 @@ PODS:
- Moya/Core (10.0.1): - Moya/Core (10.0.1):
- Alamofire (~> 4.1) - Alamofire (~> 4.1)
- Result (~> 3.0) - Result (~> 3.0)
- ObservableArray-RxSwift (0.2.0):
- RxSwift (~> 4.0)
- PPBadgeViewSwift (2.0.0) - PPBadgeViewSwift (2.0.0)
- Result (3.2.4) - Result (3.2.4)
- RxCocoa (4.1.1): - RxCocoa (4.1.1):
...@@ -41,7 +39,6 @@ DEPENDENCIES: ...@@ -41,7 +39,6 @@ DEPENDENCIES:
- Kingfisher - Kingfisher
- MJRefresh (~> 3.1.15.1) - MJRefresh (~> 3.1.15.1)
- Moya - Moya
- ObservableArray-RxSwift (~> 0.2.0)
- PPBadgeViewSwift - PPBadgeViewSwift
- RxCocoa - RxCocoa
- RxSwift - RxSwift
...@@ -66,7 +63,6 @@ SPEC CHECKSUMS: ...@@ -66,7 +63,6 @@ SPEC CHECKSUMS:
Kingfisher: 1f9157d9c02b380cbd0b7cc890161195164eb634 Kingfisher: 1f9157d9c02b380cbd0b7cc890161195164eb634
MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6 MJRefresh: 5f8552bc25ca8751c010f621c1098dbdaacbccd6
Moya: 9e621707ff754eeb51ff3ec51a3d54e517c0733a Moya: 9e621707ff754eeb51ff3ec51a3d54e517c0733a
ObservableArray-RxSwift: 905a088f51b1653f7eb55e6887f8a13916618f50
PPBadgeViewSwift: dc520c183e11d87fbe19bdb223e8b47d158f3c6b PPBadgeViewSwift: dc520c183e11d87fbe19bdb223e8b47d158f3c6b
Result: d2d07204ce72856f1fd9130bbe42c35a7b0fea10 Result: d2d07204ce72856f1fd9130bbe42c35a7b0fea10
RxCocoa: fd0862fd2df95fa55562ad28ffd2522c25eb4a85 RxCocoa: fd0862fd2df95fa55562ad28ffd2522c25eb4a85
...@@ -80,6 +76,6 @@ SPEC CHECKSUMS: ...@@ -80,6 +76,6 @@ SPEC CHECKSUMS:
YXKit: 73d6ffbcf7530f1159e030460207286e9153b080 YXKit: 73d6ffbcf7530f1159e030460207286e9153b080
YXPickerView: 527ca74d8fbe73b4e9bd0bbff6e143133dced907 YXPickerView: 527ca74d8fbe73b4e9bd0bbff6e143133dced907
PODFILE CHECKSUM: 3e33205a97f219ebdb5a9ce5e01c757323891d82 PODFILE CHECKSUM: 0eaafb4a7b07d07aea77b58f3cd8a90edc556faf
COCOAPODS: 1.3.0 COCOAPODS: 1.3.0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment