TaskCreateViewController.swift 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. //
  2. // TaskCreateViewController.swift
  3. // O2Platform
  4. //
  5. // Created by 刘振兴 on 16/7/29.
  6. // Copyright © 2016年 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import Alamofire
  10. import AlamofireImage
  11. import AlamofireObjectMapper
  12. import SwiftyJSON
  13. import ObjectMapper
  14. import Eureka
  15. import CocoaLumberjack
  16. class TaskCreateViewController: FormViewController {
  17. var process:AppProcess?{
  18. didSet{
  19. }
  20. }
  21. var identitys:[IdentityV2]? {
  22. didSet {
  23. for identity in identitys! {
  24. identityString.append("\(identity.name!)(\(identity.unitName!))")
  25. }
  26. }
  27. }
  28. var task:TodoTask?
  29. var identityString:[String] = []
  30. override func viewDidLoad() {
  31. super.viewDidLoad()
  32. TextRow.defaultCellUpdate = {
  33. cell,row in
  34. cell.textLabel?.font = setting_content_textFont
  35. cell.textLabel?.textColor = setting_content_textColor
  36. //cell.textField.attributedPlaceholder = NSAttributedString(string: "",attributes: [NSFontAttributeName:setting_content_textFont,NSBackgroundColorAttributeName:setting_content_textColor])
  37. //cell.accessoryType = .disclosureIndicator
  38. }
  39. ActionSheetRow<String>.defaultCellUpdate = {
  40. cell,row in
  41. cell.textLabel?.font = setting_content_textFont
  42. cell.textLabel?.textColor = setting_content_textColor
  43. //cell.accessoryType = .disclosureIndicator
  44. }
  45. DateTimeRow.defaultCellUpdate = {
  46. cell,row in
  47. cell.textLabel?.font = setting_content_textFont
  48. cell.textLabel?.textColor = setting_content_textColor
  49. //cell.accessoryType = .disclosureIndicator
  50. }
  51. ButtonRow.defaultCellUpdate = {
  52. cell,row in
  53. cell.textLabel?.font = setting_item_textFont
  54. cell.textLabel?.theme_textColor = ThemeColorPicker(keyPath: "Base.base_color")
  55. }
  56. title = process?.name
  57. loadDepartAndIdentity()
  58. // showInputUI()
  59. }
  60. func loadDepartAndIdentity(){
  61. let url = AppDelegate.o2Collect.generateURLWithAppContextKey(TaskContext.taskContextKey, query: TaskContext.todoCreateAvaiableIdentityByIdQuery, parameter: ["##processId##":process?.id as AnyObject])
  62. Alamofire.request(url!).responseArray(keyPath:"data") { (response:DataResponse<[IdentityV2]>) in
  63. switch response.result {
  64. case .success(let identitys):
  65. self.identitys = identitys
  66. DispatchQueue.main.async {
  67. self.showInputUI()
  68. }
  69. case .failure(let err):
  70. DDLogError(err.localizedDescription)
  71. DispatchQueue.main.async {
  72. self.showError(title: "读取身份列表失败")
  73. }
  74. }
  75. }
  76. }
  77. func showInputUI(){
  78. form +++ Section("创建流程")
  79. <<< TextRow("title") {row in
  80. row.title = "标题"
  81. row.placeholder = "请输入标题"
  82. }.cellSetup({ (cell, row) in
  83. //cell.height = 50
  84. })
  85. <<< ActionSheetRow<IdentityV2>("selectedIdentity") {
  86. $0.title = "用户身份"
  87. $0.selectorTitle = "请选择身份?"
  88. $0.options = self.identitys
  89. if(self.identitys != nil && self.identitys!.count>0){
  90. $0.value = self.identitys![0]
  91. }
  92. }.cellSetup({ (cell, row) in
  93. //cell.height = 50
  94. })
  95. <<< DateTimeRow("createTime") { row in
  96. row.title = "创建时间"
  97. row.value = Date()
  98. let formatter = DateFormatter()
  99. formatter.locale = Locale.current
  100. formatter.dateStyle = .long
  101. row.dateFormatter = formatter
  102. }.cellSetup({ (cell, row) in
  103. //cell.height = 50
  104. })
  105. +++ Section()
  106. <<< ButtonRow("createButton") { (row:ButtonRow) in
  107. row.title = "创建"
  108. }.onCellSelection({ (cell, row) in
  109. let titleRow:TextRow = self.form.rowBy(tag:"title")!
  110. let identityRow:ActionSheetRow<IdentityV2> = self.form.rowBy(tag:"selectedIdentity")!
  111. guard let title = titleRow.value else{
  112. self.showError(title: "请输入标题")
  113. return
  114. }
  115. guard let id = identityRow.value else {
  116. self.showError(title: "请选择身份")
  117. return
  118. }
  119. self.createProcess(title, identity: id.distinguishedName!)
  120. })
  121. }
  122. func createProcess(_ title:String,identity:String){
  123. DDLogDebug("title = \(title),identity = \(identity)")
  124. let bean = CreateProcessBean()
  125. bean.title = title
  126. bean.identity = identity
  127. let createURL = AppDelegate.o2Collect.generateURLWithAppContextKey(WorkContext.workContextKey, query: WorkContext.workCreateQuery, parameter: ["##id##":(process?.id)! as AnyObject])
  128. self.showMessage(title: "创建中,请稍候...")
  129. Alamofire.request(createURL!,method:.post, parameters: bean.toJSON(), encoding: JSONEncoding.default, headers: nil).responseJSON { response in
  130. debugPrint(response.result)
  131. switch response.result {
  132. case .success(let val):
  133. let taskList = JSON(val)["data"][0]
  134. DDLogDebug(taskList.description)
  135. if let tasks = Mapper<TodoTask>().mapArray(JSONString:taskList["taskList"].debugDescription) , tasks.count > 0 {
  136. let taskStoryboard = UIStoryboard(name: "task", bundle: Bundle.main)
  137. let todoTaskDetailVC = taskStoryboard.instantiateViewController(withIdentifier: "todoTaskDetailVC") as! TodoTaskDetailViewController
  138. todoTaskDetailVC.todoTask = tasks[0]
  139. todoTaskDetailVC.backFlag = 1
  140. self.navigationController?.pushViewController(todoTaskDetailVC, animated: true)
  141. // self.task = tasks[0]
  142. DispatchQueue.main.async {
  143. self.dismissProgressHUD()
  144. //self.performSegue(withIdentifier: "newToBackMainSegue", sender: nil)
  145. }
  146. //ProgressHUD.showSuccess("创建成功")
  147. } else {
  148. self.showError(title: "创建失败")
  149. }
  150. case .failure(let err):
  151. DDLogError(err.localizedDescription)
  152. self.showError(title: "创建失败")
  153. }
  154. }
  155. }
  156. }