OOMeetingCreateFormView.swift 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. //
  2. // OOMeetingCreateFormView.swift
  3. // o2app
  4. //
  5. // Created by 刘振兴 on 2018/1/25.
  6. // Copyright © 2018年 zone. All rights reserved.
  7. //
  8. import UIKit
  9. protocol OOMeetingCreateFormViewDelegate {
  10. func performPersonSelected()
  11. func performRoomSelected()
  12. }
  13. class OOMeetingCreateFormView: UIView {
  14. private lazy var textItemView:OOFormTextItemView = {
  15. let view = Bundle.main.loadNibNamed("OOFormTextItemView", owner: self, options: nil)![0] as! OOFormTextItemView
  16. return view
  17. }()
  18. private lazy var dateItemView:OOFormDateItemView = {
  19. let view = Bundle.main.loadNibNamed("OOFormTextItemView", owner: self, options: nil)![1] as! OOFormDateItemView
  20. return view
  21. }()
  22. private lazy var dateIntervalItemView:OOFormDateIntervalItemView = {
  23. let view = Bundle.main.loadNibNamed("OOFormTextItemView", owner: self, options: nil)![2] as! OOFormDateIntervalItemView
  24. return view
  25. }()
  26. private lazy var segueItemView:OOFormSegueItemView = {
  27. let view = Bundle.main.loadNibNamed("OOFormTextItemView", owner: self, options: nil)![3] as! OOFormSegueItemView
  28. return view
  29. }()
  30. var delegate:OOMeetingCreateFormViewDelegate?
  31. //model Array
  32. private var _ooFormsModels:[OOFormBaseModel]?
  33. var ooFormsModels:[OOFormBaseModel]? {
  34. get {
  35. return _ooFormsModels
  36. }
  37. set(models){
  38. _ooFormsModels = models
  39. _ooFormsModels?.forEach({ (model) in
  40. switch model.componentType! {
  41. case .textItem:
  42. let view = textItemView
  43. view.configItem(model)
  44. self.addSubview(view)
  45. break
  46. case .dateItem:
  47. let view = dateItemView
  48. view.configItem(model)
  49. self.addSubview(view)
  50. break
  51. case .dateIntervalItem:
  52. let view = dateIntervalItemView
  53. view.configItem(model)
  54. self.addSubview(view)
  55. break
  56. case .segueItem:
  57. let view = segueItemView
  58. view.backCallAction = {
  59. sender in
  60. self.delegate?.performRoomSelected()
  61. }
  62. view.configItem(model)
  63. self.addSubview(view)
  64. break
  65. }
  66. })
  67. }
  68. }
  69. override init(frame: CGRect) {
  70. super.init(frame: frame)
  71. }
  72. required init?(coder aDecoder: NSCoder) {
  73. super.init(coder: aDecoder)
  74. }
  75. override func awakeFromNib() {
  76. }
  77. //重新布局所有子控件
  78. override func layoutSubviews() {
  79. super.layoutSubviews()
  80. let x:CGFloat = 0
  81. var y:CGFloat = 0
  82. let width:CGFloat = kScreenW
  83. let height:CGFloat = 44
  84. self.subviews.forEach { (view) in
  85. view.frame = CGRect(x: x, y: y, width: width, height: height)
  86. y+=height
  87. }
  88. }
  89. func setSelectedRoom(_ room:OOMeetingRoomInfo){
  90. segueItemView.setBackValueUpdate(room)
  91. }
  92. func getFormDataFormBean() -> (OOMeetingForm?, err: String?) {
  93. let meetingForm = OOMeetingForm()
  94. //标题
  95. guard let title = textItemView.model?.callbackValue as? String else {
  96. return (nil, "请输入会议主题")
  97. }
  98. meetingForm.subject = title
  99. //日期
  100. guard let date = dateItemView.model?.callbackValue as? Date else {
  101. return (nil, "请选择日期")
  102. }
  103. meetingForm.meetingDate = date
  104. //开始时间
  105. let model = dateIntervalItemView.model as! OOFormDateIntervalModel
  106. guard let startTime = model.value1 as? Date else {
  107. return (nil, "请选择开始时间")
  108. }
  109. meetingForm.startTime = startTime
  110. //结束时间
  111. guard let endTime = model.value2 as? Date else {
  112. return (nil, "请选择结束时间")
  113. }
  114. meetingForm.completedTime = endTime
  115. //会议室
  116. guard let room = segueItemView.model?.callbackValue as? OOMeetingRoomInfo else {
  117. return (nil, "请选择会议室")
  118. }
  119. meetingForm.room = room.id
  120. meetingForm.roomName = room.name
  121. return (meetingForm, nil)
  122. }
  123. }